Po dnešním díle již zvládnete vytvořit jednoduchou návštěvní knihu.
Po dnešním díle již zvládnete vytvořit jednoduchou návštěvní knihu. Je nutné, aby z minulého dílu jste měli již naplněnou tabulku kniha. V příštím díle budeme, pokračovat při zlepšování naší jednoduché návštěvní knihy.Je nutné použít soubor nastaveni.php z minulého dílu. Připojení k DB již umíte z minula. Klíčovým prvkem bude vytvořit SQL-dotaz na databázi. Chceme vypsat posledních 10-příspěvků a aby novější byli nahoře (listování ve starších příspěvcích si ukážeme příště).
SELECT * FROM kniha ORDER BY datum DESC LIMIT 0, 10
dalo by se to přeložit jako
VYBER vše Z TABULKY kniha USPOŘÁDEJ PODLE datum SESTUPNĚ LIMITUJ 0,10
SELECT * FROM kniha - vybere všechny záznamy z tabulky kniha
ORDER BY datum DESC - uspořádá podle datumu sestupně
LIMIT 0, 10 - začne od 0-tého prvku a zobrazí jich 10 (např. LIMIT 30,10 - začne od 30-tého prvku a zobrazí jich deset)
Pomocí funkce mysql_fetch_array() načteme záznamy do pole $zaznam a odtud pomocí cyklu while postupně vypíšeme záznamy.
Zde je celý soubor, nazveme ho vypis.php
<html>
<head>
<title>výpis z návštěvní knihy, www.owebu.cz </title>
<META http-equiv=Content-Type content="text/html; charset=windows-1250">
</head>
<body>
<center>
<div style="width:500px;text-align:left;">
<?
require("nastaveni.php");
$pripoj=MySQL_Connect($SQL_Server, $SQL_Uzivatel, $SQL_Heslo) or Die(MySQL_Error());
MySQL_Select_Db($Databaze) or Die(MySQL_Error());
$dotaz="SELECT * FROM kniha ORDER BY datum DESC LIMIT 0, 50";
//vytvoření sql dotazu
$vysledek = MySQL_Query($dotaz); // provedení sql dotazu
while ($zaznam = MySQL_Fetch_Array($vysledek)){
$jmeno=$zaznam["jmeno"];
$datum=$zaznam["datum"];
$text=$zaznam["text"];
print "<div style='background:#315584; color:white; padding-left:10px'><b>".$jmeno."</b><br><small> [ ".$datum." ]</small></div>";
print "<div style='background:#B5C7DE; margin-bottom:10px; padding-left:10px;'>".$text."</div>";
}
MySQL_Close($pripoj);
?>
</div>
</center>
</body>
</html>
Funkce mysql_fetch_array() načte výsledný řádek do asociativního, číselného pole nebo obojího, pokud není načten žádný řádek vrací funkce FALSE. Můžeme tedy na začátku otestovat, jestli vůbec máme co vypisovat.
Mysql_fetch_array() je rozšířenou verzí mysql_fetch_row(). Navíc jsou zde data uložena v poli nejen pod číselnými klíči, ale také pod asociativními textovými klíči jmenujícími se podle názvu sloupce sql tabulky. Pokud se vyskytnou dva sloupce se stejným názvem, bude brána hodnota jen toho posledního. Ale můžeme si zde vytvořit aliasy a pak pomocí nic pracovat (alias=zástupný název, např. select jmeno j from tabulka, kde jmeno je jméno sloupce a alias je j).