php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 15.12.2007, 15:41  
Erfahrener Benutzer
 
Registriert seit: 12.12.2007
Beiträge: 137
TeazY befindet sich auf einem aufstrebenden Ast
TeazY eine Nachricht über ICQ schicken TeazY eine Nachricht über MSN schicken
Standard 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ß.
TeazY ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 15.12.2007, 16:10  
Erfahrener Benutzer
 
Benutzerbild von Montellese
 
Registriert seit: 30.07.2007
Beiträge: 541
Montellese befindet sich auf einem aufstrebenden Ast
Montellese eine Nachricht über MSN schicken
Standard

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.
Montellese ist offline  
Alt 15.12.2007, 16:52  
Erfahrener Benutzer
 
Registriert seit: 12.12.2007
Beiträge: 137
TeazY befindet sich auf einem aufstrebenden Ast
TeazY eine Nachricht über ICQ schicken TeazY eine Nachricht über MSN schicken
Standard

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";
} 
TeazY ist offline  
Alt 15.12.2007, 16:56  
Erfahrener Benutzer
 
Benutzerbild von Montellese
 
Registriert seit: 30.07.2007
Beiträge: 541
Montellese befindet sich auf einem aufstrebenden Ast
Montellese eine Nachricht über MSN schicken
Standard

Zitat:
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?!
Montellese ist offline  
Alt 15.12.2007, 16:59  
Erfahrener Benutzer
 
Registriert seit: 12.12.2007
Beiträge: 137
TeazY befindet sich auf einem aufstrebenden Ast
TeazY eine Nachricht über ICQ schicken TeazY eine Nachricht über MSN schicken
Standard

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

Geändert von TeazY (15.12.2007 um 17:01 Uhr). Grund: Fehler korrektur
TeazY ist offline  
Alt 15.12.2007, 17:03  
Erfahrener Benutzer
 
Benutzerbild von Montellese
 
Registriert seit: 30.07.2007
Beiträge: 541
Montellese befindet sich auf einem aufstrebenden Ast
Montellese eine Nachricht über MSN schicken
Standard

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.
Montellese ist offline  
Alt 15.12.2007, 17:08  
Erfahrener Benutzer
 
Registriert seit: 12.12.2007
Beiträge: 137
TeazY befindet sich auf einem aufstrebenden Ast
TeazY eine Nachricht über ICQ schicken TeazY eine Nachricht über MSN schicken
Standard

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!
TeazY ist offline  
Alt 15.12.2007, 20:40  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

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.
David ist offline  
Alt 15.12.2007, 20:43  
Erfahrener Benutzer
 
Registriert seit: 12.12.2007
Beiträge: 137
TeazY befindet sich auf einem aufstrebenden Ast
TeazY eine Nachricht über ICQ schicken TeazY eine Nachricht über MSN schicken
Standard

Das hört sich zwar nett an David doch ich hab keinen schimmer wovon du da schreibst. Wie gesagt, Bin PHP-Neuling!
TeazY ist offline  
Alt 16.12.2007, 11:15  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

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.
David ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Abfrage, ob frei Tabellenzeile vorhanden ist leuktra Datenbanken 4 26.07.2006 17:03
DB Abfrage nach email funktioniert nicht tinchen Datenbanken 3 15.05.2006 13:20
Newsletter email abfrage Problem mokus PHP Tipps 2006 7 18.04.2006 16:35
Abfrage, ob Eintrag schon vorhanden. GELight Datenbanken 7 28.03.2006 23:21
abfrage ob db vorhanden ist me Datenbanken 2 29.12.2005 08:22
Abfrage ob ein Wert in der DB vorhanden ist Riot Datenbanken 6 19.09.2005 12:07
[Erledigt] Datei per PHP Formular an Email Adresse PHP Tipps 2005-2 1 28.06.2005 16:22
[Erledigt] doppelte email adressen suchen Datenbanken 9 20.05.2005 19:38
Abrfrabe ob email adresse im bestimmten format! LA-Finest PHP Tipps 2005 10 12.05.2005 12:23
Formular an meine Email adresse senden 'progman' PHP Tipps 2005 1 01.03.2005 19:43
[Erledigt] Mysql Abfrage Problem! PHP-Fortgeschrittene 5 27.11.2004 10:22
Email adresse in der DB vergleichen PHP Tipps 2004-2 5 17.11.2004 15:56
sql abfrage email als link PHP Tipps 2004 2 28.08.2004 12:40
Abfrage aus DB noch mal ausgeben und Abfrage aus mehrern Tab PHP Tipps 2004 4 12.07.2004 15:00
Email Adresse auflösen PHP Tipps 2004 4 19.06.2004 09:39

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
gibt es diese email adresse schon, http://www.php.de/php-tipps-2008/347-abfrage-ob-email-adresse-schon-vorhanden-ist.html, gibt es die email adresse schon, welche email adressen gibt es schon, email adresse abfragen, freie emailadressen prüfen, email adressen abfrage, email adressen abfragen, e mail adresse abfragen, freie email adressen abfragen, existiert email adresse, freie email adressen prüfen, freie e-mail adressen prüfen, e-mail adresse abfragen, prüfen ob email adresse existiert, ein icq-konto mit dieser e-mail-adresse ist bereits vorhanden, emailadresse abfragen, abfrage email adresse, emailadressen abfragen, abfrage email adressen

Alle Zeitangaben in WEZ +1. Es ist jetzt 20:42 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum