Trotz Abfrage dennoch Eintrag in DB

  • Themenstarter Themenstarter joky_joky
  • Beginndatum Beginndatum
J

joky_joky

PHP:
<?php
	
if ($gesendet) {

	 $dbconnect = mysql_connect("$host","$user","$pass");

  	 $res = mysql_db_query("$database",
  	        "select * from $table");
  	 $num = mysql_num_rows($res);

  	 for ($i=0; $i<$num; $i++)
  	 {
    	  $dbusername = mysql_result($res, $i, "Username");
    	  $dbemail = mysql_result($res, $i, "Email");
	
	if ($username == "$dbusername" OR $email == "$dbemail")
	{
	$fehler2 = "Der Username oder E-Mail Adresse wird schon verwendet.<BR>";
	}	
  	  
}

mysql_close($dbconnect);

if ($username == "" OR $pwd == "" OR $nn == "" OR $vn == "" OR $email == "" OR $land == "" OR $plz == "" OR $ort == ""){
$fehler = "Sie haben nicht alle Felder ausgefüllt.<BR>";
}

else {

  	$dbconnect = mysql_connect("$host","$user","$pass");

  	mysql_select_db("$database");
  	
  	$eintrag  = "INSERT INTO $table (Username, Kennwort, Nachname, Vorname, Email, Land, PLZ, Ort) VALUES ";
  	$eintrag .= "('$username', MD5('$pwd'), '$nn', '$vn', '$email', '$land','$plz', '$ort')";
  
  	$eintragen = mysql_query($eintrag);
  
  	mysql_close($dbconnect);

	}
}
?>

Tach zusammen ich weis nicht wo der fehler liegt aber
normalerweise wenn sich ein User anmeldet dann
prüft er ob dieser alle Felder ausgefüllt hat oder ob er
schon in der Datenbank vorhanden ist.

Soweit geht das auch gut aber wenn ich jetzt einfach
auf meinen absendebutton nochmal drauf klicke sagt
er zwar das der Name schon vorhanden ist aber er
trägt es trozdem in die Datenbank ein.

wieso?

Kann mir mal jemand sagen wo mein Fehler leigt.

MfG Joky_Joky
 
Du solltest mal die { } Bereiche checken. Ich denke da stimmt was nicht. Leider sind die aber so unübersichtlich gesetzt, dass ich mir nicht ganz sicher bin.

Was du auf alle Fälle machen kannst ist in der Tabelle das Feld Username als Primary Key zu definieren. Und dann trägt er definitiv einen User kein zweites mal ein.
 
Ganz einfach.

Er löuft in das erste if rein if ($gesendet ) und macht was auch immer.
So dann kommt das Zweite if-Konstrukt. Da DIe DAten aber nich leer sind,
läut er in das Else und da trägt er es dann in die DB ein. -> Logische Strutur deinere Ifs ist falsch.

Es müsste dann so sein:

PHP:
if ($gesendet )
{
   if( "DB NICHT VORHANDEN" )
   {
     //...
    }

   elseif ($username == "" OR $pwd == "" OR $nn == "" OR $vn == "" OR $email == "" OR $land == "" OR $plz == "" OR $ort == "")
    {
      //...
    }
     
    else
       //eintragen
}

Also erstmal ist gesendet, wenn ja ist vorhanden, oder sind Daten ausgefüllt,.
Wenn keins von beiden zutrifft trägt er die Daten ein.
 
Zurück