Where bedingung bei Registrierung,

Crazy_down

Erfahrenes Mitglied
Hi Leute, ich habe natürlich erstmal alles abgesucht was hier mit Registrierungen zu tun hat, aber nirgends habe ich das gefunden was ich suche.

ICh will einfach bei der Registrierung abfragen ob der Nickname oder die e-mail adresse schon vorhanden ist. aber habe immer on T_String fehler, jetzt habe cih schon soviel rum gebastelt das ich gar net mehr klar komme :D. deswegen frag ich euch mal.

$query= "Insert into register values('','".$_SESSION['reg_name']."','".$_SESSION['reg_nick']."','".$_SESSION['reg_schluessel']."','".$_SESSION['reg_schluessel2']."','".$_SESSION['reg_mail']."')"

WHERE 'nickname' <>'".$_SESSION['reg_nick']."' OR email <> '".$_SESSION['reg_mail']."' ;


so wo isn nun der Fehler ?


danke schonmal
 
PHP:
$query= "
insert into 
  `register` 
values(
  '', 
  '".$_SESSION['reg_name']."', 
  '".$_SESSION['reg_nick']."', 
  '".$_SESSION['reg_schluessel']."', 
  '".$_SESSION['reg_schluessel2']."', 
  '".$_SESSION['reg_mail']."') 
where 
  `nickname` != '".$_SESSION['reg_nick']."' 
or 
  `email` != '".$_SESSION['reg_mail']."'
";
Wobei ich nur Syntax korrgiert habe, ich denke beim Insert kann man kein Where benutzen, afaik.
 
Da hast du Recht _voodoo...es ergäbe auch gar keinen Sinn bei einem Insert ein Where einzubauen!?

greetz
daddz
 
das mit dem where wird nicht funktionieren.

du müsstest vorher die datenbank fragen ob es den nick schon gibt

und wenn ja -> fehler ausgeben wenn nein -> insert query ausführen.
 
ist nich schon vom ansatz her der query falsch? dachte immer eine Insert Abfrage lautet
INSERT INTO table (col1,col2,col3) VALUES (data1,data2,data3)
und nicht
INSERT INTO table VALUES(data1,data2)

oder haben sich die zeiten geändert? :D
 
Man kann die Spalten vorher weglassen, funktioniert super, hat aber den Nachteil dass
man nicht benötigte Spalten nicht weg lassen kann. :(
 
mhh alels klar danke, also bei nem Insert kein where.
Wie kann ich vorher abfragen ob es den schon gibt ?
mit ner einfachen if() funktion?
also in etwa
if($_SESSION['reg_nick'] == nickname)
{
fehler
}
else{
insert....
}


?
 
Naja, wenn dann musst du wohl in der Datenbank nachsehn, ob er vorher schon da ist, oder hab ich was falsch verstanden?

Also sowas?
PHP:
$query = 'SELECT FROM register
WHERE nickname = "'.$_SESSION['reg_nick'].'"
OR email = "'.$_SESSION['reg_mail'];

//setquery etc... -> $ergebnis

if (mysql_num_rows($ergebnis) > 0) echo "fehler, gibts schon.";
else [...] //hinzufügen
mysql_num_rows() zähl die Datensätze... siehe php.net
 
Zuletzt bearbeitet von einem Moderator:
ok ich habe das jetzt so gemacht:
Code:
 $query1 = 'SELECT * FROM register WHERE nickname = "'.$_SESSION['reg_nick'].'" OR email = "'.$_SESSION['reg_mail'];
 
 $result1 = mysql_query ($query1)or die("nick oder mail gibts schon !");
 
 
 if (mysql_num_rows($result1) > 0) echo "fehler, gibts schon.";

ehm da kommt halt immer nick oder mail gibts schon. is da nicht auch ein ' zu viel bzw. zu wenig ?
 
Es stimmt ja so auch nicht: Wenn die query erfolgreich ist, ist der Username schon vergeben, nicht andersrum.(bezieht sich auf das :$result1 = mysql_query ($query1)or die("nick oder mail gibts schon !"); Der code würde etwa so aussehen:
PHP:
 <?php
  $query1 = "SELECT count(*) FROM 
 				register 
 			WHERE 
				nickname = '".$_SESSION['reg_nick']."' 
			OR 
				email = '".$_SESSION['reg_mail']."'";
 
 	$result1 = @mysql_query ($query1);
	$row=mysql_fetch_row($result1);
	if($row[0] != 0)
		echo "Username/mailadresse schon belegt";
 ?>

Bitte achte übrigens drauf, dass du die php- Tags verwendest, es ist leichter einen code nachzuvollziehen wenn er gehighlighted wird.
Nochwas: Ich würde die Abfrage doch etwas ändern, so dass explizit ausgegeben wird, ob es der nick oder die mailadresse ist, die schon vergeben ist

edit: Hatte die " falsch gesetzt
 
Zuletzt bearbeitet:
Zurück