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

Schleifenproblem bei Datenbankausgabe

Status
Für weitere Antworten geschlossen.

Web_spider

Neues Mitglied
Hi all,

Ich hab ein Problem. Ich gebe mit einer while Schleife Daten aus der Datenbank aus. Das einzige was ich dabei nicht verstehe, warum die Schleife nie endet.

PHP:
                            while($menupoints = db_fetch_assoc(db_query("SELECT * FROM `".db_prefix."mpoints` WHERE `id` = '".$data['id']."' ORDER BY `order`")))
{
    $tmp_content.= $this->get_menupoints($menu_handle, array("url" => $menupoints['file'], "name" => $menupoints['name']));
}
Die db_ funktionen entsprechen den mysql Funktionen.

Normalerweise müsste die Schleife stoppen, nachdem alle Daten ausgelesen wurden, aber sie tut es net.
In der Datenbank ist nur 1 Eintrag, und der Eintrag wird unendlich mal ausgelesen.

MfG

Web_spider
 
dann machs nicht als schleife, sondern als normale einfach-abfrage in einem array...

PHP:
<?php
$menupoints = db_fetch_assoc(db_query("SELECT * FROM `".db_prefix."mpoints` WHERE `id` = '".$data['id']."' ORDER BY `order`"))

echo $menupoints['argument'];
?>

Nils aka XraYSoLo
 
Morgen XraYSoLo

Es tut mir leid, in meiner Formulierung lag ein Fehler.
Ich habe momentan nur 1 Datenbankeintrag, aber es werden mehr.

Siehst du, warum diese Schleife unendlich läuft?

Hier das var_dump von menupoints.

//edit
Bessere Übersicht gemacht.

Upss, da ist ja ne .htaccess druff
Vorrübergehend:
User: html
Pass: schleife

Aus Sicherheitsgründen ist der Zugriff, weil das Problem ja gelöst ist
!!Gesperrt!!


Mfg

Web_spider
 
Zuletzt bearbeitet:
mit begrenzer:

PHP:
<?php
if(mysql_num_rows($connection) = 1)
   {
   //ausgabe
   exit();
   }
?>

dumme lösung, ja, aber es ginge dann ^^.

Nils aka XraYSoLo
 
Hmm, erstmal danke dir.

Ich denke, ich werde es so machen müssen. Aber ich verstehe trotzdem nicht, warum die Schleife net aufhört, nachdem es den Datensatz ausgelesen hat.

Grüße

Web_spider
 
kann höchstens noch in einer funktion stecken, die in der klassendatei läuft...was sogar relativ wahrscheinlich ist.

Nils aka XraYSoLo
 
so nochmals hi Nils,

Hier ist die Funktion
PHP:
    function get_menupoints($content, $array)
    {
        global $tpl;
        
        preg_match("=(\\".$tpl->ec_1."MENU\_POINTS\\".$tpl->ec_2.")((?s).*)(\\".$tpl->ec_1."/MENU\_POINTS\\".$tpl->ec_2.")=Ui", $content, $values);
        
        foreach($array as $key => $value)
        {
            $values[2] = str_replace("%".$key."%", $value, $values[2]);
        }
        
        return $values[2];
    }

hmm hab nochmal getestet:

PHP:
return $values[2];

gibt genau das Zurück, was ich brauche.
Aber eigentlich hat diese Funktion keinen Einfluß auf die Schleife.

Mfg Web_spider
 
Hallo,

Code:
[COLOR=Black]while($menupoints = db_fetch_assoc(db_query("SELECT * FROM `".db_prefix."mpoints` WHERE `id` = '".$data['id']."' ORDER BY `order`")))[/COLOR]

Die Schleifenbedingung wird jedesmal neu Ausgewertet. Das bedeutet, es wird auch jedesmal der Query neue ausgeführt.

=> Query außerhalb der Schleife und nur das Ergebnis *fetch* übergeben.


N43
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben