Philipp Freiberger: while-schleife mit 2 bedingungen

Hallo,

mein Problem:
Von einer mysql-abfrage sollen nur die ersten 3 "treffer" gezeigt werden.

Ich würde gerne in einer while schleife 2 "Bedingungen" abfragen.
Etwa in der Form:
"while ($row = mysql_fetch_object($result) && $i <= 2)"
wobei ich nicht weis ob es diese Syntax überhaubt gibt :)
Beim Testen liefert das zwar 3 (bzw. wie auch immer $i gewählt wird) zeilen als ausgabe ABER die mysql daten sind alle "0" bzw. werden nicht dargestellt!

Frage: Bin ich auf dem Holzweg oder krieg ich bloss die richtige syntax nicht raus?

Nochmal zur vervollständigung der Quellcode:
"<?php
$result = sendQuery("SELECT am, ort, art FROM tbl_ca_termine, tbl_ca_was WHERE tbl_ca_termine.was = tbl_ca_was.id AND am > NOW()
ORDER BY am", "Ein Termin fuer Startseite");

echo "<ul>\n";
$i=0;

while ($row = mysql_fetch_object($result) && $i <= 2)
  {
  echo "\n<li><strong>". $row->art. "</strong> in ". $row->ort. " am ". $row->am. ".";
  $i++;
  }

echo "</ul>\n";
?>"

sendQuery("expr1", "expr2") ist in einem include definiert und funktioniert auch (soll helfen die übersicht zu wahren).

wenn ich "&& $i <= 2" weglasse funktioniert alles.

DANKE für die Hilfe

  1. Sup!

    Vielleicht ist && ein höherpriorer Operator als = ?
    In C ist er das.

    Gruesse,

    Bio

  2. Hoi,

    Ich würde gerne in einer while schleife 2 "Bedingungen" abfragen.
    Etwa in der Form:
    "while ($row = mysql_fetch_object($result) && $i <= 2)"
    wobei ich nicht weis ob es diese Syntax überhaubt gibt :)
    Beim Testen liefert das zwar 3 (bzw. wie auch immer $i gewählt wird) zeilen
    als ausgabe ABER die mysql daten sind alle "0" bzw. werden nicht dargestellt!

    Generell ist es richtig, die Bedingungen per '&&' zu verknuepfen. Du hast nur
    nicht daran gedacht, dass der Zuweisungs-Operator die niedrigste Bindung hat
    und zuletzt ausgefuehrt wird. Das heisst, es wird das Ergebnis von
    mysql_fetch_object($result) UND-verknuepft mit dem Ergebnis von $i <= 2. Das
    Ergebnis dieser UND-Verknuepfung wird dann $row zugewiesen. Was du moechtest
    ist:

    while(($row = mysql_fetch_object($result)) && $i <= 2) {
        # code
      }

    Gruesse,
     CK

    1. Generell ist es richtig, die Bedingungen per '&&' zu verknuepfen. Du hast nur
      nicht daran gedacht, dass der Zuweisungs-Operator die niedrigste Bindung hat
      und zuletzt ausgefuehrt wird.

      <homer simson>Doh'</homer simson> - da hätte man ja drauf kommen können :)

      DANKE