MySQL: Daten vor Eintrag prüfen

Hallo,

ich möchte sicherstellen, dass in der Benutzerverwaltung meines Web kein Mitglied zweimal eingetragen werden kann. Dazu müßte ich das speichern in dere Datenbank verhindern, wenn der Name und Vorname bereits in der Datenbank enthalten ist.

Soweit die Theorie, nur wie kann ich das umsetzen? Wie muss ich vor dem speichern die Daten auf vorhandensein prüfen?

Für Eure Hilfe wäre ich sehr dankbar.

Gruss,
Daniel
 
Ich schätze mal, die Anmeldung erfolgt über ein Formular.
Dementsprechend gestaltest du vor dem Eintragen in die Datenbank eine Abfrage, ob es bereits einen Datensatz mit entsprechenden Kriterien gibt. Falls ja, gibst du eine Fehlermeldung aus; falls nein, geht’s eben weiter.

Allerdings sollte gesagt sein, dass es durchaus Menschen gibt, die den gleichen Namen tragen. Daher rate ich dir beispielsweise eher zu einer Überprüfung der E-Mail-Adresse.
 
Hallo!

Auch eine eMail-Adresse könnte mehrfach verwendet werden..... z.b. inerhalb der Familie. ;)
Es sollte also möglichst eine Kombination aus allem sein.

Ich gehe auch davon aus dass die Daten durch ein Formular übergeben werden.
Dann würde ich es in etwa so machen (nicht getestet):
PHP:
<?php
if(isset($_POST['eintragen'])) {
$dbhost = "localhost";
$dbuser = "xxx";
$dbpass = "xxx";
$dbname = "Datenbankname";
$dbtable = "Tabellenname";
 
$link = @mysql_connect("$dbhost","$dbuser","$dbpass") or die ("Fehler: ".mysql_error());
@mysql_select_db("$dbname") or die ("Fehler: ".mysql_error());
 
$result = @mysql_query("SELECT vorname,nachname FROM $dbtable WHERE vorname LIKE '".$_POST['vorname']."' AND nachname LIKE '".$_POST['nachname']."' AND mail LIKE '".$_POST['mail']."';");
 
if(isset($result)) {
     $out = "Benutzer ist bereits vorhanden.";
} else {
     $insert = @mysql_query("INSERT INTO $dbtable (vorname,nachname,mail) VALUES('".$_POST['vorname']."','".$_POST['nachname']."','".$_POST['mail']."');");
     if(isset($insert)) {
          $out = "Benutzer wurde eingetragen.";
     } else {
          $out = "Fehler beim eintragen.";
     }
}
mysql_close($link);
 
echo $out;
}
?>
Gruss Dr Dau
 
Hallo,

tausend Dank für das Script, werde es gleich umsetzen.

Dabei noch eine andere Frage:
Ich möchte noch Verbindungen über die ID setzen lassen, muss dazu aber wissen, welche ID der anzulegende Satz hat. Kann man einfach den Datensatz in die DB schreiben und bekommt dann die ID zurück oder muss ich erst speichern und dann den letzten Satz wieder auslesen?

Gruss,
Daniel
 
Die ID erhältst Du mit der MySQL-Funktion LAST_INSERT_ID oder [phpf]mysql_insert_id[/phpf].

Wenn Du einen Unique-Index auf die eindeutigen Felder legst, hast Du übrigens ohne weitere Prüfung verhindert, dass diese nur einmal vorkommen.

Gruß hpvw
 
Die E-Mail-Adresse als eindeutigen Identifikator zu nehmen, ist eigentlich allgemein üblich. Dass sich ganze Familien eine einzelne E-Mail-Adresse teilen sollen, halte ich jedoch für überholt. Jeder, der sich heutzutage regelmäßig im Web bewegt, besitzt auch eine eigene wenn nicht sogar mehrere E-Mail-Adressen.
 
Zurück