IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Ajouter une image par défaut PHP


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2021
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2021
    Messages : 81
    Points : 49
    Points
    49
    Par défaut Ajouter une image par défaut PHP
    Bonjour, je cherche à ajouter une image par défaut, dans le cas où il n' y aurait pas une créée par un utilisateur.
    Voici ce que j'ai fait, si quelqu'un peut me guider, ç serait gentil :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function savePhoto($id_annonce,$file,$location){
     
        if(empty($file)){
        $defaut= "<img src='no_image.png' width =25px; height= 25px;/>";
          return $defaut;
        }
        $photo = $file['name'];
        $photo_tmp = $file['tmp_name'];
        if(move_uploaded_file($photo_tmp,$location.$photo)){
           return insertPhoto($id_annonce,$location.$photo); 
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    function insertPhoto($id_annonce,$photo){
        global $bdd;
        $sql= "INSERT INTO images_annonces(id_annonce,filepath) VALUES(?,?)"; 
        $datas= array($id_annonce,$photo);
         //Execution de la requete
        try{
        //Execution pour la deuxième table
          $requete2 = $bdd -> prepare($sql) ;
          return $requete2->execute($datas) ;
        }catch(Exception $e){
            // en cas d'erreur :
            echo " Erreur ! ".$e->getMessage();
            echo " Les datas : " ; 
            print_r($datas);
        }      
    }
     
    $img1 = ($_FILES['img1']);
     
    if(!empty($id_annonce)){
    savePhoto($id_annonce,$img1,$location);
    //suite du code

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    à quel endroit du code avez-vous un souci ?

  3. #3
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 101
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 101
    Points : 8 211
    Points
    8 211
    Billets dans le blog
    17
    Par défaut
    J'comprends pas bien savePhoto()... Un coup elle retourne un <img>, un autre le résultat de insertPhoto() (résultat d'une requête)

    Il faudrait plutôt faire quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function savePhoto($id_annonce, $file, $location)
    {
        if (empty($file)) {
            $photo = 'no_image.png';
        } else {
            $photo = $file['name'];
            $photo_tmp = $file['tmp_name'];
            move_uploaded_file($photo_tmp, $location . $photo);
        }
        return insertPhoto($id_annonce, $location . $photo); 
    }
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  4. #4
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Points : 1 280
    Points
    1 280
    Par défaut
    Bonjour,

    Ce n'est pas au moment de l'upload qu'on met une image par défaut.
    Elle n'a pas besoin d'être en bdd.

    C'est au moment de l'affichage.

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2021
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2021
    Messages : 81
    Points : 49
    Points
    49
    Par défaut Afficher une image par défaut en PHP
    Bonjour, merci pour vos réponses.
    Mon image par défaut n'est pas en bdd, mais dans le dossier du projet. Si c'est au moment de l'affichage qu'il faut l'afficher, voici donc ma fonction afficherAnnonce pour me dire ce qu'il faut faire. Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    function afficherAnnonce(){
        global $bdd;
        $res = [];
       $sql=' SELECT  A.*
       ,C.*
       ,I.*
    FROM annonces A
    LEFT JOIN categories C ON C.id = A.id_categorie
    INNER JOIN images_annonces I ON A.id= I.id_annonce
    ORDER BY created_date DESC';
     
     
        try{
          $req = $bdd->prepare($sql);
          $req->execute();
          $data = $req->fetchAll(PDO::FETCH_ASSOC);
          //on reconstruit un array mieux organisé pour avoir les photos
     
          foreach($data as $R){
            if(!isset($res[$R['id']])){
             $res[$R['id']] = $R;
             unset($res[$R['id']]['filepath']);
            }
             $res[$R['id']]['images'][] = $R['filepath'];                                               
          }
     
        }catch(Exception $e){
            echo "Erreur dans la requête " . $sql;
        }
     // le temps des tests pour voir le résultat
        return $res;
     
      }
    Et dans la page où s'affiche l'annonce:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <?php foreach($anouncement as $anounce){
      echo'
      <div class="annoncepubs">';
     
     
     
        $images = !empty($anounce['images']) ? $anounce['images'] : NULL;
        if($images){
          //boucle sur les images
          echo'<div class="container">';
          echo ' <div class="slider" >';
          foreach( $images as $img ){
     
            echo '<img class ="active"
            style="width:90px; height:90px;"
             src="'.$img.'">';
              }
         echo "</div>";

  6. #6
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Points : 1 280
    Points
    1 280
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
             $res[$R['id']]['images'][] = ( !empty($R['filepath']) )? $R['filepath'] : 'xxxxxxxxxxx/no_image.png';
    xxxxxxxxxxx est le "dossier du projet"... mais à ce niveau, il me semble qu'il n'est pas connu

    LA BONNE MÉTHODE :

    1- la TABLE SQL : séparer l'URL en 2 colonnes :
    • rep_image
    • nom_image

    2- à l'upload
    • image ou pas, on peut insérer le nom de dossier ($location) dans rep_image
      il faut modifier aussi insertPhoto($id_annonce, $location, $photo) // -> 3 paramètres

    3- à l'affichage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
             $res[$R['id']]['images'][] = ( !empty($R['nom_image']) )? $R['rep_image'].$R['nom_image'] : $R['rep_image'].'no_image.png';

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2021
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2021
    Messages : 81
    Points : 49
    Points
    49
    Par défaut Défilement d'images en PHP
    Salut Jreaux, en suivant tes instructions et en gardant la première méthode j'ai fait ainsi (voir code), mais l'image par défaut ne s'affiche pas.
    Le dossier c'est PROJETSITE, là où se trouve toutes les pages PHP. J'ai beau enlevé le nom du dossier pour laisser 'no_image.png', et je l'ai remis à la fin pour voir, mais pas d'image par défaut.
    Notre fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    function afficherAnnonce(){
        global $bdd;
        $res = [];
       $sql=' SELECT  A.*
       ,C.*
       ,I.*
    FROM annonces A
    LEFT JOIN categories C ON C.id = A.id_categorie
    INNER JOIN images_annonces I ON A.id= I.id_annonce
    ORDER BY created_date DESC';
     
     
        try{
          $req = $bdd->prepare($sql);
          $req->execute();
          $data = $req->fetchAll(PDO::FETCH_ASSOC);
          //on reconstruit un array mieux organisé pour avoir les photos
     
          foreach($data as $R){
            if(!isset($res[$R['id']])){
             $res[$R['id']] = $R;
             unset($res[$R['id']]['filepath']);
            }
            $res[$R['id']]['images'][] = ( !empty($R['filepath']) )? $R['filepath'] : 'PROJETSITE/no_image.png';                                             
          }
     
        }catch(Exception $e){
            echo "Erreur dans la requête " . $sql;
        }
     // le temps des tests pour voir le résultat
        return $res;
     
      }
    La page d'affichage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?php foreach($anouncement as $anounce){
      echo'
      <div class="annoncepubs">';
     
     
     
        $images = !empty($anounce['images']) ? $anounce['images'] : 'PROJETSITE/no_image.png';
        if($images){
          //boucle sur les images
          echo'<div class="container">';
          echo ' <div class="slider" >';
          foreach( $images as $img ){
     
            echo '<img class ="active"
            style="width:90px; height:90px;"
             src="'.$img.'">';
              }
     
      }

  8. #8
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Points : 1 280
    Points
    1 280
    Par défaut
    Regarde ce qui s'affiche dans le code HTML généré -> "Afficher la source"

  9. #9
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2021
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2021
    Messages : 81
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Regarde ce qui s'affiche dans le code HTML généré -> "Afficher la source"
    J'ai même fait de nouvelles annonces sans images, mais elles ne s'affichent pas. Uniquement les annonces contenant des images s'affichent dans le code source

  10. #10
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Points : 1 280
    Points
    1 280
    Par défaut
    Ton code n'est pas correct :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?php foreach($anouncement as $anounce){
      echo'
      <div class="annoncepubs">';
     
        $images = !empty($anounce['images']) ? $anounce['images'] : []; // array
     
        if( !empty($images) )
        {
          //boucle sur les images
          echo'<div class="container">';
          echo ' <div class="slider" >';
          foreach( $images as $img )
          {
     
            if( empty($img) ){ $img = 'PROJETSITE/no_image.png'; }
     
            echo '<img class ="active" style="width:90px; height:90px;" src="'.$img.'">';
          }
        }

  11. #11
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2021
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2021
    Messages : 81
    Points : 49
    Points
    49
    Par défaut
    Je me demande si ce grain de sable dans les rouages ne vient pas de notre requête, car on a 4 tables: images_annonces, categories, membres et annonces. La tables membres étant indépendante de toutes les autres.



    Le code complet que j'ai utilisé pour essayer si l'image par défaut était ajoutée
    la fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    function afficherAnnonce(){
        global $bdd;
        $res = [];
       $sql=' SELECT  A.*
       ,C.*
       ,I.*
    FROM annonces A
    LEFT JOIN categories C ON C.id = A.id_categorie
    INNER JOIN images_annonces I ON A.id= I.id_annonce
    ORDER BY created_date DESC';
     
     
        try{
          $req = $bdd->prepare($sql);
          $req->execute();
          $data = $req->fetchAll(PDO::FETCH_ASSOC);
          //on reconstruit un array mieux organisé pour avoir les photos
     
          foreach($data as $R){
            if(!isset($res[$R['id']])){
             $res[$R['id']] = $R;
             unset($res[$R['id']]['filepath']);
            }
            $res[$R['id']]['images'][] = ( !empty($R['filepath']) )? $R['filepath'] : 'Projetsite/no_image.png';                                             
          }
     
        }catch(Exception $e){
            echo "Erreur dans la requête " . $sql;
        }
     // le temps des tests pour voir le résultat
        return $res;
     
      }
    page d'affichage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    <?php foreach($anouncement as $anounce){
      echo'
      <div class="annoncepubs">';
     
        $images = !empty($anounce['images']) ? $anounce['images'] : []; // array
     
        if(!empty($images) )
        {
          //boucle sur les images
          echo'<div class="container">';
          echo ' <div class="slider" >';
          foreach( $images as $img )
          {
     
            if(empty($img) ){ $img = 'Projetsite/no_image.png'; }
     
            echo '<img class ="active" style="width:90px; height:90px;" src="'.$img.'">';
              }
         echo "</div>";
     
         echo ' <div class="cont-btn" >';
         echo ' <div class="btn-nav left" > <'; echo "</div>";
         echo ' <div class="btn-nav right" > >';echo "</div>";
         echo "</div>";
     
        }
     
     
        echo "</div>";
    et dans le formulaire les images sont ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <label for= "image"><?php echo $lang['photo1'];?></label>
                    <input type="file" id="img1" name="img1" accept="image/png, image/jpeg, image/jpg" > <br><br>
                    <label for= "image"><?php echo $lang['photo2'];?></label> 
                    <input type="file" id="img2" name="img2" accept="image/png, image/jpeg, image/jpg"><br><br>
                    <label for= "image"><?php echo $lang['photo3'];?></label>
                    <input type="file" id="img3" name="img3" accept="image/png, image/jpeg, image/jpg"> <br><br>
                    <label for= "image"><?php echo $lang['photo4'];?></label>
                    <input type="file" id="img4" name="img4" accept="image/png, image/jpeg, image/jpg"> <br><br>
                    <label for= "image"><?php echo $lang['photo5'];?></label>
                    <input type="file" id="img5" name="img5" accept="image/png, image/jpeg, image/jpg"> <br><br>

  12. #12
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2021
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2021
    Messages : 81
    Points : 49
    Points
    49
    Par défaut Post qui se répète en fonction des images
    Citation Envoyé par jreaux62 Voir le message
    Ton code n'est pas correct :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?php foreach($anouncement as $anounce){
      echo'
      <div class="annoncepubs">';
     
        $images = !empty($anounce['images']) ? $anounce['images'] : []; // array
     
        if( !empty($images) )
        {
          //boucle sur les images
          echo'<div class="container">';
          echo ' <div class="slider" >';
          foreach( $images as $img )
          {
     
            if( empty($img) ){ $img = 'PROJETSITE/no_image.png'; }
     
            echo '<img class ="active" style="width:90px; height:90px;" src="'.$img.'">';
          }
        }
    Ton code marche bien jreaux. Comme je le pensais il s'agissait de ma requête sql Inner join images_annonces, j'ai dû modifié pour que ça marche. Merci à toi pour ton aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ajouter une valeur par défaut à un champ
    Par mougeole dans le forum Doctrine2
    Réponses: 3
    Dernier message: 19/05/2017, 15h40
  2. Afficher une image par défaut lorsque une image ne s'affiche pas
    Par ne2sbeal dans le forum Général Conception Web
    Réponses: 4
    Dernier message: 10/10/2011, 10h42
  3. afficher une image par défaut dans une div
    Par attarias dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 23/12/2010, 16h01
  4. [PHP-JS] Ajouter une image
    Par eliotness1974 dans le forum Langage
    Réponses: 3
    Dernier message: 14/04/2007, 09h24
  5. [MySQL] Comment afficher une image par défaut ?
    Par clicman dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 12/10/2005, 08h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo