update

Eléphanteau du PHP | 18 Messages

10 oct. 2017, 11:38

Bonjour
Je ne trouve pas pourquoi mon update ne fonctionne pas.
L'affichage, d'abord du nom et du prénom, puis des données présentes dans la base se fait bien, mais les modifications ne sont pas enregistrées.
Si quelqu'un pouvait m'aider...

Code : Tout sélectionner

$reponse = $bdd ->prepare('SELECT * FROM membres WHERE pseudo = :pseudo'); $reponse->execute (array('pseudo'=>$_SESSION['pseudo'])); while ($resultat=$reponse-> fetch()) { echo (" <h1>".$resultat['prenom']." ".$resultat['nom']."</h1>"); } $reponse = $bdd ->prepare('SELECT * FROM membres WHERE pseudo = :pseudo'); $reponse->execute (array('pseudo'=>$_SESSION['pseudo'])); while ($resultat=$reponse-> fetch()) { ?> <div class="boitelarge"> <p><a href="indextsr6.php">Retour au menu</a> </p> <form method="POST" action="index6.php "> <p style="float:right"><label for ="nom">Nom </label> <input type="text" value= "<?php echo $resultat['nom']; ?>"></p><br /><br /> <p style="float:right"><label for ="prenom">Prénom </label> <input type="text" value= "<?php echo $resultat['prenom']; ?>"></p><br /><br /> <p style="float:right"><label for ="nele">Né.e le </label> <input type="text" value= "<?php echo $resultat['nele']; ?>"></p> <br /> <br /> <p style="float:right"><label for ="sexe">Sexe </label> <input type="text" value= "<?php echo $resultat['sexe']; ?>"></p><br /><br /> <p style="float:right"><label for ="parentnom">Parent (pour un.e mineur.e) : nom </label> <input type="text" value= "<?php echo $resultat['parentnom']; ?>"></p> <br /><br /> <p style="float:right"><label for ="parentprenom">Parent : prénom </label> <input type="text" value= "<?php echo $resultat['parentprenom']; ?>"></p><br /><br /> <p style="float:right"><label for ="email">email </label> <input type="text" value= "<?php echo $resultat['email']; ?>"></p><br /><br /> <p style="float:right"><label for ="numrue">N° et rue </label> <input type="text" value= "<?php echo $resultat['numrue']; ?>"></p> <br /><br /> <p style="float:right"><label for ="ville">Ville </label> <input type="text" value= "<?php echo $resultat['ville']; ?>"></p><br /><br /> <p style="float:right"><label for ="cp">Code postal </label> <input type="text" value= "<?php echo $resultat['cp']; ?>"></p><br /><br /> <p style="float:right"><label for ="tel1">Tél </label> <input type="text" value= "<?php echo $resultat['tel1']; ?>"></p><br /><br /> <p style="float:right"><label for ="profession">Profession </label> <input type="text" value= "<?php echo $resultat['profession']; ?>"></p> <br /><br /><br /><br /> <input type="submit" name="submit" value="enregistrer la modification" ><br /><br /> </form> </div> <?php } if ($submit !="") { $req=$bdd->prepare('UPDATE membres SET nom=:nom, prenom=:prenom, nele=:nele, sexe=:sexe, email=:email, numrue=:numrue, cp=:cp, ville=:ville, tel1=:tel1, profession=:profession WHERE pseudo=:pseudo ' ); $req->execute(array('nom'=>$resultat['nom'], 'prenom'=>$resultat['prenom'], 'nele'=>$resultat['nele'], 'sexe'=>$resultat['sexe'], 'email'=>$resultat['email'], 'numrue'=>$resultat['numrue'], 'cp'=>$resultat['cp'], 'ville'=>$resultat['ville'], 'tel1'=>$resultat['tel1'], 'profession'=>$resultat['profession'], 'pseudo'=>$resultat['pseudo'] ) ); }

Mammouth du PHP | 1303 Messages

10 oct. 2017, 11:54

en retour de formulaire, les données sont dans le tableau $_POST et non dans un tableau $resultat
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone de rubik's cube
Ingénieur Industriel Chimie / Biochimie

Eléphanteau du PHP | 18 Messages

12 oct. 2017, 17:16

