• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

abfrage ob schleife mindestens 1x durchgelaufen ist funktioniert nicht

Krobbus

Mitglied
Hi, ich habe folgenden einfachen Code. Eigentlich müsste doch jedes mal, wenn keine ergbenisse vorhanden sind, die schleife also NICHT durchläuft, der Text NO DATA TO DISPLAY angezeigt werden. Irgendwie funktioniert das aber nicht. Woran kanns liegen?

PHP:
while($row = mysql_fetch_object($ass))
					{
					$counter = 1;
					echo"<option value='index.php?name=$row->name_key#a1'</option>";
					}

					if ($counter== "") {echo "NO DATA TO DISPLAY"; }
 
Werbung:
Hallo,

also der code scheint mir nicht besonders php valide zu sein aber so dürfte das etwas besser sein :O).
versuche mal so:
PHP:
while($row = mysql_fetch_object($ass)) 
                    { 
                    $counter = 1; 
                    echo"<option value='index.php?name=$row->name_key#a1'</option>"; 
                    } 
 
                    if (!isset($counter)) {echo "NO DATA TO DISPLAY"; }
Cheffchen
 
Vielleicht $counter = 0; vor die Schleife setzen und dann auf ($counter === 0) vergleichen.

Oder was auch gehen müsste:

PHP:
if (mysql_num_rows($ass) > 0) {
    while ($row = mysql_fetch_object($ass)) {
        echo '<option value="index.php?name=' . $row->name_key . '#a1">xyz</option>';
    }
} else {
    echo "NO DATA TO DISPLAY";
}
 
Werbung:
Habe ich alles ausprobiert, klappt aber nichts davon (ich hab auch mal das ! bei dem Code von Chefchen weggelassen, weil die Var ja gesetzt sein sollte damit das echo ausgegeben wird, nicht andersherum)
@mermshaus: deine 2. variante geht nicht, da kommt irgendwas mit unknown T Var else (vermutlich kann man kein else mit ner while schleife verbinden?)
 
counter ist nicht definiert, falls die while schleife nicht ausgeführt wird.. insofern ist das !isset schon richtig, außer du verschweigst uns eine vorherige deklaration. Der else Teil unten bezieht sich nicht auf die while schleife sondern auf das if.
 
Oh danke das mit dem if hab ich echt übersehen. Hab jetzt folgenden Code, der irgendwie immer noch nciht geht:

PHP:
$qst .= $wherePart; 
					$ass = mysql_query($qst) or die ("Query failed: " . mysql_error() . " Actual query: " . $query);
					
					if (mysql_num_rows($ass) > 0) 
						{
							while($row = mysql_fetch_object($ass))
							{
							echo '<option value="index.php?name=' . $row->name_key . '#a1">xyz</option>';
							}
						}
					else {
					echo "NO DATA TO DISPLAY";
					}
Die Schleife als solche wird aber korrekt durchgeführt, auch gibt es keine fehlermeldung
 
Werbung:
$counter wird nur gesetzt, wenn $row verschieden von NULL ist. Dann kannst Du auch gleich
$row überprüfen
Code:
if (!$row) 
{
   echo ...
}

Edit: Ist Quatsch, da $row beim Verlassen der Schleife auf jeden Fall NULL ist.
Also erst $counter = 0 setzen, den Wert dann in der Schleife erhöhen (z.B. $counter++),
anschliessend abfragen, ob $counter <> 0 ist.
 
Zuletzt bearbeitet:
Zurück
Oben