Php/pdo : Update ne fonctionne pas et ne renvoi pas d'erreur
Résolu
logique
Messages postés
100
Statut
Membre
-
honey -
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.
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.
7 réponses
-
-
-
-
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 ?
-
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 -
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 ? -
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
-
-
Problème résolu tout seul. Si vous voulez connaitre le pourquoi poster à la suite.