Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit While-Schleife

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

  • Problem mit While-Schleife

    Hi zusammen!

    Mit folgendem Code generiere ich eine Kundennummer und überprüfe ob diese bereits vorhanden ist. Ist dies der Fall, sollte die Kundennummer erneut generiert werden. Wenn Sie nicht vorhanden ist soll sie in die Datenbank eingetragen werden:

    PHP-Code:
        // Kundennummer generieren
    function kundennummergenerator(){
        
    $number2 7;
        
    $zeichen2 "1234567890";

        
    srand((double)microtime()*1000000); 
        for(
    $i2 0$i2 $number2$i2++)
        {
          
    $kundennummer .= substr($zeichen2,(rand()%(strlen ($zeichen2))), 1);
        }
        return 
    $kundennummer;
    }


        
    // Überprüfen ob Kundennummer bereits vorhanden ist
    $isNum "0";

    while(
    $isNum "1") {
    $kundennummer kundennummergenerator();
    $query "Select count(id) as num from tab_members where kundennummer='$kundennummer'";
    $result mysql_query($query);
    if (
    mysql_errno()) die ("MySQL-Fehler: " mysql_error());
    $num mysql_result($result"num");
    if(!
    $num) {
    $isNum "1";
    $schreiben "INSERT INTO tab_members (kundennummer) VALUES ('$kundennummer')";
    $eintragen mysql_query($schreiben)
    or die(
    mysql_error());
    }

    Problem: Die Schleife läuft mehrere tausend mal durch, obwohl in der Datenbank von Anfang an erstmal keine Kundennummer eingetragen ist.
    Wer Rechtschreibfehler findet, darf sie behalten!

  • #2
    AW: Problem mit While-Schleife

    Hmm, so richtig verstehe ich es nicht, denn du sagst:
    PHP-Code:
    $isNum "0"
    Und dann:
    PHP-Code:
    while($isNum "1") { 
    Damit ist $isNum 1...
    Sonst müsstest du es so machen:
    PHP-Code:
    while($isNum == 1
    Was mich aber immer noch verwundert, denn dann dürft die Schleife gar nicht in Gang kommen, weil die Bedingung if, die $isNum umschreibt zu 1, in der Schleife ist...

    Kommentar


    • #3
      AW: Problem mit While-Schleife

      http://www.alexander-projects.de/?id=3&uid=18

      Wie mi-schi schon gesagt hat: in der Schleife muss eine Bedingung in den Klammern stehen, und keine Zuweisung...ich denke mal es handelt sich um nen Tippfehler.

      Aber die Zeile davor
      PHP-Code:
      $isNum "0"
      macht definitiv keinen Sinn?

      Dann wird ja die Schleife nie durchlaufen?

      Gruß
      Alex

      Kommentar


      • #4
        AW: Problem mit While-Schleife

        Zitat von Al3x Beitrag anzeigen
        http://www.alexander-projects.de/?id=3&uid=18

        Wie mi-schi schon gesagt hat: in der Schleife muss eine Bedingung in den Klammern stehen, und keine Zuweisung...ich denke mal es handelt sich um nen Tippfehler.

        Aber die Zeile davor
        PHP-Code:
        $isNum "0"
        macht definitiv keinen Sinn?

        Dann wird ja die Schleife nie durchlaufen?

        Gruß
        Alex
        natürlich wird die schleife durchlaufen, und zwar unendliche viele male. php weist zuerst der variablen $isNum=1 zu und wertet die variable $isNum dann aus. da der wert 1 als TRUE angesehen wird, läuft die schleife.

        aber mal ne andere frage: wenn die kundennummern sowieso aus zahlen bestehen, warum so schwer machen? wie wärs denn mit nem auto_increment bei mysql, dafür ists doch da. du musst nur temporär manuell einmal einen eintrag mit der start nummer vergeben. mysql erhöht ab diesem wert dann automatisch. dann brauchst du dich garnicht drum zu kümmern.
        AC/DC Fanpage www.ifyouwantblood.de
        Nein zur Zensur im Internet und anderswo - Anonymous

        Kommentar


        • #5
          AW: Problem mit While-Schleife

          aber mal ne andere frage: wenn die kundennummern sowieso aus zahlen bestehen, warum so schwer machen? wie wärs denn mit nem auto_increment bei mysql, dafür ists doch da. du musst nur temporär manuell einmal einen eintrag mit der start nummer vergeben. mysql erhöht ab diesem wert dann automatisch. dann brauchst du dich garnicht drum zu kümmern.
          Da hätte man aber eine (am Anfang) nur einstellige, dann zweistellige Zahlen. Das sieht doch nicht aus....
          So eine Kundennummer weißt auf Sicherheit hin:
          645465416316549120504145415048406
          und macht bestimmt Freude, anzusagen (bei Supportfällen)^^

          Kommentar


          • #6
            AW: Problem mit While-Schleife

            Außerdem wäre mit das als Verkäufer peinlich, wenn man als Käufer die Kunden-Nr. 1 bekommt ^^

            Kommentar


            • #7
              AW: Problem mit While-Schleife

              Zitat von Der Unbekannte Beitrag anzeigen
              Außerdem wäre mit das als Verkäufer peinlich, wenn man als Käufer die Kunden-Nr. 1 bekommt ^^
              ich sagte bereits, dass er temporär einen eintrag im feld kundennummer mit der startnummer machen soll. mysql speichert diesen wert dann als letzten autoincrement wert und erhöht diesen anschließend bei weiteren einträgen um eins.....somit kann er auch mit der kundennummer 10000000 anfangen....
              AC/DC Fanpage www.ifyouwantblood.de
              Nein zur Zensur im Internet und anderswo - Anonymous

              Kommentar


              • #8
                AW: Problem mit While-Schleife

                Hmm, stimmt, so geht es auch.

                Kommentar

                homepage-forum.de - Hilfe für Webmaster! Statistiken

                Einklappen

                Themen: 56.773   Beiträge: 429.807   Mitglieder: 28.524   Aktive Mitglieder: 54
                Willkommen an unser neuestes Mitglied, Friedrich.

                Online-Benutzer

                Einklappen

                182 Benutzer sind jetzt online. Registrierte Benutzer: 1, Gäste: 181.

                Mit 3.502 Benutzern waren am 23.01.2020 um 18:20 die meisten Benutzer gleichzeitig online.

                Die neuesten Themen

                Einklappen

                Die neuesten Beiträge

                Einklappen

                Lädt...
                X