Ausgabe von Datensätzen als Tabelle, Ausgabe horizontal statt vertikal

godfather_al

Mitglied
Guten Morgen,

bin absoluter Anfänger und versuche mich gerade an der Ausgabe von Adressdaten mittels einer Tabelle. Leider werden die Daten untereinander statt wie von mir gewünscht nebeneinander ausgegeben, bitte sagt mir wie ich die Daten passend zum Tabellenkopf ausgeben kann.

So sieht es aktuell aus: http://www.das-lernstudio.de/private142/liste.php

Hier der PHP Code (mit dem echo des HTML - Codes für die Tabelle:

PHP:
echo "
<table>
<thread>
	<td>ID</td>
	<td>Nachname</td>
	<td>Vorname</td>
	<td>Geb.Dat.</td>
	<td>Strasse</td>
	<td>Nr.</td>
	<td>PLZ</td>
	<td>Ort</td>
</thread>
";
include 'config.inc.php';

mysql_connect($host, $user, $pass) or die ("Keine Verbindung zu der Datenbank möglich.");
mysql_select_db($db);

$sql = "SELECT Id, Nachname, Vorname, Geburtsdatum, Strasse, Hausnummer, PLZ, Ort  FROM adressen ";
$res = mysql_query($sql) or die (mysql_error());
$i = 0;

while ($row = mysql_fetch_assoc($res)) {
    $i++;
    foreach ($row as $key => $value) {
        echo '<td>'  . $value . '</td>';
    }
;
}
echo '</table>';
mysql_free_result($res);

Im Voraus schonmal vielen Dank für Eure Hilfe und noch einen schönen Sonntag.

Alex
 
Du musst auch mal <tr> und </tr> benutzen.
Ebenso gibt es kein <thread>, wohl aber ein <th>
Und dann ist die Inkrementierung von $i unnötig, da du $i wohl nicht benutzt.
PHP:
echo "<table>
<tr>
    <th>ID</th>
    <th>Nachname</th>
    <th>Vorname</th>
    <th>Geb.Dat.</th>
    <th>Strasse</th>
    <th>Nr.</th>
    <th>PLZ</th>
    <th>Ort</th>
</tr>
";
include 'config.inc.php';

mysql_connect($host, $user, $pass) or die ("Keine Verbindung zu der Datenbank möglich.");
mysql_select_db($db);

$sql = "SELECT Id, Nachname, Vorname, Geburtsdatum, Strasse, Hausnummer, PLZ, Ort  FROM adressen ";
$res = mysql_query($sql) or die (mysql_error());


while ($row = mysql_fetch_assoc($res)) {
    echo "<tr>";
    foreach ($row as $key => $value) {
        echo '<td>'  . $value . '</td>';
    }
    echo "</tr>";

}
echo '</table>';
mysql_free_result($res);
 
Zuletzt bearbeitet:
Hi Nils,

vielen Dank für die Anmerkungen, kann ich auch soweit nachvollziehen, habe alles geändert und hochgeladen doch die Resulate sind leider noch immer untereinander ... kannst Du Dir das nochmal kurz anschauen bitte wäre echt nett.

Viele Grüße
Alex
 
Hi,

könnt ihr mir bitte erklären was ihr mit den beiden Schleifen vorhabt? :eek:

PHP:
while ($row = mysql_fetch_assoc($res)) {
    echo '<tr>';
	echo '<td>' . $row['Id'] . '</td>';
	echo '<td>' . $row['Nachname'] . '</td>';
	echo '<td>' . $row['Vorname'] . '</td>';
	echo '<td>' . $row['Geburtsdatum'] . '</td>';
	echo '<td>' . $row['Strasse'] . '</td>';
	echo '<td>' . $row['Hausnummer'] . '</td>';
	echo '<td>' . $row['PLZ'] . '</td>';
	echo '<td>' . $row['Ort'] . '</td>';
    echo '</tr>';
}


/edit:
Und das obere echo bitte auch noch ändern...
PHP:
echo '<table> 
<tr> 
    <th>ID</th> 
    <th>Nachname</th> 
    <th>Vorname</th> 
    <th>Geb.Dat.</th> 
    <th>Strasse</th> 
    <th>Nr.</th> 
    <th>PLZ</th> 
    <th>Ort</th> 
</tr>';
 
Zuletzt bearbeitet:
So hätte ich es auch gemacht Loomis, aber da ich dachte, dass das auch so geht, habe ich nichts dazu gesagt.
 
Hi!

Bei der vertikalen Verteilung müssen doch nur die Werte per "column" gesammelt werden:
PHP:
while ($row = mysql_fetch_assoc($res)) {
    $i = 0;
    foreach ($row as $key => $value) {
        $column[$i] .= '<td>'  . $value . '</td>';
        $i++;
    }
}
foreach ($column as $col)
    echo '<tr>' . $col . '</tr>';
...oder ist das jetzt völliger Blödsinn (ist nicht getestet ;) )?!

Liebe Grüße,
Mark.

//edit @Loomis: rein Interessehalber, was ist falsch daran, die $row mit einer Schleife zu durchlaufen?
 
Hi,

Falsch im Sinne von "funktioniert nicht" ist das nicht. Das habe ich so übrigens auch nicht geschrieben.
 
Ja, die Wahl des Smileys war etwas unglücklich.

Ich würde hier keine zweite Schleife zur Ausgabe starten sondern die Daten so ausgeben, wie ich das weiter oben gepostet habe. Ganz einfach aus dem Grund, wenn später zum Beispiel entschieden wird das Geburtsdatum soll nun doch nicht angezeigt werden. Dann finde ich es schöner einfach das betreffende $row-Element rauszunehmen.

Ist natürlich jedem selbst überlassen, wie er das macht. Nichts für ungut also :D
 
Zurück