Autor Zpráva
michalux
Profil
Ahoj, poprosím zkušené o radu.

Potřebuju vypsat do tabulky celou tabulku databáze, ale nevím kolik má sloupců, takže to nejde napasovat na jednoduchý výpis do tabulky:
$q = mysql_query("SELECT * FROM tabulka");
while ($a = MySQL_Fetch_Array($q)){ 
 $id=$a["ID"];
 $cinnost=$a["cinnost"];
 echo '<tr><td>'.$id.'</td><td>'.$cinnost.'</td><td></tr>';}

Už jsem přišel na to, jak dynamicky vypisovat záhlaví tabulky:
$q = mysql_query("SELECT * FROM tabulka");
$pocet_sloupcu = mysql_num_fields($q);
for ($i=0; $i<mysql_num_fields($q); $i++) {                
echo("<td>".mysql_field_name($q, $i)."</td>"); }

Ale na podobný způsob, kterým bych vypsal řádky, aniž bych proměnnými specifikoval počet sloupců se mi přijít nepodařilo.

Budu rád za každou radu :)
juriad
Profil
while ($row = mysql_fetch_row($q)) {
  echo "<tr>";
  for ($i = 0; $i < mysql_num_fields($q); $i++) {
    $col = mysql_field_name($q, $i);
    echo "<td>" . $row[$col] . "</td>";
    # nebo jednodušeji: $row($i) bez potřeby $col
  }
  echo "</tr>";
}
Kajman
Profil
Lepší bude to $row[$i], kdyby tam byly dva sloupce se stejným názvem.

$q = mysql_query("SELECT * FROM tabulka");
$pocet_sloupcu = mysql_num_fields($q);
echo "<table><thead><tr>";
for ($i=0; $i<$pocet_sloupcu; $i++) {                
    echo "<th>".htmlspecialchars(mysql_field_name($q, $i))."</th>";
}
echo "</tr></thead><tbody>";

while ($a = MySQL_Fetch_Array($q)) { 
    echo "<tr>";
    for ($i=0; $i<$pocet_sloupcu; $i++) {                
        echo "<td>".nl2br(htmlspecialchars($a[$i]))."</td>";
    }
    echo "</tr>";
}
echo "</tbody></table>";
michalux
Profil
V první variantě se mi nějak nechtěly zobrazovat hodnoty - vykreslily se řádky tabulky, ale byly prázdné. Nevím kde byla chybka :)

Kajmanova varianta funguje dokonale. Děkuji mnohokrát :-)
juriad
Profil
michalux:
Jo, pomotal jsem funkce mysql_fetch_row a mysql_fetch_array. Pak ještě existuje mysql_fetch_assoc. Všechny vrací pole, ale pokaždé trošku jinak.
michalux
Profil
Ještě doplňující dotaz...

Cyklem si vypíšu hodnoty a doplním je do formuláře, respektive do <inputů>:
echo '<form method="post">';
...
for ($i=0; $i<$pocet_sloupcu; $i++) {                
        echo '<td><input type="text" name="'.htmlspecialchars(mysql_field_name($q, $i)).'" value="'.nl2br(htmlspecialchars($a[$i])).'" /></td>';
    }
...
echo '</form>';

A řeším, co dál, když odešlu formulář. Potřebuju updatovat hodnoty v databázi hodnotami které přijdou z inputů, ale nevím jak je přijmout, když nevím jaké hodnoty přijdou a kolik jich bude. Existuje řešení?

Díky :-)
juriad
Profil
Podobné vlákno, třeba pomůže: Formulář a vícenásobný input

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: