definir une variable avec plusieurs choix d'images

Yadutonus
Invité n'ayant pas de compte PHPfrance

02 sept. 2010, 18:06

Bonjour, je suis tres debutant en php. Et je me casse la tête pour definir une variable un peu complexe pour moi.
Voici la definition d'une variable que j'utilise pour appeler une image


$image="../images_catalogue/img".$reference.".jpg";
if (file_exists($image))
{
$imageOK=$image;
$size = @GetImageSize($imageOK);
$lar = $size[0]+35;
$hau = $size[1]+60;
$affImage="<img src='$imageOK' width='140'>";
}
else
{
$imageOK="";
$lar="";
$hau="";
$affImage="";
}


mais aujourd'hui mon logiciel de base de données a changé et les images générées s'appellent maintenant (chemin compris) :

"../images_catalogue/".$reference."_1.jpg"

j'aimerais faire coéxister dans la definition de la variable les deux formes. En gros si il ne trouve pas de fichier

"../images_catalogue/img".$reference.".jpg"

qu'il cherche


"../images_catalogue/".$reference."_1.jpg"
sinon comme d'hab il affiche rien

merci de votre aide !

Eléphanteau du PHP | 13 Messages

02 sept. 2010, 18:15

Salut,

tu peux essayer un truc dans le genre ...
$image = "../images_catalogue/img".$reference.".jpg";
$imageNew = "../images_catalogue/img".$reference."_1.jpg";

$find = false;
$imageOK="";
$lar="";
$hau="";
$affImage="";

if( file_exists($image) ) {
     $imageOK = $image;
     $find = true;
} elseif( file_exists($imageNew) ) {
     $imageOK = $imageNew;
     $find = true;
}

if( $find )  {
     $size = @GetImageSize($imageOK);
     $lar = $size[0]+35;
     $hau = $size[1]+60;
     $affImage="<img src='$imageOK' width='140'>";
}
http://www.ilbee.net/
Créateur de solution Internet

yadutonus
Invité n'ayant pas de compte PHPfrance

02 sept. 2010, 18:32

merci ça marche tres bien !

ViPHP
AB
ViPHP | 5818 Messages

02 sept. 2010, 20:39

Pour la gloire, une variante en utilisant la fonction glob (peut être légèrement plus performante puisque n'utilise pas file_exists()) :
 
$reference_1 = $reference.'_1';
$chemin = '../images_catalogue/img';
$extension = '.jpg';
$affImage = null;
$lar = null;
$hau = null;

$masque = $chemin.'{'.$reference.','.$reference_1.'}'.$extension;
					 
$tab_image = glob($masque,GLOB_BRACE);
	 
if (is_array($tab_image) && count($tab_image) > 0) 

{
	natsort($tab_image);
	$fichier = array_pop($tab_image); // prend le dernier élément du tableau

	 if ($size = @getimagesize($fichier))
	 {
		 $lar = $size[0]+35;
		 $hau = $size[1]+60;
		 $affImage = '<img src = "'.$fichier.'" width = "'.$size[0].'" height = "'.$size[1].'" />';	
	 }
}

//affichage
if (isset($affImage)) echo $affImage;