Hello,
Das ganze klappt auch sehr gut. Aber mir stellt sich nun die Frage, was ist, wenn die Seite mal sagen wir 500 – 1000 Benutzer hat, wenn sich dann ein neuer User anmeldet sind in meinem Array auf einen Schlag 500 - 1000 Einträge die er vergleichen muss.
Wird dadurch meine Seite sehr langsam oder sind 500 - 1000 Einträge für eine Datenbank noch nicht wirklich viel?
Du könntest es ja auch richtig[tm] machen, dann würde es auch funktionieren :-O
* Post-Parameter checken -> ggf. bereits hier Fehlermeldung (Affenformular)
* Parameter OK, Eintragungsversuch vornehmen in die Tabelle mit den 2 Unique Constraints
für Nickname und eMail-Name
* Query ok? -> ACK an User
* MySQL-Fehler 1062? -> Select durchführen, um festzustellen, welcher Index geklemmt hat
Pseudocode: (du machst das ja sowieso mit PDO)
select nickname, email from users
where nickname = 'mres($con, $nickname)'
or email = 'mres($con, $email)'
Da bekommst Du nun bestenfalls zwei Datenssätze. Du kannst nun nachgucken, ob eMail oder ob Nickname geklemmt hat und die passende Fehlermeldung generieren (Affenformular).
Dann das Ganze von vorne! Es kann sich in der Zwischenzeit ja schon wieder alles geändert haben.
Du kannst die Abfrage selbstverständlich auch vorne anstellen, aber den Eintragungsversuch dann trotzdem nur über die Contraints abwickeln. DAS ist die ECHTE Prüfung. Das Select hat nur eine geringe informative Güte, nämlich genau für den Moment, in dem es durchgeführt wird.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg