Modifier une annonce avec la fonction UPDATE - Page 2

Résolu
Précédent
  • 1
  • 2
  1. max30_3775 Messages postés 185 Statut Membre
     
    Non, elles n'apparaissent pas dans le dossier pictures. Et dans la bdd non plus
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Dans ce cas faut nous montrer ton code complet...
      Et n'hésites pas à y ajouter des var_dump histoire de voir si ton code rentre bien dans les différentes fonctions et voir quelles valeurs ont tes variables..
      0
  2. max30_3775 Messages postés 185 Statut Membre
     
    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
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Mets des echo avant tes var_dump pour dire de quoi il s'agit.. là c'est difficile de deviner à quoi ça correspond..

      De plus je vois que tu fais appel à la fonction updateNewPhoto... Ce n'est pas bon
      0
  3. max30_3775 Messages postés 185 Statut Membre
     
    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é !
    0
  4. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    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 ?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. max30_3775 Messages postés 185 Statut Membre
     
    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;
            }
          }
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Et dans le répertoire ??? Les images sont elles uploadees ?????
      0
  7. max30_3775 Messages postés 185 Statut Membre
     
    Dans le répertoire non plus
    0
  8. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Montres le code de ta fonction saveNewPhoto

    Ajoute un else au cas ou le move a échoué

    0
  9. max30_3775 Messages postés 185 Statut Membre
     
    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é";
        }
    }
    
    :
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Avant le return, fais un echo de
      $location.$photo
      0
  10. max30_3775 Messages postés 185 Statut Membre
     
    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?
    0
  11. max30_3775 Messages postés 185 Statut Membre
     
    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 :)
    0
Précédent
  • 1
  • 2