Modifier une annonce avec la fonction UPDATE - Page 2
Résolu
Précédent
- 1
- 2
-
Non, elles n'apparaissent pas dans le dossier pictures. Et dans la bdd non plus
-
Le code complet:
<?php session_start(); include "cnx.php"; include 'langues/fb.php'; include "commandes.php"; //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) ; var_dump($res); 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) ; var_dump($req); 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); var_dump($imgs); //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) ; var_dump($requete2); 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,$idannonce){ global $bdd; $sql= "UPDATE annonces SET id_categorie=?, id_ville=?,titre=?,description=?,prix=? 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); var_dump($requete); }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/"); var_dump($supprimerPhoto); $modifierannonce= updateAnnonce($newcategorie,$newville,$newtitre,$newdescription,$newprix,$idannonce); var_dump($modifierannonce); 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é !"; } } $villesm= getVilles(); ?> <html> <head> <meta charset="utf-8"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css"> <style> </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 ); // 0 : catégories principales (niveau 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'] // Si il n'y a pas de sous-catégories if( empty($sous_categories) ) { echo " <option value='".$C['id']."'>".$C['nom']."</option>"."\n"; // "\n" : passage à la ligne dans le code (lisibilité du code) } // Sinon (il y a des sous-catégories) 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' name=formupdate value='Mettre à jour' /> <br><br> </form> </ul> </div> </div> </div> <?php } ?>
Les vardumps:C:\wamp64\www\Projetsite\editerannonce.php:16: array (size=14) //vardump $annonceinfo 'id' => string '11' (length=2) 'created_by_member' => string '1' (length=1) 'id_membre' => string '2' (length=1) 'id_categorie' => string '301' (length=3) 'id_ville' => string '1' (length=1) 'pseudo' => string 'albert' (length=6) 'telephone' => string '7178457' (length=7) 'email' => string 'albert@gmail.fr' (length=15) 'titre' => string 'Je vends un téléphone modifié 3' (length=34) 'description' => string 'Modifié 3' (length=10) 'prix' => string '0' (length=1) 'created_date' => string '2022-01-11' (length=10) 'created_date_hour' => string '2022-01-11 14:57:27' (length=19) 'vues' => string '15' (length=2) C:\wamp64\www\Projetsite\editerannonce.php:17:string '11' (length=2) //vardump $idannonce C:\wamp64\www\Projetsite\editerannonce.php:37:boolean true // var_dump($res de getAllImgByIdAnnonce C:\wamp64\www\Projetsite\editerannonce.php:79: //var_dump($imgs); array (size=0) empty C:\wamp64\www\Projetsite\editerannonce.php:60: object(PDOStatement)[3] public 'queryString' => string 'DELETE FROM images_annonces WHERE id_annonce=?' (length=46) C:\wamp64\www\Projetsite\editerannonce.php:200:boolean true //var_dump($supprimerPhoto); C:\wamp64\www\Projetsite\editerannonce.php:147: object(PDOStatement)[3] public 'queryString' => string 'UPDATE annonces SET id_categorie=?, id_ville=?,titre=?,description=?,prix=? WHERE id=? ' (length=97) C:\wamp64\www\Projetsite\editerannonce.php:203:null -
J'ai mis insertNewPhoto à la place.
Pour les vardumps avec echo:
La variable annonceinfo C:\wamp64\www\Projetsite\editerannonce.php:16: array (size=14) 'id' => string '11' (length=2) 'created_by_member' => string '1' (length=1) 'id_membre' => string '2' (length=1) 'id_categorie' => string '301' (length=3) 'id_ville' => string '1' (length=1) 'pseudo' => string 'albert' (length=6) 'telephone' => string '7178457' (length=7) 'email' => string 'albert@gmail.fr' (length=15) 'titre' => string 'Je vends un téléphone modifié 4' (length=34) 'description' => string '' (length=0) 'prix' => string '0' (length=1) 'created_date' => string '2022-01-11' (length=10) 'created_date_hour' => string '2022-01-11 14:57:27' (length=19) 'vues' => string '15' (length=2) La variable idannonce C:\wamp64\www\Projetsite\editerannonce.php:17:string '11' (length=2) Fonction getAllImgByIdAnnonce C:\wamp64\www\Projetsite\editerannonce.php:37:boolean true Fonction deleteOldPhoto C:\wamp64\www\Projetsite\editerannonce.php:79: array (size=0) empty Fonction deleteAllPhotosByIdAnnonce C:\wamp64\www\Projetsite\editerannonce.php:60: object(PDOStatement)[3] public 'queryString' => string 'DELETE FROM images_annonces WHERE id_annonce=?' (length=46) la Variable supprimerPhoto égal à deleteOldphoto C:\wamp64\www\Projetsite\editerannonce.php:200:boolean true Fonction updateAnnonce C:\wamp64\www\Projetsite\editerannonce.php:147: object(PDOStatement)[3] public 'queryString' => string 'UPDATE annonces SET id_categorie=?, id_ville=?,titre=?,description=?,prix=? WHERE id=? ' (length=97) La variable modifierannonce égal à updateAnnonce C:\wamp64\www\Projetsite\editerannonce.php:203:null Erreur : Aucun ID n'a été modifié ! -
La fonction
updateAnnonce
N'a pas de return
Donc le résultat est null... C'est pour ca que tu entres dans le else
A part ça.. les photos sont elles uploadees sur le serveur ?
Et dans la table tu as Quoi ? -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
En modifiant le return dans la fonction updateannonce, le résulat est le même. Toujours l'image par défaut. Et rien dans la table
function updateAnnonce($newcategorie,$newville,$newtitre,$newdescription,$newprix,$idannonce){ global $bdd; $sql= "UPDATE annonces SET id_categorie=?, id_ville=?,titre=?,description=?,prix=? 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); echo"Fonction updateAnnonce"; var_dump($requete); }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); return $requete; } } -
-
Montres le code de ta fonction saveNewPhoto
Ajoute un else au cas ou le move a échoué
-
en ajoutant un echo dans le else, le echo ne s'affiche pas non plus après soumission du formulaire
function saveNewPhoto($idannonce,$file,$location){ if(empty($file)){ echo "<br> ERREUR : Aucune image n'est envoyées pour l'upload"; var_dump($_FILES); return false; //pas d'image } $photo = $file['name']; $photo_tmp = $file['tmp_name']; if(move_uploaded_file($photo_tmp,$location.$photo)){ return insertNewPhoto($idannonce,$location.$photo); }else{ echo"Pas d'image inseré"; } }: -
J'ai trouvé l'erreur, et ça marche. Je m'étais trompé depuis le départ
En fait, je devais faire:if(!empty($idannonce)){ saveNewPhoto($idannonce,$newimg1,$location); saveNewPhoto($idannonce,$newimg2,$location); saveNewPhoto($idannonce,$newimg3,$location); saveNewPhoto($idannonce,$newimg4,$location); saveNewPhoto($idannonce,$newimg5,$location);
et non:if(!empty($modifierannonce)){ saveNewPhoto($modifierannonce,$newimg1,$location); saveNewPhoto($modifierannonce,$newimg2,$location); saveNewPhoto($modifierannonce,$newimg3,$location); saveNewPhoto($modifierannonce,$newimg4,$location); saveNewPhoto($modifierannonce,$newimg5,$location);qui est faux!
Enfin la délivrance!!
Dernière chose, tu aurais une idée pour insérer la taille de l'image, et le type(que j'ai défini dans le input) afin d'éviter des surprises dans l'avenir? -
Merci Jordane pour tout :) Il s'agira d'un autre sujet Je vais ouvrir un nouveau topic concernant les tailles et le type pour les images. Remerciements :)
Précédent
- 1
- 2