Endlos While() Schleife

F0rris

Mitglied
Abend,

Hab hier folgendes Problem, die while(); Schleife gibt nur den ersten Wert aus und das endlos.

PHP:
<?php
$ds=mysql_fetch_array(/* [...] */);
if($ds){
    while($row = $ds){
        $dds=mysql_fetch_object(/* [...] */);
        if($dds->ARTNRupt!=""){
            /* [...] */
?>
function mql für MySQL querys

Vielleicht kann mir einer noch erklären, wieso das eine so Ausgeben muss $dds-> und $row[''] so? Verstehe den sinn nicht ganz bzw. wann man Allgemein -> /[''] nutzen darf.

Hab da auch noch einen kleinen "Wunsch" :). Bitte keine Lösungen posten sondern mir zu verstehen geben wodurch dieser Fehler entsteht, so das ich Ihn selbst finden kann :).


Greez F0rris
 
Zuletzt bearbeitet:
Klar liefert sie nur die erste Zeile. Das ist was du von PHP verlangst ;)

Pseudocode:
Code:
$ds = Erste Zeile auslesen
while ($row = $ds)
{
  Anzeigen;
}

Nach welcher Quelle bzw. nach welchem Tutorial oder Buch hast du das gelöst?

Hoffe du erkennst selbst, dass das Auslesen ständig neu gemacht werden muss ;)
 
Nach keinem, rein (un-)logisches Denken. Versuch grade mal mein eigenes Wissen zu testen und scheiter schon an while().

So werde dann mal versuchen den mysql befehl zu ändern und das ganze in eine array :confused: zu packen umso so dann 2 werte ausgeben zu können oder?

//Edit:

PHP:
<?php
#TRUE
while($row = mysql_fetch_array($result)){
		$dds=/* [...] */
}
#FALSE
$ds=mysql_fetch_array($result);
while($row = $ds){
		$dds=/* [...] */
}
?>
Also nur wegen meiner verständnis, wenn ich das mit einer $_Var in die while($a=$b) einfüge, ist das der 1. Wert und der wird so lange wiederholt bis der Speicher vom Server voll ist oder mein Pc abstürtzt, weil es kein Ende gibt bzw. kein array() Ende oder?
 
Zuletzt bearbeitet:
Der Denkfehler besteht darin, dass du denkst, mysql_fetch_array() liefert dir alle Datensätze der Ergebnisliste als Array...was nicht der Fall ist.

Es liefert dir den aktuellen Datensatz...in deinem Fall den ersten....und rückt den Zeiger in der Ergebnisliste nach vorn.
Diesen Bezug zur Ergebnisliste hast du aber in der Bedingung der Schleife verloren.

So verlierst du ihn nicht:
Code:
while ($row = mysql_fetch_array($ergebnisliste))
{
  //Anzeigen;
}

So, wie du es momentan angehst, könntest du PDOStatement::fetchAll verwenden, denn das liefert dir die komplette Ergebnisliste als Array.
 
Zurück