[PHP] [BDD] Erreur "Undefined index" [Résolu/Fermé]

Signaler
-
 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

Messages postés
29923
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
31 octobre 2020
2 912
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci

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 ?
Messages postés
29923
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
31 octobre 2020
2 912 > 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 !
Messages postés
29923
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
31 octobre 2020
2 912
PS :
Merci de préciser le LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

Merci d'y penser dans tes prochains messages.
.
>
Messages postés
29923
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
31 octobre 2020

Bonjour où dois-je mettre le code:
print_r($_POST);
Messages postés
29923
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
31 octobre 2020
2 912 > Anonymous
Comme je te l'ai marqué :

Ajoutes; au début de ton script,
>
Messages postés
29923
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
31 octobre 2020

Je l'ai ajouté tout en haut de mon code (dans la balise <?php ?> evidemment) et rien n'a changé a part tout en haut de la page web le message: Array ()
=====
A mon avis .. soit ton POST ne contient rien ... soit tes champs dans ton formulaire sont mal écris !

Comment régler le problème des champs de mon formulaire et de mon POST ?
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 !
Messages postés
29923
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
31 octobre 2020
2 912
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
>
Messages postés
29923
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
31 octobre 2020

C'est fait :)