Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Duplicate entry 'nickname' for key 2

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Duplicate entry 'nickname' for key 2

    Moinsen,

    ich habe folgendes Problem:

    Ich habe ein Registrationsscript geschrieben, aber finde keine Lösung wie ich diese "Duplicate entry 'Nomexus' for key 2" Fehlermeldung ausblenden kann.

    Eine Kontrolle mit Fehlerausgabe habe ich schon für vorhandene Emails und Nicknames aber wie kann ich die obrige Fehlermeldung abschalten? Das Script bricht ja dann immer sofort ab und das will ich nicht.

    mfg Nomexus

  • #2
    indem du die ursache behebst

    Kommentar


    • #3
      Wie soll ich das anstellen? Ein neuer User weiß ja nicht ob es diesen Nickname schon gibt und da ist es ja dann Blöd wenn er auf einmal diese Fehlermeldung sieht anstatt eines schönen "Nickname schon vergeben" neben dem Formularfeld.

      Kommentar


      • #4
        Lass mich einfach mal so raten.... In Deinem Skript steht
        PHP-Code:
        $result mysql_query($sql$mysql) or die(mysql_error()); 
        an besagter Stelle?

        Kommentar


        • #5
          du musst halt vorher eine prüfung machen bevor du die daten in die datenbank schreibst, ob der name schon vorhanden ist (per select den Name suchen, wenn gefunden fehlermeldung, wenn nicht gefunden -> daten reinschreiben)

          Kommentar


          • #6
            Nein, bitte nicht mit einem zusätzlichen SELECT lösen.

            Kommentar


            • #7
              Das habe ich dort stehen:

              PHP-Code:
              $control_name   =   'SELECT UserName FROM users WHERE UserName="$_REQUEST["form_name"]"';
                              
                              if(
              "mysql_num_rows($control_name) > 0;")
                              {
                                  echo
              "Name schon Vorhanden!<br>";
                              }
                              
                              
              $control_email   =   'SELECT UserMail FROM users WHERE UserMail="$_REQUEST["form_email"]"';
                              
                              if(
              "mysql_num_rows($control_email) > 0;")
                              {
                                  echo
              "Email schon Vergeben!<br>";
                              }
                              
                              
              // In die Datenbank schreiben wenn alles geklappt hat
                              
                              
              $eintragen  =   "INSERT INTO users (UserName, UserPass, UserMail, RegDate) VALUES ( ";
                              
              $eintragen .=   " '" $_REQUEST["form_name"] . "', ";
                              
              $eintragen .=   " '" $_REQUEST["form_password"] . "', ";
                              
              $eintragen .=   " '" $_REQUEST["form_email"] . "', ";
                              
              $eintragen .=   " '" $datum "' )";
                              
                              
              $result =   mysql_query$eintragen ); 

              Kommentar


              • #8
                nicht? oops wie denn?

                edit: ja ähm du schreibst auf jedenfall in die db, das is der weg den ich gegangen wäre, aber um dein in die db schreiben gehört ein else { }

                Kommentar


                • #9
                  Nee da dieser Komplette code auch in einer IF-abfrage steht:

                  PHP-Code:
                  if($error_msg ==  "")
                              {
                  ...
                  hier der eben gepostete code
                              

                  Kommentar


                  • #10
                    "mysql_num_rows($control_email) > 0;"
                    Das ist eine Zeichenkette, kein Vergleich.

                    Bei einem duplicate key Fehler liefert [man]mysql_error[/man]() einen bestimmten Wert zurück. Diesen kannst Du im Fehlerfall abtesten.
                    PHP-Code:
                    <?php
                    define
                    ('MYSQL_DUPLICATE_KEY'1062);

                    $mysql mysql_connect('..''..''..') or die(mysql_error());
                    mysql_select_db('..'$mysql) or die(mysql_error());


                    $eintragen "
                      INSERT INTO
                        users
                        (UserName, UserPass, UserMail, RegDate)
                      VALUES (
                        '"
                    mysql_real_escape_string($_REQUEST["form_name"], $mysql) ."',
                        '"
                    mysql_real_escape_string($_REQUEST["form_password"], $mysql) ."',
                        '"
                    mysql_real_escape_string($_REQUEST["form_email"], $mysql) ."',
                        Now()
                      )
                    "
                    ;
                    $result mysql_query($eintragen$mysql);
                    if ( 
                    false===$result ) {
                      if ( 
                    mysql_errno($mysql)==MYSQL_DUPLICATE_KEY ) {
                        echo 
                    '<p>Benutzername oder EMail-Adresse wird bereits verwendet</p>';
                      }
                      else {
                        echo 
                    '<p>Fehler beim Eintragen des neuen Datensatzes</p>';
                      }
                    }
                    else {
                      echo 
                    '<p>Datensatz erfolgreich eingetragen</p>';
                    }

                    Kommentar


                    • #11
                      Nun bekomme ich folgende Fehlermeldung:

                      "mysql_errno(): supplied argument is not a valid MySQL-Link resource"

                      Kommentar


                      • #12
                        Unwahrscheinlich, wenn Du auch
                        PHP-Code:
                        $mysql mysql_connect('..''..''..') or die(mysql_error());
                        mysql_select_db('..'$mysql) or die(mysql_error()); 
                        übernommen oder den Code entsprechend hast.

                        Kommentar


                        • #13
                          ich habe diesen Code per include aus einer datei :

                          PHP-Code:
                          function connect()
                          {
                              
                          $conmysql_connect('localhost','root','') or die(mysql_error());
                               
                          mysql_select_db('login',$con) or die(mysql_error());

                          Kommentar


                          • #14
                            Damit ist $con außerhalb der Funktion nicht mehr verfügbar, was suboptimal ist.

                            Kommentar


                            • #15
                              hab grad versucht mit return() $con global zu machen. geht das nicht über include dann in ne andere datei mit rein?

                              oder muss der connect code so direkt mit in dem script stehen?

                              Kommentar

                              Lädt...
                              X