Bonjour,
Voila je rencontre un petit problème avec mon code. C'est une page editer.php ça récupère des données d'une base à partir d'un tableau qui récapitule l'ensemble des entrée.
A partir de là je peux modifier le contenu récupéré et l'enregister de retour(expression Bretonne) dans la base.
Doute sur : unlink ?
Message d'erreur dans le log php de MAMP :
[20-Jun-2017 22:15:19 Europe/Berlin] PHP Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in /Applications/MAMP/htdocs/panier/admin/editer.php on line 71
[20-Jun-2017 22:15:19 Europe/Berlin] PHP Notice: Undefined variable: donnees in /Applications/MAMP/htdocs/panier/admin/editer.php on line 95
[20-Jun-2017 22:15:19 Europe/Berlin] PHP Notice: Undefined variable: donnees in /Applications/MAMP/htdocs/panier/admin/editer.php on line 101
[20-Jun-2017 22:15:19 Europe/Berlin] PHP Notice: Undefined variable: donnees in /Applications/MAMP/htdocs/panier/admin/editer.php on line 105
[20-Jun-2017 22:15:19 Europe/Berlin] PHP Notice: Undefined variable: donnees in /Applications/MAMP/htdocs/panier/admin/editer.php on line 109
[20-Jun-2017 22:15:19 Europe/Berlin] PHP Notice: Undefined variable: donnees in /Applications/MAMP/htdocs/panier/admin/editer.php on line 113
[20-Jun-2017 22:20:45 Europe/Berlin] PHP Notice: Undefined variable: donnees in /Applications/MAMP/htdocs/panier/admin/editer.php on line 95
[20-Jun-2017 22:20:45 Europe/Berlin] PHP Notice: Undefined variable: donnees in /Applications/MAMP/htdocs/panier/admin/editer.php on line 101
[20-Jun-2017 22:20:45 Europe/Berlin] PHP Notice: Undefined variable: donnees in /Applications/MAMP/htdocs/panier/admin/editer.php on line 105
[20-Jun-2017 22:20:45 Europe/Berlin] PHP Notice: Undefined variable: donnees in /Applications/MAMP/htdocs/panier/admin/editer.php on line 109
[20-Jun-2017 22:20:45 Europe/Berlin] PHP Notice: Undefined variable: donnees in /Applications/MAMP/htdocs/panier/admin/editer.php on line 113
L'UPDATE ne fonctionne pas je met le code entien de la page :
<?php require 'inc/header.php'; ?>
<?php require_once 'bdd.php'; ?>
<?php
$upload_Dir = '../img/produits/' ;
if (isset($_GET['id'])) {
$id = $_GET['id'];
$reponse = $bdd->query("SELECT * FROM products WHERE id = ".$id);
$reponse->execute();
if ($reponse->rowcount()) {
$donnees = $reponse->fetch(PDO::FETCH_ASSOC);
}else{
$error = "Impossible de récupérer les données !";
}
}
// selection d'une nouvelle image si l'utilisateur en selectionne une différente
if (isset($_POST['modifier'])) {
$name = $_POST['name'];
$description = $_POST['description'];
$priceJ = $_POST['priceJ'];
$priceA = $_POST['priceA'];
$imgName = $_FILES['image']['name'];
$imgTmp = $_FILES['image']['tmp_name'];
$imgSize = $_FILES['image']['size'];
if (empty($name)) {
$error = 'Renseigner le nom du produit';
}elseif (empty($description)) {
$error = 'mettre une description du produit';
}elseif (empty($priceJ)) {
$error = 'Renseigner un prix enfant';
}elseif (empty($priceA)) {
$error = 'Renseigner un prix Adulte';
}
if (isset($imgName)) {
// récupérer l'extension de l'image
$imgExt = strtolower(pathinfo($imgName, PATHINFO_EXTENSION));
// Extension autorisé
$allowExt = array('jpeg', 'jpg', 'png', 'gif');
// random nouveau nom de l'image
$userPic = time().'_'.rand(1000,9999).'.'.$imgExt;
// vérifier validité de l'image
if (in_array($imgExt, $allowExt)) {
if ($imgSize < 5000000) {
// supprimer l'ancienne image dans le dossier produits
unlink($upload_Dir.$donnees['image']);
move_uploaded_file($imgTmp, $upload_Dir.$userPic);
}else{
$error = 'Image trop lourde';
}
}else{
$error = 'Merci de choisir une photo valide';
}
}else{
// si pas de nouvelle image selectionnée utilisation de l'ancienne
$userPic = $donnees['image'];
}
if (!isset($error)) {
$req = $bdd->prepare("UPDATE products(name,description,priceJ,priceA,image) set name = :$name:, description = :$description, priceJ = :$priceJ, priceA = :$priceA, image = :userPic WHERE id= :id");
$req->execute(array(
"id" => $_GET['id'],
"name" => $name,
"description" => $description,
"priceJ" => $priceJ,
"priceA" => $priceA,
"image" => $userPic
));
if ($req) {
$success = 'Modification de la base de données effectuée';
}else{
$error = 'Error'.$bdd->errorInfo();
}
}
}
?>
<div class="wrapper">
<div class="container">
<div class="row">
<div class="col-lg-3"></div>
<div class="col-lg-6">
<h2>Ajouter un nouveau produit</h2>
<form action="editer.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="size" value="1000000">
<div class="form-group">
<label class="control-label col-lg-12">Téléchargement d'image extensions autorisées (png, jpeg, jpg, gif).</label>
<input type="file" name="image" class="btn-upload">
<div class="vignette">
<img src="<?php echo $upload_Dir.$donnees['image']; ?>" width="100">
</div>
</div>
<div class="form-group">
<label>Nom du produit</label>
<input type="text" name="name" id="name" class="form-control" value="<?php echo $donnees['name']; ?>">
</div>
<div class="form-group">
<label>Description du produit</label>
<textarea name="description" id="description" class="form-control" rows="3"><?php echo $donnees['description']; ?></textarea>
</div>
<div class="form-group">
<label>Prix du produit Junior</label>
<input type="text" name="priceJ" id="priceJ" class="form-control" value="<?php echo $donnees['priceJ']; ?>"><br>
</div>
<div class="form-group">
<label>Prix du produit Adulte</label>
<input type="text" name="priceA" id="priceA" class="form-control" value="<?php echo $donnees['priceA']; ?>"><br>
</div>
<input type="submit" class="btn btn-danger" id="modifier" name="modifier" value="modifier">
</form>
<?php if (isset($error)) { ?>
<div class="alert alert-danger">
<span class="glyphicon glyphicon-info"></span>
<strong><?php echo $error; ?></strong>
</div>
<?php } ?>
<?php if (isset($success)) { ?>
<div class="alert alert-success">
<span class="glyphicon glyphicon-info"></span>
<strong><?php echo $success; ?></strong>
</div>
<?php } ?>
</div>
<div class="col-lg-3"></div>
</div>
</div>
</div>
<?php require'inc/footer.php'; ?>
Merci de votre aide
Oui et comme je dis, si on ne trouve pas de données, on les affiche quand même, ce qui est illogique.
if (isset($_GET['id'])) {
$id = $_GET['id'];
$reponse = $bdd->prepare("SELECT * FROM products WHERE id = ?");
$reponse->execute(array($id));
if ($reponse->rowcount()) {
$donnees = $reponse->fetch(PDO::FETCH_ASSOC);
}else{
$error = "Impossible de récupérer les données !";
}
}
Que l'on est une réponse ou non, le code s'exécute normalement.
D'ailleurs avec une requête préparé serait mieux.
Bonsoir,
Lis bien ceci ....
$req = $bdd->prepare("UPDATE products(name,description,priceJ,priceA,image) set name = :$name:, description = :$description, priceJ = :$priceJ, priceA = :$priceA, image = :userPic WHERE id= :id");
pas mieux log php de MAMP :
[20-Jun-2017 22:32:25 Europe/Berlin] PHP Notice: Undefined variable: donnees in /Applications/MAMP/htdocs/panier/admin/editer.php on line 50
[20-Jun-2017 22:32:25 Europe/Berlin] PHP Warning: unlink(../img/produits/): Operation not permitted in /Applications/MAMP/htdocs/panier/admin/editer.php on line 50
[20-Jun-2017 22:32:25 Europe/Berlin] PHP Notice: Undefined index: id in /Applications/MAMP/htdocs/panier/admin/editer.php on line 67
[20-Jun-2017 22:32:25 Europe/Berlin] PHP Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in /Applications/MAMP/htdocs/panier/admin/editer.php on line 72
[20-Jun-2017 22:32:25 Europe/Berlin] PHP Notice: Undefined variable: donnees in /Applications/MAMP/htdocs/panier/admin/editer.php on line 96
[20-Jun-2017 22:32:25 Europe/Berlin] PHP Notice: Undefined variable: donnees in /Applications/MAMP/htdocs/panier/admin/editer.php on line 102
[20-Jun-2017 22:32:25 Europe/Berlin] PHP Notice: Undefined variable: donnees in /Applications/MAMP/htdocs/panier/admin/editer.php on line 106
[20-Jun-2017 22:32:25 Europe/Berlin] PHP Notice: Undefined variable: donnees in /Applications/MAMP/htdocs/panier/admin/editer.php on line 110
[20-Jun-2017 22:32:25 Europe/Berlin] PHP Notice: Undefined variable: donnees in /Applications/MAMP/htdocs/panier/admin/editer.php on line 114
Alors en lisant l'erreur, il dit qu'il ne connais pas "$donnees" .... donc il faudrait déjà mettre un die(); juste en dessous du premier $error ....
Salut, ta requête est complétement erronnée:
voilà la façon de procéder
UPDATE table
SET colonne_1 = 'valeur 1', colonne_2 = 'valeur 2', colonne_3 = 'valeur 3'
WHERE condition
$req = $bdd->prepare("UPDATE products SET name = :name, description = :description, priceJ = :priceJ, priceA = :priceA, image = :userPic WHERE id= :id");
hum ligne 50 il arrive pas à trouvé la variable données pour l'explication, aprés pourquoi je ne saurais te dire j'ai pas tout lu
Je pense que le problème viens du faites que même si tu ne récupéres pas de données au début, tu fais quand même leur affichage.
c'est cette ligne :
// supprimer l'ancienne image dans le dossier produits
unlink($upload_Dir.$donnees['image']);
Ce n'est pas ce que disent les erreurs :
[20-Jun-2017 22:32:25 Europe/Berlin] PHP Notice: Undefined variable: donnees in /Applications/MAMP/htdocs/panier/admin/editer.php on line 96
[20-Jun-2017 22:32:25 Europe/Berlin] PHP Notice: Undefined variable: donnees in /Applications/MAMP/htdocs/panier/admin/editer.php on line 102
[20-Jun-2017 22:32:25 Europe/Berlin] PHP Notice: Undefined variable: donnees in /Applications/MAMP/htdocs/panier/admin/editer.php on line 106
[20-Jun-2017 22:32:25 Europe/Berlin] PHP Notice: Undefined variable: donnees in /Applications/MAMP/htdocs/panier/admin/editer.php on line 110
[20-Jun-2017 22:32:25 Europe/Berlin] PHP Notice: Undefined variable: donnees in /Applications/MAMP/htdocs/panier/admin/editer.php on line 114
en faite ce que je veux faire :
j'ai un tableau qui récupére tous les produits de ma base, puis avec un bouton editer je récupére le produit en fonction de son ID, et pour finir modifier et faire un update.
Peut être qu'on peut faire plus simple que le code que j'ai