Partage
  • Partager sur Facebook
  • Partager sur Twitter

modifier un produit

    10 avril 2024 à 22:48:31

    Bonsoir,

    J'ai crée un site avec un espace ou les personnes pourront poster des annonces un peu le même principe que sur Leboncoin.

    Pour le moment j'arrive à poster des annonces et à les supprimer depuis l'espace membre mais je n'arrive pas à les modifier quand je clique sur envoyer rien ne se passe meme pas un message d'erreur.

    <?php
    
             //connexion à la base de donnée
              include_once "conne.php";
             //on récupère le id dans le lien
              $id = $_GET['id'];
              //requête pour afficher les infos d'un employé
              $req = mysqli_query($con , "SELECT * FROM images WHERE id = $id");
              $row = mysqli_fetch_assoc($req);
    
    
           //vérifier que le bouton ajouter a bien été cliqué
           if(isset($_POST['button'])){
               //extraction des informations envoyé dans des variables par la methode POST
               extract($_POST);
               //verifier que tous les champs ont été remplis
               if(isset($nom) && isset($titre)&& isset($image)&& isset($localisation)&& isset($prix) && $text) {
                   //requête de modification
                   $req = mysqli_query($con, "UPDATE images SET nom = '$nom' ,titre = '$titre' , image = '$image' , localisation = '$localisation' , prix = '$prix' , text = '$text' WHERE id = $id");
                    if($req){//si la requête a été effectuée avec succès , on fait une redirection
                        header("location: logement_pro.php");
                    }else {//si non
                        $message = "Employé non modifié";
                    }
    
               }else {
                   //si non
                   $message = "Veuillez remplir tous les champs !";
               }
           }
        
        ?>
    <div class="form-container">
        
        <p class="error">
            <?php 
               //afficher une erreur si la variable message existe
               if(isset($message)) echo $message ;
            ?>
        </p>
       
        <form action="" method="POST" enctype="multipart/form-data"> 
        <a href="espace_professionnel.php" class="modal_close">&times;</a>
        <h3>Ajouter une annonce</h3>
            <input type="file" name="image" required placeholder>
            <input type="text" name="titre" cols="30" rows="10" required placeholder="Entrer le titre de votre annonce">
            <input type="text" name="nom" value="<?=$_SESSION['admin_name']?>">
            <input type="text" name="localisation" cols="30" rows="10" required placeholder="Entrer votre localisation">
            <input type="text" name="prix" cols="30" rows="10" required placeholder="Entrer votre prix">
            <textarea name="text" cols="30" rows="10" required placeholder="Entrer votre description"></textarea>
            <input type="submit" name="send" value="Ajouter" class="form-btn">
            <a href="logement_pro.php" class="link">Liste des photos</a>
        
        </form>
    </div>
    </body>
    </html>



    • Partager sur Facebook
    • Partager sur Twitter
      10 avril 2024 à 23:39:32

      Parce que $image n'existe pas ? ($_POST['image'] != $_FILES['image])

      Bref, il faudrait apprendre à déboguer un minimum (var_dump($_POST);).

      Il n'y a que des mauvaises pratiques :

      • extract
      • injections SQL/requêtes non préparées
      • pas de htmlspecialchars (XSS)
      • le champ nom se bypasse/qu'est-ce qu'il fait là ?

      EDIT : même $_POST['button'] ne peut pas exister selon ce code

      -
      Edité par julp 10 avril 2024 à 23:45:23

      • Partager sur Facebook
      • Partager sur Twitter
        12 avril 2024 à 8:44:00

        Hello, 

        Pour reprendre ce qui a été dit plus haut, je pense qu'il faudrait revoir l'approche (en particulier à cause de $_FILES


        ), quelques pistes :

        •  En soi pas une mauvaise idée pour l'utilisateur de pré-remplir les champs du formulaire des modifes avec les valeurs existantes de  $row[] mais ne pas oublier de mettre les sessions à jour (comme pour "name=nom" value="<?=$_SESSION['admin_name']?>") une fois posté.
        • isset() ne vérifie que si une variable est définie et != null, pas si elle est remplie ; en oubliant extract(), if ($_POST['nom'] !== "") fera le job ; (filter_var() pour mémoire) ;  comme dit, inutile de vérifier $_POST['button'] qui n'existe pas, si les données arrivent c'est que quelqu'un a appuyé sur le button ^^

        • si les vérifes sont ok et l'UPDATE également, alors on gère l'image comme l'upload de la création d'annonce ; après vérifes usuelles et en partant du principe qu'il n'y a qu'une seule image :

        •     1/ On garde le même nom et on la déplace (et écrase) avec move_uploaded_file() => attention aux problèmes de cache

        •     2/ On détruit l'image existante avec unlink(), on génére un nouveau nom et idem on la déplace avec move_uploaded_file 

        • S'il y a plusieurs images, il vaut mieux faire un truc dédié

        Voilà voilà, j'espère que j'ai pas écrit trop de bêtises, bon courage ;)

        PS : si quelqu'un pouvait me dire comment on fait ça $_POST['button'] avec le petit fond blanc, ce serait sympa  

        -
        Edité par GBNet 12 avril 2024 à 9:06:37

        • Partager sur Facebook
        • Partager sur Twitter

        modifier un produit

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        • Editeur
        • Markdown