Phpausgabe will nicht wie ich will

PhpNewbie

Grünschnabel
Also als erstes bin ic ein aboluter der sich reinarbeitet.
Aber ich habe gerade ein tierisches Problem.
Und zwar habe ich eine Ausgabe PHP geschrieben, die sich auch schon die Daten aus der DB holt.

So sieht die Tabelle momentan aus
DATUM Ueberschrift News

Ich hätts aber gerne so

Datum
Ueberschrift
News

Also keine Spalten sondern Reihen !
Hier ist de Quellcode :

Code:
Code:
<html> 
<head> 
<Title>Abfrage</title> 
</head> 
<body> 
<?php 
$benutzer="XXX"; 
$passwort="XXX"; 
$db="XXX"; 
$link= mysql_connect( "localhost", $benutzer, $passwort); 
if (!$link) 
die("Keine Verbindung zur Datenbank"); 
mysql_select_db( $db, $link) 
or die ("Konnte Datenbank \"$db\" nicht öffnen".mysql_error()); 
$ergebnis=mysql_query("SELECT * FROM lorenz"); 
$anz_reihen=mysql_num_rows( $ergebnis); 
Print "Es sind zur Zeit $anz_reihen Datensätze in der Tabelle<p>"; 
print "<table border=0>\n"; 
while ($datensatz=mysql_fetch_row($ergebnis)) 
{ 
print "<tr>\n"; 
foreach ($datensatz as $feld) 
print "\t<td>$feld</td>\n"; 
print "</tr>\n"; 
} 
print "</table>\n"; 
mysql_close( $link); 
?> 
</body> 
</html>



Wie bekomme ich das hin ?
Und bitte wenn möglich eure Antworten erörtern da ich ja auch noch dazu lernen will !
 
erstelle doch einfach eine Tabelle, wo deine Daten untereinander ausgegeben werden und packe die dann in die While-Schleife.

Also z.b. so:

PHP:
 <td>
<table>
<tr><td>Datum</dt></tr>
<tr><td>Überschrift</dt></tr>
<tr><td>News</dt></tr>
</table>
</td>

und das ganze dann in die Schleife rein.
 
Lade die Daten in einen Array und durchlaufe es mit += 3, beginnend bei 0, 1 und 2.

Code:
Array
(
    [0] => Foo
    [1] => Bar
    [2] => Baz
    [3] => Foo
    [4] => Bar
    [5] => Baz
    [6] => Foo
    [7] => Bar
    [8] => Baz
    [9] => Foo
    [10] => Bar
    [11] => Baz
)

Code:
<?php
echo "<tr>";
for($i = 0; $i < count($array); $i += 3) {
    echo "<td>{$array[$i]}</td>";
}
echo "</tr><tr>";
for($i = 1; $i < count($array); $i += 3) {
    echo "<td>{$array[$i]}</td>";
}
echo "</tr><tr>";
for($i = 2; $i < count($array); $i += 3) {
    echo "<td>{$array[$i]}</td>";
}
echo "</tr>";
?>

Zumindest theoretisch. :)
 
Hallo PHPNewbie,
Das, was mein Vorposter meint, wolltest du bestimmt machen, aber du bekommst die Werte der Spalten nicht auseinander - stimmts ?

Ich habe dir dafür mal die Lösung, die am ehesten deimem Quelltext entspricht, dick reingeschrieben:
Code:
<html> 
<head> 
<Title>Abfrage</title> 
</head> 
<body> 
<?php 
$benutzer="XXX"; 
$passwort="XXX"; 
$db="XXX"; 
$link= mysql_connect( "localhost", $benutzer, $passwort); 
if (!$link) 
die("Keine Verbindung zur Datenbank"); 
mysql_select_db( $db, $link) 
or die ("Konnte Datenbank \"$db\" nicht öffnen".mysql_error()); 
$ergebnis=mysql_query("SELECT * FROM lorenz"); 
$anz_reihen=mysql_num_rows( $ergebnis); 
Print "Es sind zur Zeit $anz_reihen Datensätze in der Tabelle<p>"; 
print "<table border=0>\n"; 
while ($datensatz=mysql_fetch_row($ergebnis)) 
{ 
foreach ($datensatz as $feld) 
//? ? ? Diese Schleife dürfte nur einmal durchlaufen werden - meiner Ansich nach redundant mit der drum herum - dann wären $datensatz und $feld auch das selbe
{
list($Datum, $Ueberschrift, $News) = $feld
print "<tr>\n"; 
print "\t<td>$Datum</td>\n"; 
print "</tr>\n";
print "<tr>\n"; 
print "\t<td>$Ueberschrift</td>\n"; 
print "</tr>\n";
print "<tr>\n"; 
print "\t<td>$News</td>\n"; 
print "</tr>\n";
}
} 
print "</table>\n"; 
mysql_close( $link); 
?> 
</body> 
</html>
 
Zurück