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

Résolu/Fermé
Signaler
Messages postés
6
Date d'inscription
vendredi 14 août 2015
Statut
Membre
Dernière intervention
15 août 2015
-
Messages postés
6
Date d'inscription
vendredi 14 août 2015
Statut
Membre
Dernière intervention
15 août 2015
-
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 !



1 réponse

Messages postés
14846
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 janvier 2022
315
As-tu essayé ta requête sql update dans PhpMyAdmin ?
0
Messages postés
6
Date d'inscription
vendredi 14 août 2015
Statut
Membre
Dernière intervention
15 août 2015

Waouh, réponse rapide ! Merci :)
Oui j'ai essayé, elle marche lorsque j'écris les valeurs que je veux mettre à jour
0
Messages postés
14846
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 janvier 2022
315
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
Messages postés
6
Date d'inscription
vendredi 14 août 2015
Statut
Membre
Dernière intervention
15 août 2015

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
Messages postés
14846
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 janvier 2022
315
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
Messages postés
6
Date d'inscription
vendredi 14 août 2015
Statut
Membre
Dernière intervention
15 août 2015

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