Crash: Feldinhalt prüfen

Hallo!

Ich bin MySQL Anfänger.
Ich möchte jetzt ein Script programmieren, bei dem sich User
zu einem Dienst anmelden können.
Die Userdaten werden in eine Datenbank eingetragen.
Das Feld benutzername ist auf unique gesetzt.
Nun möchte ich aber irgendwie erreichen das das Script erkennt
wenn es den usernamen schon gibt und so die Registration
nicht mehr möglich ist.
Wie prüfe ich nun den Feldinhalt?
Danke schon im Vorraus
Grüße aus Nürnberg
Julius

  1. Hi Julius,
    mit welcher Programmiersprache sprichst du die Datenbank an?

    Ciao Sascha

    1. Ansprechen tu ich mit PHP(auf meinen Server is die Version 4.3.0 aber auf dem auf dems später laufen soll 4.1.6)

  2. Wie prüfe ich nun den Feldinhalt?

    Du versuchst ein "INSERT" und bekommst bei Vorhandensein einen Fehler - und fängst den natürlich ;-) ab.

    Bekommst Du keinen Fehler, dann ist der neue Name gleich eingetragen.
    Fertig.

    Gruß
    Timothy

    1. Komischerweise krieg ich keine Fehlermeldung.
      Das Script läuft einfach weiter...
      Hier mal der Quelltext(meine MySQL Daten schneid ich raus^^):

      <?PHP
      $sqllogin = mysql_connect("localhost", "", "");

      if (mysql_select_db(crash, $sqllogin))
      {
      echo "Anmeldung wird bearbeitet...<br/><br/>";
      }
      else {
      die("Fehler beim auswählen der Datenbank!<br/>");
      }

      $sqlabfrage = "INSERT INTO benutzer(benutzer, passwort) VALUES ('$benutzer','$passwort')";
      $resID = mysql_query($sqlabfrage, $sqllogin);
      ?>

      Jetzt könnt ihr gleich auchnoch den Quelltext bekritteln^^
      Ne aber was mach ich da falsch das ich garkeine Fehlermeldung aufen Schirm oder in den Browser
      bekomm?
      Die Adresse zum Formular in das die Benutzerdaten eingetragen werden
      ist http://flcrash.dyndns.org/mysql.htm
      vielliecht kannste jetzt mehr damit anfangen
      Grüße aus Nürnberg
      Julius

      1. Sorry Julius,

        da kann ich Dir leider nicht helfen, da ich in PHP nicht so bewandert bin.

        Unter Perl ich entsprechende Möglichkeiten

        a) einen Fehler "gemeldet" zu bekommen

        und

        b) diesen abzufangen.

        Vielleicht weiß jemand anderes im Forum mehr.

        Bye
        Timothy

  3. Moin Moin !

    SELECT COUNT(*) FROM usertabelle WHERE usernamespalte='eingegebenername'

    ... liefert 1, wenn der User existiert, 0 wenn nicht.

    Wenn zwei Leute exakt gleichzeitig mit dem gleichen Namen "rein" wollen, gibt es natürlich Probleme. Das sollte im "Real Live" bei moderat benutzen Diensten aber nur sehr selten passieren.

    Alexander

    --
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"
    Mein "Lieblings-Forums-Bug": http://cforum.teamone.de/phpbt/bug.php?op=show&bugid=103&pos=2
    Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
    1. <?PHP
      $sqllogin = mysql_connect("localhost", "", "");

      if (mysql_select_db(crash, $sqllogin)){
       echo "Anmeldung wird bearbeitet...<br/><br/>";
      }
      else {
       die("Fehler beim auswählen der Datenbank!<br/>");
      }

      $sqlabfrage = "SELECT COUNT(*) FROM benutzer WHERE benutzer='$benutzer'";

      if($sqlabfrage == 1){
       echo "User exsitiert schon!";
       }

      else{
       $sqlabfrage = "INSERT INTO benutzer(benutzer, passwort) VALUES ('$benutzer','$passwort')";
       $resID = mysql_query($sqlabfrage, $sqllogin);
       if(isset($resID)){
        echo "Anmeldung erfolgreich!";
        }
       else{
        echo "Es gab Probleme bei der Anmeldung!";
        }
       }
      ?>

      Irgendwie gibt der jetzt bei dem Script hier oben immer 0 zurück

      1. Moin Moin !

        $sqlabfrage = "SELECT COUNT(*) FROM benutzer WHERE benutzer='$benutzer'";

        if($sqlabfrage == 1){
         echo "User exsitiert schon!";
         }
        Irgendwie gibt der jetzt bei dem Script hier oben immer 0 zurück

        Nicht ganz.

        "SELECT COUNT(*) FROM benutzer WHERE benutzer='$benutzer'" ist eben ungleich 1.

        Vielleicht solltest Du das Statement erstmal ausführen und dann das Ergebnis überprüfen ? ;-)

        Alexander

        --
        Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"
        Mein "Lieblings-Forums-Bug": http://cforum.teamone.de/phpbt/bug.php?op=show&bugid=103&pos=2
        Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
        1. Irgendwie merk ich das auch grade das ich das garnich gemacht hab.
          *sichanKopfhau*

          1. Ich probier jetz hier auch schon die ganze Zeit rum aber es is immernoch
            ungleich eins.
            Hier nochmal der Quelltext zum anschauen(er is ja anders):

            <?PHP
            $sqllogin = mysql_connect("localhost", "", "");

            if (mysql_select_db(crash, $sqllogin)){
             echo "Anmeldung wird bearbeitet...<br/><br/>";
            }
            else {
             die("Fehler beim auswählen der Datenbank!<br/>");
            }

            $sqlabfrage = "SELECT * FROM benutzer WHERE benutzer='$benutzer'";
            $resID = mysql_query($sqlabfrage, $sqllogin);
            if($resID == 1){
             echo "User exsitiert schon!";
             }

            else{
             $sqlabfrage = "SELECT * FROM benutzer WHERE benutzer='$mailadresse'";
             $resID = mysql_query($sqlabfrage, $sqllogin);
             if($resID == 1){
             echo "E-Mailadresse exsitiert schon!";
             }
             else{
              $sqlabfrage = "INSERT INTO benutzer(benutzer, passwort, mailadresse) VALUES ('$benutzer','$passwort','$mailadresse')";
              $resID = mysql_query($sqlabfrage, $sqllogin);
              if($resID == 1){
               echo "Anmeldung erfolgreich!";
               }
              else{
               echo "Fehler!";
               }
              }
             }
            ?>

            Ich weis ja nich was ich jetz falsch mach.
              $sqlabfrage = "INSERT INTO benutzer(benutzer, passwort, mailadresse) VALUES ('$benutzer','$passwort','$mailadresse')";
              $resID = mysql_query($sqlabfrage, $sqllogin);
              if($resID == 1){
               echo "Anmeldung erfolgreich!";
               }
              else{
               echo "Fehler!";
               }
            Bei dem Teil hier setzt es auf 1 oder 0.
            Bei den anderen irgendwie nich

            1. Moin Moin !

              $sqlabfrage = "SELECT * FROM benutzer WHERE benutzer='$benutzer'";
              $resID = mysql_query($sqlabfrage, $sqllogin);
              if($resID == 1){
               echo "User exsitiert schon!";
               }

              Wer hat den da das COUNT vergessen ?

              Du willst COUNT(*), nicht nur *. ;-)

              Vielleicht gehst Du erstmal ins Bett oder holst Dir ne XXL-Tasse Kaffee. ;-)

              Alexander

              --
              Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"
              Mein "Lieblings-Forums-Bug": http://cforum.teamone.de/phpbt/bug.php?op=show&bugid=103&pos=2
              Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
              1. Und was is jetz ander falsch?

                $sqlabfrage = "SELECT COUNT(*) FROM benutzer WHERE benutzer='$benutzer'";

                1. Moin Moin !

                  Das sollte jetzt eigentlich funktionieren.

                  Alexander

                  --
                  Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"
                  Mein "Lieblings-Forums-Bug": http://cforum.teamone.de/phpbt/bug.php?op=show&bugid=103&pos=2
                  Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
                  1. Ich will zwar nich die ganze Zeit stören durch mein Nichtwissen,
                    aber hab ich hier vielleicht irgendwo nen Fehler drin?

                    $sqlabfrage = "SELECT COUNT(*) FROM benutzer WHERE benutzer='$benutzer'";
                    $resID = mysql_query($sqlabfrage, $sqllogin);
                    if($resID = 1){
                     echo "User exsitiert schon!";
                     }

                    1. Moin Moin !

                      Ich will zwar nich die ganze Zeit stören durch mein Nichtwissen,
                      aber hab ich hier vielleicht irgendwo nen Fehler drin?

                      if($resID = 1){
                       echo "User exsitiert schon!";
                       }

                      Hmmm, in C, Perl und Javascript wäre der Ausdruck hinter if ein logischer Fehler, denn es wäre eine Zuweisung, die konstant 1 (also TRUE) zurückliefert. Da PHP von Perl abstammt, gehe ich mal davon aus, daß man auch in PHP mit == statt = auf Gleichheit überprüft.

                      Das hab ich bisher allerdings übersehen ...

                      Alexander

                      --
                      Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"
                      Mein "Lieblings-Forums-Bug": http://cforum.teamone.de/phpbt/bug.php?op=show&bugid=103&pos=2
                      Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
                      1. Oh hab ich auch übersehen mit 2 gehts aber auch nich.
                        [link http://flcrash.dyndns.org/communityscript/anmeldung.htm ]
                        Da sollte ja nich Fehler bei der Anmeldung! kommen sondern
                        User exsitiert schon!
                        Das mit dem Fehler kommt ja später.
                        Irgendwie beachtet der die 2 Abfragen garnich...

                        1. Moin Moin !

                          Irgendwie beachtet der die 2 Abfragen garnich...

                          Wird der Code überhaupt ausgeführt ?

                          Wie wäre es mit ein paar mal

                          print "<!-- checkpoint: hab gerade erstes sql-statement ausgeführt -->";

                          Dann reicht ein View Source, um festzustellen, was wirklich passiert ist.

                          Alexander

                          --
                          Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"
                          Mein "Lieblings-Forums-Bug": http://cforum.teamone.de/phpbt/bug.php?op=show&bugid=103&pos=2
                          Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
                          1. Nachdem ich jetz ne Runde gepennt hatte und mir das Script heute angeschaut hatte
                            hab ichs hinbekommen.
                            hatte danach einfach ein mysql_fetch_array ausgeführt was ich egstern noch nich hatte. Naja ich hatte zuvor dann nichmehr * abgefragt sondern
                            nurnoch die Zelle benutzer.
                            Dann musste ich nur prüfen ob $row[0] == 1 is.
                            dann gings.
                            Hast recht gehabt gestern.
                            Ne Runde pennen und dann kriegt mans hin ;)

                            1. Moin Moin !

                              Hast recht gehabt gestern.
                              Ne Runde pennen und dann kriegt mans hin ;)

                              Tja, was soll ich sagen ? Jahrelange Erfahrung. *schnarch* ;-)

                              Alexander

                              --
                              Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"
                              Mein "Lieblings-Forums-Bug": http://cforum.teamone.de/phpbt/bug.php?op=show&bugid=103&pos=2
                              Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
                              1. Hi Schrat!

                                Tja, was soll ich sagen ? Jahrelange Erfahrung. *schnarch* ;-)

                                <img src="http://www.volkerreiche.de/schrat-aha.gif" border="0" alt="">
                                Alexander Foken heißt also Deine jetzige Inkarnation. *g*

                                http://www.volkerreiche.de/Comics___Illustration/Comics/Mecki/mecki.html

                                *chhuuäähh......*

                                Axel