Homepage selbermachen 7.852 Themen, 35.619 Beiträge

innerhalb einer while schleife weiterzählen beim auslesen au

T E S T E R / 7 Antworten / Baumansicht Nickles

hi ich lese mit
$ergebnis=mysql_fetch_object($result);
aus und gebe mit einr while schleife aus
while($ergebnis=mysql_fetch_object($result)){
echo$zeile->name;
}
das ist auch ok so aber ich will nun folgendes, dass in einer schleife 2 ergebnisse ausgelesen werden, nämlich $zeile->name und dann genau auch noch der nächste name, dass ich quasi 1 durchlauf der while schleife brauche, um 2 ergebnisse auszulesen


nur wie mache ich das

bei Antwort benachrichtigen
Borlander T E S T E R „innerhalb einer while schleife weiterzählen beim auslesen au“
Optionen

verwende innerhalb der while-Schleife

if($ergebnis=mysql_fetch_object($result))
// dann würde bei einer ungeraden Ergebnismenge nur der erste Datensatz ausgegeben
{
  // "2." Datensatz ausgeben
}


soll die Verarbeitung nur erfolgen wenn ein Datensatzpaar vorhanden ist dann mach es so:
while(($ergebnis1=mysql_fetch_object($result)) && ($ergebnis2=mysql_fetch_object($result)))
{
  // ...
}



Evtl. lässt sich das ganze allerdings durch änderung der Tabellenstruktur noch besser lösen. Poste doch einfach mal wie die Tabelle aufgebaut ist...


CU Borlander
bei Antwort benachrichtigen
T E S T E R Borlander „verwende innerhalb der while-Schleife if ergebnis mysql_fetch_object result //...“
Optionen

while($zeile=mysql_fetch_object($result)){

$kommentare = mysql_num_rows(mysql_query("select * from kommentare2 where msg_id='$zeile->id'",$db));

echo"
<table width=\"90%\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\">
<tr><td>";

while($a<=1){

echo"
<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"5\" align=\"center\">
<tr>
<td width=\"62%\"><div id=\"text_headline\">$zeile->headline</div></td>
<td colspan=\"2\" rowspan=\"3\"> </td>
<td rowspan=\"3\" valign=\"top\" style=\"border-left: 1px solid #666666\"><div id=\"text_klein\">
$zeile->datum<br>
Redakteur: ($zeile->kuerzel";
if(!empty($zeile->bearbeiterkuerzel)) echo "/$zeile->bearbeiterkuerzel";
echo")<br>
$zeile->counter mal gelesen<br>
$kommentare Lesermeinung(en)<br>Länge: ";
echo strlen($zeile->nachricht);
echo" Zeichen</div>
</td>
</tr>
<tr>
<td width=\"62%\"><div id=\"text_teaser_start\">$zeile->teaser</div></td>
</tr>
<tr>
<td width=\"62%\"><a href=\"content_show.php?nsid=$nsid&csid=$csid&id=$zeile->id\"><img src=\"bilder/mehr.gif\" border=\"0\"></a></td>
</tr>
</table>

</td><td>";
$a++;

}
echo"
</td></tr></table>
";
}


Folgendermassen sollte es aussehen in tabellenform sollten 2 TAbellen in einer grossen TAbelle nebeneinander horizontal angeordnet werden,
nach 2 soll dann jeweils umbrochen werden, in der unteren zeile wieder die nächsten 2 stehen und so weiter, also so:

|Ausgabe1|Ausgabe2|
-----------------
|Ausgabe3|Ausgabe4|

usw.

bei Antwort benachrichtigen
Borlander T E S T E R „while zeile mysql_fetch_object result kommentare mysql_num_rows mysql_query...“
Optionen
$kommentare = mysql_num_rows(mysql_query("select * from kommentare2 where msg_id='$zeile->id'",$db));
Warum verwendest Du kein JOIN im Query?

2 TAbellen in einer grossen TAbelle nebeneinander horizontal angeordnet werden,
Dann wäre die IF-Version die richtige, also:

// ...
function show_content($row)
{
  // ...
}

// ...
echo '<TABLE>';
while($zeile=mysql_fetch_object($result))
{
  echo '<TR><TD>';
  show_content($zeile); // linke Spalten ausgeben
  echo '</TD><TD>';
  if($zeile=mysql_fetch_object($result))
  {
    show_content($zeile); // rechte Spalte ausgeben
  }
  echo '</TD></TR>';
}
echo '</TABLE>';
// ...


CU Borlander
bei Antwort benachrichtigen
T E S T E R Borlander „ Warum verwendest Du kein JOIN im Query? Dann wäre die IF-Version die richtige,...“
Optionen

Danke dir vielmals aber was meinst du mit JOIN?

bei Antwort benachrichtigen
Borlander T E S T E R „Danke dir vielmals aber was meinst du mit JOIN?“
Optionen

Mit JOIN kannst Du mehrere Tabellen verknüpfen.

Beipiel:
2 Tabelle:
Arbeitnehmer (ID, Name, Abteilung, ...)
Abteilung (ID, Bezeichnung)

Mittels JOIN kannst Du Dir nun den Namen der Abteilung zurückgeben lassen in der jeder Mitarbeiter arbeitet


SELECT Arb.Name AS Mitarbeiter, abt.Bezeichnung AS Abteilung
FROM Arbeitnehmen AS Arb LEFT JOIN Abteilung AS abt ON Arb.Abteilung = abt.ID



CU Borlander
bei Antwort benachrichtigen
T E S T E R Nachtrag zu: „innerhalb einer while schleife weiterzählen beim auslesen au“
Optionen

Hallo und super, der tipp ist erste sahne, aber ich würde gern noch wissen,was die schleife macht, also ich meine die if abfrage, was genau bewirkt sie dass dann die folgende zeile gelesen wird

bei Antwort benachrichtigen
Borlander T E S T E R „Tipp klappt dennoch frage“
Optionen

Die IF-Abfrage mach eigentlich das gleiche wie die While-Schleife, es wird geprüft ob ein Datensatz zurückgegeben wird. Wird keiner zurückgegeben (sondern stattdessen false) würde es sonst mächtig krachen. Hoffe das hilft Dir weiter.

CU Borlander

bei Antwort benachrichtigen