Mettre a jour base de donnée php par formulaire

Résolu/Fermé
miichel999 Messages postés 20 Date d'inscription mercredi 18 mai 2016 Statut Membre Dernière intervention 23 mai 2016 - 18 mai 2016 à 14:01
miichel999 Messages postés 20 Date d'inscription mercredi 18 mai 2016 Statut Membre Dernière intervention 23 mai 2016 - 18 mai 2016 à 23:01
Salut,
je suis débutant en language php, je veut mettre a jour une base de donneés par un formulaire, je met le ce code mais ne marche pas .
Merci d'avance si vous trouvez la solution!

base de donnée:
CREATE TABLE IF NOT EXISTS `produits` (
`id` int(30) NOT NULL AUTO_INCREMENT,
`Nom_de_produit` varchar(50) NOT NULL,
`img` blob NOT NULL,
`description` text NOT NULL,
`prix` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=17 ;


interface_modification.php :

<?php

$bdd = new PDO('mysql:host=localhost;dbname=base_phoenixkids;charset=utf8', 'root', '');


$reponse = $bdd->query('SELECT * FROM produits ORDER BY id ');



while ($produits = $reponse->fetch())
{
?>
<table>
<th><?php echo $produits['Nom_de_produit']; ?></th>
<th><?php echo $produits['prix']; ?></th>
<th><?php echo $produits['description']; ?></th>
<th><img width="200px" height="200px" src="<?php echo $produits['img'];?>"/></th>
<th><a href="modification2.php?id='<?php echo $produits['id'];?>'">Modifier</a></th>
</table>
<?php
}
?>

modification2.php :
<?php

$bdd = new PDO('mysql:host=localhost;dbname=base_phoenixkids;charset=utf8', 'root', '');

$req = $bdd->prepare('SELECT * FROM produits WHERE id='.$_GET['id'] );
$req->execute();
while ($produits = $req->fetch())
{
?>
<form name="modification" action="modification3.php" method="post">
<input type="hidden" name="id" value="<?php echo($_GET['id']) ;?>">
<table border="0" align="center" cellspacing="2" cellpadding="2">
<tr align="center">
<td>Nom de produit</td>
<td><input type="text" name="Nom_de_produit" value="<?php echo($produits['Nom_de_produit']) ;?>"></td>
</tr>
<tr align="center">
<td>prix</td>
<td><input type="text" name="prix" value="<?php echo($produits['prix']) ;?>"></td>
</tr>
<tr align="center">
<td>Description</td>
<td><input type="text" name="description" value="<?php echo($produits['description']) ;?>"></td>
</tr>
<tr align="center">
<td>Image</td>
<td><input type="file" name="img" value="<?php echo($produits['img']) ;?>"></td>
</tr>
<tr align="center">
<td colspan="2"><input type="submit" value="modifier" name="modifier"></td>
</tr>
</table>
</form>

<?php
}
?>

modification3.php:

<?php
$bdd = new PDO('mysql:host=localhost;dbname=base_phoenixkids;charset=utf8', 'root', '');

if(isset($_POST['modifier'])) {
if (isset($_POST['Nom_de_produit']) AND isset($_POST['prix']) AND isset($_POST['description']) AND isset($_POST['img'] ))
{
extract($_POST);
if (!empty($Nom_de_produit) && !empty($prix) && !empty($description) && !empty($img))
{
$req = $bdd->prepare('UPDATE produits
SET Nom_de_produit = :np ,
prix = :p,
description = :d,
img = :im
WHERE id = :i ');

$req->execute(array(
'np' => $Nom_de_produit,
'p' => $prix,
'd' => $description,
'im' => $img,
'i' => $id ));


echo 'Le produit a bien été modifier !';}
ELSE {
echo "veuiller entrer tous les information de produit";
}

}}


?>
A voir également:

2 réponses

Exileur Messages postés 1475 Date d'inscription mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022 150
Modifié par Exileur le 18/05/2016 à 15:40
Autant pour moi, j'avais oublier à quel point PDO était logique.

Le truc c'est que tu fais un echo aprés ta requéte, mais tu ne sais pas si elle c'est executer.

Essaye :

$req = $bdd->prepare('UPDATE produits
SET Nom_de_produit = :np,
prix = :p,
description = :d,
img = :im
WHERE id = :i ');


$req->bindParam(":np", $Nom_de_produit);
$req->bindParam(":p", $prix);
$req->bindParam(":d", $description);
$req->bindParam(":im", $img);
$req->bindParam(":i", $id);

if($req->execute())
{
echo 'Le produit a bien été modifier !';
}
else
{
echo 'une erreur est survenue';
}

N'oubliez pas de marquez votre post comme résolut lorsque vous avez eu les réponses à vos questions...
Au royaume des aveugles, les borgnes sont rois.
0
miichel999 Messages postés 20 Date d'inscription mercredi 18 mai 2016 Statut Membre Dernière intervention 23 mai 2016 2
18 mai 2016 à 15:47
j'ai essayé ce code
reste le méme probleme
ça m'affiche 'Le produit a bien été modifier !'
mais la base de donnee reste la méme
0
Exileur Messages postés 1475 Date d'inscription mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022 150
18 mai 2016 à 16:12
Esseyons autre chose alors. Avec gestion des erreurs pour en savoir plus.

Remplace tout ce qu'il y a dans ton

if (!empty($Nom_de_produit) && !empty($prix) && !empty($description) && !empty($img))


par :

$sql = "UPDATE produits SET Nom_de_produit = :np, prix = :p, description = :d, img = :im WHERE id = :i";
$req = $pdo->prepare($sql);

$req->bindParam(":np", $Nom_de_produit);
$req->bindParam(":p", $prix);
$req->bindParam(":d", $description);
$req->bindParam(":im", $img);
$req->bindParam(":i", $id);

try
{
$result = $req->execute();
}

catch(PDOException $e)
{
echo $e->getCode() . " - " . $e->getMessage();
}
0
miichel999 Messages postés 20 Date d'inscription mercredi 18 mai 2016 Statut Membre Dernière intervention 23 mai 2016 2 > Exileur Messages postés 1475 Date d'inscription mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022
18 mai 2016 à 16:32
erreur

( ! ) Notice: Undefined variable: pdo in C:\wamp\www\phoenixkids1\modification3.php on line 11

( ! ) Fatal error: Call to a member function prepare() on a non-object in C:\wamp\www\phoenixkids1\modification3.php on line 11

la ligne 11 est : $req = $pdo->prepare($sql);
0
Exileur Messages postés 1475 Date d'inscription mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022 150
18 mai 2016 à 17:06
Ups, my bad.
Remplace $pdo par $bdd vu que c'est dans cette variable que tu as défini la connexion.
0
miichel999 Messages postés 20 Date d'inscription mercredi 18 mai 2016 Statut Membre Dernière intervention 23 mai 2016 2 > Exileur Messages postés 1475 Date d'inscription mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022
18 mai 2016 à 17:14
j'ai remplacer
pas de message d'erreur
et pas de changement dans la base
0
Exileur Messages postés 1475 Date d'inscription mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022 150
18 mai 2016 à 14:06
Salut,
Sa serait bien d'indiquer le probléme que tu rencontres non ?

Déja, aprés avoir survoler le code (pas trés organisé), tu peux déjà modifier :
while ($produits = $reponse->fetch())

par :
while ($produits == $reponse->fetch())

-1
miichel999 Messages postés 20 Date d'inscription mercredi 18 mai 2016 Statut Membre Dernière intervention 23 mai 2016 2
Modifié par miichel999 le 18/05/2016 à 15:33
le probléme est :
aprés modification de formulaire et valider
ça m'affiche 'Le produit a bien été modifier !'
mais la base de donnee reste la méme
0