[PHP] [BDD] Erreur "Undefined index"

Résolu
Anonymous -  
 Anonymous -
Bonjour j'ai besoin de votre aide s'il vous plaît !
Je suis en train de créer un espace membre avec un profil et je suis rendu à la création d'un éditeur de profil. Je crée mon formulaire etc... mais au moment où je dois écrire le code qui permet d'envoyer à ma base de données les modifications de profil j'ai un problème qui me dit: "Undefined index: newpseudo in..."
$newpseudo qui est la variable pour envoyer le nouveau pseudo de la personne qui souhaite le changer.
Voici le code qui produit l'erreur:

if(isset($_POST['newpseudo']) AND !empty($_POST['newpseudo']) AND $_POST['newpseudo'] != $user['pseudo']);
{
$newpseudo = htmlspecialchars($_POST['newpseudo']);
$insertpseudo = $bdd->prepare("UPDATE membres SET pseudo = ? WHERE id = ?");
$insertpseudo->execute(array($newpseudo, $_SESSION['id']));
}

Voilà merci d'avance de votre aide !

3 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Bonjour,

    Il semble que la variable newPseudo ne soit pas bien orthographiée ou n'existe tout simplement pas dans ton $_POST.

    //Récupération des variables AVANT de les utiliser
    $newpseudo = !empty($_POST['newpseudo']) ? $_POST['newpseudo'] : NULL;
    $userPseudo = !empty($user['pseudo'])? $user['pseudo'] : NULL;
     
    if($newpseudo && $newpseudo != $userPseudo) {
      $insertpseudo = $bdd->prepare("UPDATE membres SET pseudo = ? WHERE id = ?");
      $insertpseudo->execute(array($newpseudo, $_SESSION['id']));
     }else{
        echo "<br>Erreur !  newpseudo n'existe pas ou est identique à userPseudo";
       echo "<br> userPseudo : ".$userPseudo;
        echo "<br> newpseudo : ".$newpseudo ;
     }
    
    


    NB : Le htmlspecialchar .. s'utilise pour AFFICHER les données .. pas pour l'insertion en BDD.
    et vu que tu utilises la PDO et les requêtes préparées, les risques d'injection SQL sont limités .. donc il n'est pas nécessaire de l'utiliser !
    1
  2. Anonymous
     
    ReBonjour jordane45 :D
    Je comprend pas tout ^^ mais pour résoudre mon problème je dois faire quoi du coup ?
    NB: Ce code:
    //Récupération des variables AVANT de les utiliser
    $newpseudo = !empty($_POST['newpseudo']) ? $_POST['newpseudo'] : NULL;
    $userPseudo = !empty($user['pseudo'])? $user['pseudo'] : NULL;
     
    if($newpseudo && $newpseudo != $userPseudo) {
      $insertpseudo = $bdd->prepare("UPDATE membres SET pseudo = ? WHERE id = ?");
      $insertpseudo->execute(array($newpseudo, $_SESSION['id']));
     }else{
        echo "<br>Erreur !  newpseudo n'existe pas ou est identique à userPseudo";
       echo "<br> userPseudo : ".$userPseudo;
        echo "<br> newpseudo : ".$newpseudo ;
     }

    je dois le mettre quelque part ?
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      Ben .. tu commences par tester le code que je t'ai donné et tu regardes ce que ça donne
      0
    2. Anonymous > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Je l'ai tester et remplacé a la place de:
      if(isset($_POST['newpseudo']) AND !empty($_POST['newpseudo']) AND $_POST['newpseudo'] != $user['pseudo']);
      	{
      		$newpseudo = htmlspecialchars($_POST['newpseudo']);
      		$insertpseudo = $bdd->prepare("UPDATE membres SET pseudo = ? WHERE id = ?");
      		$insertpseudo->execute(array($newpseudo, $_SESSION['id']));
      	}

      Et j'ai eu l'erreur:
      Erreur ! newpseudo n'existe pas ou est identique à userPseudo
      userPseudo :
      newpseudo :
      ( ! ) Notice: Undefined index: newmail in C:\wamp\www\*********\edition_profil.php on line 27
      0
    3. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > Anonymous
       
      Ajoutes; au début de ton script, un
      print_r($_POST);
      

      Et colle nous le résultat ici .....

      A mon avis .. soit ton POST ne contient rien ... soit tes champs dans ton formulaire sont mal écris !
      0
    4. Anonymous > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Bonjour où dois-je mettre le code:
      print_r($_POST);
      
      0
  3. Anonymous
     
    J'ai résolu mon problème je suis désolé j'ai tout simplement mal placé le premier code que vous m'avez donner.... Je sais pas si je serais toujours dans le php si vous n'étiez pas là !!!
    Merci merci !
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      Si la question est résolue..
      Merci de ne pas oublier de clôturer le sujet
      (en cliquant sur le lien "Marquer comme résolu" qui se trouve sous le titre de la question)

      Cordialement,
      Jordane
      0
      1. Anonymous > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
         
        C'est fait :)
        0