File_exists() Ne fonctionne pas

Résolu
abisko -  
 abisko -
Bonjour,

J'essais de texter l'existence de la photo de profil des membres de mon site avant de les afficher; cependant malgré un code qui me semble propre, file_exists() ne fonctionne pas correctement et retourne toujours false, et default.jpg est toujours affiché! Pourtant les images existent belle et bien sur le chemin indiqué.

voici mon code :

function DisplayAvatarImage( $memberType, $id_member ){

      $filename ='images/avatars/'.$memberType.$id_member.'.jpg';

       if ( !file_exists($filename) ) { 
             $filename ='images/avatars/default.jpg';
          }
        
    echo '<img class="col rounded p-0" src="'.$filename.'">';
}

while (  $resultat = $reponse->fetch() ) {
       //some codes.....

  DisplayAvatarImage( $resultat['memberType'], $resultat['id_member'] );

         //some codes.....
}


Les images sont sous la forme pm3.jpg avec "pm" = $memberType et "3" = $id_member.

Merci beaucoup

2 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour,
    tu n'utilises pas correctement file_exists().
    le chemin que tu donnes n'est pas l'endroit précis où se trouve le fichier sur le disque de l'ordinateur.
    0
    1. abisko
       
      ah bon?
      Pourtant lorsque je n'effectue pas de teste et affiche directement les image avec le chemin "$filename"; celles qui existent s'affiche bien correctement!!!

      Et plus encore, j'ai déjà utilisé ce même chemin pour d'autre image en testant avec file_exists() et tout c'est bien passé!!
      0
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      où se trouve la page php sur l'ordi?
      où se trouvent les images?
      0
  2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour,
    Essaye de mettre un realpath sur le chemin vers ton image
    https://www.php.net/manual/fr/function.realpath.php

    Et regarde si ça retourne bien le vrai chemin
    0
    1. abisko
       
      Oup.... Merci à tous!!! j'ai vu où se trouvais le problème grâce à vos suggestions.

      En effet, j'effectuais mon test avec file_exists() depuis un autre fichier php via Ajax et non sur mon fichier index. Il me fallait donc ajouter "../" au début du chemin pour que le test fonctionne avec file_exists() depuis ajax.

      Voici le code final qui fonctionne bien :

      function DisplayAvatarImage($memberType, $id_member ){
      
      		$filename ='../images/avatars/'.$memberType.$id_member.'.jpg';
      
      		if ( !file_exists($filename) ) {	
      					$filename ='images/avatars/default.jpg';
      		}else{
      				$filename ='images/avatars/'.$memberType.$id_member.'.jpg';
      		}
      	
      		echo '<img class="col rounded p-0" src="'.$filename.'">';
      }
      
      
      while (  $resultat = $reponse->fetch() ) {
             //some codes.....
      
              DisplayAvatarImage( $resultat['memberType'], $resultat['id_member'] );
      
               //some codes.....
      }
      
      


      Encore Merci!!!!
      0