Mettre à jour base de données via formulaire php UPDATE

Résolu/Fermé
Em2teur Messages postés 6 Date d'inscription vendredi 14 août 2015 Statut Membre Dernière intervention 15 août 2015 - 14 août 2015 à 18:41
Em2teur Messages postés 6 Date d'inscription vendredi 14 août 2015 Statut Membre Dernière intervention 15 août 2015 - 15 août 2015 à 06:28
Bonjour,

J'ai eu la folle idée de créer un site sur lequel l'utilisateur peut répondre à plusieurs formulaires après avoir activé sa session. Tout fonctionne parfaitement sauf une chose : UPDATE.

Je vous explique rapidement : je souhaite que l'utilisateur puisse remplir son formulaire à la vitesse qu'il souhaite. Ainsi, il peut se déconnecter puis revenir plus tard sur son formulaire en se connectant à nouveau et reprendre là où il en était. Le problème est qu'à chaque fois qu'il valide son formulaire modifié, la requête UPDATE n'est pas comprise. Si l'utilisateur utilise pour la première fois le formulaire, pas de soucis, j'arrive à insérer une nouvelle ligne comprenant les informations du formulaire dans ma base de données.
J'ai regardé plusieurs forums pour trouver mon erreur, je n'y suis pas arrivée. Voici mon code simplifié :



session_start();
$_POST['pseudo']=$_SESSION["pseudo"];
		
include("connexionPDO.php");
$req = $bdd-> query('SELECT pseudo FROM contexte WHERE pseudo="'.$_SESSION['pseudo'].'"');
$resultat=$req->fetch();

if ($resultat['pseudo']!=$_SESSION['pseudo']) //si l'utilisateur remplit pour la première fois le formulaire
		{	
		//insertion de données variables dans la base de données test, table contexte		
		include("connexionPDO.php");
		$req=$bdd->prepare('INSERT INTO contexte(pseudo,territoire, caract, demo, eco) VALUES (?,?, ?, ?, ?)');
				
		$req->execute(array( $_SESSION['pseudo'],$_POST['territoire'], $_POST['caracteristique_'], $_POST['demographie_'], $_POST['economie_']));
		}
		else
		{
		//si le pseudo est déjà dans la base, on met à jour
		include("connexionPDO.php");
		//récupération de la valeur des champs
		$terri=$_POST['territoire']; $caract=$_POST['caracteristique_']; $demo=$_POST['demographie_'];$eco=$_POST['economie_'];
		
		$req =$bdd->exec('UPDATE contexte(pseudo,territoire, caract, demo, eco) SET  territoire=$terri, caract=$caract, demo=$demo,eco=$eco WHERE pseudo="'.$_SESSION['pseudo'].'"');

}
header('Location: XXXX.php');



J'espère que vous pourrez m'aider. Merci à vous !



A voir également:

1 réponse

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
14 août 2015 à 18:50
As-tu essayé ta requête sql update dans PhpMyAdmin ?
0
Em2teur Messages postés 6 Date d'inscription vendredi 14 août 2015 Statut Membre Dernière intervention 15 août 2015
14 août 2015 à 19:16
Waouh, réponse rapide ! Merci :)
Oui j'ai essayé, elle marche lorsque j'écris les valeurs que je veux mettre à jour
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
14 août 2015 à 19:29
As-tu utilisé la requête générée par ton code ou pas ?
Quelle est la requête que tu as essayé ?
0
Em2teur Messages postés 6 Date d'inscription vendredi 14 août 2015 Statut Membre Dernière intervention 15 août 2015
14 août 2015 à 19:53
Alors, j'ai essayé à l'instant la requête suivante : UPDATE contexte SET territoire='réunion', caract='soleil', demo='croissante,eco='touristique' WHERE pseudo='mimi'
ça, çamarche
Je ne vois pas comment utilisé exactement la requête générée par mon code sinon
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
14 août 2015 à 20:58
A la place de faire :
$req =$bdd->exec('UPDATE contexte(pseudo,territoire, caract, demo, eco) SET territoire=$terri, caract=$caract, demo=$demo,eco=$eco WHERE pseudo="'.$_SESSION['pseudo'].'"');

Tu fais :
$Sql='UPDATE contexte(pseudo,territoire, caract, demo, eco) SET territoire=$terri, caract=$caract, demo=$demo,eco=$eco WHERE pseudo="'.$_SESSION['pseudo'].'"';
echo $Sql;
$req =$bdd->exec($Sql);
0
Em2teur Messages postés 6 Date d'inscription vendredi 14 août 2015 Statut Membre Dernière intervention 15 août 2015
15 août 2015 à 05:53
Ca n'a pas fonctionné : ça m'affiche :

UPDATE contexte(pseudo,territoire, caract, demo, eco) SET territoire=$terri, caract=$caract, demo=$demo,eco=$eco WHERE pseudo="mimi"


Aucun message d'erreur comme avant, mais ma base de données ne prend pas en compte les modifications.

si je rajoute un echo $terri; ça m'affiche bien ce qui a été rentré dans le formulaire. Ce UPDATE est un mystère... Si tu as une autre idée... Merci :)
0