| Autor | Zpráva | ||
|---|---|---|---|
| jamal Profil * |
#1 · Zasláno: 31. 1. 2012, 19:45:58
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 |
#2 · Zasláno: 31. 1. 2012, 20:13:43
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 |
#3 · Zasláno: 31. 1. 2012, 20:36:26
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 * |
#4 · Zasláno: 1. 2. 2012, 19:51:33
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 |
#5 · Zasláno: 2. 2. 2012, 00:20:09
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 |
#6 · Zasláno: 2. 2. 2012, 01:06:50
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 |
#7 · Zasláno: 2. 2. 2012, 11:15:10
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 |
#8 · Zasláno: 2. 2. 2012, 13:25:57
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ší. |
||
|
Časová prodleva: 8 dní
|
|||
| jamal Profil * |
#9 · Zasláno: 10. 2. 2012, 11:48:38
Díky všem za pomoc, kod od Alpharda funguje vyborne
|
||
|
Časová prodleva: 14 let
|
|||
0