Cryptic Sven: Datenbankabfrage um ähnlichkeiten zu vermeiden

Beitrag lesen

Hallo alle,

ich hänge gedanklich mal wieder etwas fest. Ich habe ein Registrierungsformular und möchte nun prüfen ob der name nicht in der Datenbank bereits vergeben ist. Eine Abfrage bekomme ich problemlos hin jedoch möchte ich es nun noch etwas genauer haben. Denn es kann ja sein das sich eine Paula mit dem Usernamen PaUlA angemeldet hat und nun möchte sich eine andere Paula mit dem Usernamen Paula anmelden. Mit der einfachen abfrage die ich hinbekommen habe wird leider nur nach Paula gesucht jedoch findet meine einfache Abfrage die PaUlA nicht. Mein gedanke war nun die Namen aus der DB auszulesen und komplett in kleinbuchstaben ausgeben und vom Formular den Namen auch in kleinbuchstaben ausgeben. Soweit alles gut aber nun hänge ich gerade etwas fest. Hier mal der Wichtige Teil des Codes :

<?php
...
	}elseif(isset($_POST['registrierung'])){
		// Registrierung
			$sql = "SELECT name FROM user";
			$sqlnamecheck = $db->query($sql);
			while($snc = $sqlnamecheck->fetch_assoc()){
				$sqluser=strtolower($snc['name']);
				if($sqluser == strtolower($_POST['reguser'])){
					echo'Der Name '.$snc['name'].' existiert schon';
				}
			}
		if($_POST['reguser']=="" || $_POST['regpw1']=="" || $_POST['regmail']==""){
			echo'Es müßen schon alle Felder ausgefüllt werden!';
		}elseif($_POST['regpw1'] != $_POST['regpw2']){
			echo'Beide Passwörter stimmen nicht überein!';
		}else{
			$sql = "INSERT INTO user (id, name, password, email, sessionid) VALUES (NULL, '$reguser', '$regpw', '$regmail', '$regsession')";
			if(mysqli_query($db, $sql)){
				echo'Danke für deine Registrierung<br/>';
			}else{
				echo'Da ist wohl was schief gelaufen';
			}
		}
	}
}
...
?>

Mit dem hier vorhandenen Code wird geprüft ob der Name schon existiert aber da ich zu beginn danach frage wird zwar der Name gefunden aber unten bei Insert Into dennoch der neue Name in die DB gespeichert. Ich dachte mir das ich eventuell in der While-Schleife prüfe und wenn der Name nicht existiert wird er in die Datenbank eingetragen. Die Prüfung ist klar aber wenn ich das so abändere das das Insert Into oben in der While-Schleife steckt würde bei einer Abfrage von 10 Usern die nicht übereinstimmern teoretisch doch 10mal ein Insert Into ausgeführt oder sehe ich das falsch?

Wie kann ich also die DB abfragen und wenn alle bereits vorhanden Usernamen geprüft wurden ein neuer User angelegt wird sofern keine Ähnlichkeiten vorhanden sind?

Oder soll ich die Prüfung weglassen und auch eine Paula zulassen selbst wenn es bereits eine PaUlA in der DB gibt? Was meint ihr?

LG Cryptic Sven

--
Was du heute kannst besorgen, das schaffste auch noch morgen!