Výpis tabulky z SQL

Tabulku doporučuji vytvořit pomocí phpWebAdmin (viz jiné cvičení). Pro výpis se mi osvědčil skript:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<meta name="generator" content="PSPad editor, www.pspad.com">
<title>Výpis tabulky</title>
</head>
<body>
<?php
mysql_connect('mysql.webzdarma.cz','zpp','tudlenudle')
or die('chyba:'.mysql_error() );
mysql_select_db('zpp');
$result=mysql_query('select * from test;');

echo "<table border=1>";
while ($row=mysql_fetch_assoc($result)) {
echo "<tr>";
foreach($row as $key => $value) {echo "<td>".$key."<td>".$value; };

}
echo "</table>";

mysql_close();

?>
</body>
</html>

 

Někomu by se možná víc líbila následující modifikace, kdy hlavička se vypíše jen jednou:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<meta name="generator" content="PSPad editor, www.pspad.com">
<title>Výpis tabulky</title>
</head>
<body>
<?php
mysql_connect('mysql.webzdarma.cz','zpp','tudlenudle')
or die('chyba:'.mysql_error() );
mysql_select_db('zpp');
$result=mysql_query('select * from test order by id;');

echo "<table border=1>";
if ($row=mysql_fetch_assoc($result)) {
echo "<tr>";
foreach($row as $key => $value) {echo "<th>".$key; };
echo "<tr>";
foreach($row as $key => $value) {echo "<td>".$value; };

}

while ($row=mysql_fetch_assoc($result)) {
echo "<tr>";
foreach($row as $key => $value) {echo "<td>".$value; };

}
echo "</table>";

mysql_close();

?>
</body>
</html>

Pro třídění lze použít specifikaci u příkazu select: order by. První průběh cyklu pro výpis tabulky je použit pro výpis záhlaví sloupců, ale musí v něm proběhnout i výpis prvního řádku, protože mysql_fetch_array by nám jej již podruhé nepřineslo.

Pokud chceme vytisknout jen řádky, které splňují nějakou podmínku, doplníme where. Například, pokud ve formuláři, který vyvolal php skript, je zadána proměnná "jméno" (políčko input s tímto názvem), bude mít sql příkaz tvar (bez apostrofů - ty patří php):

$result=mysql_query("select * from test order by id where CONVERT( `jmeno` USING utf8 ) = ".$jmeno );

Pro konverzi je v mém případě třeba využít funkci, jinak by se výsledek nerovnal - příčinou je, že jsem ponechal přednastavenou znakovou sadu databáze utf8. Pokud by stránka i databáze byly v kódování ISO 8859-2 (známé v Čechách jako Latin2), pravděpodobně bychom se bez této funkce obešli. Zkuste.