Php/pdo : Update ne fonctionne pas et ne renvoi pas d'erreur [Résolu/Fermé]

Messages postés
94
Date d'inscription
samedi 18 août 2012
Statut
Membre
Dernière intervention
4 avril 2013
- - Dernière réponse :  honey - 31 mai 2015 à 11:21
Bonjour,
je cherche où est le problème dans mon code car tout fonctionne sauf mon update : en clair lorsque j'appui sur le submit "valider" celui ci revient sur la même page comme si je n'avais rien fait.


voici le code :

<form action="index.php?page=gestlivres" method="post">
<hr>Modifier<hr>
<select name="livre">
<?php $sql="SELECT * FROM livres";
$req= $PDO->query($sql) or die (print_r($PDO->errorInfo()));
echo "selectionner le livre à modifier : ";
while ($d = $req-> fetch(PDO::FETCH_OBJ))
{
echo "<option value=".$d->id.">".$d->titre."</option>";
}
?>
</select>
<input type=submit name="modifier" value="modifier"/>
</form>
<form action="index.php?page=gestlivres" method="post">
<?php
if (isset($_POST['modifier']))
{
$livre = $PDO ->quote($_POST['livre']);
$sql="SELECT * FROM livres WHERE id=$livre";
$req= $PDO->query($sql) or die (print_r($PDO->errorInfo()));
while ($d = $req-> fetch(PDO::FETCH_OBJ))
{
$code_barre = $d->code_barre;
$titre = $d->titre;
$isbn = $d->isbn;
$titre = $d->titre;
$auteur = $d->auteur;
}
?>
<input type=hidden name="id_livre" value="<?php echo $livre;?>"/>
code_barre : <input type=text name="code_barre" value="<?php echo $code_barre;?>"/>
ISBN : <input type=text name="isbn" value="<?php echo $isbn;?>"/>
titre : <input type=text name="titre" value="<?php echo $titre;?>"/>
auteur : <input type=text name="auteur" value="<?php echo $auteur;?>"/>
<select name="id_genre">
<?php
$sql="SELECT * FROM genres";
$req= $PDO->query($sql) or die (print_r($PDO->errorInfo()));
while ($d = $req-> fetch(PDO::FETCH_OBJ))
{
echo "<option value=".$d->id.">".$d->genre."</option>";
}
?>
</select>
<input type=submit name="valider" value="valider"/>
</form>
<?php
if (isset($_POST['valider']))
{
$id_livre = $PDO ->quote($_POST['id_livre']);
$code_barre = $PDO ->quote($_POST['code_barre']);
$isbn = $PDO ->quote($_POST['isbn']);
$titre = $PDO ->quote($_POST['titre']);
$auteur = $PDO ->quote($_POST['auteur']);
$id_genre = $PDO ->quote($_POST['id_genre']);
$req = $PDO->exec("UPDATE SET livres(code_barre, isbn, titre, auteur, id_genre) VALUES ($code_barre, $isbn,$titre, $auteur, $id_genre) WHERE id=$id_livre");
echo "Modification réussi !";
}}
?>

Merci si vous avez la solution à mon problème.
Afficher la suite 

7 réponses

Meilleure réponse
2
Merci
Bonjour,

Le post a plus de 2 ans, mais j'ai le même problème. Quelle a été votre solution ?

Dire « Merci » 2

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60183 internautes nous ont dit merci ce mois-ci

Messages postés
94
Date d'inscription
samedi 18 août 2012
Statut
Membre
Dernière intervention
4 avril 2013
2
0
Merci
Up !
0
Merci
Le problème vient de ton sql.
update table set champ="machin"
logique
Messages postés
94
Date d'inscription
samedi 18 août 2012
Statut
Membre
Dernière intervention
4 avril 2013
2 -
j'vais essayer ça
logique
Messages postés
94
Date d'inscription
samedi 18 août 2012
Statut
Membre
Dernière intervention
4 avril 2013
2 -
toujours pareil, rien ne se passe
Messages postés
94
Date d'inscription
samedi 18 août 2012
Statut
Membre
Dernière intervention
4 avril 2013
2
0
Merci
Quand j'enlève complètement ma requête, celle ci me fait la même chose.. le problème ne serait donc pas dû à la requête ?
logique
Messages postés
94
Date d'inscription
samedi 18 août 2012
Statut
Membre
Dernière intervention
4 avril 2013
2 -
j'ai essayé ça :
$req = $PDO->exec("UPDATE livres SET (code_barre, isbn, titre, auteur, id_genre) VALUES ($code_barre, $isbn,$titre, $auteur, $id_genre) WHERE id=$id_livre");

Puis ça :
$req= $PDO->prepare('UPDATE livres SET (code_barre= :code_barre, isbn = :isbn, titre = :titre, auteur = :auteur, id_genre = :id_genre) WHERE id = :id_livre' );
$req->execute(array(
'code_barre' => $_POST['coe_barre'],
'isbn'=> $_POST['isbn'],
'titre' => $_POST['titre'],
'auteur'=> $_POST['auteur'],
'id_genre' => $_POST['id_genre'],
'id_livre'=> $_POST['id_livre']));

et j'ai essayé en supprimant la requête et afficher juste ce qui s'envoyait... même sans requête après il revient au point de départ. sans m'afficher les variables envoyées
logique
Messages postés
94
Date d'inscription
samedi 18 août 2012
Statut
Membre
Dernière intervention
4 avril 2013
2 -
j'ai modifier un peu le code et j'ai réussi à obtenir ça :

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(code_barre, isbn, titre, auteur, id_genre) VALUES (4848794661, 9781843910374, S' at line 1' in xx.php:89 Stack trace: #0 xx.php(89): PDO->exec('UPDATE livres S...') #1xx.php(70): include(xx...') #2 {main} thrown in xx.php on line 89

si vous avez une idée de l'erreur que ça peut etre ?
logique
Messages postés
94
Date d'inscription
samedi 18 août 2012
Statut
Membre
Dernière intervention
4 avril 2013
2 -
cette fois ci quand j'enleve la requête et je le demande de m'afficher ce qu'il doit envoyé ça marche. mais dès que je rajoute la requête ça me met le message d'erreur d'au-dessus
Messages postés
94
Date d'inscription
samedi 18 août 2012
Statut
Membre
Dernière intervention
4 avril 2013
2
0
Merci
up !
Messages postés
94
Date d'inscription
samedi 18 août 2012
Statut
Membre
Dernière intervention
4 avril 2013
2
0
Merci
de l'aide svp !
Messages postés
94
Date d'inscription
samedi 18 août 2012
Statut
Membre
Dernière intervention
4 avril 2013
2
-1
Merci
Problème résolu tout seul. Si vous voulez connaitre le pourquoi poster à la suite.
comment tu l 'a fait j'ai le meme probleme