while-schleife in while-schleife

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • while-schleife in while-schleife

    Hallo Leute,

    ich möchte in einer while Schleife eine andere while-Schleife öffnen um ein vergleich der Daten zu machen, aber leider geht er die schleife nur ein mal durch. also, er überprüft nur einen Benutzer und nacher steigt er aus, aber er musste ja für alle Benutzer das gleiche machen? oder?

    keine Ahnung was das Problem sein kann.

    ich zeig euch mal mein code:

    }
    PHP-Code:
    while($row mysql_fetch_array($result)){    
    $username=$row['username']; 

    while(
    $row_oracleoci_fetch_array($stmOCI_ASSOC)){
    $nickname $row_oracle['NICKNAME'];
    $password $row_oracle['PASSWORD'];
    $player_id $row_oracle['PLAYER_ID'];

    if(
    $nickname == $username){
    echo 
    'Namen stimmen Überein ';
    echo 
    $username .'==' .$nickname;
    echo 
    " "
    echo 
    "<br>"



    elseif(
    $nickname != $username){
    echo 
    'Namen stimmen nicht Überein ';
    echo 
    $username .'!=' .$nickname;
    echo 
    " "
    echo 
    "<br>"


    }    

    Zuletzt geändert von paulii-; 02.07.2008, 15:15.

  • #2
    nutze die php-tags, sonst kann man deinen code nicht durchblicken
    it's not a bug,
    it's a feature!

    Kommentar


    • #3
      1. bitte php code formatieren
      2. testausgaben machen
      3. Der Fall, dass namen nicht übereinstimmen wird bei dir nicht berücksichtigt, weil du zweimal auf glecihheit (==) überprüfst =)

      aber ich bin mir sicher, das wenn du mal ein bisschen debugging machst, dir sofort einiges klarer wird

      Kommentar


      • #4
        wurde ausgebessert

        Kommentar


        • #5
          du läufst das resultset beim $stm komplett durch, d.h. der interne zeiger ist ganz unten angelangt und die mysql_fetch_array function
          liefert ein >false< zurück

          streu mal ein echo nach der inneren while schleife ein, dann wirst du sehn, dass er schon alle user durchgeht =)
          Zuletzt geändert von BugBite; 02.07.2008, 15:46.

          Kommentar


          • #6
            Zuerst einmal: rücke deinen Code ein, ist ja kaum lesbar!
            Des weiteren ist deine Frage sehr ungenau gestellt. Welche Schleife wird nur einmal durchlaufen, was wird ausgegeben, und was sollte ausgegeben werden? Fehlermeldungen?
            Den eigentlichen Fehler hat dir BugBite ja schon genannt. Du könntest internen Zeiger des Oracle-Cursors nach jedem Durchlauf zurücksetzen. Aber es macht kaum Sinn, die DB-Resultate jedes mal neu zu lesen. Schreibe sie deshalb vor der ersten Schleife in einnen Array (z.B. mit oci_fetch_all()), und benutze dann für die innere Schleife dieses Array.
            Das könnte dann etwa so aussehen:
            PHP-Code:
            <?php
            oci_fetch_all
            ($stm$ora_array) or exit('Oracle fetch failed'); 
            while(
            $row mysql_fetch_array($result)){    
                
            $username $row['username']; 

                foreach(
            $ora_array as $row_oracle){
                    
            $nickname $row_oracle['NICKNAME'];
                    
            $password $row_oracle['PASSWORD'];
                    
            $player_id $row_oracle['PLAYER_ID'];

                    if(
            $nickname == $username){
                        echo 
            "Namen stimmen &uuml;berein $username == $nickname<br />"
                    } 
                    else{
                        echo 
            "Namen stimmen nicht &uuml;berein $username != $nickname<br />"
                    } 
                }    
            }
            ?>
            Zuletzt geändert von H2O; 03.07.2008, 09:01.
            Gruss
            H2O

            Kommentar

            Lädt...
            X