while-schleife in while-schleife

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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>"


    }    

    Last edited by paulii-; 02-07-2008, 14:15.

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

    Comment


    • #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

      Comment


      • #4
        wurde ausgebessert

        Comment


        • #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 =)
          Last edited by BugBite; 02-07-2008, 14:46.

          Comment


          • #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 />"
                    } 
                }    
            }
            ?>
            Last edited by H2O; 03-07-2008, 08:01.
            Gruss
            H2O

            Comment

            Working...
            X