Je suis sur un projet d'étude le but étant de créer une plateforme d'hébergement en ligne avec un espace de connexion pour les personnes voulant mettre à louer leur bien et ceux voulant le louer.

Je suis sur un formulaire qui permettrait de poster des biens, le problème c'est que le lien de l'image ne s'intégre pas dans la base de données

Je suis vraiment débutante et pour être honnete je commence à perdre patience étant donné que je cherche depuis des jours si ce n'est des semaines une solution.

Merci à ceux qui pourront m'aider

La page d'ajout de l'annonce

<?php

session_start();

@include 'config.php';

if(isset($_POST['submit'])){

   $id = $_POST['id'] ?? 0;
   $name = $_POST['name'];
   $titre = mysqli_real_escape_string($conn, $_POST['titre']);
   $titre = mysqli_real_escape_string($conn, $_POST['titre']);
   $description = mysqli_real_escape_string($conn, $_POST['description']);
   $type = $_POST['type'] ?? 0;
   $prix = $_POST['prix'];
   $localisation = $_POST['localisation'];
   $image = $_POST['image'];
   $pieces = $_POST['pieces'];
   $wifi = $_POST['wifi'];
   $balcon = $_POST['balcon'];
   $animaux = $_POST['animaux'];
   $piscine = $_POST['piscine'];
   $spa = $_POST['spa'];
   $parking = $_POST['parking'];

   $select = " SELECT * FROM produit WHERE id ='$id' && titre = '$titre' && description = '$description' && type = '$type' && prix = '$prix'  && localisation = '$localisation' && image = '$image' && pieces = '$pieces' && wifi = '$wifi'  && balcon = '$balcon'  && animaux = '$animaux'  && piscine = '$piscine'  && spa = '$spa'  && parking = '$parking' && name = '$name'";

   $result = mysqli_query($conn, $select);

   if(mysqli_num_rows($result) > 0){

      $error[] = 'Le logement existe déjà!';

   }else{

         $insert = "INSERT INTO produit(id, name, titre, description, type, prix, localisation, image, pieces, wifi, balcon, animaux, piscine, spa, parking) VALUES('$id', '$name', '$titre','$description','$type','$prix', '$localisation','$image', '$pieces', '$wifi', '$balcon', '$animaux', '$piscine', '$spa', '$parking')";
         mysqli_query($conn, $insert);
         echo "Votre annonce à été posté avec succès !";
      }

   };
?>

La page annonce avec le formulaire

<div class="form-container">

   <form action="ajout-produit.php" method="POST" enctype="multipart/form-data">
   <a href="espace_professionnel.php" class="modal_close">&times;</a>
      <h3>Ajouter une annonce</h3>
      <?php
      if(isset($error)){
         foreach($error as $error){
            echo '<span class="error-msg">'.$error.'</span>';
         };
      };
      ?>
      <input type="text" name="titre" required placeholder="Entrer le titre de votre annonce">
      <input type="text" name="name" required placeholder="Entrer votre nom et prénom">
        <select name="pieces" required>
         <option value="">--Nombres de pièces--</option>
         <option value="1">1</option>
         <option value="2">2</option>
         <option value="3">3</option>
         <option value="4">4</option>
         <option value="5">5</option>
         <option value="6">6</option>
        </select>

        <select name="type de logement" required>
         <option value="0">--Type de votre logement--</option>
         <option value="1">Cabane dans les arbres</option>
         <option value="2">Yourtes</option>
         <option value="3">Bulles</option>
         <option value="4">Tiny House</option>
         <option value="5">Roulottes</option>
         <option value="6">Cabane sur pilotis</option>
        </select>

      <input type="text" name="localisation" required placeholder="Entrer la localisation">
      <input type="text" name="prix" required placeholder="Entrer le prix">
        <div class="case">
            <h4>Wifi</h4>
                <input type="checkbox" name="wifi">
                <h4>Balcon</h4>
                <input type="checkbox" name="balcon">
                <h4>Animaux admis</h4>
                <input type="checkbox" name="animaux">
        </div> <br />
        <div class="case">
            <h4>Piscine</h4>
                <input type="checkbox" name="piscine">
                <h4>SPA/Jacuzzi</h4>
                <input type="checkbox" name="spa">
                <h4>Parking</h4>
                <input type="checkbox" name="parking">
        </div>
            <input type="file" name="image">
            <textarea name="description" required placeholder="Entrer la description"></textarea>
            <input type="submit" name="submit" value="Ajouter" class="form-btn">

   </form>

</div>

    </body>
</html>

6 réponses


l'image en php n'est pas $_POST mais $_FILES et c'est un tableau que tu récupères (voir la doc)
tu as deux fois titre.
il n'y a pas de champ "id" ?
d'ailleur ce champ "id" devrait être en auto-increment donc gérer par la BDD et non par toi

mama158
Auteur

Dans la bdd ça m'affiche array mais j'ai l'impression que c'est vide, comment faire pour mettre "l'image" dans la bdd et l'afficher ensuite?
J'ai fait les modifications mais ça ne change rien

en générale on ne stocke pas l'image dans la bdd mais son adresse
tu as regardeé la doc de $_FILES ?

mama158
Auteur

Je ne sais pas ou trouver le document
Justement c'est ce que j'essaie de faire mais je ne m'en sors pas..

On a vu ça dans la formation PHP (écriture de fichier) https://grafikart.fr/formations/php
Le code a pas mal de problème de sécurité, je te conseille de refaire les bases c'est important