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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2021
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Décembre 2021
    Messages : 81
    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 confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 671
    Détails du profil
    Informations personnelles :
    Localisation : France

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

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 325
    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); 
    }

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

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

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    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 confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2021
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Décembre 2021
    Messages : 81
    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 : 58
    Localisation : France, Pas de Calais (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    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';

+ 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