Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Wann CASTE ich?

Einklappen

Neue Werbung 2019

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

  • #31
    Ich würde ein UNIQUE/PRIMARY KEY-Setting und INSERT IGNORE nutzen und die Rückgabe von mysql_query auswerten.
    [COLOR="#F5F5FF"]--[/COLOR]
    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
    [COLOR="#F5F5FF"]
    --[/COLOR]

    Kommentar


    • #32
      Zitat von Jens P. Beitrag anzeigen
      1. E-Mail + Nickname auf UNIQUE setzen
      Muss das noch mal aufgreifen.

      Du willst Benutzer mit gleichem Nick erlauben, sofern sie eine andere E-Mail angeben? Sicher?
      [I]Es ist schon alles gesagt! Nur noch nicht von allen! (Karl Valentin)[/I]
      [I]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/I]

      Kommentar


      • #33
        1. E-Mail + Nickname auf UNIQUE setzen
        Kann man zweierlei interpretieren. Beide Felder jeweils auf UNIQUE/KEY setzen ist richtig.
        [COLOR="#F5F5FF"]--[/COLOR]
        [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
        [COLOR="#F5F5FF"]
        --[/COLOR]

        Kommentar


        • #34
          Will beides nur 1 mal erlauben!

          Wie soll ich das sonst machen? Würde beim erstellen der Datenbank einfach beides mal in der Auswahl Unique auswählen. Richtig?

          Kommentar


          • #35
            PHP-Code:
            $sql "CREATE TABLE `fantasydb`.`db_users` (`ID` INT(11) NOT NULL AUTO_INCREMENT, `NickName` VARCHAR(255) NOT NULL, `EMail` VARCHAR(255) NOT NULL, `Passwort` VARCHAR(255) NOT NULL, `Aktiv` VARCHAR(255) NOT NULL, `Registriert` DATE NOT NULL, PRIMARY KEY (`ID`), UNIQUE (`ID`, `NickName`, `EMail`)) ENGINE = MyISAM;"
            Wenn ich diese Tabelle erzeuge und per meinem Registrierungsformular mich registrieren will, und der NickName vorhanden ist, trägt er nicht ein, bei der Email interessiert Ihn das nicht. Nur NickName darf nicht vorhanden sein. Wieso?

            Kommentar


            • #36
              Weil du genau den Fehler machst, der in #32 angesprochen wurde.
              Du brauchst separate UNIQUDE Indizes.
              Und ID ist dadrin schonmal GANZ falsch.
              VokeIT GmbH & Co. KG - VokeIT-oss @ github

              Kommentar


              • #37
                Und wie ist es richtig?

                Kommentar


                • #38
                  ...
                  UNIQUE INDEX `uidx_NickName` (`NickName`),
                  UNIQUE INDEX `uidx_EMail` (`Email`)

                  Den Rest liest du bitte selbst in der MySQL-Dokumentation nach.
                  VokeIT GmbH & Co. KG - VokeIT-oss @ github

                  Kommentar


                  • #39
                    Ich raffs nicht aber okay. Danke.

                    CREATE TABLE `fantasydb`.`db_users` (
                    `ID` INT( 11 ) NOT NULL AUTO_INCREMENT ,
                    `NickName` VARCHAR( 255 ) NOT NULL ,
                    `EMail` VARCHAR( 255 ) NOT NULL ,
                    `Passwort` VARCHAR( 255 ) NOT NULL ,
                    `RegDatum` DATE NOT NULL ,
                    `Aktiv` INT( 1 ) NOT NULL ,
                    PRIMARY KEY ( `ID` ) ,
                    UNIQUE INDEX(`NickName`) ,
                    UNIQUE INDEX(`EMail`)
                    ) ENGINE = MYISAM ;
                    Gut so?

                    Kommentar


                    • #40
                      Ja.
                      _Das_ sind separate Indizes.
                      Was du zuerst hattest war ein zusammengesetzter, d.h. er hat "ID-<User>-<Email>" als Komplett-String genommen, der Unique sein musste.
                      VokeIT GmbH & Co. KG - VokeIT-oss @ github

                      Kommentar


                      • #41
                        Okay.

                        PHP-Code:
                        <?php
                        /**
                         * @author jensprangenberg
                         * @info   
                         * Hauptklasse "Account" welche alle Useraktivitäten steurt
                         */

                        class Account {
                            
                            public function 
                        SaveRegister($inputNick$inputPwd$inputEmail) {
                                 if(!empty(
                        $inputNick) && !empty($inputPwd) && !empty($inputEmail)) 
                                 {            
                                     
                        //Verbindung herstellen
                                     
                        $mysqli = new mysqli("localhost""root""root""fantasydb");
                                    
                        $mysqli->query("INSERT INTO db_users (`NickName`, `EMail`, `Passwort`, `Aktiv`) 
                                                                VALUES   ('"
                        .$inputNick."' , '".$inputEmail."' , '".$inputPwd."' , '0')");            
                                    
                        //Ausgabe an den User
                                    
                        echo "Erfolgreich registriert!";
                                 }
                                 else
                                {
                                    
                        //Ausgabe an den User das ein Fehler aufgetreten ist
                                    
                        echo "Fehler bei der Registrierung!";
                                 }
                            }    
                                
                        }
                        ?>
                        Wenn nun in die Datenbank eingetragen wird, und er dass nicht darf wegen dem Unique kommt kein Mysql Fehler.. Wieso?

                        PHP-Code:
                        OR die(mysql_error()) 
                        ...??? Funktioniert nicht.

                        Was muss ich tun?

                        Kommentar


                        • #42
                          Du hast nikoschs "IGNORE" entweder nicht gegoogelt oder ignoriert.

                          Kommentar


                          • #43
                            Zitat von Jens P. Beitrag anzeigen
                            Wenn nun in die Datenbank eingetragen wird, und er dass nicht darf wegen dem Unique kommt kein Mysql Fehler.. Wieso?
                            Im gezeigten Code ist nicht zu sehen, wo du überhaupt auf einen eventuellen Fehler reagieren willst.

                            Wo du das nachgenannte platziert hast, und ob diese Platzierung evtl. falsch ist, ist nicht zu erkennen.



                            Edit: Für die Verwendung des erwähnten IGNORE sehe ich hier keinen Grund.
                            [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

                            Kommentar


                            • #44
                              PHP-Code:
                              <?php
                              /**
                               * @author jensprangenberg
                               * @info   
                               * Hauptklasse "Account" welche alle Useraktivitäten steurt
                               */

                              class Account {
                                  
                                  public function 
                              SaveRegister($inputNick$inputPwd$inputEmail) {
                                      
                              /*
                                       * Überprüft ob die Inputs korrekt/gefüllt worden sind
                                       * Sonst spuckt er ein Fehler aus
                                       */
                                       
                              if(!empty($inputNick) && !empty($inputPwd) && !empty($inputEmail)) 
                                       {            
                                           
                              /*
                                            * Verbindung zur Datenbank wird hergestellt
                                            */
                                           
                              $mysqli = new mysqli("localhost""root""root""fantasydb");
                                          
                                           
                              /*
                                            * Aktive Query die einen User hinzufügt
                                            */
                                           
                              $ActivQry "INSERT INTO db_users (`NickName`, `EMail`, `Passwort`, `Aktiv`) VALUES ('".$inputNick."' , '".$inputEmail."' , '".$inputPwd."' , '0')";
                                           
                                           
                              /*
                                            * Überprüft ob Query ausgeführt wurde
                                            */
                                           
                              if($mysqli->query($ActivQry))
                                          {
                                              echo 
                              "Erfolgreich registriert!";        
                                          }
                                          else
                                          {
                                              echo 
                              "Nickname oder E-Mail Adresse schon vergeben!";
                                          }            
                                      }
                                       else
                                      {
                                          echo 
                              "Nickname, Passwort oder E-Mail Adresse wurde nicht ausgefüllt!";
                                       }
                                  }    
                                      
                              }
                              ?>
                              So habe ich das nun geregelt. Okay? Oder Fehler drinne? Funktioniert einwandfrei!

                              Kommentar


                              • #45
                                Zitat von Jens P. Beitrag anzeigen
                                Okay? Oder Fehler drinne? Funktioniert einwandfrei!
                                Nicht Okay, Fehler drin, funktioniert nicht einwandfrei


                                Du ziehst aus jedem der absolut zahlreichen potentiellen Fehler, die beim Ausführen einer Query auftreten können, genau den einen Schluss, dass es an schon vorhandenem Nickname/E-Mail-Adresse gelegen haben müsste - das ist natürlich kompletter Unsinn.

                                Werte aus, welcher Fehler aufgetreten ist - und nur, wenn es dieser eine spezielle Fall ist, dann gebe die entsprechende Meldung aus; sonst eine andere (ggf. unspezifischere).
                                [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

                                Kommentar

                                Lädt...
                                X