Unique mit php abfragen
am 12.12.2005 17:32:32 von Stefan Jonas
Guten Abend zusammen :)
Über ein Formular können sich User registrieren, die Daten werden dann
in eine mysql-Datenbank gepackt. Bestimmte Felder der Datenbank haben
nun die Eigenschaft 'unique' - z.B. für die Mail-Adresse.
Wenn ein User sich nun eintragen will und die Mail-Adresse schon
vorhanden ist, möchte ich halt die Meldung ausgeben, dass die
Mail-Adresse schon registriert ist. Das selbe dann für den Nick-Namen
und den Namen.
Wie kann ich sowas mit php realisieren? Bisher sieht das bei mir nur so aus:
$result = mysql_query($query,$conn);
if (!$result)
{ die ("
Anmeldung fehlgeschlagen!
"); }
Oder muss ich vorher schon alle Mail-Adressen auslesen und mit der
eingegebene abgleichen? Würd ich etwas umständlich finden...
Danke schonmal :)
so long, Stefan Jonas
Re: Unique mit php abfragen
am 12.12.2005 17:45:28 von Fabian Schladitz
Stefan Jonas schrieb:
> Über ein Formular können sich User registrieren, die Daten werden d=
ann=20
> in eine mysql-Datenbank gepackt. Bestimmte Felder der Datenbank haben=20
> nun die Eigenschaft 'unique' - z.B. für die Mail-Adresse.
> Wenn ein User sich nun eintragen will und die Mail-Adresse schon=20
> vorhanden ist, möchte ich halt die Meldung ausgeben, dass die=20
> Mail-Adresse schon registriert ist. Das selbe dann für den Nick-Namen=
=20
> und den Namen.
> Wie kann ich sowas mit php realisieren? Bisher sieht das bei mir nur so=
=20
> aus:
>=20
> $result =3D mysql_query($query,$conn);
> if (!$result)
> { die ("
Anmeldung fehlgeschlagen!
"); }
Nutze doch mal:
mysql_error()
Da steht alles drin.
> Oder muss ich vorher schon alle Mail-Adressen auslesen und mit der=20
> eingegebene abgleichen? Würd ich etwas umständlich finden...
NEIN! Niemalsnicht.
--=20
HTH,
Fabian
Re: Unique mit php abfragen
am 12.12.2005 17:52:36 von Stefan Jonas
Fabian Schladitz schrieb:
> mysql_error()
Perfekt, sowas hab ich gesucht :) Danke...
>> Oder muss ich vorher schon alle Mail-Adressen auslesen und mit der
>> eingegebene abgleichen? Würd ich etwas umständlich finden...
>
> NEIN! Niemalsnicht.
>
Doofe Fragen, da ich mit der Materie erst anfange: Warum?
Stefan
Re: Unique mit php abfragen
am 12.12.2005 18:53:55 von Matthias Esken
On Mon, 12 Dec 2005 17:52:36 +0100, Stefan Jonas wrote:
>>> Oder muss ich vorher schon alle Mail-Adressen auslesen und mit der
>>> eingegebene abgleichen? Würd ich etwas umständlich finden...
>>
>> NEIN! Niemalsnicht.
>
> Doofe Fragen, da ich mit der Materie erst anfange: Warum?
Was ist, wenn direkt nachdem du die Abfrage durchgeführt hast, jemand
anders eine entsprechende Mail-Adresse anlegt?
Du musst die Abfrage also ohnehin beim Einfügen durchführen, warum solltest
du dir also die zusätzliche unnütze Arbeit machen.
Gruß,
Matthias
Re: Unique mit php abfragen
am 13.12.2005 08:19:39 von Fabian Schladitz
Stefan Jonas schrieb:
> Fabian Schladitz schrieb:
>=20
>> mysql_error()
>=20
>=20
> Perfekt, sowas hab ich gesucht :) Danke...
>=20
>>> Oder muss ich vorher schon alle Mail-Adressen auslesen und mit der=20
>>> eingegebene abgleichen? Würd ich etwas umständlich finden...
>>
>>
>> NEIN! Niemalsnicht.
>>
>=20
> Doofe Fragen, da ich mit der Materie erst anfange: Warum?
Neben dem, was Matthias sagte möchte ich noch hinzufügen, dass du ein=
en=20
FULL TABLE SCAN durchführst, wenn du dir alle Ergebnisse einer Tabelle =
ausgeben lässt. Wenn du nur auf das UNIQUE-Constraint prüfst, wird de=
r=20
Index verwendet. Letzteres ist _wesentlich_ schneller.
Versuche in PHP deinen Input (vom User, aus Files, etc.) zu prüfen und =
in ein vernünftiges, einheitliches Format zu bringen. Weiterhin ist PHP=
=20
gut um die Ausgaben zu formatieren.
Die Konsistenz der Daten soll aber bitte die Datenbank prüfen. Dafür =
gibt es Constraints schließlich.
--=20
HTH,
Fabian
Re: Unique mit php abfragen
am 13.12.2005 21:27:04 von Stefan Jonas
Fabian Schladitz schrieb:
> [...]
> Die Konsistenz der Daten soll aber bitte die Datenbank prüfen. Dafür
> gibt es Constraints schließlich.
>
Dann euch nochmal danke für die Antworten :)
Ich hab mich jetzt mal mit mysql_error() beschäftigt... Gibt es da
irgendeine elegante Möglichkeit, die Meldung zu bearbeiten? Weil das ja
ungefähr so aussieht: 'duplicate Max Mustermann-Maxi-maxi@mustermann.de'
(wenn sowohl Name, Nick als auch Mal-Addy schon in der DB stehen).
Kann ich das irgendwie so bearbeiten, dass ich dann ausgebe: "Diese
Mail-Adresse ist schon eingetragen worden!" etc? Muss ich da diesen
String, den mysql_error() zurückliefert, auseinanderpflücken?
Tut mir leid für die wahrscheinlich doofen Fragen, bin echter Laie ;)
Gruß, Stefan
Re: Unique mit php abfragen
am 14.12.2005 00:18:43 von Niels Braczek
Stefan Jonas schrieb:
> Ich hab mich jetzt mal mit mysql_error() beschäftigt... Gibt es da
> irgendeine elegante Möglichkeit, die Meldung zu bearbeiten? Weil das ja
> ungefähr so aussieht: 'duplicate Max Mustermann-Maxi-maxi@mustermann.de'
> (wenn sowohl Name, Nick als auch Mal-Addy schon in der DB stehen).
> Kann ich das irgendwie so bearbeiten, dass ich dann ausgebe: "Diese
> Mail-Adresse ist schon eingetragen worden!" etc? Muss ich da diesen
> String, den mysql_error() zurückliefert, auseinanderpflücken?
> Tut mir leid für die wahrscheinlich doofen Fragen, bin echter Laie ;)
Das 'duplicate' reicht doch: du hast doch die Daten, die du gerade
einfügen wolltest.
MfG
Niels
--
| http://www.kolleg.de · Das Portal der Kollegs in Deutschland |
| http://www.bsds.de · BSDS Braczek Software- und DatenSysteme |
| Webdesign · Webhosting · E-Commerce · Mambo Content Management |
`----------------------------------------------------------- -----´
Re: Unique mit php abfragen
am 14.12.2005 06:59:43 von Stefan Jonas
Niels Braczek schrieb:
> Das 'duplicate' reicht doch: du hast doch die Daten, die du gerade
> einfügen wolltest.
Aber woher weià ich denn, ob nun nur die Mail-Adresse, oder auch der
Name und/oder der Nick doppelt sind?
mfg, Stefan
Re: Unique mit php abfragen
am 14.12.2005 16:50:49 von Niels Braczek
Stefan Jonas schrieb:
> Niels Braczek schrieb:
>
>> Das 'duplicate' reicht doch: du hast doch die Daten, die du gerade
>> einfügen wolltest.
>
> Aber woher weià ich denn, ob nun nur die Mail-Adresse, oder auch der
> Name und/oder der Nick doppelt sind?
Frag einfach dein DBMS. Etwa so (ungetestet)
§sql = "SELECT COUNT(name='$name') as name,
COUNT(nick='$nick') as nick,
COUNT(email='$email') as email
FROM $table
WHERE name='$name'
OR nick='$nick'
OR email='$email'";
Du solltest damit *einen* Datensatz erhalten, der in name, nick und
email angibt, wie oft die eingegebenen bereits Werte vorkommen.
Erwartete Werte sind also 0 oder 1.
HTH
Niels
--
| http://www.kolleg.de · Das Portal der Kollegs in Deutschland |
| http://www.bsds.de · BSDS Braczek Software- und DatenSysteme |
| Webdesign · Webhosting · E-Commerce · Mambo Content Management |
`----------------------------------------------------------- -----´
Re: Unique mit php abfragen
am 14.12.2005 17:46:22 von Stefan Jonas
Niels Braczek schrieb:
> Frag einfach dein DBMS. Etwa so (ungetestet)
> [snip]
> Du solltest damit *einen* Datensatz erhalten, der in name, nick und
> email angibt, wie oft die eingegebenen bereits Werte vorkommen.
> Erwartete Werte sind also 0 oder 1.
Besten Dank :) So klappt es.
GruÃ, Stefan