Ankündigung

Einklappen
Keine Ankündigung bisher.

Abfrage ob email adresse schon vorhanden ist

Einklappen

Neue Werbung 2019

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

  • Abfrage ob email adresse schon vorhanden ist

    Hallo leute,

    ich bins schon wieder. Ich hab eine frage die man evtl. schon aus dem Topic erkennen kann.

    Undzwar möchte ich anhand der email adresse überprüfen ob ein User schon registriert ist. Sprich wenn sich jemand neu registrieren will soll die eingegebene e-mail adresse mit der datenbank abgeglichen werden und wenn die email schon vorhanden sein sollte soll dies auch ausgegeben werden und kein neuer user-account angelegt werden. Sollte die email-adresse jedoch nicht vorhanden sein in der DB so wird ganz normal ein neuer useraccount angelegt und fertig.

    Das Registrierungformular und die ganze Registrierungsfunktion habe ich soweit fertig. Dank meines anderen threads und einem schnellen helfer funktioniert jetzt auch die richtige eintragung in die Datenbank. Das einzige was jetzt noch fehlt ist wie gesagt die überprüfung ob eine email adresse schon in der DB vorhanden ist.

    Bevor ich aber auf eure hilfepostings warte schreibe ich mal wie ich mir das gedacht habe wie das funktionieren könnte. Ihr könnt mich ja dann korrigieren.

    Also, als erstes (vor der eingabe des users) wollte ich natürlich die Datenbank verbindung aufbauen und die zeile "email" aus der datenbank "users" auslesen. Das ganze wollte ich per "SELECT"-befehl machen. (Der "SELECT"-befehl steht in einer Variable)

    So, diese Variable sende ich wiedermal per sql-query ab und der rückgabewert sollte ja dann der inhalt der oben abgefragten Zeile sein, sprich alle vorhanden emailadressen aus der spalte "email" von der datenbank "users". Doch wie genau arbeite ich jetzt damit? Also ich kann die sahcen wie gesagt per select abfragen. Doch wo genau ist dann der rückgabewert gespeichert und wie sieht dann die überprüfung der DB einträge mit der Formulareingabe aus? Da fehglt mir noch das wissen, bzw. der richtige denkanstoß.
    .visit » Tolga-Tanik.de
    .visit » TolgaTanikFoto @ Facebook
    .visit » Tolga Tanik Fotografie @ YouTube

  • #2
    Das Ganze geht viiiiiiiel einfach, weil man in einem SQL-Query Bedingungen angeben kann! Wenn du die Eingaben des Users verarbeitest, erstellst du einen Query à la
    Code:
    SELECT email FROM users WHERE email='$email'
    wobei du $email durch die Variable ersetzt, wo die eMail-Adresse drinsteht.
    Dann führst du den Query mit mysql_query aus und speicherst die Rückgabe in einer Variable (z.B. $query). Dann führst du
    PHP-Code:
    mysql_num_rows($query
    aus! Diese Funktion gibt dir zurück, wieviele Zeilen dein SQL-Query ausgespuckt hat. Wenn dieser Wert nun 0 ist, existiert noch kein Benutzer mit der angegebenen eMail-Adresse. Wenn der Wert grösser als 0 ist, existiert bereits ein Benutzer mit dieser eMail-Adresse und die Registrierung muss abgebrochen werden.

    Kommentar


    • #3
      Also irgendwie bekomme ich jetzt einen Parseerror den ich selbst nciht ersehen kann. Ich habe jetzt versucht anhand deines beispiels eine Abfrage zu generieren. Ich weiss nciht ob si funktioniert da ich folgenden Parse eror bekomme:
      Code:
      Parse error: parse error, unexpected $ in /home/www/web37/html/tnkstuff/tnkcms/register/sendpw.php on line 118
      Nur ich verstehe das nich da in zeile 115 kein "$" steht.
      Hier mal die zeilen 109 - 115 aus meinem Script:
      Code:
      <?php// Zur&uuml;ck zum Formular
      echo '<a href=\"index.php?section=register\">Zur&uuml;ck</a>';
      ?>
      </td></tr></table>
      <?php
      };
      ?>

      Und hier der Code wo cih die Email Abfrage geschrieben habe. Das ganze steht im Else Teil einer If-Abfrage und fügt bei fehlern der variable $error einen weiteren String hinzu der dann am ande überprüft udn ausgegeben wird.

      Code:
      @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS)OR die(mysql_error());
      mysql_select_db(MYSQL_DATABASE)OR die(mysql_error());// Check ob Email in DB vorhanden ist
      $checkmail= "SELECT email FROM users WHERE email='$mail';";
      $result= mysql_query($checkmail)OR die("Query: <pre>".$checkmail ."</pre>\n"."Antwort: ". mysql_error());
      if (mysql_num_rows($result)>0){
      $error.= "- Die Eingegeben E-Mail Adresse ".$mail ." ist nereit in unserer Datenbank vorhanden";
      }
      .visit » Tolga-Tanik.de
      .visit » TolgaTanikFoto @ Facebook
      .visit » Tolga Tanik Fotografie @ YouTube

      Kommentar


      • #4
        Zitat von TeazY Beitrag anzeigen
        Code:
        Parse error: parse error, unexpected $ in /home/www/web37/html/tnkstuff/tnkcms/register/sendpw.php on line 118
        Nur ich verstehe das nich da in zeile 115 kein "$" steht.
        Hier mal die zeilen 109 - 115 aus meinem Script:
        Code:
        <?php// Zur&uuml;ck zum Formular
        echo '<a href=\"index.php?section=register\">Zur&uuml;ck</a>';
        ?>
        </td></tr></table>
        <?php
        };
        ?>
        Hm die Fehlermeldung sagt doch, dass der Fehler in Zeile 118 ist, was soll ich dann mit den Zeilen 109-115? In der 114ten Zeile ist aber ein Semikolon( ; ) hinter dem } zuviel. Schreib bitte Mal alles von Zeile 109-120 oder so hier rein!
        Das Semikolon im SQL-Query ist auch nicht nötig, aber auch nicht falsch.
        Und in der Fehlermeldung wolltest du wohl "bereits" und nicht "nereit" schreiben oder?!

        Kommentar


        • #5
          Oh, entschuldige, die Fehlermeldung ist wie oben angegeben nur in zeile 115. Ich hab nachträglich Leerzeilen entfernt dadurch die 3 fehlenden zeilen. 115 ist die letzte zeile.
          Aber es muss was mt dem neuen Codeblock zu tun haben da vorher alles funktioniert hatte.

          P.S.: Danke für die fehleranalyse. hab das Semikolon entfernt und aus nereits bereits gemacht. *peinlich* xD
          .visit » Tolga-Tanik.de
          .visit » TolgaTanikFoto @ Facebook
          .visit » Tolga Tanik Fotografie @ YouTube

          Kommentar


          • #6
            Wenn dir ein "unexpected $" in einer Zeile ausgegeben wird, in der sich (nur) ein } befindet, deutet das immer darauf hin, dass du irgendwo zu wenig oder zu viele { und } gemacht hast. Zähl mal genau ab, ob du alle { und } richtig gesetzt hast. Rücke deinen Code am besten dementsprechend ein, dann siehst du es viel schneller.

            Kommentar


            • #7
              Oh man, du hattest recht. Danke, mal wieder. Die Klammern zu checken hätte cih aber auch echt selber drauf kommen können. Vielen Dank. jetzt funktioniert auch alles wieder + der neue codeblock ebenfalls. Sprich die eingabe der email wird mit der DB abgeglichen und falls vorhanden eine meldung ausgegeben und die registrierung wird unterbrochen. Ansonsten funzt es wie gehabt. VIelen Dank!
              .visit » Tolga-Tanik.de
              .visit » TolgaTanikFoto @ Facebook
              .visit » Tolga Tanik Fotografie @ YouTube

              Kommentar


              • #8
                Ich würde für das email Feld in der Datenbank einen unique index erstellen und dann beim Einfügen abtesten, ob ein duplicate key error auftritt. Damit spart man sich den nicht-atomaren Test und läßt die Datenbank den Abgleich machen.

                Kommentar


                • #9
                  Das hört sich zwar nett an David doch ich hab keinen schimmer wovon du da schreibst. Wie gesagt, Bin PHP-Neuling!
                  .visit » Tolga-Tanik.de
                  .visit » TolgaTanikFoto @ Facebook
                  .visit » Tolga Tanik Fotografie @ YouTube

                  Kommentar


                  • #10
                    Und offensichtlich auch SQL Neuling, da es sich hierbei mehr um eine SQL denn eine PHP Sache handelt. Nehmen wir mal Mysql als Beispiel und nehmen an, Du hast bisher die Tabelle
                    Code:
                    CREATE TABLE `users` (
                      `id` int(10) unsigned NOT NULL auto_increment,
                      `email` varchar(255) collate latin1_general_ci NOT NULL,
                      `pass` varchar(32) character set latin1 collate latin1_bin NOT NULL,
                    ...
                    )
                    benutzt. Dann fügst Du nur noch einen unique index für email hinzu
                    Code:
                    CREATE TABLE `users` (
                      `id` int(10) unsigned NOT NULL auto_increment,
                      `email` varchar(255) collate latin1_general_ci NOT NULL,
                      `pass` varchar(32) character set latin1 collate latin1_bin NOT NULL,
                    ...
                      UNIQUE KEY `uiEMail` (`email`) # <-- 
                    )
                    ... steht für den zusätzlichen Code, um id als auto_increment Feld zu markieren und ist hier irrelevant.
                    Für diese Tabelle läßt mysql keine zwei gleichen Werte im Feld email zu. Und dabei ist es egal, ob der Datensatz über Dein Script eingetragen werden soll oder ein anderes oder direkt über den Mysql Client, der Server weist den Datensatz mit einem bestimmten Fehler zurück. Den Fehler kannst Du mit PHP: mysql_errno - Manual abtesten.

                    Kommentar


                    • #11
                      Ok, das werde ich mir mal genauer anschauen und austesten. Danke erstmal für die info. Ich schrei dann sobald ich wieder nicht weiter komme
                      .visit » Tolga-Tanik.de
                      .visit » TolgaTanikFoto @ Facebook
                      .visit » Tolga Tanik Fotografie @ YouTube

                      Kommentar

                      Lädt...
                      X