Autor Zpráva
jamal
Profil *
Zdravím, tvořím teď v mysql tabulku, který má kolem 60 sloupců a chtěl bych se zeptat jestli ta tabulka lze vypsat(název sloupce a jeho hodnota) jednoduše v cyklu přes php. Prostě zobrazit tabulku jako v phpMyAdmin nebo na konzoli. Vím jak vypsat seznam sloupců, ale nevím jak k nim přiřadit hodnoty

$query = mysql_query("SELECT * FROM tabulka");
$columns = mysql_num_fields($query);
for($i = 0; $i < $columns; $i++) {
    echo mysql_field_name($query,$i)."-".$hodnota_sloupce;
}

Nebo jestli musím udělat while a v něm samostatně všech 60 hodnot vypsat.

Dík
Alphard
Profil
mysql_fetch_row() vrátí výsledek s poli s číselnými klíči, mysql_fetch_assoc() použije jako klíče názvy sloupců, ale není použít foreach. Takže stačí zanořit dva cykly.
midlan
Profil
já to řeším takto:
<?php

$spojeni = new mysqli("localhost", "root", "databaze", "student");
$spojeni->query("SET NAMES utf8");

$vysledek = $spojeni->query("SELECT * FROM zamestnanci;")->fetch_all(MYSQLI_ASSOC);

echo("<table>\n");
foreach(array_keys($vysledek[0]) as $nazev_sloupce) {
  echo("<th>".$nazev_sloupce."</th>\n");
}
foreach($vysledek as $radek) {
  echo("<tr>\n");
  foreach($radek as $atributy) {
    echo("<td>");
    echo($atributy);
    echo("</td>\n");
  }
  echo("</tr>\n");
}
echo("</table>\n");

?>
:)
jamal
Profil *
Dík za poskytnuté řešení, ale k mysqli jsem se ještě nedostal tim padem nevim jak to debugovat nebo přepsat. Řve mi to:

Fatal error: Call to undefined method mysqli_result::fetch_all() in 

Dík
midlan
Profil
jamal: musel jsem se s tímto old-school řešením naučit :D ale nakonec se povedlo:
<?php

mysql_connect("localhost", "root", "databaze");
mysql_select_db("student");
$sel = mysql_query("SELECT * FROM zamestnanci;");

$vysledek = array();

while($row = mysql_fetch_assoc($sel)) {
  $vysledek[] = $row;
}

echo("<table>\n");
foreach(array_keys($vysledek[0]) as $nazev_sloupce) {
  echo("<th>".$nazev_sloupce."</th>\n");
}
foreach($vysledek as $radek) {
  echo("<tr>\n");
  foreach($radek as $atributy) {
    echo("<td>");
    echo($atributy);
    echo("</td>\n");
  }
  echo("</tr>\n");
}
echo("</table>\n");

?>
Alphard
Profil
midlan:
• Mimochodem, nemusel jste to bufferovat, šlo by to vypsat přímo, přesně jak jsem naznačoval.
• Echo není typická funkce, ale jazykový konstrukt. Není nutné parametr závorkovat, sice to není chyba, ale připravujete se např. o možnost použít více parametrů. Subjektivně se mi to zdá méně přehledné.
midlan
Profil
Alphard:
Mimochodem, nemusel jste to bufferovat, šlo by to vypsat přímo, přesně jak jsem naznačoval.
nevím jak to myslíte, zkuste naznačit příkladem

Alphard:
Echo není typická funkce, ale jazykový konstrukt. Není nutné parametr závorkovat, sice to není chyba, ale připravujete se např. o možnost použít více parametrů. Subjektivně se mi to zdá méně přehledné.
Jsem zvyklý to psát takhle, nevím k čemu bych použil více parametrů. Proměnné s řetězci spojuji normálně tečkou, jestli je někdo spojuje rozdělením do parametrů je to jeho věc.
Alphard
Profil
midlan:
$query = mysql_query("SELECT * FROM zamestnanci");
$columns = mysql_num_fields($query);
echo "<table>\n<tr>";
for($i = 0; $i < $columns; $i++) {
    echo "<th>".mysql_field_name($query,$i)."</th>";
}
echo "</tr>\n";

while ($row = mysql_fetch_row($query))
{
    echo "<tr>";
    foreach ($row as $item)
    {
        echo "<td>$item</td>";
    }
    echo "</tr>\n";
}
echo "</table>\n";

Jediný rozdíl je v tom, že se data neukládají do pole, ale hned se posílají na výstup. Kdyby se dělal nějaký admin, který vypisuje nestránkovaně třeba tisíc řádků, bylo by tohle šetrnější.
jamal
Profil *
Díky všem za pomoc, kod od Alpharda funguje vyborne

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: