Php/pdo : Update ne fonctionne pas et ne renvoi pas d'erreur

Résolu
logique Messages postés 100 Statut Membre -  
 honey -
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.
A voir également:

7 réponses

Titoune
 
Bonjour,

Le post a plus de 2 ans, mais j'ai le même problème. Quelle a été votre solution ?
2
logique Messages postés 100 Statut Membre 3
 
Up !
0
anne
 
Le problème vient de ton sql.
update table set champ="machin"
0
logique Messages postés 100 Statut Membre 3
 
j'vais essayer ça
0
logique Messages postés 100 Statut Membre 3
 
toujours pareil, rien ne se passe
0
logique Messages postés 100 Statut Membre 3
 
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 ?
0
logique Messages postés 100 Statut Membre 3
 
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
0
logique Messages postés 100 Statut Membre 3
 
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 ?
0
logique Messages postés 100 Statut Membre 3
 
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
0

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

Posez votre question
logique Messages postés 100 Statut Membre 3
 
up !
0
logique Messages postés 100 Statut Membre 3
 
de l'aide svp !
0
logique Messages postés 100 Statut Membre 3
 
Problème résolu tout seul. Si vous voulez connaitre le pourquoi poster à la suite.
0
honey
 
comment tu l 'a fait j'ai le meme probleme
0