Doppelte Einträge in die Datenbank verhindern ?

Alles, was MariaDB und MySQL betrifft, kann hier besprochen werden.

Doppelte Einträge in die Datenbank verhindern ?

Postby rammie » 24. October 2003 23:07

Hallo zusammen
Wie kann ich doppelte Einträge in die Datenbank verhindern :?:

Ein kleines Beispiel zudem was ich meine:
Ich habe da ein Eingabeformular indem z.B. Name Vorname Wohnort usw. usw. abgefragt wird bzw eingetragen werden muß. Wie verhindere ich das da sich jemand doppelt einträgt :?:
Ist das ein PHP-Script oder kann ich in der Datenbank einen "Schalter" setzen mit dem das Problem gelöst wird :?:

Für Eure Bemühungen bedanke ich mich im Voraus.

mfg.: Thomas :D
rammie
 
Posts: 11
Joined: 10. September 2003 20:01

Postby pir187 » 26. October 2003 19:10

hallo!

also, einen schalter in mysql gibt es nicht, der db ist es absolut egal, wenn du 10000 mal den selben wert eingibst :twisted: !

aber nun zu deinem problem...
das ist wohl eines der elementarsten probleme im datenbankgeschäft, die verhinderung/ reduzierung redundanter daten.

ich mach das immer so: zuerst nehme ich die werte, die eingegeben worden sind und starte eine anfrage an die db. also z.b. SELECT name, vorname, ort FROM <tabelle> WHERE name=$name AND vorname = $vorname AND ort = $ort.
wenn die anzahl der entsprechenden result-sets größer 0 ist, gibt es einen entsprechenden eintrag schon einmal, darauf kannst du dann entsprechend reagieren.

<snip>
$result=mysql_query($query,$link);
if ($result) {
if ($count_result=mysql_affected_rows() > 0) {
while ($line=mysql_fetch_row($result)) {
--> fehlerbehandliung, da es schon einen datensatz mit den entsprechenden einträgen gibt
}
}
else {
---> hier kannst du dann dein INSERT - Statement einfügen, es gibt noch keinen entsprechenden eintrag
}
else {
---> fehlerbehandlung ab hier, es gab einen fehler bei der anfrage an die db, was nichts darüber aussagt, ob ein eintrag schon vorhanden wäre!
}
</snip>

den $query - string mußt du dir nach deinen eigenen kriterien zusammenstellen, kommt drauf an, wieviele werte (vorname, name, ort,...) du auf gleichheit testen willst.

den quellcode (s.o.) mußt du dir mal in nem editor mit syntax-highlightning anschauen und entsprechend einrücken, das board akzeptiert keine tabulatoreinrückungen.


ich hoffe, du siehst jetzt klarer, bin auf deine ergebnisse gespannt!
mfg, pir187
pir187
 
Posts: 76
Joined: 13. August 2003 00:15
Location: Struppen / Sachsen


Return to MariaDB - MySQL

Who is online

Users browsing this forum: No registered users and 61 guests