bei Abfrage wird nur erster Datensatz ausgelesen

Maik1

Lt. Junior Grade
Registriert
Jan. 2005
Beiträge
408
Hi,
wenn ich eine Abfrage aus einer Datenbank mache, die 3 Datensätze enthält, werden mir immer bloß die Daten aus dem ersten Datensatz ausgegeben.
PHP:
  <?php 
  	$conn=mysql_connect(localhost,geheim,geheim);		
	mysql_select_db("geheim",$conn);
	$result = mysql_query("SELECT id,name,level,durchschnitt,gold1,gold2,gold3,gold4,gold5,gold6,gold7,gold8,gold9,gold10,gold11,gold12,gold13,gold14,gold15 FROM eintrag");
	if (!$result) {
	   echo 'Datenbankfehler';
	   exit;
	}
$row = mysql_fetch_row($result);
$count = '1';
$zeilen = mysql_num_rows($result);//es sind 3 Zeilen
?>
Wenn ich dann mir die Daten vom ersten Datensatz anzeigen lasse ($row[0],$row[1],$row[2],...$row[18]) geht das ohne Probleme. Aber die Daten aus dem zweiten Datensatz müsste man doch mit $row[19],$row[20],... auslesen können, oder? Wenn ich dann aber $row[19] auslese ist die Variable immer leer genauso wie die darauffolgenden ($row[20],...).
Wieso sind die Variablen ab $row[19] alle leer? :confused_alt:
 
mysql_fetch_row() holt - wie der Name schon sagt - nur eine Zeile aus der Ergebnismenge, zusätzlich inkrementiert er den internen Zähler. Du mußt also mysql_fetch_row() innerhalb einer Iteration solange aufrufen, bis alle Zeilen ausgelesen sind:
Code:
while ($row = mysql_fetch_row($result)) {
  echo implode(' | ', $row), '<br />';
}

greetings, Keita
 
Ah, vielen dank für die schnelle Antwort. Allerdings hab ich noch ne Frage: Wenn ich die Werte in einer Tabelle ausgeben will nutze ich folgenden Code.:
PHP:
while ($row = mysql_fetch_row($result)) {
    echo implode(' <td> ', $row), '</td>';
}
Jetzt werden aber die ganzen Werte hintereinander geschreiben. Kann ich es noch irgendwo so einstellen, dass nachdem eine Zeile ausgegeben wurde eine neue Zeile begonnen wird?
 
Versuch statt:

echo implode(' <td> ', $row), '</td>';

mal dieses:

echo implode(' <tr><td> ', $row), '</td></tr>';
 
@NeoXpert: Jetzt werden alle Werte in einer Spalte untereinander geschrieben. :(
Hat noch jemand ne Idee?
 
mh normal bau ich mir immer selbst die tabelle auf.. hab implode nie benutzt.

versuch evtl mal sowas hier:

while ($row = mysql_fetch_row($result))
{
echo "<tr>";

for($zaehler=0; zaehler < 18; zaehler++)
{
echo "<td>" . $row[$zaehler] . "</td>";
}

echo "</tr>";
}

okay das ist jetzt nicht die eleganteste Lösung.. aber hey ich hab ne halbe ewigkeit nichts mehr gemacht *g*.
 
Die Kurzform wäre

Code:
while ($row = mysql_fetch_row($result))
    echo '<td>', implode('</td><td> ', $row), '</td>';

greetings, Keita
 
Zurück
Oben