8731 sujets

Développement web côté serveur, CMS

Bonjour,

J'ai un problème que je n'arrive pas à résoudre.

Pour faire une galerie photo, j'utilise PHP pour lire le dossier contenant mes photos :




$dir='albums/photos/';
$dossier=opendir($dir);
while($fichier=readdir($dossier)){
$berk=array('.', '..');
if(!in_array($fichier,$berk)){
$lien=$dir.$fichier;
print '<li>';
if(file_exists($lien)){
print '<a rel="shadowbox" href="'.$lien.'"><img src="'.$lien.'" alt="" /></a>';
echo "</li>\n"; 
}
}
}



Tout s'affiche correctement mais évidemment le alt de chaque image n'est pas rempli.
J'ai testé le code suivant pour remplir les alt de chacune des images :


$alt=array('alt1','alt2','alt3','alt4');

foreach ($alt as $texte) {}

<img src="'.$lien.'" alt="'. $texte.'" />


Il fonctionne combiné avec l'affichage des images en html mais pas combiné avec le code php ci-dessus.

En gros suivant, selon l'endroit où je mets/ferme la fonction, il peut y avoir 4 images avec "alt1" (ou "alt4") ou alors les 4 images avec chacun des 4 alt (donc seize images) ou alors chacune des images avec alt="alt1alt2alt3alt4".

Donc ma question est comment faire pour que chaque image est le alt qui lui correspond ?

Merci d'avance.
Modifié par Xulu (25 May 2010 - 16:48)
Bonsoir,

Pourquoi ne fais tu pas simplement :


print '<img src="'.$lien.'" alt="'.$fichier.'" />'; 


évidement, cela peut être amélioré en supprimant l'extension du fichier.

Smiley cligne
Bonjour,

Merci beaucoup. Ça fonctionne.

Pourquoi faire simple quand je peux me compliquer la vie ?

Avec le code ci-dessous, j'ai supprimé l'extension et le underscore du nom de mes fichiers :

// Remplir le alt en supprimant .jpg et _
$image = substr($fichier, 0, -4);
$alt = str_replace("_", " ", $image);


Cela dit, si je souhaite que mon alt soit développé (plus que le nom de mon fichier) ou si le nom de fichier est du genre img_1.jpg, comment faire pour remplir le alt="" (sans devoir renommer mes images) ?
Bonjour,

Tu peux faire un substr avec le point pour supprimer l'extension des fichiers.


// Remplir le alt en supprimant .jpg et _ 
// pour gérer tout type d'extension ceci est un exemple
$fichier = 'un_test.extension';
$image = substr($fichier, 0, strrpos($fichier, '.'));  
$alt = str_replace("_", " ", $image); 
echo $alt;


En suite si tu veux un gérer un texte formaté selon le nom du fichier tu peux écrire une petite fonction en partant de ce que tu as fais.
En effectuant un contrôle sur le nom des fichiers et en ajoutant du texte. Ou selon ce que tu souhaites faire. Si tu es dans une boucle avec incrément tu peux numéroter etc ....


$fichier = 'avatar_12.png';
function MyTexteAlt($file_name) {
	// supprimer l'extension
	$text_alt = str_replace("_", " ", substr($file_name, 0, strrpos($file_name, '.')));  
	// gestion texte alt selon nom de fichier
	if (preg_match('/avatar/i', $text_alt)) {
		$text_alt = 'Avatar utilisateur';
	}
	return $text_alt;
}
echo MyTexteAlt($fichier);


Smiley cligne