ID für UPDATE bestimmen - aber wie?

icefire

Erfahrenes Mitglied
Hallo!

Ich habe ein Skript, das wenn ein User sein Passwort vergessen hat, ein neues anfordern kann. Er trägt seinen Benutzernamen und Email ein und bekommt ein Zufallspasswort zugeschickt. Nur leider erfolgt kein UPDATE in der Datenbank!

Mit folgendem Code Frage ich die Datenbank ab:
PHP:
$data = mysql_fetch_array( mysql_query( "SELECT user_id, ident_nick, contc_mail FROM infmem_dat WHERE ident_nick='$ident_nick' AND contc_mail='$contc_mail'" ));

$ident_nick = $data[ident_nick];
$contc_mail = $data[contc_mail];

$user_id = $data[user_id];
global $user_id;

Meine Überprüfung:
PHP:
if (isset ($senden)){	
	if($_POST[user_name]==$ident_nick){
		$user_data = 1;  
		echo"<tr><td class=text1 bgcolor=".$bgcol3." colspan=2>Der angegebene Name existiert nicht!</td></tr>";     
		}
if($_POST[user_mail]==$contc_mail){
		$user_data = 1;  
		echo"<tr><td class=text1 bgcolor=".$bgcol3." colspan=2>Die angegebene Email existiert nicht!</td></tr>";     
		}
if($user_data == 1){
		echo "<br><tr><td class=text1 bgcolor=".$bgcol3." colspan=2>Fehlschlag!</td></tr>";
		echo"<br><tr><td align=left><a href=\"lost_pw.php\"><font size=-2 face=Tahoma>Zurück!</font></a></td></tr>";
		exit;
		}
	}

Eintrag in die DB:
PHP:
if($user_data != 1){	
	$update = "UPDATE infmem_dat SET ident_pass = MD5('".addslashes(htmlspecialchars($_POST[ident_pass]))."') WHERE user_id = '$user_id' LIMIT 1";		
	}

Bei Ausgabe mit echo $update; kommt folgendes:
UPDATE infmem_dat SET ident_pass = MD5('WGV5kXTeui') WHERE user_id = '' LIMIT 1

Wenn keine Daten vorhanden wären könnte er ja nicht vergleichen aber wie kann ich nun die ID bestimmen für den betreffenden User?

thx for help
ice:-)
 
Mhhh ... ich hab das ganze jetzt leider nur grob durchgeschaut, aber ich bin mir nicht so ganz sicher ob diese Angaben funktionieren:
PHP:
$ident_nick = $data[ident_nick]; 
$contc_mail = $data[contc_mail]; 

$user_id = $data[user_id];
Ich denke es sollte eher so aussehen:
PHP:
$ident_nick = $data['ident_nick']; 
$contc_mail = $data['contc_mail']; 

$user_id = $data['user_id'];

Wenn das auch sonst gehen sollte belehrt mich eines Besseren!
 
Liegt auch nicht daran weil auch da das ID Feld leer bleibt!

UPDATE infmem_dat SET ident_pass = MD5('o8RIYNt7TR') WHERE user_id = '' LIMIT 1
 
Hi,

warum nimmst Du nicht die email-Adresse als Zuweisung?

PHP:
if($user_data != 1){     
    $update = "UPDATE infmem_dat SET ident_pass = MD5('".addslashes(htmlspecialchars($_POST[ident_pass]))."') WHERE user_id = '".$_POST[user_mail]."' LIMIT 1";         
    }

Gruß Xabbu!
 
Kann es evtl. sein, dass durch global $user_id; die Variable $user_id neu gesetzt wird und somit keinen Inhalt mehr hat?
Ich würd global $user_id; mal an den Anfang des Scripts stellen.
Vielleicht klappts ja dann.
 
Ich denke mal das die Lösung die Email zu verwenden besser ist. :-)

Das "global $user_id;" erfüllt doch erst seinen Zweck wenn auch die nötigen Informationen vorliegen!? Die werden durch die Abfrage von der DB gesetzt - eigentlich! :-(
 
Original geschrieben von icefire
Das "global $user_id;" erfüllt doch erst seinen Zweck wenn auch die nötigen Informationen vorliegen!? Die werden durch die Abfrage von der DB gesetzt - eigentlich! :-(
Mal ne Frage: Warum verwendest Du denn global? Ich sehe da keinerlei Funktion, die auf die Variable $user_id drauf zugreift? Wenn ich mich recht erinnere, hat global nur die Aufgabe, Variablen aus dem lokalen Wertebereich auch dem Wertebereich der Funktion bekannt zu machen.
 
Hatte erst vor, das wenn ich die Daten aus der DB auslese und vergleiche die ID automatisch zuordnen kann - aber das war natürlich unsinnig. Hab aber auch zwischenzeitlich den Fehler gefunden - denn wie soll SQL ohne "mysql_query" Daten eintragen? :-)
 
Zurück