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

Résolu
Em2teur Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
Em2teur Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -
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 15219 Date d'inscription   Statut Modérateur Dernière intervention   365
 
As-tu essayé ta requête sql update dans PhpMyAdmin ?
0
Em2teur Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
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 15219 Date d'inscription   Statut Modérateur Dernière intervention   365
 
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   Statut Membre Dernière intervention  
 
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 15219 Date d'inscription   Statut Modérateur Dernière intervention   365
 
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   Statut Membre Dernière intervention  
 
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