Merci pour votre réponse qui m'a fait avancer.
J'ai créé un fichier "enregistre.php" dans lequel je fais l'update, en mettant les données en $_POST
Mais j'ai maintenant une erreur sur la date (ce qui veut peut-être dire que j'ai réglé le problème précédent !).
Invalid datetime format: 1292 Incorrect date value: '' for column 'nele' at row 1 in C:\wamp
nele=date de naissance.
Le message d'erreur m'indique la ligne 44, c'est la dernière ligne où il y a ' ); '
Je ne trouve rien qui m'aide dans les forums. Je ne comprends pas. Dans ma base, mes dates sont bien en Ymd.
Voici mon code, et merci d'avance.

"

Code : Tout sélectionner

<?php session_start(); $nom= isset($_POST['nom'])?$_POST['nom']:''; $prenom= isset($_POST['prenom'])?$_POST['prenom']:''; $nele= isset($_POST['nele'])?$_POST['nele']:''; $sexe= isset($_POST['sexe'])?$_POST['sexe']:''; $parentnom= isset($_POST['parentnom'])?$_POST['parentnom']:''; $parentprenom= isset($_POST['parentprenom'])?$_POST['parentprenom']:''; $email= isset($_POST['email'])?$_POST['email']:''; $numrue= isset($_POST['numrue'])?$_POST['numrue']:''; $ville= isset($_POST['ville'])?$_POST['ville']:''; $cp= isset($_POST['cp'])?$_POST['cp']:''; $tel1= isset($_POST['tel1'])?$_POST['tel1']:''; $profession= isset($_POST['profession'])?$_POST['profession']:''; //---------------------------------insérer les modifications dans la base-------------------------- include ("bonjour4.php"); $req=$bdd->prepare('UPDATE membres SET nom=:nom, prenom=:prenom, nele=:nele, sexe=:sexe, email=:email, numrue=:numrue, cp=:cp, ville=:ville, tel1=:tel1, profession=:profession WHERE pseudo=:pseudo ' ); $req->execute(array('nom'=>$nom, 'prenom'=>$prenom, 'nele'=>$nele, 'sexe'=>$sexe, 'email'=>$email, 'numrue'=>$numrue, 'cp'=>$cp, 'ville'=>$ville, 'tel1'=>$tel1, 'profession'=>$profession, 'pseudo'=>$_SESSION['pseudo'] ) ); ?>

Mammouth du PHP | 860 Messages

12 oct. 2017, 17:59

et l'utilisateur rentre bien la date au format ymd dans le formulaire ?

Eléphanteau du PHP | 18 Messages

12 oct. 2017, 18:08

et l'utilisateur rentre bien la date au format ymd dans le formulaire ?
Dans un premier temps, le formulaire affiche les données présentes dans la base. Puis la personne peut modifier les données.
Donc les données affichées sont d'abord celles qui sortent de la base et elles sont forcément dans le bon format. Puis si il y a une modification, par exemple seulement sur l'adresse, l'enregistrement se fait et l'erreur sur la date de naissance apparaît même si elle n'a pas été changée.
J'espère que je suis clair. Mais dans mon esprit c'est confus !

Mammouth du PHP | 860 Messages

12 oct. 2017, 18:13

l'erreur reste si la requete sql ne comporte plus la mise à jour de la date ?

Eléphanteau du PHP | 18 Messages

12 oct. 2017, 18:24

Bonne piste.
Si j'enleve la date de naissance de la requete, le résultat fonctionne. Mais toutes les données sont effacées, sauf la date de naissance qui n'a pas été mise à zéro.
Donc mon php met ma base de données à zéro. Ce n'est pas intéressant !

Mammouth du PHP | 1303 Messages

13 oct. 2017, 08:38

En effet ton formulaire ne peut pas retourner de valeurs vu que t'u na pas identifié tes input de formulaire.

donne à chaque input un attribut name="" correspondant à tes champs et ensuite vérifie que tes variables sur enregistre.php sois bien remplie
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone de rubik's cube
Ingénieur Industriel Chimie / Biochimie

Eléphanteau du PHP | 18 Messages

13 oct. 2017, 09:13

Cher Spols, je te remercie, ça marche.

Mammouth du PHP | 1303 Messages

13 oct. 2017, 09:50

Maintenant il te faut contrôler chaque entrée de l'utilisateur, tu ne peux faire confiance à personne.

vérifie que le format est correcte et qu'il n'y a pas de tentative d'injection sql.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone de rubik's cube
Ingénieur Industriel Chimie / Biochimie