Ankündigung

Einklappen
Keine Ankündigung bisher.

kontrolle ob bereits vorhanden

Einklappen

Neue Werbung 2019

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

  • kontrolle ob bereits vorhanden

    Hallo erstmal!

    hab da mal ein "registrierungssystem" gecodet.

    das script, wertet ein Formular aus und schreibt die Daten in einer Datenbank, und zwar mit folgendem script:

    PHP-Code:
    <?php
                
    //Benutzer in die Datenbank schreiben
                
    $sql_query mysql_query("INSERT INTO 
                                         `xmove_user` 
                                         (UserName, Kennwort, Nachname, Vorname, EMail, UserGroup) 
                                         VALUES 
                                         ('"
    .$username."',md5('".$kennwort."'),'".$nachname."','".$vorname."','".$email."','user')");
    ?>
    Das funktioniert auch einwandfrei, nur habe ich jetzt einfach keine Idee wie ich das machen soll, das er zuerst nachschaut, ob der Benutzer schon vorhanden ist oder nicht.
    Wenn der Benutzer vorhanden ist soll er z.B. ausgeben: "Benutzer schon vorhanden" und ansonsten halt einfach den insert ausfüehren.
    Einer eine Idee? fals ja welche? irgendwelche codeschnippsel oder tipps? bin für alles offen..
    :arrow: [URL="http://tiny.cc/0xlvv"]Wie man Fragen richtig stellt[/URL]

  • #2
    Du kannst in der Datenbank das Feld 'UserName' auf unique setzen. Damit kann es nur 1x angelegt werden. Dadurch verhinderst du schonmal grundsätzlich, dass doppelte UserNamen vorkommen. Da der Versuch, trotzdem einen doppelten anzulegen eine Fehlermeldung wirft, solltest du vorher einfach per SELECT COUNT(<primaryKey>) FROM xmove_user WHERE UserName = '<username>' prüfen, ob der Benutzer schon existiert.

    Kommentar


    • #3
      also irgendwie so:
      PHP-Code:
      <?php
          $sql_user_check 
      mysql_query("SELECT COUNT(Id) FROM xmove_user WHERE UserName = '".$username."'");
          if(!
      $sql_user_check)
              die(
      'Fehler augetreten!:
      mysql_error());

          else
              print 
      'Benutzer existiert bereits!';
      ?>
      oder verstehe ich da was falsch?
      :arrow: [URL="http://tiny.cc/0xlvv"]Wie man Fragen richtig stellt[/URL]

      Kommentar


      • #4
        habs mal nur um zu versuchen, so probiert:

        PHP-Code:
        <?php
                    $sql_user_check 
        mysql_query("SELECT COUNT(Id) FROM xmove_user WHERE UserName = '".$username."'");
                    if(
        $sql_user_check == 1)
                        die(
        'Benutzer existiert bereits!');
                    
                    elseif (
        $sql_user_check == 0){
                        die(
        'es ist noch Platz frei');
                    }
        ?>
        nur wird irgendwie die ganze Codestelle übersrprungen..
        kann mir einer weiterhelfen? hab den Befehl im PHPMyAdmin probiert, dort funktionierts prächtig, und wenn der User existiert wird 1 zurückgegeben..
        was mache ich falsch?
        fals ihr noch weitere Infos benötigt sagts mir ..
        :arrow: [URL="http://tiny.cc/0xlvv"]Wie man Fragen richtig stellt[/URL]

        Kommentar


        • #5
          niemand eine Idee? hiiiilfe..
          :arrow: [URL="http://tiny.cc/0xlvv"]Wie man Fragen richtig stellt[/URL]

          Kommentar


          • #6
            $sql_user_check = mysql_query("SELECT COUNT(Id) FROM xmove_user WHERE UserName = '".$username."'");
            if($sql_user_check == 1)

            Seit wann liefert mysql_query einen Wert aus der Datenbank? Hast du noch nie ein Select auf die DB losgelassen? Die Doku hilft auch weiter.

            Gruß
            phpfan

            Kommentar


            • #7
              Hi,

              also wenn du dierekt mit werden vergleichen willst mußt du den Wert auch raushohlen aus dem Result
              Die Funktion mysql_query() gibt nämlich eine Reccource wieder und nicht das Ergebnis der count()-Funktion der mySQL-DB.
              Also um eine Zeile zu bekommen (count() liefert immer min eine Zeile)
              PHP-Code:
              <?php
              $query 
              "SELECT COUNT(Id) FROM xmove_user WHERE UPEER(UserName) = '".strtoupper($username)."'";
              $result mysql_query($query); // ein Ergebnis aus der DB erzeugen ($result ~ Resource)
              $row mysql_fetch_row($result); // die erste Zeile aus dem Result hohlen
              $userCount $row[0]; // die erste Stelle der ersten Zeile ist in diesem Fall das Ergebnis der mySQL-Funktion 'count()'

              if($userCount 0) {
               
              # es gibt schon einen User mit dem Namen
              } else {
               
              # es gibt ncoh keinen User mit diesem Namen
              }
              ?>
              Gruß
              Der Desian
              Wenn dich was ankotzt, machs besser.

              Kommentar

              Lädt...
              X