Partage
  • Partager sur Facebook
  • Partager sur Twitter

[PDO] Affichage de photos

    3 octobre 2021 à 15:30:03

    Bonjour,

    Lorsque j'essaie d'afficher des images issues de ma BDD, en utilisant leur lien, celle-ci s'affichent uniquement si les images sont rentrées depuis mon PC.

    Ce que je sais c'est que j'insère mes images à l'aide d'un lien temporaire, et je voudrais que les liens soient permanants.

    Je vous remercie de votre aide.

    Insertion de photos :

    <?php
    include 'entete.php';
    ?>
    <!DOCTYPE html>
    <html lang="fr" dir="ltr">
      <head>
        <meta charset="utf-8">
        <title>Administrateur</title>
      </head>
    
    <body class="container">
      <div class="row">
        <section>
          <form class="" enctype="multipart/form-data" method="post">
              <!--<label for="durée">Durée de location : </label>
              <select name="durée" class="durée">
                <option value=""></option>
                <option value="longue">Longue durée</option>
                <option value="courte">Courte durée</option>
              </select>
    
        <!-- champ à renseigner juste après le choix d'une longue durée ou courte durée
    
              <label for="date">A partir du </label>
              <input type="date" name="date" value="date">
              <label for="date">Au </label>
              <input type="date" name="date" value="date"><br>-->
    
    
              <label for="bien">Type de bien : </label>
              <select class="type" name="type">
                <option value=""></option>
                <option value="appartement">Appartement</option>
                <option value="maison">Maison</option>
                <option value="restaurant">Restaurant</option>
                <option value="hotel">Hôtel</option>
                <option value="cafe">Café</option>
                <option value="immeuble">Immeuble</option>
              </select>
    
              <label for="surface">Surface (m2) : </label>
              <input type="text" name="surface" value="" maxlength="7">
            </select>
            
            <label for="appartement">Nombre d'appartements : </label>
            <input type="text" name="appartement" size=6 value=""  maxlength="7"><br><br>
    
              <label for="pieces">Nombre de pièces : </label>
              <input type="text" name="pieces" size=6 value=""  maxlength="7">
    
              <label for="palliers">Nombre d'étages : </label>
              <input type="text" name="palliers" size=6 value=""  maxlength="7">
    
              <label for="balcon">Nombre de balcons : </label>
              <input type="text" name="balcon" size=6 value=""  maxlength="7">
    
              <label for="chambres">Nombre de chambres : </label>
              <input type="text" name="chambres" size=6 value=""  maxlength="7"><br><br>
    
              <label for="bain">Nombre de salles de bain : </label>
              <input type="text" name="salle_de_bain" size=6 value=""  maxlength="7">
    
              <label for="WC">Nombre de WC : </label>
              <input type="text" name="wc" size=6 value=""  maxlength="7">
    
              <label for="verandas">Nombre de vérandas : </label>
              <input type="text" name="veranda" size=6 value=""  maxlength="7"><br><br>
    
              <label for="chauffage">Type de chauffage : </label>
              <select class="chauffage" name="chauffage">
                <option value=""></option>
                <option value="gaz">Gaz</option>
                <option value="electrique">Electrique</option>
                <option value="fioul">Fioul</option>
              </select>
    
              <label for="parking">Avec parking : </label>
              <select class="parking" name="parking">
                <option value=""></option>
                <option value="oui">Oui</option>
                <option value="non">Non</option>
              </select>
    
              <label for="garage">Avec garage : </label>
              <select class="garage" name="garage">
                <option value=""></option>
                <option value="oui">Oui</option>
                <option value="non">Non</option>
              </select>
    
              <label for="piscine">Avec piscine : </label>
              <select class="piscine" name="piscine">
                <option value=""></option>
                <option value="oui">Oui</option>
                <option value="non">Non</option>
              </select>
    
              <label for="mitoyenne">Est-elle mitoyenne : </label>
              <select class="mitoyenne" name="mitoyenne">
                <option value=""></option>
                <option value="mitoyenne">Oui</option>
                <option value="pas_mitoyenne">Non</option>
              </select><br><br>
    
              <label for="etoile">Nombre d'étoiles : </label>
              <input type="text" name="etoile" size=6 value=""  maxlength="7">
    
              <label for="table">Nombre de tables : </label>
              <input type="text" name="table" size=6 value=""  maxlength="7">
    
              <label for="couvert">Nombre de couverts par jour : </label>
              <input type="text" name="couvert" size=6 value=""  maxlength="7"><br><br>
    
              <label for="chiffre">Chiffre d'affaire annuel : </label>
              <input type="text" name="chiffre" size=6 value=""  maxlength="7">
              <select class="monnaie_chiffre" name="monnaie_chiffre">
                  <option value="euro">€</option>
                  <option value="dollar">$</option>
                  <option value="TL">TL</option>
              </select>
    
              <label for="climatiseur">Est-il climatisé : </label>
              <select class="climatiseur" name="climatiseur">
                <option value=""></option>
                <option value="climatisé">Oui</option>
                <option value="non_climatisé">Non</option>
              </select>
    
              <label for="television">Télévision dans les chambres : </label>
              <select class="television" name="television">
                <option value=""></option>
                <option value="oui">Oui</option>
                <option value="non">Non</option>
              </select>
    
              <label for="lit">Nombre de lits : </label>
              <input type="text" name="lit" size=6 value=""  maxlength="7"><br><br>
    
              <label for="cafe">Avec café : </label>
              <select class="cafe" name="cafe">
                <option value=""></option>
                <option value="oui">Oui</option>
                <option value="non">Non</option>
              </select>
    
              <label for="resto">Avec restaurant: </label>
              <select class="resto" name="resto">
                <option value=""></option>
                <option value="oui">Oui</option>
                <option value="non">Non</option>
              </select>
    
              <label for="jeux">Avec salle de jeux : </label>
              <select class="jeux" name="jeux">
                <option value=""></option>
                <option value="oui">Oui</option>
                <option value="non">Non</option>
              </select><br><br>
    
              <label for="ville">Dans quelle ville ? </label>
              <input type="text" name="ville" value="" maxlength="10">
    
              <label for="quartier">Dans quel quartier ? </label>
              <input type="text" name="quartier" value="" maxlength="30"><br>
    
              <label for="budget">Prix : </label>
              <input type="text" name="prix" value="">
              <select class="monnaie" name="monnaie">
                  <option value="euro">€</option>
                  <option value="dollar">$</option>
                  <option value="TL">TL</option>
              </select>
    
              <label for="murs">Avec les murs : </label>
              <select class="murs" name="murs">
                <option value=""></option>
                <option value="oui">Oui</option>
                <option value="non">Non</option>
              </select><br><br>
    
              <label for="paysage">Paysage : </label>
              <select class="paysage" name="paysage">
                <option value=""></option>
                <option value="mer">Mer/Plage</option>
                <option value="montagne">Montagne</option>
                <option value="centre-ville">Centre-ville</option>
                <option value="campagne">Campagne</option>
              </select><br><br>
              
              <label for="description : ">Description : </label><br>
              <textarea name="description" id="description" rows="10" cols="50"></textarea><br><br><br>
    
              <!-- <input type="hidden" name="MAX_FILE_SIZE" value="300000" />  -->
              <label for="file">Image principale : </label>
              <input type="file" name="image_principale" size="12"/><br><br>
        			<!--<input type="submit" name="ajouter" value="Charger"/><br><br>-->
    
              <label for="file">Entrer des images</label><br>
            <input type="file" id="file" name="image[]" multiple><br><br>
              <!--<input type="submit" name="images" value="Charger"/><br><br>-->
    
              <label for="propriétaire">Propriétaire du bien</label>
              <input autocomplete="false" type="search" id="search" class="form-control">
              <div id="result">
              </div>
            <button>Entrer</button>
          </form>
        </section>
      </div>
    
    <?php
    include 'connexion_bdd.php';
    if(isset($_POST['prix']))   // issu de la page vendre
    {
      $bdd = ouvrirBdd();
      // saisi d'un bien par l'administrateur
      if(isset($_POST['chambres']))
      {
        $req = "INSERT INTO `bien`(type,surface,ville,paysage,but,veranda,quartier,prix,pièces,palliers,chambres,salles_de_bain,wc,chauffage,parking,garage,piscine,mitoyenne,étoile,tables,couvert,chiffre,monnaie_chiffre,climatisation,télévision,lit,café,resto,jeux,monnaie,murs,balcons,appartement,description,image1) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
        $res = $bdd->prepare ($req);
        $res -> execute (array($_POST["type"], $_POST["surface"], $_POST["ville"], $_POST["paysage"], 1, $_POST["veranda"], $_POST["quartier"],$_POST["prix"], $_POST["pieces"], $_POST["palliers"], $_POST["chambres"],
        $_POST["salle_de_bain"], $_POST["wc"], $_POST["chauffage"], $_POST["parking"], $_POST["garage"], $_POST["piscine"], $_POST["mitoyenne"], $_POST["etoile"], $_POST["table"], $_POST["couvert"], $_POST["chiffre"],
        $_POST["monnaie_chiffre"], $_POST["climatiseur"], $_POST["television"], $_POST["lit"], $_POST["cafe"], $_POST["resto"], $_POST["jeux"], $_POST["monnaie"], $_POST["murs"], $_POST["balcon"], $_POST["appartement"], $_POST["description"], file_get_contents($_FILES["image_principale"]["tmp_name"])));
    
    
        // Ajout des plusieurs images
        $i = count($_FILES["image"]["name"]);
        //echo "i = ".$i ;
    
        $id_bien = $bdd->lastInsertId();
        //echo $id_bien;
        for ($a=0; $a < $i; $a++)
        {
          //echo $_FILES["image"]["name"][$a];
          $req = "INSERT INTO `image`(nom_image,taille_image,type_image,lien_image,id_bien) VALUES (?,?,?,?,?)";
          $result = $bdd->prepare ($req);
          $result -> execute (array($_FILES["image"]["name"][$a], $_FILES["image"]["size"][$a],
                    $_FILES["image"]["type"][$a], $_FILES["image"]["tmp_name"][$a], $id_bien));
    
          $res->bindParam(1, $id_bien, PDO::PARAM_STR);
    
          if (isset($_FILES['image']) AND $_FILES['image']['error'] == 0)
          {
              // Testons si le fichier n'est pas trop gros
              if ($_FILES['image']['size'][$a] <= 1000000)
              {
                      // Testons si l'extension est autorisée
                      $infosfichier = pathinfo($_FILES['image']['name'][$a]);
                      $extension_upload = $infosfichier['extension'];
                      $extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png', 'mp4');
                      if (in_array($extension_upload, $extensions_autorisees))
                      {
                              // On peut valider le fichier et le stocker définitivement
                              move_uploaded_file($_FILES['image']['tmp_name'][$a], 'images/' . basename($_FILES['image']['name'][$a]));
                              echo "L'envoi a bien été effectué !";
                      }
                      else
                      {
                        echo "ECHOUE";
                      }
                    }
    
              else
              {
                echo "TROP  LONG";
              }
            }
        }
    
      }
      echo "L'envoi a bien été effectué";
    }
    include 'pied_de_page.php';
    include 'saisie_automatique.php';
    
    if (isset($_GET["search"]) && !empty($_GET["search"])) {
        $search = $_GET["search"];
        $result = [];
        for ($i=0; $i < count($db); $i++) {
            if (strpos($db[$i], $search) !== false) {
                array_push($result, $db[$i]);
            }
        }
        echo json_encode($result);
    }else{
        echo json_encode([]);
    }
    
    ?>
    
    
    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
    	<script src="https://code.jquery.com/jquery.js"></script>
    <!-- Include all compiled plugins (below), or include individual files as needed -->
    	<script src="js/bootstrap.min.js"></script>
    </body>
    </html>
    

    Affichage des images :

    <?php
    include 'entete.php';
    ?>
    <!DOCTYPE html>
    <html lang="fr" dir="ltr">
        <head>
            <title>Acheter</title>
            <meta charset="utf-8"><!--
            <meta name="viewport" content="width=device-width, initial-scale=1">
            <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
            <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
            <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
            <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
            <style>
            /* Make the image fully responsive */
            .carousel-inner img {
                width: 50%;
                height: 50%;
            }
    			</style>-->
        </head>
        <body>
    <?php
        if (isset($_GET['id_bien'])) {
            include 'connexion_bdd.php';
            $bdd = ouvrirBdd();
    
            $req2 = "SELECT nom_image from `image` WHERE id_bien = ?";
            $res2 = $bdd->prepare($req2);
            $res2->execute(array($_GET['id_bien']));
    ?>
    
    							<!-- Carousel fonctionnel de toutes les images d'un bien -->
            <div id="demo" class="carousel slide" data-ride="carousel" data-interval="5000">
                <!-- Indicators -->
                <ul class="carousel-indicators">
                    <li data-target="#demo" data-slide-to="0" class="active"></li>
                    <li data-target="#demo" data-slide-to="1"></li>
                    <li data-target="#demo" data-slide-to="2"></li>
                </ul>
                <!-- The slideshow -->
                <div class="carousel-inner">
    <?php
            $cls = ' active';
            while ($col = $res2->fetch()) {
        ?>
                    <div class="carousel-item<?php echo $cls; ?>">
                        <img style="width:25em" src="./images/<?php echo $col['nom_image']; ?>"/>
                    </div>
    <?php
            $cls = '';
            }
    ?>
                </div>
                <!-- Left and right controls -->
                <a class="carousel-control-prev" href="#demo" data-slide="prev">
                    <span class="carousel-control-prev-icon"></span>
                </a>
                <a class="carousel-control-next" href="#demo" data-slide="next">
                    <span class="carousel-control-next-icon"></span>
                </a>
                </div>                                                                                                                                                        <!--fin de la balise div-->
    <?php
    
            // Préparation de la requête pour la sécu
            $res = $bdd->prepare('SELECT * FROM `bien` WHERE but=1 AND ville = ? AND type = ? AND prix < ? AND id_bien = ?');
            //exécution de la requete
            $res->execute(array($_SESSION['ville'], $_SESSION['type'], $_SESSION['prix'], $_GET['id_bien']));
            while ($ligne = $res->fetch()) {
    ?>
              <table>
                  <tr>
                      <td>Surface : <?php echo $ligne['surface'] ?> m<sup>2</td>
                      <td>Prix de vente : <?php echo $ligne['prix'] ?> €</td>
                      <td>Année d'inauguration/rénnovation : <?php echo $ligne['année'] ?></td>
                  </tr>
                  <tr>
                      <th></th>
                      <th><?php echo $ligne['type'] ?></th>
                  </tr>
                  <tr>
                      <td>Nombre de chambres : <?php echo $ligne['chambres'] ?></td>
                      <td>Nombre de palliers : <?php echo $ligne['palliers'] ?></td>
                  </tr>
                  <tr>
                      <td>Ville :  <?php echo $ligne['ville'] ?></td>
                      <td>Dans le quartier de  <?php echo $ligne['quartier'] ?></td>
                      <td>Avec vue sur <?php echo $ligne['paysage'] ?></td>
                  </tr>
              </table><br>
    
              <?php
              }
              $res->closeCursor();?>
                <a type="button" class="btn btn-success" style="display: inline-block;
          		background-color: #7b38d8;
          		border-radius: 10px;
          		border: 4px double #cccccc;
          		color: #eeeeee;
          		font-size: 20px;
              text-align: center;
          		padding: 10px;
          		width: 150px;
          		cursor: pointer;
          		margin: 4px 0em 4px 80em;" name="button" href="se_connecter.php">Intéréssé ?</a>
              <?php
            }
    else
    {
    echo "Rien n'a été selectionné";
    }
    
    include 'pied_de_page.php';
    ?>
    </body>
    </html>
    



    • Partager sur Facebook
    • Partager sur Twitter
      3 octobre 2021 à 23:05:22

      Bonsoir barscha,

      Plutôt que d'enregistrer le lien temporaire de l'image dans ta base de données, tu devrais définir ton propre chemin :

      $result -> execute (array($_FILES["image"]["name"][$a], $_FILES["image"]["size"][$a],
                      $_FILES["image"]["type"][$a], "lien_image_permanent/".$_FILES["image"]["name"][$a], $id_bien));
       

      D'ailleurs, tu devrais également placer cette insertion de données après toutes les vérifications sur le fichier ; en l'état, tu effectues l'inverse.

      • Partager sur Facebook
      • Partager sur Twitter
        4 octobre 2021 à 19:19:01

        Bonjour,

        L'un des buts de mon site web est que d'autres utilisateurs que moi insèrent des données, dont des images, puis que n'importe qui puisse les visualiser.

        Donc si je rentre mon propre lien ce dernier ne correspondra pas à celui des autres.....

        • Partager sur Facebook
        • Partager sur Twitter
          4 octobre 2021 à 23:29:20

          On est d'accord pour dire que toutes les images uploadées finissent dans le dossier "images/", peu importe que ce soit toi ou les utilisateurs qui le fassent ?

          Si c'est le cas, alors il faut que tu renseignes le lien final dans la base de données au lieu du lien temporaire. Si ces liens ne fonctionnent que sur ton PC, c'est parce que les images que tu mets en ligne se trouvent dans l'un des dossiers de ton navigateur, en local ; et tes utilisateurs auront très certainement le même souci avec les images qu'ils mettront en ligne de leur côté.

          Donc, j'insiste sur le fait de déplacer l'insertion dans la base de données après avoir déplacé le fichier dans le dossier "images" (et de remplacer le lien temporaire par le lien définitif).

          • Partager sur Facebook
          • Partager sur Twitter
            9 octobre 2021 à 21:57:54

            J'ai testé cette solution, mais le résultat est le même....

            Insertion :

            <?php
            include 'entete.php';
            ?>
            <!DOCTYPE html>
            <html lang="fr" dir="ltr">
              <head>
                <meta charset="utf-8">
                <title>Administrateur</title>
              </head>
            
            <body class="container">
              <div class="row">
                <section>
                  <form class="" enctype="multipart/form-data" method="post">
                      <!--<label for="durée">Durée de location : </label>
                      <select name="durée" class="durée">
                        <option value=""></option>
                        <option value="longue">Longue durée</option>
                        <option value="courte">Courte durée</option>
                      </select>
            
                <!-- champ à renseigner juste après le choix d'une longue durée ou courte durée
            
                      <label for="date">A partir du </label>
                      <input type="date" name="date" value="date">
                      <label for="date">Au </label>
                      <input type="date" name="date" value="date"><br>-->
            
            
                      <label for="bien">Type de bien : </label>
                      <select class="type" name="type">
                        <option value=""></option>
                        <option value="appartement">Appartement</option>
                        <option value="maison">Maison</option>
                        <option value="restaurant">Restaurant</option>
                        <option value="hotel">Hôtel</option>
                        <option value="cafe">Café</option>
                        <option value="immeuble">Immeuble</option>
                      </select>
            
                      <label for="surface">Surface (m2) : </label>
                      <input type="text" name="surface" value="" maxlength="7">
                    </select>
                    
                    <label for="appartement">Nombre d'appartements : </label>
                    <input type="text" name="appartement" size=6 value=""  maxlength="7"><br><br>
            
                      <label for="pieces">Nombre de pièces : </label>
                      <input type="text" name="pieces" size=6 value=""  maxlength="7">
            
                      <label for="palliers">Nombre d'étages : </label>
                      <input type="text" name="palliers" size=6 value=""  maxlength="7">
            
                      <label for="balcon">Nombre de balcons : </label>
                      <input type="text" name="balcon" size=6 value=""  maxlength="7">
            
                      <label for="chambres">Nombre de chambres : </label>
                      <input type="text" name="chambres" size=6 value=""  maxlength="7"><br><br>
            
                      <label for="bain">Nombre de salles de bain : </label>
                      <input type="text" name="salle_de_bain" size=6 value=""  maxlength="7">
            
                      <label for="WC">Nombre de WC : </label>
                      <input type="text" name="wc" size=6 value=""  maxlength="7">
            
                      <label for="verandas">Nombre de vérandas : </label>
                      <input type="text" name="veranda" size=6 value=""  maxlength="7"><br><br>
            
                      <label for="chauffage">Type de chauffage : </label>
                      <select class="chauffage" name="chauffage">
                        <option value=""></option>
                        <option value="gaz">Gaz</option>
                        <option value="electrique">Electrique</option>
                        <option value="fioul">Fioul</option>
                      </select>
            
                      <label for="parking">Avec parking : </label>
                      <select class="parking" name="parking">
                        <option value=""></option>
                        <option value="oui">Oui</option>
                        <option value="non">Non</option>
                      </select>
            
                      <label for="garage">Avec garage : </label>
                      <select class="garage" name="garage">
                        <option value=""></option>
                        <option value="oui">Oui</option>
                        <option value="non">Non</option>
                      </select>
            
                      <label for="piscine">Avec piscine : </label>
                      <select class="piscine" name="piscine">
                        <option value=""></option>
                        <option value="oui">Oui</option>
                        <option value="non">Non</option>
                      </select>
            
                      <label for="mitoyenne">Est-elle mitoyenne : </label>
                      <select class="mitoyenne" name="mitoyenne">
                        <option value=""></option>
                        <option value="mitoyenne">Oui</option>
                        <option value="pas_mitoyenne">Non</option>
                      </select><br><br>
            
                      <label for="etoile">Nombre d'étoiles : </label>
                      <input type="text" name="etoile" size=6 value=""  maxlength="7">
            
                      <label for="table">Nombre de tables : </label>
                      <input type="text" name="table" size=6 value=""  maxlength="7">
            
                      <label for="couvert">Nombre de couverts par jour : </label>
                      <input type="text" name="couvert" size=6 value=""  maxlength="7"><br><br>
            
                      <label for="chiffre">Chiffre d'affaire annuel : </label>
                      <input type="text" name="chiffre" size=6 value=""  maxlength="7">
                      <select class="monnaie_chiffre" name="monnaie_chiffre">
                          <option value="euro">€</option>
                          <option value="dollar">$</option>
                          <option value="TL">TL</option>
                      </select>
            
                      <label for="climatiseur">Est-il climatisé : </label>
                      <select class="climatiseur" name="climatiseur">
                        <option value=""></option>
                        <option value="climatisé">Oui</option>
                        <option value="non_climatisé">Non</option>
                      </select>
            
                      <label for="television">Télévision dans les chambres : </label>
                      <select class="television" name="television">
                        <option value=""></option>
                        <option value="oui">Oui</option>
                        <option value="non">Non</option>
                      </select>
            
                      <label for="lit">Nombre de lits : </label>
                      <input type="text" name="lit" size=6 value=""  maxlength="7"><br><br>
            
                      <label for="cafe">Avec café : </label>
                      <select class="cafe" name="cafe">
                        <option value=""></option>
                        <option value="oui">Oui</option>
                        <option value="non">Non</option>
                      </select>
            
                      <label for="resto">Avec restaurant: </label>
                      <select class="resto" name="resto">
                        <option value=""></option>
                        <option value="oui">Oui</option>
                        <option value="non">Non</option>
                      </select>
            
                      <label for="jeux">Avec salle de jeux : </label>
                      <select class="jeux" name="jeux">
                        <option value=""></option>
                        <option value="oui">Oui</option>
                        <option value="non">Non</option>
                      </select><br><br>
            
                      <label for="ville">Dans quelle ville ? </label>
                      <input type="text" name="ville" value="" maxlength="10">
            
                      <label for="quartier">Dans quel quartier ? </label>
                      <input type="text" name="quartier" value="" maxlength="30"><br>
            
                      <label for="budget">Prix : </label>
                      <input type="text" name="prix" value="">
                      <select class="monnaie" name="monnaie">
                          <option value="euro">€</option>
                          <option value="dollar">$</option>
                          <option value="TL">TL</option>
                      </select>
            
                      <label for="murs">Avec les murs : </label>
                      <select class="murs" name="murs">
                        <option value=""></option>
                        <option value="oui">Oui</option>
                        <option value="non">Non</option>
                      </select><br><br>
            
                      <label for="paysage">Paysage : </label>
                      <select class="paysage" name="paysage">
                        <option value=""></option>
                        <option value="mer">Mer/Plage</option>
                        <option value="montagne">Montagne</option>
                        <option value="centre-ville">Centre-ville</option>
                        <option value="campagne">Campagne</option>
                      </select><br><br>
                      
                      <label for="description : ">Description : </label><br>
                      <textarea name="description" id="description" rows="10" cols="50"></textarea><br><br><br>
            
                      <!-- <input type="hidden" name="MAX_FILE_SIZE" value="300000" />  -->
                      <label for="file">Image principale : </label>
                      <input type="file" name="image_principale" size="12"/><br><br>
                			<!--<input type="submit" name="ajouter" value="Charger"/><br><br>-->
            
                      <label for="file">Entrer des images</label><br>
                    <input type="file" id="file" name="image[]" multiple><br><br>
                      <!--<input type="submit" name="images" value="Charger"/><br><br>-->
            
                      <label for="propriétaire">Propriétaire du bien</label>
                      <input autocomplete="false" type="search" id="search" class="form-control">
                      <div id="result">
                      </div>
                    <button>Entrer</button>
                  </form>
                </section>
              </div>
            
            <?php
            include 'connexion_bdd.php';
            if(isset($_POST['prix']))   // issu de la page vendre
            {
              $bdd = ouvrirBdd();
              // saisi d'un bien par l'administrateur
              if(isset($_POST['chambres']))
              {
                $req = "INSERT INTO `bien`(type,surface,ville,paysage,but,veranda,quartier,prix,pièces,palliers,chambres,salles_de_bain,wc,chauffage,parking,garage,piscine,mitoyenne,étoile,tables,couvert,chiffre,monnaie_chiffre,climatisation,télévision,lit,café,resto,jeux,monnaie,murs,balcons,appartement,description,image1) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
                $res = $bdd->prepare ($req);
                $res -> execute (array($_POST["type"], $_POST["surface"], $_POST["ville"], $_POST["paysage"], 1, $_POST["veranda"], $_POST["quartier"],$_POST["prix"], $_POST["pieces"], $_POST["palliers"], $_POST["chambres"],
                $_POST["salle_de_bain"], $_POST["wc"], $_POST["chauffage"], $_POST["parking"], $_POST["garage"], $_POST["piscine"], $_POST["mitoyenne"], $_POST["etoile"], $_POST["table"], $_POST["couvert"], $_POST["chiffre"],
                $_POST["monnaie_chiffre"], $_POST["climatiseur"], $_POST["television"], $_POST["lit"], $_POST["cafe"], $_POST["resto"], $_POST["jeux"], $_POST["monnaie"], $_POST["murs"], $_POST["balcon"], $_POST["appartement"], $_POST["description"], file_get_contents($_FILES["image_principale"]["tmp_name"])));
            
            
                // Ajout des plusieurs images
                $i = count($_FILES["image"]["name"]);
                //echo "i = ".$i ;
            
                $id_bien = $bdd->lastInsertId();
                //echo $id_bien;
                for ($a=0; $a < $i; $a++)
                {
                  //echo $_FILES["image"]["name"][$a];
                  $req = "INSERT INTO `image`(nom_image,taille_image,type_image,lien_image,bin_image,id_bien) VALUES (?,?,?,?,?,?)";
                  $result = $bdd->prepare ($req);
                  $result -> execute (array("/images/".$_FILES["image"]["name"][$a], $_FILES["image"]["size"][$a],
                            $_FILES["image"]["type"][$a], $_FILES["image"]["tmp_name"][$a], file_get_contents($_FILES["image"]["tmp_name"][$a]), $id_bien));
            
                  $res->bindParam(1, $id_bien, PDO::PARAM_STR);
            
                  if (isset($_FILES['image']) AND $_FILES['image']['error'] == 0)
                  {
                      // Testons si le fichier n'est pas trop gros
                      if ($_FILES['image']['size'][$a] <= 1000000)
                      {
                              // Testons si l'extension est autorisée
                              $infosfichier = pathinfo($_FILES['image']['name'][$a]);
                              $extension_upload = $infosfichier['extension'];
                              $extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png', 'mp4');
                              if (in_array($extension_upload, $extensions_autorisees))
                              {
                                      // On peut valider le fichier et le stocker définitivement
                                      move_uploaded_file($_FILES['image']['tmp_name'][$a], 'images/' . basename($_FILES['image']['name'][$a]));
                                      echo "L'envoi a bien été effectué !";
                              }
                              else
                              {
                                echo "ECHOUE";
                              }
                            }
            
                      else
                      {
                        echo "TROP  LONG";
                      }
                    }
                }
            
              }
              echo "L'envoi a bien été effectué";
            }
            include 'pied_de_page.php';
            include 'saisie_automatique.php';
            
            if (isset($_GET["search"]) && !empty($_GET["search"])) {
                $search = $_GET["search"];
                $result = [];
                for ($i=0; $i < count($db); $i++) {
                    if (strpos($db[$i], $search) !== false) {
                        array_push($result, $db[$i]);
                    }
                }
                echo json_encode($result);
            }else{
                echo json_encode([]);
            }
            
            ?>
            
            
            <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
            	<script src="https://code.jquery.com/jquery.js"></script>
            <!-- Include all compiled plugins (below), or include individual files as needed -->
            	<script src="js/bootstrap.min.js"></script>
            </body>
            </html>
            



            Affichage :

            <?php
            include 'entete.php';
            ?>
            <!DOCTYPE html>
            <html lang="fr" dir="ltr">
                <head>
                    <title>Acheter</title>
                    <meta charset="utf-8"><!--
                    <meta name="viewport" content="width=device-width, initial-scale=1">
                    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
                    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
                    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
                    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
                    <style>
                    /* Make the image fully responsive */
                    .carousel-inner img {
                        width: 50%;
                        height: 50%;
                    }
            			</style>-->
                </head>
                <body>
            <?php
                if (isset($_GET['id_bien'])) {
                    include 'connexion_bdd.php';
                    $bdd = ouvrirBdd();
            
                    $req2 = "SELECT nom_image from `image` WHERE id_bien = ?";
                    $res2 = $bdd->prepare($req2);
                    $res2->execute(array($_GET['id_bien']));
            ?>
            
            							<!-- Carousel fonctionnel de toutes les images d'un bien -->
                    <div id="demo" class="carousel slide" data-ride="carousel" data-interval="5000">
                        <!-- Indicators -->
                        <ul class="carousel-indicators">
                            <li data-target="#demo" data-slide-to="0" class="active"></li>
                            <li data-target="#demo" data-slide-to="1"></li>
                            <li data-target="#demo" data-slide-to="2"></li>
                        </ul>
                        <!-- The slideshow -->
                        <div class="carousel-inner">
            <?php
                    $cls = ' active';
                    while ($col = $res2->fetch()) {
                ?>
                            <div class="carousel-item<?php echo $cls; ?>">
                                <img style="width:25em" src=".<?php echo $col['nom_image']; ?>"/>
                            </div>
            <?php
                    $cls = '';
                    }
            ?>
                        </div>
                        <!-- Left and right controls -->
                        <a class="carousel-control-prev" href="#demo" data-slide="prev">
                            <span class="carousel-control-prev-icon"></span>
                        </a>
                        <a class="carousel-control-next" href="#demo" data-slide="next">
                            <span class="carousel-control-next-icon"></span>
                        </a>
                        </div>                                                                                                                                                        <!--fin de la balise div-->
            <?php
            
                    // Préparation de la requête pour la sécu
                    $res = $bdd->prepare('SELECT * FROM `bien` WHERE but=1 AND ville = ? AND type = ? AND prix < ? AND id_bien = ?');
                    //exécution de la requete
                    $res->execute(array($_SESSION['ville'], $_SESSION['type'], $_SESSION['prix'], $_GET['id_bien']));
                    while ($ligne = $res->fetch()) {
            ?>
                      <table>
                          <tr>
                              <td>Surface : <?php echo $ligne['surface'] ?> m<sup>2</td>
                              <td>Prix de vente : <?php echo $ligne['prix'] ?> €</td>
                              <td>Année d'inauguration/rénnovation : <?php echo $ligne['année'] ?></td>
                          </tr>
                          <tr>
                              <th></th>
                              <th><?php echo $ligne['type'] ?></th>
                          </tr>
                          <tr>
                              <td>Nombre de chambres : <?php echo $ligne['chambres'] ?></td>
                              <td>Nombre de palliers : <?php echo $ligne['palliers'] ?></td>
                          </tr>
                          <tr>
                              <td>Ville :  <?php echo $ligne['ville'] ?></td>
                              <td>Dans le quartier de  <?php echo $ligne['quartier'] ?></td>
                              <td>Avec vue sur <?php echo $ligne['paysage'] ?></td>
                          </tr>
                      </table><br> <?php
                      
                      echo $ligne['sdescription'];
            
                      }
                      $res->closeCursor();?>
                        <a type="button" class="btn btn-success" style="display: inline-block;
                  		background-color: #7b38d8;
                  		border-radius: 10px;
                  		border: 4px double #cccccc;
                  		color: #eeeeee;
                  		font-size: 20px;
                      text-align: center;
                  		padding: 10px;
                  		width: 150px;
                  		cursor: pointer;
                  		margin: 4px 0em 4px 80em;" name="button" href="se_connecter.php">Intéréssé ?</a>
                      <?php
                    }
            else
            {
            echo "Rien n'a été selectionné";
            }
            
            include 'pied_de_page.php';
            ?>
            </body>
            </html>
            



            • Partager sur Facebook
            • Partager sur Twitter
              9 octobre 2021 à 22:57:00

              Bonsoir pour un projet que j'avais eu a faire j'avais fait ceci que je reutilises pour l'upload d'image alors vous pouvez l'utiliser et le modifier un peu.

              Bon j'ai reelment fait un copier coller du code que j'avais fait mais vous pouvez en tirer le necessaire

              generecode est une fonction qui genere une chaine aleatoire avec le nombre de caractere qu on lui donne de cette maniere tu cree un nom pour chaque image

              //ici les extension autorisees
              			$extensions = array("image/jpeg","image/jpg","image/png");
              
              
              
              				$fileSize = $_FILES["annoncePicture"]["size"] / 1000;
              				$fileTmpName = $_FILES["annoncePicture"]["tmp_name"];
              				$fileExtension = pathinfo($_FILES["annoncePicture"]["name"], PATHINFO_EXTENSION);
              				$fileNewName = genereCode(40);
              				
              				$destinationPath = "dossierAnnonces/{$fileNewName}.{$fileExtension}";
              
              				while(file_exists($destinationPath) )
              				{
              					$fileNewName = genereCode(40);
              					$destinationPath = "dossierAnnonces/{$fileNewName}.{$fileExtension}";
              				}
              
              				if($fileSize <= 300)
              				{	
              
              					if(!move_uploaded_file($fileTmpName, $destinationPath) )
              					{
              						redirectTo("account.php?addAnnonce&error");
              					}
              
              				}
              				else
              				{
              
              
              					$fileExtension = pathinfo($_FILES["annoncePicture"]["name"], PATHINFO_EXTENSION);
              					$fileNewName = genereCode(40);
              					$destinationPath = "dossierAnnonces/{$fileNewName}.{$fileExtension}";
              					$source = $_FILES["annoncePicture"]["tmp_name"];
              					$quality = 60;
              
              					while(file_exists($destinationPath) )
              					{
              						$fileNewName = genereCode(40);
              						$destinationPath = "dossierAnnonces/{$fileNewName}.{$fileExtension}";
              					}
              
              
              				    $imgInfo = getimagesize($source); 
              				    $mime = $imgInfo['mime']; 
              
              				    switch($mime){ 
              				        case 'image/jpeg': 
              				            $image = imagecreatefromjpeg($source); 
              				        break; 
              
              				        case 'image/png': 
              				            $image = imagecreatefrompng($source); 
              				        break; 
              
              				        default: 
              				            $image = imagecreatefromjpeg($source); 
              						break;
              				    } 
              				     
              
              				    if(!imagejpeg($image, $destinationPath, $quality) )
              				    {
              				    	redirectTo("account.php?addAnnonce&error");
              				    }
              
              				}
              
              				//creation de l'annonce
              
              				$lastId = $path->query("select id from annonces order by id desc limit 1");
              				$lastId = $lastId->fetch();
              
              				if(empty($lastId) )
              				{
              					$lastId = 1;
              				}
              				else
              				{
              					$lastId = $lastId[0]+1;
              				}
              
              				$emailAdminEnCharge = $path->query("select email from admins order by rand() limit 1");
              				$emailAdminEnCharge = $emailAdminEnCharge->fetch();
              				$emailAdminEnCharge = $emailAdminEnCharge[0];
              
              				$createAnnonce = $path->prepare("insert into annonces(id,emailUser,emailAdminEnCharge,etatAnnonce,disponibilite,titreAnnonce,descriptionAnnonce,prixAnnonce,imageAnnonce,typeAnnonce) values(?,?,?,?,?,?,?,?,?,?)");
              
              				if(!$createAnnonce->execute(array($lastId,$_SESSION["account"]["email"],$emailAdminEnCharge,0,1,$annonceTitle,$annonceDescription,$annonceCost,$destinationPath,$annonceType) ) )
              				{
              					unlink($destinationPath);
              
              					redirectTo("account.php?error");
              				}
              				else
              				{
              					redirectTo("account.php");
              				}
              



              -
              Edité par zvheer 9 octobre 2021 à 23:01:38

              • Partager sur Facebook
              • Partager sur Twitter

              yasakani no magatama

                12 octobre 2021 à 18:49:28

                barscha a écrit:

                J'ai testé cette solution, mais le résultat est le même...

                Le résultat est le même car ton code source n'a pas été corrigé (si je me fis à ce que tu as reposté). Voici une version plus correcte (côté insertion) :

                for ($a=0; $a < $i; $a++) {
                  if(isset($_FILES['image']) && $_FILES['image']['error'] == 0) {
                    if ($_FILES['image']['size'][$a] <= 1000000) { // Testons si le fichier n'est pas trop gros
                      if (in_array(pathinfo($_FILES['image']['name'][$a])['extension'],array('jpg', 'jpeg', 'gif', 'png', 'mp4'))) { // Testons si l'extension est autorisée
                        // On peut valider le fichier et le stocker définitivement
                        move_uploaded_file($_FILES['image']['tmp_name'][$a], 'images/' . basename($_FILES['image']['name'][$a]));
                        
                        $req = "INSERT INTO `image`(nom_image,taille_image,type_image,lien_image,bin_image,id_bien) VALUES (?,?,?,?,?,?)";
                        $result = $bdd->prepare($req);
                        $result->execute(array($_FILES["image"]["name"][$a], $_FILES["image"]["size"][$a],$_FILES["image"]["type"][$a],"images/".$_FILES["image"]["name"][$a], file_get_contents($_FILES["image"]["tmp_name"][$a]), $id_bien));       
                        
                        echo "L'envoi a bien été effectué !";
                      }
                      else
                        echo "ECHOUE";
                    }
                    else
                        echo "TROP  LONG";
                  }
                }
                Côté affichage, tu appelles le lien de l'image uploadée plutôt que son nom (qui ne devrait pas être un lien, selon ta version).

                -
                Edité par Omiganox 12 octobre 2021 à 18:52:41

                • Partager sur Facebook
                • Partager sur Twitter

                [PDO] Affichage de photos

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown