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
14668
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
4 juin 2020
231
As-tu essayé ta requête sql update dans PhpMyAdmin ?
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
Messages postés
14668
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
4 juin 2020
231
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);
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 :)
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

En fait, la requête n'est pas comprise parce qu'il ne comprend pas $terri, $caract, $demo, $eco. Si je fais la requête suivante dans php, ça marche :

$sql='UPDATE contexte SET territoire=\'Ouest\' WHERE pseudo="'.$_SESSION['pseudo'].'"';
echo $sql;
$req1=$bdd-> exec($sql);

Mais j'ai besoin des variables $terri, $caract, $demo, $eco car je ne compte pas faire les modifications à la main. Comment faire pour qu'il comprenne ma requête avec ces variables ?
Messages postés
6
Date d'inscription
vendredi 14 août 2015
Statut
Membre
Dernière intervention
15 août 2015

C'est bon, j'ai trouvé :)

j'ai fait :
$Sql='UPDATE contexte(pseudo,territoire, caract, demo, eco) SET territoire="'.$terri.'" WHERE pseudo="'.$_SESSION['pseudo'].'"';
echo $Sql;
$req =$bdd->exec($Sql);

et là ça marche :) ça modifie bien territoire dans ma table, en l'appliquant à toutes les variables, je peux ainsi modifier toute ma table

Merci beaucoup NHenry pour ton aide et ta rapidité de réponse :) Je te souhaite une excellent journée :)