SQl-Daten-Ausgabe in mehreren Spalten einer Tabelle

Seven Secrets

Erfahrenes Mitglied
Hallo,

ich habe folgendes script geschrieben:

PHP:
<?PHP
$result = mysql_query("SELECT uid, nickname, style, thumbpic FROM content ORDER BY style, nickname ASC");
$total_rows = mysql_num_rows($result); $counter = 0;
while($counter < $total_rows):

echo "<table width=\"75%\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\">
  <tr> 
    <td rowspan=\"3\" align=\"center\" valign=\"right\" width=\"200\"><a href=\"booking-detail.php?showme=". mysql_result($result,$counter,"uid") ."\"><img src=\"../booking/". mysql_result($result,$counter,"thumbpic") ."\" hspace=\"10\"></a></td>
    <td valign=\"bottom\"><a href=\"booking-detail.php\"><font size=\"-1\" face=\"Geneva, Arial, Helvetica, sans-serif\"><strong>". mysql_result($result,$counter,"nickname") ."</strong></font></a></td>
  </tr>
  <tr> 
    <td valign=\"top\"><font size=\"-1\" face=\"Geneva, Arial, Helvetica, sans-serif\">". mysql_result($result,$counter,"style") ."</font></td>
  </tr>
  <tr> 
    <td valign=\"top\" align=\"center\" width=\"200\"><font size=\"-2\" face=\"Geneva, Arial, Helvetica, sans-serif\"><a href=\"booking-detail.php?showme=". mysql_result($result,$counter,"uid") ."\">... zu den Details ...</a></font></td>
  </tr>
  <tr> 
    <td colspan=\"2\" align=\"center\" valign=\"middle\"><hr width=\"100%\" size=\"1\"></td>
  </tr>
</table>
";
$counter = $counter + 1;
endwhile;
?>

Und hier wird ja nur ein Datensatz ausgegeben. Jetzt möchte ich aber eine zweite Tabelle daneben erzeugen und dann danach wieder zwei darunter und so weiter. Also zwei neben einander und viele viele untereinader. Wie muß ich das umsetzen?
 
Ich mache die Ausgabe anders, vielelicht hilft dir das ja:
PHP:
echo '<table border="0" cellspacing="0" cellpadding="0">';
$sql = "SELECT * From tbl";
$result = mysql_query($sql);
while($data = mysql_fecth_array($result))
{
  echo '<tr><td>'.$data[0].'</td><td>'.$data[1].'</td></tr>';
}
echo '</table>';
 
Ach, du sagst von forn herrein, das er gleich zwei Datensätze ausgeben soll und bei der Schleife dann zwei addiert? Sehe ich das richtig? Was passiert, wenn aber eine ungerade Anzahl von Daten da ist?
 
Die mysql_fetch_*()-Funktionen holen jeweils immer einen Datensatz aus der Ergebnismenge. So kann jeder Datensatz einzeln abgearbeitet werden. Und das while()-Kontrollkonstrukt sorgt dabei dafür, dass dessen Inhalt nur im Erfolgsfall – wenn also ein Datensatz erfolgreich geholt wurde – ausgeführt wird.
 
Um der ganzen Sache jetzt für mich sinn zu geben, wie komme ich an die einzelnen Inhalte ran? Ich habe ja:

uid, nickname, style, thumbpic

Wenn ich jedoch diesen Code benutze:

PHP:
echo '<table border="0" cellspacing="0" cellpadding="0">'; 
$sql = "SELECT * From tbl"; 
$result = mysql_query($sql); 
while($data = mysql_fecth_array($result)) 
{ 
  echo '<tr><td>'.$data[0].'</td><td>'.$data[1].'</td></tr>'; 
} 
echo '</table>';

kann ich doch mit $data[0] garnicht das direkt Feldansprechen? Oder?
 
Arbeite da am besten mit der mysql_fetch_assoc()-Funktion, etwa:
PHP:
echo '<table border="0" cellspacing="0" cellpadding="0">';
$query = '
	SELECT
	        `uid`,
	        `nickname`,
	        `style`,
	        `thumbpic`
	  FROM
	        `tbl`
	';
$result = mysql_query($query);
while( $data = mysql_fetch_assoc($result) ) {
	print_r($data);   // liefert einer schnelle Übersicht über den Inhalt des assoziativen Arrays
}
echo '</table>';
Nachtrag: „mysql_fetch_assoc()“ nun richtig geschrieben.
 
Soll heißen ich tätige das dann so:

PHP:
echo '<table border="0" cellspacing="0" cellpadding="0">';  
$sql = "SELECT * From tbl";  
$result = mysql_query($sql);  
while( $data = mysql_fecth_assoc($result) )
{
  echo '<tr><td>'.$data["nickname"].'</td><td>'.$data["nickname"].'</td></tr>';  
  echo '<tr><td>'.$data["style"].'</td><td>'.$data["style"].'</td></tr>';  
  echo '<tr><td>'.$data["thumbpic"].'</td><td>'.$data["thumbpic"].'</td></tr>';   
}  
echo '</table>';

Aber woher weiß denn die Funktion welchen satz sie ansprechen doll? Das sage ich Ihr doch nirgens!
 
Wenn ein Datensatz geholt wurde, springt der Zeiger in der while-Schleife automatisch weiter zum nächsten, du musst dich also darum nicht kümmern.
 
Solange die Lösung deinen Erwartungen entspricht. Werden denn damit nicht alle Datensätze verarbeitet?
 
Zurück