Emailadressen-Check

trc120

Gesperrt
Hallo
Würde wieder mal eure Hilfe benötigen.
Habe in meinem Script Benutzerdaten ändern, die funktion auf schon vorhandene E-mail Adresse prüfen eingebaut.
Jetzt das Problem: wenn ich z.b den Namen ändere, bekomme ich die Echo meldung Daten wurden geändert und leider auch die echo meldung E-mail Adresse bereits vorhanden.
Wie bekomme ich die weg, bzw. nur angezeigt wenn es zutrifft.

PHP:
$anfrage = "UPDATE userdaten SET  
  vname        = '".mysql_real_escape_string($_POST['vname'])."',
  nname        = '".mysql_real_escape_string($_POST['nname'])."',   
  anschrift    = '".mysql_real_escape_string($_POST['anschrift'])."',  
  plz          = '".mysql_real_escape_string($_POST['plz'])."',  
  ort          = '".mysql_real_escape_string($_POST['ort'])."',  
  telefon      = '".mysql_real_escape_string($_POST['telefon'])."',  
  icq          = '".mysql_real_escape_string($_POST['icq'])."',  
  home         = '".mysql_real_escape_string($_POST['home'])."',  
  email        = '".mysql_real_escape_string($_POST['email'])."' WHERE benutzername = '".mysql_real_escape_string($_SESSION['benutzername'])."'"; 

	$ergebnis = $db -> query($anfrage); 

     if($ergebnis) 
      {
	    if($ergebnis = ("SELECT email FROM userdaten WHERE email ='".mysql_real_escape_string($_POST['email'])."'")) 
        {

      echo " Datensätze wurden geändert!<br>"; 
      } 
       else 
      {
      echo "Fehler!"; 
      }
} // if ende update
        echo "E-mail schon vergeben!"; 
         } 
		 else 
		 { 
        

  } // if ende e-mail check
 
Habe in meinem Script Benutzerdaten ändern, die funktion auf schon vorhandene E-mail Adresse prüfen eingebaut.
Jetzt das Problem: wenn ich z.b den Namen ändere, bekomme ich die Echo meldung Daten wurden geändert und leider auch die echo meldung E-mail Adresse bereits vorhanden.
Wie bekomme ich die weg, bzw. nur angezeigt wenn es zutrifft.

Prüfst Du ob die per Formular übergebene schon da ist, oder ob überhaupt eine vorhanden ist? Wo und wie prüfst Du das?
 
Hallo trc120,

So wie es aussieht, hast du bei deinen IF-ELSE Schachtelungen ein bissl was durcheinander gehaut.
Zuerst aber mal, wie ich glaube, dass es richtig sein kann, danach die Erklärung:
PHP:
<?php
  $anfrage = "UPDATE userdaten SET  
  vname        = '".mysql_real_escape_string($_POST['vname'])."',
  nname        = '".mysql_real_escape_string($_POST['nname'])."',   
  anschrift    = '".mysql_real_escape_string($_POST['anschrift'])."',  
  plz          = '".mysql_real_escape_string($_POST['plz'])."',  
  ort          = '".mysql_real_escape_string($_POST['ort'])."',  
  telefon      = '".mysql_real_escape_string($_POST['telefon'])."',  
  icq          = '".mysql_real_escape_string($_POST['icq'])."',  
  home         = '".mysql_real_escape_string($_POST['home'])."',  
  email        = '".mysql_real_escape_string($_POST['email'])."' WHERE 
  benutzername = '".mysql_real_escape_string($_SESSION['benutzername'])."'"; 

  $ergebnis = $db->query($anfrage); 
  
  
  if($ergebnis) {  // Update erfolgreich
    // Prüfen ob EMail schon vorhanden
    $ergebnis = $db->query("SELECT email FROM userdaten WHERE email ='".mysql_real_escape_string($_POST['email'])."'");
    
    if($ergebnis) {  // Datensatz gefunden
      echo " Datensätze wurden geändert!<br>"; 
    } 
    else {  // Datensatz nicht gefunden, Update Fehler
      echo "Fehler!"; 
    }
  }
  else {  // Update fehlgeschlagen, EMail anscheinend schon vorhanden
    echo "E-mail schon vergeben!"; 
  }
?>

So, als erstes wäre da mal deine Zuweisung in einen String.
PHP:
if($ergebnis = ("SELECT email FROM userdaten WHERE email ='".mysql_real_escape_string($_POST['email'])."'"))
Ein String ist immer true, da fehlt deine DB-Query.

PHP:
} // if ende update
        echo "E-mail schon vergeben!";
Dann hast du noch ein paar Else-Fälle falsch kommentiert oder die Klammerung falsch gesetzt. Hier fehlt zum Beispiel das ELSE, d. h. die Meldung wird fast immer ausgegeben.

Leider kann ich das Ding so nicht testen mit dem Fetzen Code, den du uns da hin geworfen hast ;)

Gruß
BK
 
@ Bratkartoffel

Genau das wahr der Fehler ( $db -> query und die if verschachtelung. ) funktioniert jetzt einwandfrei. Danke dir vielmals.
 
Hallo!

Mal eine Frage ausser der Reihe. ;)

Dass jemand seinen Nachnamen ändern können soll ist ja noch verständlich (z.B. Heirat).
Aber warum sollte man auch seinen Vornamen ändern können?
Natürlich gibt es auch solch eine Situation (z.B. bei einer Geschlechtsumwandlung/-anpassung), aber diese Situation dürfte wohl nur eine Ausnahme darstellen und in der Praxis praktisch nie vorkommen.
Ich würde die Ändernung des Nachnamens daher nur auf gesonderten Antrag durchführen.
Ist aber nur meine persönlich Meinung. ;)

Gruss Dr Dau
 
Hmm,

bei Dr Dau's Vorschlag fällt mir spontan auch noch der Benutzername ein ;) Den kann man auch nur selten selbst ändern ;)

Gruß
BK
 
@ Dr Dau

Ja ist richtig, der Vorname fliegt wieder raus, das wahr eigentlich nur leichter beim Testen. :-(

@ Bratkartoffel

Benutzernamen hatte ich im script, nur wahr das etwas komisch, beim ersten wechseln des Benutzernamen sprang das script auf die Startseite und änderte mir nicht nur den Benutzernamen, sonder gleich die ganzen Benutzerdaten. beim zweiten versuch ging es dann. Darum habe ich den Benutzernamen Rausgegeben.

Ich muss zugeben das mir die if verschachtelung noch ein kleines Rätsel aufgibt.:-(
 
Zurück