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: 12 let
|
0