Modifier une annonce avec la fonction UPDATE
Résolu
max30_3775
Messages postés
178
Date d'inscription
Statut
Membre
Dernière intervention
-
max30_3775 Messages postés 178 Date d'inscription Statut Membre Dernière intervention -
max30_3775 Messages postés 178 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Bonjour, je sollicite votre aide pour essayer de modifier une annonce donnée. mes tables étant liées de la façon suivante:

Le problème c'est qu'en cliquant 'modifier' sur n'importe quelle annonce, je n'arrive pas à récupérer l'id de l'annonce qui a été cliquée, les values dans le formulaires sont donc vides. De plus, l'url n'affiche pas l'id de l'annonce lorsque le bouton modifier est cliqué.
Encore pour les images le Update est ambigu, j'ai l'erreur suivante: Undefined Variable id_annonce.
Est-ce que l'erreur est dans la façon dont j'ai écrit le code?
Bonjour, je sollicite votre aide pour essayer de modifier une annonce donnée. mes tables étant liées de la façon suivante:

Le problème c'est qu'en cliquant 'modifier' sur n'importe quelle annonce, je n'arrive pas à récupérer l'id de l'annonce qui a été cliquée, les values dans le formulaires sont donc vides. De plus, l'url n'affiche pas l'id de l'annonce lorsque le bouton modifier est cliqué.
Encore pour les images le Update est ambigu, j'ai l'erreur suivante: Undefined Variable id_annonce.
Est-ce que l'erreur est dans la façon dont j'ai écrit le code?
if(isset($_SESSION['id'])) { $id_membre= $_SESSION['id']; //requête pour l'annonce $idannonce= !empty($_GET['id']); //id de la table annonce $reqannonce = $bdd->prepare(" SELECT * FROM annonces WHERE id= ?"); $reqannonce->execute(array($idannonce)); $annonceinfo = $reqannonce->fetch(); $idannonce = $annonceinfo['id'] ; var_dump($annonceinfo); var_dump($idannonce); //requête pour les images $reqimage = $bdd->prepare(" SELECT * FROM images_annonces WHERE id_annonce= ?"); $reqimage->execute(array($idannonce)); $imageinfo = $reqannonce->fetch(PDO::FETCH_GROUP); //Annonce if(!empty($_POST['newcategorie']) AND !empty($_POST['newvilles']) AND !empty($_POST['newtitre']) AND !empty($_POST['newdescription']) AND !empty($_POST['newprix'])){ $newcategorie = trim($_POST['newcategorie']); $newville = trim($_POST['newvilles']); $newtitre=trim($_POST['newtitre']); $newdescription=trim($_POST['newdescription']); $newprix=intval($_POST['newprix']); $update = $bdd->prepare("UPDATE annonces SET id_categorie = :id_categorie, id_ville = :id_ville, titre = :titre, description = :description WHERE id = :id"); $update->execute(array( ':id_categorie' => $newcategorie, ':id_ville' => $newville, ':titre' => $newtitre, ':description' => $newdescription, ':prix' => $newprix, ':id' => $id)); header('Location: profilannonce.php?id='.$id_membre.''); } //Les images if(!empty($_FILES['newimg1']) AND !empty($_FILES['newimg2']) AND !empty($_FILES['newimg3']) AND !empty($_FILES['newimg4']) AND !empty($_FILES['newimg5'])){ $location= "pictures/"; $newimg1 = ($_FILES['newimg1']); $newimg2 = ($_FILES['newimg2']); $newimg3=($_FILES['newimg3']); $newimg4=($_FILES['newimg4']); $newimg5=($_FILES['newimg5']); $update = $bdd->prepare("UPDATE images_annonces SET filepath = :location WHERE id_annonce = :id_annonce"); $update->execute(array( ':id_annonce' => $id_annonce, //$id_annonce de la table image_annonces liée à annonce. //On voit bien que $idannonceest différent de $id_annonce ':filepath' => $location)); header('Location: profilannonce.php?id='.$id_membre.''); }
Configuration: Windows / Chrome 97.0.4692.71
A voir également:
- Modifier une annonce avec la fonction UPDATE
- Modifier dns - Guide
- Fonction si et - Guide
- Modifier liste déroulante excel - Guide
- Modifier une story facebook - Guide
- Windows update bloqué - Guide
30 réponses
Bonjour
Relis ton code... Tu verras que tu as utilisé un underscore pour certaines variables et pour d'autres non..
Relis ton code... Tu verras que tu as utilisé un underscore pour certaines variables et pour d'autres non..
Bonjour Jordane,
J'ai relu mon code, et corrigé les erreurs des underscore, mais pour les vardump j'ai toutjours des retours false et null: ça ne get pas l'id de l'annonce.
J'ai relu mon code, et corrigé les erreurs des underscore, mais pour les vardump j'ai toutjours des retours false et null: ça ne get pas l'id de l'annonce.
f(isset($_SESSION['id'])) { $id_membre= $_SESSION['id']; $idannonce= isset($_GET['id']);var_dump($idannonce); $reqannonce = $bdd->prepare(" SELECT * FROM annonces WHERE id= ?"); $reqannonce->execute(array($idannonce)); $annonceinfo = $reqannonce->fetch(); $idannonce = $annonceinfo['id'] ; var_dump($annonceinfo); var_dump($idannonce); $reqimage = $bdd->prepare(" SELECT * FROM images_annonces WHERE id_annonce= ?"); $reqimage->execute(array($idannonce)); $imageinfo = $reqannonce->fetch(PDO::FETCH_GROUP); //Annonce if(!empty($_POST['newcategorie']) AND !empty($_POST['newvilles']) AND !empty($_POST['newtitre']) AND !empty($_POST['newdescription']) AND !empty($_POST['newprix'])){ $newcategorie = trim($_POST['newcategorie']); $newville = trim($_POST['newvilles']); $newtitre=trim($_POST['newtitre']); $newdescription=trim($_POST['newdescription']); $newprix=intval($_POST['newprix']); $update = $bdd->prepare("UPDATE annonces SET id_categorie = :id_categorie, id_ville = :id_ville, titre = :titre, description = :description WHERE id = :idannonce"); $update->execute(array( ':id_categorie' => $newcategorie, ':id_ville' => $newville, ':titre' => $newtitre, ':description' => $newdescription, ':prix' => $newprix, ':id' => $idannonce)); header('Location: profilannonce.php?id='.$id_membre.''); } //Les images if(!empty($_FILES['newimg1']) AND !empty($_FILES['newimg2']) AND !empty($_FILES['newimg3']) AND !empty($_FILES['newimg4']) AND !empty($_FILES['newimg5'])){ $location= "pictures/"; $newimg1 = ($_FILES['newimg1']); $newimg2 = ($_FILES['newimg2']); $newimg3=($_FILES['newimg3']); $newimg4=($_FILES['newimg4']); $newimg5=($_FILES['newimg5']); $update = $bdd->prepare("UPDATE images_annonces SET filepath = :location WHERE id_annonce = :idannonce"); $update->execute(array( ':id_annonce' => $idannonce, ':filepath' => $location)); header('Location: profilannonce.php?id='.$id_membre.''); }
Tu utilises le $_GET .. donc tu as passé ta variable dans l'URL ...
Qu'as tu comme URL lorsque tu essais de mettre à jour ton annonce ? Es-tu sûr que ton id s'y trouve ?
En plus tu as oublié une partie du code sur la ligne ..
La.. tu ne fais que vérifier si la variable existe .. mais tu n'en récupères pas le contenu...
A corriger par
Qu'as tu comme URL lorsque tu essais de mettre à jour ton annonce ? Es-tu sûr que ton id s'y trouve ?
En plus tu as oublié une partie du code sur la ligne ..
$idannonce= isset($_GET['id']);
La.. tu ne fais que vérifier si la variable existe .. mais tu n'en récupères pas le contenu...
A corriger par
<?php //Démarrage des sessions session_start(); //Affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); if(isset($_SESSION['id'])) { $id_membre= $_SESSION['id']; $idannonce = !empty($_GET['id']) ? $_GET['id'] : NULL; if(! $idannonce ){ echo " ID MANQUANT ! " ; exit:; } $reqannonce = $bdd->prepare(" SELECT * FROM annonces WHERE id= ?"); $reqannonce->execute(array($idannonce)); $annonceinfo = $reqannonce->fetch(); //$idannonce = $annonceinfo['id'] ; // .. INUTILE .. Vu que tu connais l'id .. c'est celui que tu lui passes dans l'url .. var_dump($annonceinfo); var_dump($idannonce);
L'url qui s'affiche toujours est celui-ci: http://projetsite/editerannonce.php. Pas d'id dedans.
Même en essayant ton code, c'est ID MANQUANT qui s'affiche avec le même url.
Même en essayant ton code, c'est ID MANQUANT qui s'affiche avec le même url.
Tu as raison, il fallait préciser dans l'autre page l'id.
Maintenant que je je l'ai fait, l'url s'affiche avec l'id: http://projetsite/editerannonce.php?id=
Mais sans le numérode l'annonce. Nous tombons toujours sur la page: ' id manquant'
$id= $anounce['id']; echo "<p class='modifier'><a href='editerannonce.php?id='.$id.'> Modifier </a></p>";
Maintenant que je je l'ai fait, l'url s'affiche avec l'id: http://projetsite/editerannonce.php?id=
Mais sans le numérode l'annonce. Nous tombons toujours sur la page: ' id manquant'
Si l'url apparait SANS le numéro d'annonce... c'est normal que sur la page d'après tu aies le message id manquant...... cqfd !
Donc, là où tu génères ton lien .. ta variable $id est vide ...
Comme on ne sait rien du code de cette page .. ni d'où vient ta variable $anounce .. impossible de te dire où se situe l'erreur...
Donc, là où tu génères ton lien .. ta variable $id est vide ...
Comme on ne sait rien du code de cette page .. ni d'où vient ta variable $anounce .. impossible de te dire où se situe l'erreur...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Le code de la page
profilannonce.php. Il s'agit des annonces que le membre a publié et qui permet de cliquer sur modifier :
La page editerannonce.php, avec le formulaire à modifier:
profilannonce.php. Il s'agit des annonces que le membre a publié et qui permet de cliquer sur modifier :
<?php $session = intval($_SESSION['id']); //On récupère le nombre d'enregistrements $count= "SELECT COUNT(id) AS cpt FROM annonces WHERE id_membre= $session"; $stmt= $bdd->prepare($count); $stmt->execute(); $tstmt=$stmt->fetchAll(); //Pagination $page = (!empty($_GET["page"]) )? intval($_GET["page"]) : 1; $nbr_elements_par_page=3; $nbre_de_pages=ceil($tstmt[0]["cpt"]/$nbr_elements_par_page); $debut=($page-1)*$nbr_elements_par_page; $anouncement= afficherAnnonce(); foreach ($anouncement as $anounce) { $id= $anounce['id']; $images = !empty($anounce['images']) ? $anounce['images'] : ['/no_image.png']; // array if (!empty($images)) { //boucle sur les images echo'<div class="container">'; echo ' <div class="slider" >'; foreach ($images as $img) { echo '<img class ="active" style="width:240px; height:170px;" src="' . $img . '">'; } echo "</div>"; // fin div slider . } echo '<div class= "informations">'; echo '<a class="maquette" href="single.php?id='.$id.'" > '; echo "<p class='title'>" . $anounce['titre'] . "</p>"; echo "<p class='category'>" . $anounce['CATEGORIE'] . "</p>"; echo "<p class='price'>" . $anounce['prix'] . "</p>"; echo "<p class='date'>" . $anounce['created_date'] . "</p>"; echo "<p class='city'> <i class='fa fa-map-marker' style='font-size:15px'></i>" . $anounce['VILLE'] . "</p>"; echo'</a>'; echo "<p class='modifier'><a href='editerannonce.php?id='.$id.'> Modifier </a></p>"; echo "<p class='modifier'> Supprimer</p>"; echo"</div>"; //fin div informations echo "</div>"; // fin div container } echo"<div class='pagination'>"; for($i=1;$i<=$nbre_de_pages;$i++){ echo "<a class='paginationlien' href='?page=$i'>$i</a>" ; } echo"</div>"; //fin div pagination ?>
La page editerannonce.php, avec le formulaire à modifier:
<?php session_start(); include "cnx.php"; include 'langues/fb.php'; include "commandes.php"; if(isset($_SESSION['id'])) { $id_membre= $_SESSION['id']; $idannonce = !empty($_GET['id']) ? $_GET['id'] : NULL; if(! $idannonce ){ echo " ID MANQUANT ! " ; exit; } $reqannonce = $bdd->prepare(" SELECT * FROM annonces WHERE id= ?"); $reqannonce->execute(array($idannonce)); $annonceinfo = $reqannonce->fetch(); //$idannonce = $annonceinfo['id'] ; // .. INUTILE .. Vu que tu connais l'id .. c'est celui que tu lui passes dans l'url .. var_dump($annonceinfo); var_dump($idannonce); $reqimage = $bdd->prepare(" SELECT * FROM images_annonces WHERE id_annonce= ?"); $reqimage->execute(array($idannonce)); $imageinfo = $reqannonce->fetch(PDO::FETCH_GROUP); //Annonce if(!empty($_POST['newcategorie']) AND !empty($_POST['newvilles']) AND !empty($_POST['newtitre']) AND !empty($_POST['newdescription']) AND !empty($_POST['newprix'])){ $newcategorie = trim($_POST['newcategorie']); $newville = trim($_POST['newvilles']); $newtitre=trim($_POST['newtitre']); $newdescription=trim($_POST['newdescription']); $newprix=intval($_POST['newprix']); $update = $bdd->prepare("UPDATE annonces SET id_categorie = :id_categorie, id_ville = :id_ville, titre = :titre, description = :description WHERE id = :idannonce"); $update->execute(array( ':id_categorie' => $newcategorie, ':id_ville' => $newville, ':titre' => $newtitre, ':description' => $newdescription, ':prix' => $newprix, ':id' => $idannonce)); header('Location: profilannonce.php?id='.$id_membre.''); } //Les images if(!empty($_FILES['newimg1']) AND !empty($_FILES['newimg2']) AND !empty($_FILES['newimg3']) AND !empty($_FILES['newimg4']) AND !empty($_FILES['newimg5'])){ $location= "pictures/"; $newimg1 = ($_FILES['newimg1']); $newimg2 = ($_FILES['newimg2']); $newimg3=($_FILES['newimg3']); $newimg4=($_FILES['newimg4']); $newimg5=($_FILES['newimg5']); $update = $bdd->prepare("UPDATE images_annonces SET filepath = :location WHERE id_annonce = :idannonce"); $update->execute(array( ':id_annonce' => $idannonce, ':filepath' => $location)); header('Location: profilannonce.php?id='.$id_membre.''); } $villesm= getVilles(); ?> <html> <head> <meta charset="utf-8"> </head> <body> <div class= "pub"> <form action="" method="POST" enctype="multipart/form-data" id="search-form"> <div align= "center" class="container height-400 d-flex justify-content-center align-items-center"> <div class="card text-center"> <div class="py-4 p-2"> <div class="mt-3 d-flex flex-row justify-content-center"> <h5 style="font-size: 20px;"><?php echo $lang['dva'];?></h5> <span> <label for= "pseudo"><?php echo $_SESSION['pseudo'];?></label> </span> <br> <br> <br> <span> <label for="categorieannonce"><?php echo $lang['ca'];?></label></span> <br> <select name="newcategorie"> <option value="" disabled selected><?php echo $lang['categorie'];?></option> <?php // 1- on récupère les catégories principales $categories = getCategories( 0 ); foreach($categories as $C) { // 2- on récupère les sous-catégories de CETTE catégorie $sous_categories = getCategories( $C['id'] ); // (sous-)catégories dont l'id_parent est $C['id'] if( empty($sous_categories) ) { echo " <option value='".$C['id']."'>".$C['nom']."</option>"."\n"; } else { echo " <optgroup label ='".$C['nom']."'> "."\n"; // 3 - affichage des sous-catégories foreach($sous_categories as $SC) { echo " <option value='".$SC['id']."'>".$SC['nom']."</option>"."\n"; } echo " </optgroup>"; } } ?> </select> <br> <br> <span><label for="villes"><?php echo $lang['ville'];?></label></span> <br> <select name="newvilles"> <?php foreach($villesm as $v){ echo "<option value='".$v['id']."'>".$v['ville']."</option>"; } ?> </select> <br> <br> <span> <label for= "titre"><?php echo $lang['tva'];?></label></span><br> <input type="text" id="titre" name="newtitre" value="<?php echo $annonceinfo['titre']; ?>"> <button type="button" class="microform"><i class="fas fa-microphone"></i></button> <br> <br> <span><label for= "description"><?php echo $lang['description'];?></label></span> <br> <textarea id="description" name="newdescription" value="<?php echo $annonceinfo['description']; ?>" rows="4" cols="50"> </textarea> <br> <br> <br> <br> <span> <label for= "prix"><?php echo $lang['prix'];?></label></span> <br> <input type="number" id="prix" name="newprix" value="<?php echo $annonceinfo['prix']; ?>"> <br> <br> <span> <label for= "telephone"><?php echo $_SESSION['telephone'];?></label></span><br><br> <span><label for= "email"><?php echo $_SESSION['email'];?> </label> </span><br><br> <span> <label for= "image"><?php echo $lang['photo1'];?></label></span> <input type="file" id="img1" name="newimg1" accept="image/png, image/jpeg, image/jpg" > <br><br> <span><label for= "image"><?php echo $lang['photo2'];?></label> </span> <input type="file" id="img2" name="newimg2" accept="image/png, image/jpeg, image/jpg"><br><br> <span><label for= "image"><?php echo $lang['photo3'];?></label></span> <input type="file" id="img3" name="newimg3" accept="image/png, image/jpeg, image/jpg"> <br><br> <span> <label for= "image"><?php echo $lang['photo4'];?></label></span> <input type="file" id="img4" name="newimg4" accept="image/png, image/jpeg, image/jpg"> <br><br> <span><label for= "image"><?php echo $lang['photo5'];?></label></span> <input type="file" id="img5" name="newimg5" accept="image/png, image/jpeg, image/jpg"> <br><br> <br> <br> <input type="submit" id='submit' value='Mettre à jour' /> <br><br> </form> </ul> </div> </div> </div> <?php } ?>
C'était bien ça, l'id s'affiche dans l'url et donc le vardump affiche bien les colonnes de la table annonces, mais des erreurs s'affichent pour les images. Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in .
J'ai modifié le code:
Il s'agit de cette ligne:
J'ai modifié le code:
if(isset($_SESSION['id'])) { $id_membre= $_SESSION['id']; $idannonce = !empty($_GET['id']) ? $_GET['id'] : NULL; if(! $idannonce ){ echo " ID MANQUANT ! " ; exit; } $reqannonce = $bdd->prepare(" SELECT * FROM annonces WHERE id= ?"); $reqannonce->execute(array($idannonce)); $annonceinfo = $reqannonce->fetch(); //$idannonce = $annonceinfo['id'] ; // .. INUTILE .. Vu que tu connais l'id .. c'est celui que tu lui passes dans l'url .. var_dump($annonceinfo); var_dump($idannonce); $reqimage = $bdd->prepare(" SELECT * FROM images_annonces WHERE id_annonce= ?"); $reqimage->execute(array($idannonce)); $imageinfo = $reqannonce->fetch(PDO::FETCH_GROUP); //Annonce if(!empty($_POST['newcategorie']) AND !empty($_POST['newvilles']) AND !empty($_POST['newtitre']) AND !empty($_POST['newdescription']) AND !empty($_POST['newprix'])){ $newcategorie = trim($_POST['newcategorie']); $newville = trim($_POST['newvilles']); $newtitre=trim($_POST['newtitre']); $newdescription=trim($_POST['newdescription']); $newprix=intval($_POST['newprix']); $update = $bdd->prepare("UPDATE annonces SET id_categorie = :newcategorie, id_ville = :newville, titre = :titre, description = :newdescription, prix=:newprix WHERE id = :idannonce"); $update->execute(array( ':id_categorie' => $newcategorie, ':id_ville' => $newville, ':titre' => $newtitre, ':description' => $newdescription, ':prix' => $newprix, ':idannonce'=> $idannonce)); header('Location: profilannonce.php?id='.$id_membre.''); } //Les images if(!empty($_FILES['newimg1']) AND !empty($_FILES['newimg2']) AND !empty($_FILES['newimg3']) AND !empty($_FILES['newimg4']) AND !empty($_FILES['newimg5'])){ $location= "pictures/"; $newimg1 = ($_FILES['newimg1']); $newimg2 = ($_FILES['newimg2']); $newimg3=($_FILES['newimg3']); $newimg4=($_FILES['newimg4']); $newimg5=($_FILES['newimg5']); $update = $bdd->prepare("UPDATE images_annonces SET filepath = :location WHERE id_annonce = :idannonce"); $update->execute(array( ':id_annonce' => $idannonce, ':filepath' => $location)); header('Location: profilannonce.php?id='.$id_membre.''); }
Il s'agit de cette ligne:
':filepath' => $location));
Là, je l'ai fait:
Et j'ai la même erreur pour les annonces
Et Pourtant c'est $id annonce.
//Les images $newimg5=($_FILES['newimg5']); $update = $bdd->prepare("UPDATE images_annonces SET filepath = :location WHERE id_annonce = :idannonce"); $update->execute(array( ':id_annonce' => $idannonce, ':location' => $location)); header('Location: profilannonce.php?id='.$id_membre.''); }
Et j'ai la même erreur pour les annonces
':idannonce'=> $idannonce));
Et Pourtant c'est $id annonce.
Ok, ça été corrigé pour les annonces et les images. L'erreur est la même seulement pour les images à la ligne:
Il fallait dans les 2 requêtes que je fasse WHERE id= $idannonce, au lieu de id=?
':filepath' => $location));
Il fallait dans les 2 requêtes que je fasse WHERE id= $idannonce, au lieu de id=?
if(isset($_SESSION['id'])) { $id_membre= $_SESSION['id']; $idannonce = !empty($_GET['id']) ? $_GET['id'] : NULL; $reqannonce = $bdd->prepare(" SELECT * FROM annonces WHERE id= $idannonce"); $reqannonce->execute(array($idannonce)); $annonceinfo = $reqannonce->fetch(); var_dump($annonceinfo); var_dump($idannonce); $reqimage = $bdd->prepare(" SELECT * FROM images_annonces WHERE id_annonce= $idannonce"); $reqimage->execute(array($idannonce)); $imageinfo = $reqannonce->fetch(PDO::FETCH_GROUP);
La requête pour les images est celle là:
Et pour la modifié c'est:
Je ne vois pas ce que tu veux dire. Peux-tu être plus précis?
$reqimage = $bdd->prepare(" SELECT * FROM images_annonces WHERE id_annonce= $idannonce"); $reqimage->execute(array($idannonce)); $imageinfo = $reqannonce->fetch(PDO::FETCH_GROUP);
Et pour la modifié c'est:
if(!empty($_FILES['newimg1']) AND !empty($_FILES['newimg2']) AND !empty($_FILES['newimg3']) AND !empty($_FILES['newimg4']) AND !empty($_FILES['newimg5'])){ $location= "pictures/"; $newimg1 = ($_FILES['newimg1']); $newimg2 = ($_FILES['newimg2']); $newimg3=($_FILES['newimg3']); $newimg4=($_FILES['newimg4']); $newimg5=($_FILES['newimg5']); $update = $bdd->prepare("UPDATE images_annonces SET filepath = :location WHERE id_annonce = :idannonce"); $update->execute(array( ':id_annonce' => $idannonce, ':location' => $location)); header('Location: profilannonce.php?id='.$id_membre.''); }
Je ne vois pas ce que tu veux dire. Peux-tu être plus précis?
bonjour,
si j'étais toi, je repartirais du #13, et répondrais à la question posée.
Tu as choisi de ne pas tenir compte du #13, et, en #14, de partir sur autre chose, qui ne marchait pas mieux.
Tu veux progresser avec nous, ou tu veux que nous te regardions courir dans tous les sens?
Pourquoi poser des questions et ignorer les réponses?
si j'étais toi, je repartirais du #13, et répondrais à la question posée.
Tu as choisi de ne pas tenir compte du #13, et, en #14, de partir sur autre chose, qui ne marchait pas mieux.
Tu veux progresser avec nous, ou tu veux que nous te regardions courir dans tous les sens?
Pourquoi poser des questions et ignorer les réponses?
Si tu passes des variable PHP dans la méthode exécute du pdo.... Il faut que dans ta requête tu aies soit un point d'interrogation soit une variable nommée.
Ceci est faux
Ceci est correct
Ceci est également correct
Ceci est faux
$reqimage = $bdd->prepare(" SELECT * FROM images_annonces WHERE id_annonce= $idannonce"); $reqimage->execute(array($idannonce));
Ceci est correct
$reqimage = $bdd->prepare(" SELECT * FROM images_annonces WHERE id_annonce= ?"); $reqimage->execute(array($idannonce));
Ceci est également correct
$reqimage = $bdd->prepare(" SELECT * FROM images_annonces WHERE id_annonce= :toto"); // :toto est une variable nommée $reqimage->execute(array(':toto'=>$idannonce)); // dans le exécute on associe la variable nommée avec la valeur qu'elle doit prendre.
Ok, j'ai compris, et j'ai changé ça dans les 2 requêtes. Mais pour le vardump, ça me retourne empty pour cette requête:
Et l'erreur mentionnée précedemment est la même, lorsque le formulaire est soumis
$reqimage = $bdd->prepare(" SELECT * FROM images_annonces WHERE id_annonce= ?"); $reqimage->execute(array($idannonce)); $imageinfo = $reqannonce->fetchAll(); var_dump($imageinfo);
Et l'erreur mentionnée précedemment est la même, lorsque le formulaire est soumis
L'erreur ne se situe pas sur cette requête.. mais sur ce bout de code là
//Les images $newimg5=($_FILES['newimg5']); $update = $bdd->prepare("UPDATE images_annonces SET filepath = :location WHERE id_annonce = :idannonce"); $update->execute(array( ':id_annonce' => $idannonce, ':location' => $location)); header('Location: profilannonce.php?id='.$id_membre.''); }
J'ai essayé ça en ajoutant les variables newimg dans un tableau, et pas de résultat:
//Les images if(!empty($_FILES['newimg1']) AND !empty($_FILES['newimg2']) AND !empty($_FILES['newimg3']) AND !empty($_FILES['newimg4']) AND !empty($_FILES['newimg5'])){ $location= "pictures/"; $newimg1 = ($_FILES['newimg1']); $newimg2 = ($_FILES['newimg2']); $newimg3=($_FILES['newimg3']); $newimg4=($_FILES['newimg4']); $newimg5=($_FILES['newimg5']); $update = $bdd->prepare("UPDATE images_annonces SET filepath = ? WHERE id_annonce = ?"); $update->execute(array(array($newimg1, $newimg2, $newimg3, $newimg4, $newimg5), $idannonce)); header('Location: profilannonce.php?id='.$id_membre.''); }
Là j'ai modifié, mais toutes les images disparaissent lorsqu'on clique sur modifier:
//Les images if(isset($_FILES['newimg1']['name']) AND isset($_FILES['newimg2']['name']) AND isset($_FILES['newimg3']['name']) AND isset($_FILES['newimg4']['name']) AND isset($_FILES['newimg5']['name'])){ $location= "pictures/"; $size1=$_FILES['newimg1']['size']; $temp1=$_Files['newimg1']['tmp_name']; $type1=$_Files['newimg1']['type']; $newimg1 = ($_FILES['newimg1']['name']); $size2=$_FILES['newimg2']['size']; $temp2=$_Files['newimg2']['tmp_name']; $type2=$_Files['newimg2']['type']; $newimg2 = ($_FILES['newimg2']['name']); $size3=$_FILES['newimg3']['size']; $temp3=$_Files['newimg3']['tmp_name']; $type3=$_Files['newimg3']['type']; $newimg3 = ($_FILES['newimg3']['name']); $size4=$_FILES['newimg4']['size']; $temp4=$_Files['newimg4']['tmp_name']; $type4=$_Files['newimg4']['type']; $newimg4 = $_FILES['newimg4']['name']; $size5=$_FILES['newimg5']['size']; $temp5=$_Files['newimg5']['tmp_name']; $type5=$_Files['newimg5']['type']; $newimg5 = ($_FILES['newimg5']['name']); //On efface la photo choisie unlink("img1/$location"); unlink("img2/$location"); unlink("img3/$location"); unlink("img4/$location"); unlink("img5/$location"); //nouvelle image move_uploaded_file($temp1, "img1/$newimg1"); move_uploaded_file($temp2, "img1/$newimg2"); move_uploaded_file($temp3, "img1/$newimg3"); move_uploaded_file($temp4, "img1/$newimg4"); move_uploaded_file($temp5, "img1/$newimg5"); } else{ $newimg1=$location; $newimg2=$location; $newimg3=$location; $newimg4=$location; $newimg5=$location; } $update = $bdd->prepare("UPDATE images_annonces SET filepath = ? WHERE id_annonce = ?"); $update->execute(array(array($newimg1, $newimg2, $newimg3, $newimg4, $newimg5), $idannonce)); header('Location: profilannonce.php?id='.$id_membre.'');
unlink("img1/$location"); unlink("img2/$location"); unlink("img3/$location"); unlink("img4/$location"); unlink("img5/$location");
Sérieux ? Tu ne serais pas un peu dyslexique ?
Puis...
move_uploaded_file($temp1, "img1/$newimg1"); move_uploaded_file($temp2, "img1/$newimg2"); move_uploaded_file($temp3, "img1/$newimg3"); move_uploaded_file($temp4, "img1/$newimg4"); move_uploaded_file($temp5, "img1/$newimg5");
Sachant qu'à l'origine, tes images se trouvaient sans le dossier "pictures"
$location= "pictures/";
comment peux tu les mettre désormais chacune dans un dossier différent .. img1 ... img2 ... ??
Et une fois que tu les as uploadé sur le serveur... à quel momment fais tu l'insertion en bdd ?? ( une requête sql INSERT ... ( pour CHAQUE image) ??
Et enfin...
Si il n'y a pas d'images à uploader sur le serveur.... il n'y a pas d'update à faire !!!!!
Donc tu peux virer tout ce qu'il y a dans ton else ( qui erst totalement faux de toutes façons... mais je ne vais pas essayer de t'indiquer les erreurs tellement il y en a ! )
J'ai fait ça avec les fonctions, mais j'ai des erreurs :
function saveNewPhoto($idannonce,$file,$location){ if(empty($file)){ echo "<br> ERREUR : Aucune image n'est envoyées pour l'upload"; var_dump($_FILES); // juste pour le debug... return false; //pas d'image } $photo = $file['name']; $photo_tmp = $file['tmp_name']; if(move_uploaded_file($photo_tmp,$location.$photo)){ return updateNewPhoto($idannonce,$location.$photo); } } function updateNewPhoto($idannonce,$photo){ global $bdd; $sql= "UPDATE images_annonces SET (id_annonce,filepath) VALUES(?,?)"; $datas= array($idannonce,$photo); //Execution de la requete try{ //Execution pour la deuxième table $requete2 = $bdd -> prepare($sql) ; return $requete2->execute($datas) ; }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } } //On modifie l'annonce function updateAnnonce($newcategorie,$newville,$newtitre,$newdescription,$newprix){ global $bdd; $sql= "UPDATE annonces SET (categorie,ville,titre,description,prix) VALUES(?,?,?,?,?) WHERE id=$idannonce"; $datas= array($newcategorie,$newville,$newtitre,$newdescription,$newprix, $idannonce); //Execution de la requete try{ //requete pour la première tabels $requete = $bdd->prepare($sql); $requete->execute($datas); return $bdd->LastInsertId(); }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); return false; } } $location= "pictures/"; if(isset($_SESSION['id']) && !empty($_SESSION['id'])){ $idannonce = !empty($_GET['id']) ? $_GET['id'] : NULL; //Les informations de l'annonce $newcategorie= trim($_POST['newcategorie']); $newville= trim($_POST['newvilles']); $newtitre=trim($_POST['newtitre']); $newdescription=trim($_POST['newdescription']); $newprix=intval($_POST['newprix']); //Pour les images $newimg1 = ($_FILES['newimg1']); $newimg2 = ($_FILES['newimg2']); $newimg3 = ($_FILES['newimg3']); $newimg4 = ($_FILES['newimg4']); $newimg5 = ($_FILES['newimg5']); //On créé la modification de l'annonce: $idannonce = updateAnnonce($newcategorie,$newville,$newtitre,$newdescription,$newprix); if(!empty($idannonce)){ saveNewPhoto($idannonce,$newimg1,$location); saveNewPhoto($idannonce,$newimg2,$location); saveNewPhoto($idannonce,$newimg3,$location); saveNewPhoto($idannonce,$newimg4,$location); saveNewPhoto($idannonce,$newimg5,$location); echo"<h1 style= 'color: green; background-color: white; margin-top: 120px;'>Votre annonce a bien été modifiée. </h1>"; }else{ echo "Erreur : Aucun ID n'a été modifié !"; }
Si tu as des erreurs .... il faut nous les donner ....
Bien qu'on puisse aisément en deviner au moins certaines...
Pour commencer ..
Sachant que dans ta table images_annonces tu peux avoir plusieurs images pour une annonce... comment sais-tu quelle image tu veux mettre à jour ??
Comme je te l'ai déjà dit .. pour ce genre de choses il est préférable de supprimer toutes les images de ton annonce puis insérer les nouvelles photos dans la bdd.
Ensuite... une erreur liée, encore, à ta mauvaise compréhension des variables dans les requêtes sql et le execute de PDO ..
Donc:
Tu as cinq points d'interrogation dans la requête SQL ... mais tu envoies 6 variables dans le execute.
Pour le coup .. c'est dans ta requête SQL que tu as oublié de remplacer une variable par un "?" ( le $idannonce qui ne devrait pas se trouver là !! )
Donc à corriger par
Une autre erreur concerne le RETURN de ta fonction updateAnnonce
La méthode LastInsertId() retourne le dernier ID créé ... lors d'une requête INSERT ... pas dans un UPDATE !
je te rappelle au passage que !empty fais déjà un isset .. donc pas besoin des deux
A corriger par
Et pour en revenir à ta question de départ,
Il te manque donc une fonction qui supprimera toutes les photos d'une annonce que tu devras exécuter (une seule fois )
avant de faire tes saveNewPhoto
Bien qu'on puisse aisément en deviner au moins certaines...
Pour commencer ..
$sql= "UPDATE images_annonces SET (id_annonce,filepath) VALUES(?,?)"; $datas= array($idannonce,$photo);
Sachant que dans ta table images_annonces tu peux avoir plusieurs images pour une annonce... comment sais-tu quelle image tu veux mettre à jour ??
Comme je te l'ai déjà dit .. pour ce genre de choses il est préférable de supprimer toutes les images de ton annonce puis insérer les nouvelles photos dans la bdd.
Ensuite... une erreur liée, encore, à ta mauvaise compréhension des variables dans les requêtes sql et le execute de PDO ..
Donc:
$sql= "UPDATE annonces SET (categorie,ville,titre,description,prix) VALUES(?,?,?,?,?) WHERE id=$idannonce"; $datas= array($newcategorie,$newville,$newtitre,$newdescription,$newprix, $idannonce);
Tu as cinq points d'interrogation dans la requête SQL ... mais tu envoies 6 variables dans le execute.
Pour le coup .. c'est dans ta requête SQL que tu as oublié de remplacer une variable par un "?" ( le $idannonce qui ne devrait pas se trouver là !! )
Donc à corriger par
$sql= "UPDATE annonces SET (categorie,ville,titre,description,prix) VALUES(?,?,?,?,?) WHERE id=? ";
Une autre erreur concerne le RETURN de ta fonction updateAnnonce
La méthode LastInsertId() retourne le dernier ID créé ... lors d'une requête INSERT ... pas dans un UPDATE !
je te rappelle au passage que !empty fais déjà un isset .. donc pas besoin des deux
if(isset($_SESSION['id']) && !empty($_SESSION['id'])){
A corriger par
if( !empty($_SESSION['id'])){
Et pour en revenir à ta question de départ,
Il te manque donc une fonction qui supprimera toutes les photos d'une annonce que tu devras exécuter (une seule fois )
avant de faire tes saveNewPhoto
Je pense que j'y suis presque.
Les erreurs que j'ai lorsque le formulaire est soumis, sont les indefined index newcategorie, photo
et: Erreur ! SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens Les datas : Array ( [0] => 11 [1] => ) Erreur ! SQLSTATE[HY093]: Invalid paramete
J'ai modifié
<< Comme je te l'ai déjà dit .. pour ce genre de choses il est préférable de supprimer toutes les images de ton annonce puis insérer les nouvelles photos dans la bdd>>
Faut-il donc ajouter une condition dans la requête Update?
Les erreurs que j'ai lorsque le formulaire est soumis, sont les indefined index newcategorie, photo
et: Erreur ! SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens Les datas : Array ( [0] => 11 [1] => ) Erreur ! SQLSTATE[HY093]: Invalid paramete
J'ai modifié
//Requête pour les values du formulaire: $idannonce = !empty($_GET['id']) ? $_GET['id'] : NULL; $reqannonce = $bdd->prepare(" SELECT * FROM annonces WHERE id= ?"); $reqannonce->execute(array($idannonce)); $annonceinfo = $reqannonce->fetch(); var_dump($annonceinfo); var_dump($idannonce); function deleteOldPhoto($idannonce,$photo){ global $bdd; $sql= "DELETE from images_annonces (filepath) VALUES(?) where id_annonce=$idannonce"; $datas= array($idannonce,$photo); //Execution de la requete try{ //Execution pour la deuxième table $requete2 = $bdd -> prepare($sql) ; return $requete2->execute($datas) ; }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } } function saveNewPhoto($idannonce,$file,$location){ if(empty($file)){ echo "<br> ERREUR : Aucune image n'est envoyées pour l'upload"; var_dump($_FILES); // juste pour le debug... return false; //pas d'image } $photo = $file['name']; $photo_tmp = $file['tmp_name']; if(move_uploaded_file($photo_tmp,$location.$photo)){ return updateNewPhoto($idannonce,$location.$photo); } } function updateNewPhoto($idannonce,$photo){ global $bdd; $sql= "UPDATE images_annonces SET (id_annonce,filepath) VALUES(?,?)"; $datas= array($idannonce,$photo); //Execution de la requete try{ //Execution pour la deuxième table $requete2 = $bdd -> prepare($sql) ; return $requete2->execute($datas) ; }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } } //On modifie l'annonce function updateAnnonce($newcategorie,$newville,$newtitre,$newdescription,$newprix){ global $bdd; $sql= "UPDATE annonces SET (categorie,ville,titre,description,prix) VALUES(?,?,?,?,?) WHERE id=? "; $datas= array($newcategorie,$newville,$newtitre,$newdescription,$newprix); //Execution de la requete try{ //requete pour la première tabels $requete = $bdd->prepare($sql); $requete->execute($datas); }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); return false; } } $location= "pictures/"; if( !empty($_SESSION['id'])){ if(isset($_POST['formupdate'])) { $id_membre= $_SESSION['id']; $idannonce = !empty($_GET['id']) ? $_GET['id'] : NULL; //Les informations de l'annonce $newcategorie= trim($_POST['newcategorie']); $newville= trim($_POST['newvilles']); $newtitre=trim($_POST['newtitre']); $newdescription=trim($_POST['newdescription']); $newprix=intval($_POST['newprix']); //Pour les images $newimg1 = ($_FILES['newimg1']); $newimg2 = ($_FILES['newimg2']); $newimg3 = ($_FILES['newimg3']); $newimg4 = ($_FILES['newimg4']); $newimg5 = ($_FILES['newimg5']); //On créé la modification de l'annonce: $supprimerPhoto= deleteOldPhoto($idannonce,$photo); $modifierannonce= updateAnnonce($newcategorie,$newville,$newtitre,$newdescription,$newprix); if(!empty($modifierannonce)){ saveNewPhoto($modifierannonce,$newimg1,$location); saveNewPhoto($modifierannonce,$newimg2,$location); saveNewPhoto($modifierannonce,$newimg3,$location); saveNewPhoto($modifierannonce,$newimg4,$location); saveNewPhoto($modifierannonce,$newimg5,$location); echo"<h1 style= 'color: green; background-color: white; margin-top: 120px;'>Votre annonce a bien été modifiée. </h1>"; }else{ echo "Erreur : Aucun ID n'a été modifié !"; } }
<< Comme je te l'ai déjà dit .. pour ce genre de choses il est préférable de supprimer toutes les images de ton annonce puis insérer les nouvelles photos dans la bdd>>
Faut-il donc ajouter une condition dans la requête Update?
Je n'ai qu'une erreur à la soumission du formulaire: Undefined variable: photo in C:\wamp64\www\Projetsite
Erreur ! SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens Les datas : Array ( [0] => 11 [1] => ) Erreur ! SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens Les datas : Array ( [0] =
Pour la fonction qui supprime l'ancienne photo, j'ai fait ça
Sinon, peux tu donner un exemple? Le plus dûr c'est les photos....
Erreur ! SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens Les datas : Array ( [0] => 11 [1] => ) Erreur ! SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens Les datas : Array ( [0] =
Pour la fonction qui supprime l'ancienne photo, j'ai fait ça
function deleteOldPhoto($idannonce,$file,$location){ if(empty($file)){ echo "<br> ERREUR : Aucune image n'est envoyées pour l'upload"; var_dump($_FILES); return false; } $photo = $file['name']; $photo_tmp = $file['tmp_name']; if(unlink($photo_tmp,$location.$photo)){ return updateNewPhoto($idannonce,$location.$photo); } }
Sinon, peux tu donner un exemple? Le plus dûr c'est les photos....
Déjà... le message d'erreur ne correspond pas au code montré !
Ensuite.. dans le message d'erreur complet... il y a le numéro de ligne concerné... ça serait bien de le donner !
Et puis.. comment es tu passé du code :
qui est quasiment bon .. hormis une erreur dans la requête SQL elle même ... à ceci
qui ne fait plus de delete en bdd ... et qui, tu persistes...., fais appel à une fonction UPDATE qu'il faut oublier pour les photos !!!
En gros
Ne te reste plus qu'à INSERT les photos dans la table (après les avoir "move_upload" sur le serveur... ( tu as déjà une fonction pour ça il me semble.. celle que tu as utilisé pour la création d'annonce )
Ensuite.. dans le message d'erreur complet... il y a le numéro de ligne concerné... ça serait bien de le donner !
Et puis.. comment es tu passé du code :
function deleteOldPhoto($idannonce,$photo){ global $bdd; $sql= "DELETE from images_annonces (filepath) VALUES(?) where id_annonce=$idannonce"; $datas= array($idannonce,$photo); //Execution de la requete try{ //Execution pour la deuxième table $requete2 = $bdd -> prepare($sql) ; return $requete2->execute($datas) ; }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } }
qui est quasiment bon .. hormis une erreur dans la requête SQL elle même ... à ceci
function deleteOldPhoto($idannonce,$file,$location){ if(empty($file)){ echo "<br> ERREUR : Aucune image n'est envoyées pour l'upload"; var_dump($_FILES); return false; } $photo = $file['name']; $photo_tmp = $file['tmp_name']; if(unlink($photo_tmp,$location.$photo)){ return updateNewPhoto($idannonce,$location.$photo); } }
qui ne fait plus de delete en bdd ... et qui, tu persistes...., fais appel à une fonction UPDATE qu'il faut oublier pour les photos !!!
En gros
/** * On récupère un array des filepath d'une annonce */ function getAllImgByIdAnnonce($idannonce){ global $bdd; $sql = "SELECT filepath FROM images_annonces WHERE id_annonce=?"; $datas = array($idannonce); //Execution de la requete try{ //Execution pour la deuxième table $req = $bdd -> prepare($sql) ; $res = $req->execute($datas) ; return $req->fetchAll(PDO::FETCH_COLUMN); //on retourne le resultat en Array }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } } /** * On supprime en BDD les photos d'une annonce */ function deleteAllPhotosByIdAnnonce($idannonce){ global $bdd; $sql = "DELETE FROM images_annonces WHERE id_annonce=?"; $datas = array($idannonce); //Execution de la requete try{ //Execution pour la deuxième table $req = $bdd -> prepare($sql) ; return $req->execute($datas) ; }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } } /** * Fonction utilisant les deux autres pour supprimer les photos sur le serveur et en bdd */ function deleteOldPhoto($idannonce,$location="pictures/"){ //on récupère la liste des photos existantes en bdd $imgs = getAllImgByIdAnnonce($idannonce); //on boucle dessus pour les supprimer sur le serveur foreach($imgs as $img){ @unlink($location.$img); } //on supprime les images dans la bdd return deleteAllPhotosByIdAnnonce($idannonce); }
Ne te reste plus qu'à INSERT les photos dans la table (après les avoir "move_upload" sur le serveur... ( tu as déjà une fonction pour ça il me semble.. celle que tu as utilisé pour la création d'annonce )
Pour l'erreur, il y a seulement celle là. il n'y a pas de ligne dans le message précisé. Voici le message complet et le suivant:Erreur ! SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens Les datas : Array ( [0] => 301 [1] => 1 [2] => Je vends un téléphone modifié [3] => [4] => 0 ) Erreur : Aucun ID n'a été modifié !
//Requête pour les values du formulaire: $idannonce = !empty($_GET['id']) ? $_GET['id'] : NULL; $reqannonce = $bdd->prepare(" SELECT * FROM annonces WHERE id= ?"); $reqannonce->execute(array($idannonce)); $annonceinfo = $reqannonce->fetch(); var_dump($annonceinfo); var_dump($idannonce); /** * On récupère un array des filepath d'une annonce */ function getAllImgByIdAnnonce($idannonce){ global $bdd; $sql = "SELECT filepath FROM images_annonces WHERE id_annonce=?"; $datas = array($idannonce); //Execution de la requete try{ //Execution pour la deuxième table $req = $bdd -> prepare($sql) ; $res = $req->execute($datas) ; return $req->fetchAll(PDO::FETCH_COLUMN); //on retourne le resultat en Array }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } } /** * On supprime en BDD les photos d'une annonce */ function deleteAllPhotosByIdAnnonce($idannonce){ global $bdd; $sql = "DELETE FROM images_annonces WHERE id_annonce=?"; $datas = array($idannonce); //Execution de la requete try{ //Execution pour la deuxième table $req = $bdd -> prepare($sql) ; return $req->execute($datas) ; }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } } /** * Fonction utilisant les deux autres pour supprimer les photos sur le serveur et en bdd */ function deleteOldPhoto($idannonce,$location="pictures/"){ //on récupère la liste des photos existantes en bdd $imgs = getAllImgByIdAnnonce($idannonce); //on boucle dessus pour les supprimer sur le serveur foreach($imgs as $img){ @unlink($location.$img); } //on supprime les images dans la bdd return deleteAllPhotosByIdAnnonce($idannonce); } function saveNewPhoto($idannonce,$file,$location){ if(empty($file)){ echo "<br> ERREUR : Aucune image n'est envoyées pour l'upload"; var_dump($_FILES); // juste pour le debug... return false; //pas d'image } $photo = $file['name']; $photo_tmp = $file['tmp_name']; if(move_uploaded_file($photo_tmp,$location.$photo)){ return updateNewPhoto($idannonce,$location.$photo); } } function insertNewPhoto($idannonce,$photo){ global $bdd; $sql= "INSERT INTO images_annonces(id_annonce,filepath) VALUES(?,?)"; $datas= array($idannonce,$photo); //Execution de la requete try{ //Execution pour la deuxième table $requete2 = $bdd -> prepare($sql) ; return $requete2->execute($datas) ; }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } } //On modifie l'annonce function updateAnnonce($newcategorie,$newville,$newtitre,$newdescription,$newprix){ global $bdd; $sql= "UPDATE annonces SET (categorie,ville,titre,description,prix) VALUES(?,?,?,?,?) WHERE id=? "; $datas= array($newcategorie,$newville,$newtitre,$newdescription,$newprix); //Execution de la requete try{ //requete pour la première tabels $requete = $bdd->prepare($sql); $requete->execute($datas); }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); return false; } } $location= "pictures/"; if( !empty($_SESSION['id'])){ if(isset($_POST['formupdate'])) { $id_membre= $_SESSION['id']; $idannonce = !empty($_GET['id']) ? $_GET['id'] : NULL; //Les informations de l'annonce $newcategorie= trim($_POST['newcategorie']); $newville= trim($_POST['newvilles']); $newtitre=trim($_POST['newtitre']); $newdescription=trim($_POST['newdescription']); $newprix=intval($_POST['newprix']); //Pour les images $newimg1 = ($_FILES['newimg1']); $newimg2 = ($_FILES['newimg2']); $newimg3 = ($_FILES['newimg3']); $newimg4 = ($_FILES['newimg4']); $newimg5 = ($_FILES['newimg5']); //On créé la modification de l'annonce: $supprimerPhoto= deleteOldPhoto($idannonce,$location="pictures/"); $modifierannonce= updateAnnonce($newcategorie,$newville,$newtitre,$newdescription,$newprix); if(!empty($modifierannonce)){ saveNewPhoto($modifierannonce,$newimg1,$location); saveNewPhoto($modifierannonce,$newimg2,$location); saveNewPhoto($modifierannonce,$newimg3,$location); saveNewPhoto($modifierannonce,$newimg4,$location); saveNewPhoto($modifierannonce,$newimg5,$location); echo"<h1 style= 'color: green; background-color: white; margin-top: 120px;'>Votre annonce a bien été modifiée. </h1>"; }else{ echo "Erreur : Aucun ID n'a été modifié !"; } }
J'ai relu mon code, et corrigé. Cette erreur s'affiche après la soumission du formulaire:
Erreur ! SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe près de '(id_categorie,id_ville,titre,description,prix) VALUES('301','1','Je vends un té' à la ligne 1 Les datas : Array ( [0] => 301 [1] => 1 [2] => Je vends un téléphone modifié [3] => [4] => 0 [5] => 11 ) Erreur : Aucun ID n'a été modifié !
J'ai bien modifié, et je n'arrive pas à voir l'erreur:
Erreur ! SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe près de '(id_categorie,id_ville,titre,description,prix) VALUES('301','1','Je vends un té' à la ligne 1 Les datas : Array ( [0] => 301 [1] => 1 [2] => Je vends un téléphone modifié [3] => [4] => 0 [5] => 11 ) Erreur : Aucun ID n'a été modifié !
J'ai bien modifié, et je n'arrive pas à voir l'erreur:
//On modifie l'annonce function updateAnnonce($newcategorie,$newville,$newtitre,$newdescription,$newprix,$idannonce){ global $bdd; $sql= "UPDATE annonces SET (id_categorie, id_ville,titre,description,prix) VALUES(?,?,?,?,?) WHERE id=? "; $datas= array($newcategorie,$newville,$newtitre,$newdescription,$newprix,$idannonce); //Execution de la requete try{ //requete pour la première tabels $requete = $bdd->prepare($sql); $requete->execute($datas); }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); return false; } }