While Schleife wird ignoriert

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

  • While Schleife wird ignoriert

    Hallo,

    ich habe folgendes Problem. Ich möchte aus einer MySQL Datenbank Name, Vorname und Klasse auslesen und die Daten mit Formulardaten vergleichen. Das Problem ist, dass er die While Schleife irgnoriert:
    PHP-Code:
    $dbconn mysql_connect($db_host$db_user$db_pwd);
    mysql_select_db($db$dbconn);
    echo 
    '<b>Datenbankverbindung hergestellt!</b><br>';
    echo 
    '!!!!!!!!!!!!!!!!!!!!!!!!!!!!<br>';
    echo 
    '<b>&Uuml;berpr&uuml;fe Name, Vorname und Klasse</b><br>';
    // NAME, VORNAME UND KLASSE UEBERPRUEFEN
    $ergebnis mysql_query("SELECT * FROM $schueler WHERE name LIKE '$name' AND vorname LIKE '$vorname'");
    while (
    $result mysql_fetch_object($ergebnis))
        {
        echo 
    '!!!!!!!!!!!!!!!!!!!!!!!!!!!!<br>'//Wird nicht angezeigt
        
    $name_db $result->name;
        
    $vorname_db $result->vorname;
        
    $klasse_db $result->klassenstufe;
        if (
    $name_db == $name AND $vorname_db == $vorname AND $klasse_db == $klasse)
                {
                echo 
    '<b>&Uuml;berpr&uuml;ung abgeschlossen; Name, Vorname und Klasse sind richtig.</b><br>';
                break;
                }
            else
                {
                
                die(
    '<b>Falscher Name, Vorname und/oder Klasse!<br><a href="javascript:history.back();">Zurück</a></b>');
                }
        }
    echo 
    '!!!!!!!!!!!!!!!!!!!!!!!!!!!!<br>'
    Wo habe ich diesmal wieder einen Bock geschossen? Ich finde meinen Fehler einfach nicht. Errorreporting und mysql_error hatte ich schon mit in den Anweisungen, aber er hat keinen Fehler gemeldet und deswegen hab ichs der Übersichtlichkeit weggelassen.

    Danke für die Hilfe schon im Vorraus!

    cu
    robertthronhill

  • #2
    Lass dir die fertige SELECT-Query mal ausgeben und setze sie dann mit phpMyAdmin ab - was ist das Ergebnis?

    Kommentar


    • #3
      phpmyadmin führt die Abfrage ohne zu meckern aus. Es kommt auch das richtige Ergebnis.

      Kommentar


      • #4
        Mach mal ein echo vom Query. Vielleicht wird eine der Variablen nicht richtig eingesetzt...

        Kommentar


        • #5
          Dann schau mit mysql_num_rows im Script nach, wie viele Sätze dir deine Abfrage da liefert ...
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            mysql_num_rows gibt 1 aus, das heißt er findet genau den einen Datensatz den er finden sollte.

            Kommentar


            • #7
              Poste nochmal den kompletten Code ohne Kürzungen zwecks Übersicht usw...
              Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
              Schön - etwas Geschichte kann ja nicht schaden.
              Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

              Kommentar


              • #8
                Ich hab die Kürzungen schon im Quellcode vorgenommen, nicht nur fürs Forum. Ich habe genau den Code am laufen, der oben steht.

                Kommentar


                • #9
                  Mach mal

                  echo $ergebnis;

                  vor der While-Schleife - was kommt da raus?
                  Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                  Schön - etwas Geschichte kann ja nicht schaden.
                  Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                  Kommentar


                  • #10
                    Da kommt
                    Code:
                    Resource id #3
                    raus.

                    Kommentar


                    • #11
                      Das wird ja langsam unheimlich hier

                      Die Abfrage liefert sowieso immer nur einen DS?
                      mach mal die zuweisung an $result vor der while-schleife und teste mal ne andere Bedingung in der While-Schleife, z.B. so:

                      PHP-Code:
                      $result mysql_fetch_object($ergebnis);
                      $i 0;
                      while (
                      $i 1)
                          {
                          echo 
                      'ein hallo aus der Schleife<br>'//Wird nicht angezeigt
                          
                      $name_db $result->name;
                          
                      $vorname_db $result->vorname;
                          
                      $klasse_db $result->klassenstufe;
                          if (
                      $name_db == $name AND $vorname_db == $vorname AND $klasse_db == $klasse)
                                  {
                                  echo 
                      '<b>&Uuml;berpr&uuml;ung abgeschlossen; Name, Vorname und Klasse sind richtig.</b><br>';
                                  break;
                                  }
                              else
                                  {
                                  
                                  die(
                      '<b>Falscher Name, Vorname und/oder Klasse!<br><a href="java script:history.back();">Zurück</a></b>');
                                  }
                          
                      $i++;
                          } 
                      geht er dann in die Schleife rein?
                      Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                      Schön - etwas Geschichte kann ja nicht schaden.
                      Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                      Kommentar


                      • #12
                        Ah, sehr schön jetzt geht er entlich in die Schleife rein , aber warum meint er jetzt, dass garantiert richtige Daten falsch sind ?

                        Kommentar


                        • #13
                          Wie? Meinst in deiner If-Abfrage? Mach Testausgaben - ich möchte wetten das die vars aus der DB leer sind - allerdings weiß ich ned warum.

                          Bist du dir sicher, dass du zwischen mysql_query und der while-Schleife nicht schon mal irgendwo mit mysql_fetch_object zugreifst?

                          Poste bitte nochmal den kompletten Code per Copy&Paste hier rein - das gibts irgendwie ja gar nicht.
                          Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                          Schön - etwas Geschichte kann ja nicht schaden.
                          Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                          Kommentar


                          • #14
                            Erstmal Danke für euere Hilfe!
                            Also so sieht der komplette Code aus:
                            PHP-Code:
                            <html>
                            <head>
                            <title>Sch&uuml;lerumfrage - Datenbankoperationen</title>
                            </head>
                            <body>
                            <?php
                            // Verbindungsvariablen
                            $db_host 'localhost';
                            $db_user '********';
                            $db_pwd '********';
                            $db 'umfrage';
                            $schueler 'schueler_liste';
                            $name $_POST["name"];
                            $vorname $_POST["vorname"];
                            $klasse $_POST["klasse"];
                            $geschlecht $_POST["geschlecht"];
                            echo 
                            $name'<br>';
                            echo 
                            $vorname'<br>';
                            echo 
                            $klasse'<br>';
                            echo 
                            $geschlecht'<br>';
                            echo 
                            '<b>Variablentest beendet.</b><br>';
                            echo 
                            '<b>&Ouml;ffne Datenbankverbindung...</b><br>';
                            // VERBINDEN
                            $dbconn mysql_connect($db_host$db_user$db_pwd);
                            mysql_select_db($db$dbconn);
                            //echo '<b>Datenbankverbindung hergestellt!</b><br>';
                            echo '!!!!!!!!!!!!!!!!!!!!!!!!!!!!<br>';
                            echo 
                            '<b>&Uuml;berpr&uuml;fe Name, Vorname und Klasse</b><br>';
                            // NAME, VORNAME UND KLASSE UEBERPRUEFEN
                            $ergebnis mysql_query("SELECT * FROM $schueler WHERE name LIKE '$name' AND vorname LIKE '$vorname'");
                            $result mysql_fetch_object($ergebnis);
                            $i 0;
                            while (
                            $i 1)
                                {
                                echo 
                            'ein hallo aus der Schleife<br>'//Wird nicht angezeigt
                                
                            $name_db $result->name;
                                
                            $vorname_db $result->vorname;
                                
                            $klasse_db $result->klassenstufe;
                                if (
                            $name_db == $name AND $vorname_db == $vorname AND $klasse_db == $klasse)
                                        {
                                        echo 
                            '<b>&Uuml;berpr&uuml;ung abgeschlossen; Name, Vorname und Klasse sind richtig.</b><br>';
                                        break;
                                        }
                                    else
                                        {
                                        
                                        die(
                            '<b>Falscher Name, Vorname und/oder Klasse!<br><a href="java script:history.back();">Zurück</a></b>');
                                        }
                                
                            $i++;
                                }
                            echo 
                            '!!!!!!!!!!!!!!!!!!!!!!!!!!!!<br>';
                            echo 
                            '<b>Eindeutigen Schl&uuml;ssel erstellen...</b><br>';
                            $keyarray = array($name$klasse$vorname);
                            $keyimp implode(""$keyarray);
                            $key sha1($keyimp);
                            echo 
                            '<b>Schl&uuml;ssel erstellt.</b><br>';
                            echo 
                            '<b>Spreichere Daten...</b><br>';
                            echo 
                            '<b>Daten erfolgreich gespeichert!</b><br>';
                            // Namen aus der Tabelle entfernen
                            mysql_query($stat "DELETE FROM $schueler WHERE name = '$name' AND vorname = '$vorname' AND klassenstufe = '$klasse'");
                            // DATENBANKVERBINDUNG BEENDEN
                            mysql_close ($dbconn);
                            mysql_free_result ($ergebnis);
                            //mysql_free_result ($ergebnis);
                            echo '<b>Verbindung zur Datenbank beendet.</b><br>';
                            echo 
                            '<b>Das Browserfenster kann jetzt geschlossen werden.</b><br>';
                            ?>
                            </body>
                            </html>
                            cu
                            robertthronhill

                            Kommentar


                            • #15
                              Original geschrieben von robertthronhill
                              Also so sieht der komplette Code aus:
                              Und was sollen wir jetzt damit?

                              Zuerst mal ist der ziemlicher Murks. Offenbar(?) erwartest du nur einen Datensatz als Ergebnis - also wofür dann überhaupt eine While-Schleife? Die jetzt auch noch so programmiert ist, dass sie selbst für mehr datensätze nur einmal durchlaufen werden könnte ... das ist doch Unfug.
                              Kann es sein, dass irriger Weise annimmst, man könnte das Ergebnis einer Datenbankabfrage nur mittels einer Whileschleife auswerten ...?


                              Und dann vermisse ich in deinem Code noch sämtliche Testausgaben - wenn die if-Abfrage auf Gleichheit der Werte falsch ergibt, wird das ja wohl irgendeinen Grund haben. Also warum zum Kuckuck machst du dann keine geeigneten Kontrollausgaben, um das mal nachzuprüfen ...?
                              I don't believe in rebirth. Actually, I never did in my whole lives.

                              Kommentar

                              Lädt...
                              X