Mettre à jour un enregistrement d'une table avec PDO

Fermé
lunick90 Messages postés 21 Date d'inscription lundi 22 avril 2013 Statut Membre Dernière intervention 5 août 2014 - 1 août 2014 à 23:51
arthak Messages postés 13 Date d'inscription mercredi 30 juillet 2014 Statut Membre Dernière intervention 5 août 2014 - 5 août 2014 à 19:02
Bonsoir,
je viens vous voir pour encore un peu d'aide...
En début de semaine, j'avais un soucis avec la connexion à ma base de données avec PHP, et ben maintenant, c'est pour mettre à jour un enregistrement.
Petite description de ce qui est déjà fait :
j'ai un formulaire qui est pré rempli avec les informations de l'enregistrement désiré. Lorsque je modifie un élément, j'aimerai que cette modification apparaisse également dans ma table. Or ce n'est pas le cas. Après plusieurs recherches et essais, voilà ce que j'ai (et qui ne marche pas) :
$sql = $bdd->prepare("UPDATE table
					SET att1 = :nom
					WHERE t.id = :id");
$sql->execute(array('id' => $id, 'nom' => $_POST['nom']));

Est ce que le code est correct ? si non, qu'est ce qui ne va pas ?

Merci pour votre aide
Bonne soirée/nuit
Cordialement,

Lunick
A voir également:

8 réponses

dan-b Messages postés 80 Date d'inscription samedi 15 septembre 2012 Statut Membre Dernière intervention 20 octobre 2014 7
Modifié par dan-b le 2/08/2014 à 13:41
bonjour,

afficher l'erreur, ça aide
if ($sql->execute(array('id' => $id, 'nom' => $_POST['nom'])) == false{
    print_r($sql->errorInfo());
}
else {
   echo "Requête exécutée";
}


"t.id" ? A quoi fait référence t ?
0
arthak Messages postés 13 Date d'inscription mercredi 30 juillet 2014 Statut Membre Dernière intervention 5 août 2014
2 août 2014 à 16:13
Si "t" est un alias de ta table, enleve ce "t." car il n'y a pas mention d'alias dans ta requête. Si tu as bien une table qui s'appelle "t", il faut que tu l'ajoutes dans ton FROM.
0
arthak Messages postés 13 Date d'inscription mercredi 30 juillet 2014 Statut Membre Dernière intervention 5 août 2014
2 août 2014 à 16:15
Pas ton FROM, mais ton UPDATE dans ce cas.
0
lunick90 Messages postés 21 Date d'inscription lundi 22 avril 2013 Statut Membre Dernière intervention 5 août 2014
3 août 2014 à 00:02
Bonsoir,
merci pour les réponses apportées.
Désolé pour l'erreur, mais t est en fait table !! une erreur que j'ai fait en écrivant ce bout de code, que je n'ai pas sur mon formulaire !

L'erreur était une faute de cote (') : j'en avais mis pour les attributs dans la requête, alors qu'il n'en faut pas. exemple à ne pas faire :
UPDATE table
	SET 'att1' = 'nom'
        WHERE 'id' = 2


Par contre, j'ai toujours un problème au niveau de l'enregistrement de mes modifications.
Mon formulaire s'affiche sur ma_premiere_page.php?id=[une_variable]. Le form de ce formulaire à une action sur une autre page que celle en cours :
<form action="ma_seconde_page.php?id=', $id ,'" method="POST">

Est ce un problème ?
Par contre, si je fais :
<form action="ma_premiere_page.php?id=', $id ,'" method="POST">

l'enregistrement est bien mis à jour.
Comment ça se fait ?

Merci pour votre aide

Cordialement

Lunick
0
arthak Messages postés 13 Date d'inscription mercredi 30 juillet 2014 Statut Membre Dernière intervention 5 août 2014
Modifié par arthak le 3/08/2014 à 00:14
En l'occurence, si id est l'un de tes champs de formulaire, tu devrais plutôt utiliser la méthode GET qui génère automatiquement les paramètres liés au formulaire.

<form action="ma_premiere_page.php" method="GET">


Envoi vers la page "ma_premiere_page.php?id=tel-id".

Pour ton histoire de page un et page deux, tout dépend des différents traitements que tu effectues sur telle ou telle page.
0
lunick90 Messages postés 21 Date d'inscription lundi 22 avril 2013 Statut Membre Dernière intervention 5 août 2014
3 août 2014 à 08:29
la page un permet de voir un enregistrement, alors que la page deux permet de le modifier. Et donc, une fois qu'un enregistrement est modifié, on retourne sur la page un.
0
arthak Messages postés 13 Date d'inscription mercredi 30 juillet 2014 Statut Membre Dernière intervention 5 août 2014
3 août 2014 à 10:37
D'accord, mais du coup ton code avec des virgules de chaque coté du $id, c'est quoi ? Parce que je vois p trop à quoi ça correspond.. Du JavaScript ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lunick90 Messages postés 21 Date d'inscription lundi 22 avril 2013 Statut Membre Dernière intervention 5 août 2014
3 août 2014 à 12:39
Pour passer d'une page à une autre, lorsque je "joue" avec la base de données, je mets l'id dans le paramètre GET de mes pages. Et comme j'en ai besoin plusieurs fois par page, j'initialise une variable $id = $_GET['id'] . d'ou ce $id entre les virgules.
C'est pas bien de faire comme ça ?
0
arthak Messages postés 13 Date d'inscription mercredi 30 juillet 2014 Statut Membre Dernière intervention 5 août 2014
3 août 2014 à 16:32
Si c'est du php la concaténation est un point, je pense qu'il me manque le code qui est autour pour comprendre le problème..

--
0
lunick90 Messages postés 21 Date d'inscription lundi 22 avril 2013 Statut Membre Dernière intervention 5 août 2014
5 août 2014 à 07:24
Bonjour,
je ne trouve toujours rien pour résoudre mon problème.
Si vous le souhaitez, pour comprendre le problème, je peux vous envoyer les deux pages qui me posent problème ainsi que la base (qui n'est absolument pas confidentielle).

Ce que je n'arrive pas à comprendre, c'est pourquoi lorsque l'action de mon form reste sur la même page, l'UPDATE fonctionne alors que si cette action pointe sur une autre page, ça coince.... ? une erreur de manip' ?

Merci de votre aide

Cordialement,

Lunick
0
arthak Messages postés 13 Date d'inscription mercredi 30 juillet 2014 Statut Membre Dernière intervention 5 août 2014
5 août 2014 à 19:02
Je veux bien regarder.

--
0