campo diverso da input e db

Salve, io ho questo codice che funziona con delle classi,

ma non so come mai non mi fa il controllo ansi lo fa solo che non mi stampa il messaggio di errore che ho scritto io nel codice.

if(isset($_POST["update_email"])) // Edit profile
   {        
      $member = $_GET["edit"];
      $db = new DbConnector();               // Create an instance of the database class
      $db->connect();                               // Connect to the database
      $query = "SELECT * FROM users WHERE Email='".$_POST["Email"]."'";
      $result = $db->query($query);
      $rows = $db->fetchArray($result);
      
      if ($_POST['Email'] != $rows['Email'] )  // Qui controllo se e diverso da input e db.
      {if(mysql_num_rows($result) == 1)   
         {
        $error =  "<h1>Error</h1>";
        $error =  "<p>Sorry, that checkEmail ".$_POST["Email"]." is taken. Please go back and try again.</p>";
      }else
      {

         $query = "UPDATE users SET ";
         $query.="Email='".mysql_codifica($_POST["Email"])."'  WHERE id=$member";
         $result = $db->query($query);
         $msg =  "Profile updated!";      
         redirect("edit.php?edit=".mysql_codifica($member)."",0);
      }
      }
}

Mi dite come mai non funziona ansi funziona solo che non stampa niente quando c'è già una mail.

invece se non c'è fa la modifica.

grazie.

inviato 6 anni fa
luigi
X 0 X

Il tuo else devi farlo esterno all'if del controllo dell'email.

Prova così:

if(isset($_POST["update_email"])) // Edit profile
   {        
      $member = $_GET["edit"];
      $db = new DbConnector();               // Create an instance of the database class
      $db->connect();                               // Connect to the database
      $query = "SELECT * FROM users WHERE Email='".$_POST["Email"]."'";
      $result = $db->query($query);
      $rows = $db->fetchArray($result);
      
      if ($_POST['Email'] != $rows['Email'] )  // Qui controllo se e diverso da input e db.
      {
         $query = "UPDATE users SET ";
         $query.="Email='".mysql_codifica($_POST["Email"])."'  WHERE id=$member";
         $result = $db->query($query);
         $msg =  "Profile updated!";      
         redirect("edit.php?edit=".mysql_codifica($member)."",0);
      } else {
                        $error =  "<h1>Error</h1>";
                        $error =  "<p>Sorry, that checkEmail ".$_POST["Email"]." is taken. Please go back and try again.</p>";
      }
}

P.S. attento all'indentazione del codice, se lo leggi ed è indentato in modo scorretto puoi confonderti con gli annidamenti.

risposto 6 anni fa
Mario Santagiuliana
X 0 X

ciao, ho risolto in questo modo e funziona,

mi scordavo di prendere la sessione e altre cose:

if($loggedin==true)
{

      $db = new DbConnector();               // Create an instance of the database class
      $db->connect();                               // Connect to the database
      $member = mysql_codifica($_SESSION['id']);
      $query = "SELECT * FROM users WHERE id='$member'";
      $result = $db->query($query);
      $rows = mysql_fetch_assoc($result);
if(isset($_POST["update_email"])) // Edit profile
   {   
       
      $db = new DbConnector(); 
      $member = $_SESSION["id"];
      $db->connect();         
      $checkEmail = $db->query("SELECT * FROM users WHERE Email='".$_POST["Email"]."'");      // Connect to the database
      
      if ($_POST['Email'] != $rows['Email'] )
      {
      
      if(mysql_num_rows($checkEmail) == 1)   
         {
        $error =  "<h1>Error</h1>";
        $error =  "<p>Sorry, that checkEmail ".$_POST["Email"]." is taken. Please go back and try again.</p>";
      }else
         {
            $db = new DbConnector();               // Create an instance of the database class
            $db->connect();   
         $query = "UPDATE users SET ";
         $query.="Email='".mysql_codifica($_POST["Email"])."'  WHERE id=$member";
         $result = $db->query($query);
         $msg =  "Profile updated!";      
         redirect("edit.php?edit=".mysql_codifica($member)."",0);
      }
      
      
   }
}
.................................>etc
risposto 6 anni fa
luigi
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda

Domande simili