denkfehler bei sql und auswertung?
daniel
- php
0 Thomas Schmieder0 Frank Jonas0 Odium
hallo alle zusammen,
entweder denk ich zu kompliziert oder es einfach schon zu spät..
ich habe ein formular, mit dem user ihre persönlichen logindaten verändern können, u.a. aber auch ihre mail-adresse.
diese mail-addi darf aber nur EINMAL in der DB vorkommen.
angenommen, der user verändert seine mail-addi.
da sie nur EINMAL in der DB stehen darf (keine 2 user mit derselben addi), mache ich vor dem update-statement eine abfrage select * mail from user where login='$email_aus_form'. wenn dann bei mysql_num_rows >=1 rauskommt, existiert die addi schon > kein update.
jetzt aber mein problem:
wenn der user seine addi gar nicht verändert, wird bei mysql_num_rows ebenfalls ein wert 1 zurückgegeben, dabei ist es ja SEINE addi ??
ich müßte also quasi seinen (den des users) datensatz bei der select-abfrage ausschließen können? sodaß der datensatz bei dem login = $login_aus_formular ist, gar nicht mit in die abfrage einbezogen wird?
läßt sich das mit mysql irgendwie bewerkstelligen? oder muß ich das irgendwie mit php rausbekommen?
vielen dank für eure hilfe,
ich hoffe ich hab mein problem einigermaßen verständlich formuliert.
wie gesagt, es ist schon spät ;-)
danke im voraus...!
grüße
daniel
Hallo Daniel,
lass doch nur dort updaten, wo alte Mail-Adresse und Usernummer übereinstimmen. Ist ja auch eine Art zusätzliche Authentifikation.
Der User muss in das Änderungsformular seine
Für den Neueintrag brauchst Du sowieso eine extra Prozedur im Script und natürlich auch einen extra Button.
Da würde ich für den User erst die neue Mailadresse und die Usernummer, sowie die gemachten Daten speichern. Ein erstes Passwort würfelst Du aus. Die Usernummer erscheint beim Intro gaaanz groß auf dem HTML-Bestätigungsschirm. (Bitte merken: Ihre Usernummer) Das Passwort wird dann per eMail mitgeteilt. Ohne diese Angaben kommt er nicht weiter. So kann kein eMail-Empfänger, der "versehentlich" diese eMail erhält, in die Datenbank. Es fehlt ja die Usernummer vom Anmeldeprozess. Und Jemand, der seine eMail nicht genannt hat, kommt rein. Netzspione mal außen vor gelassen.
Für dich musst Du natürlich einen Timestamp für "created" und einen für "last modified" anlegen und ein Feld für die Sichtkontrolle und Freigabe. Dann lannst Du leicht alle noch nicht freigegebenen (gesichteten) Datensätze finden und kontrollieren. Bist Du ja dazu verpflichtet.
Liebe Grüße
Tom
Hallo,
select * mail from user where login='$email_aus_form'
Solltest noch folgendes hinzufügen:
AND user.id <> '$userid', wobei dies ein Beispiel ist, da ich die eindeutige Kennung des Users in der DB nicht kenne. Dann sollte der aktuelle User aus dem Abfrage-Ergebnis ausgeschlossen werden.
HTH
Gruß Frank
Hallo,
ich hatte mal ein ähnliches problem...
schreib die bisherige emailadresse in ein hiddenfield...
auf der actionseite vergleichst du die alte und die neu eingegebene adresse (immer leerzeichen vorn und hinten abschneiden... immer und überall!)
ist es ungleich, dann darf in der tabelle keine gleiche emailadresse gefunden werden...
ist es gleich, dan darf eine einzige gefunden werden...
Odium