Vous n'êtes pas identifié(e).
Pages :: 1
Bonjour,
Je mets une galerie en ligne avec photo et nom de la photo.
Seuleument voila dès que la photo a un mot avec accent la photo laisse place à une croix alors que le nom apparait correctement.
Voici le script que j'utilise
<?
$a = 0;
$handle = opendir("galerie");
while (($file = readdir())!=false) {
clearstatcache();
if($file!=".." && $file!=".")
{
// RECHERCHE DU FICHIER
echo "table_photo[$a] = 'galerie/$file';";
// RECHERCHE DU TYPE DE FICHIER
$file_type = strrchr($file, ".");
$file_type = str_replace(".", "", $file_type);
$file_type = strtoupper($file_type);
echo "table_type[$a] = '$file_type';";
// RECHERCHE DU NOM :
$file_name = strtolower($file);
$file_name = str_replace(".jpg", "", $file_name);
$file_name = str_replace(".jpeg", "", $file_name);
$file_name = str_replace(".gif", "", $file_name);
$file_name = str_replace(".png", "", $file_name);
echo "table_noms[$a] = '$file_name';";
$a++;
}
}
closedir($handle);
?>
function showing_photos(num)
{
if(document.getElementById)
{
diaporama_fin = "";
if(num!=0)
diaporama_fin += "<td height=20><p align=center><A HREF=# onClick='showing_photos("+(num-1)+");return(false)'><img border=0 src=leftarrow.png height=35></A></td>";
if(num!=(table_photo.length-1))
diaporama_fin += "<td height=20><p align=center><A HREF=# onClick='showing_photos("+(num+1)+");return(false)'><img border=0 src=rightarrow.png height=35></A></td>";
document.getElementById("affichage_photos").innerHTML = "<div align=center><center><table border=0 width=640 cellspacing=0 cellpadding=5 height=480><tr><td colspan=2 valign=middle width=100% bgcolor=#141414 height=20><table border=0 width=100% cellspacing=0 cellpadding=0><tr><td width=50%><font color=#808080> Vue : "+table_noms[num]+"</td><td width=50%></td></tr></table></td></tr><tr><td width=100% colspan=2 valign=middle height=360><table border=0 width=100% cellspacing=1 cellpadding=0 height=100%><tr><td width=100% bgcolor=#141414 height=360><center><img src='"+table_photo[num]+"' width=400 BORDER=0></center></td></tr></table></td></tr><tr>"+diaporama_fin+"</tr></table></center></div>";
}
}
window.onload = new Function("showing_photos(0)")
</SCRIPT>
Merci d'avance pour l'aide
Hors ligne
Utilises la fonction addslashes, elle permet d'échapper les ', " et autres du genre.
Hors ligne
Ok mais pour ce qui est des é, à, è que puis je faire?
Hors ligne
Ok mais je ne peut pas les convertir en caractères html car c'est le nom de la photo qui apparait. Et comment dois je placer addslashes pour que cela fonctionnes, je n'ais jamais utilisé cette fonction c'est nouveau pour moi
Hors ligne
Je pense que c'est à cet endroit
que je dois faire la modification pour qu'il prennes en compte les accents, seuleument je ne sais pas comment intégrer la fonction
Hors ligne
Le fichier est index.php et voici le code complet
(il ne manque pas grand chose par rapport au premier fichier envoyé)
<SCRIPT LANGUAGE="JavaScript">
table_photo = new Array;
table_noms = new Array;
table_type = new Array;
<?
$a = 0;
$handle = opendir("galerie");
while (($file = readdir())!=false) {
clearstatcache();
if($file!=".." && $file!=".")
{
// RECHERCHE DU FICHIER
echo "table_photo[$a] = 'galerie/$file';";
// RECHERCHE DU TYPE DE FICHIER
$file_type = strrchr($file, ".");
$file_type = str_replace(".", "", $file_type);
$file_type = strtoupper($file_type);
echo "table_type[$a] = '$file_type';";
// RECHERCHE DU NOM :
$file_name = strtolower($file);
$file_name = str_replace(".jpg", "", $file_name);
$file_name = str_replace(".jpeg", "", $file_name);
$file_name = str_replace(".gif", "", $file_name);
$file_name = str_replace(".png", "", $file_name);
echo "table_noms[$a] = '$file_name';";
$a++;
}
}
closedir($handle);
?>
function showing_photos(num)
{
if(document.getElementById)
{
diaporama_fin = "";
if(num!=0)
diaporama_fin += "<td height=20><p align=center><A HREF=# onClick='showing_photos("+(num-1)+");return(false)'><img border=0 src=leftarrow.png height=35></A></td>";
if(num!=(table_photo.length-1))
diaporama_fin += "<td height=20><p align=center><A HREF=# onClick='showing_photos("+(num+1)+");return(false)'><img border=0 src=rightarrow.png height=35></A></td>";
document.getElementById("affichage_photos").innerHTML = "<div align=center><center><table border=0 width=640 cellspacing=0 cellpadding=5 height=480><tr><td colspan=2 valign=middle width=100% bgcolor=#141414 height=20><table border=0 width=100% cellspacing=0 cellpadding=0><tr><td width=50%><font color=#808080> Vue : "+table_noms[num]+"</td><td width=50%></td></tr></table></td></tr><tr><td width=100% colspan=2 valign=middle height=360><table border=0 width=100% cellspacing=1 cellpadding=0 height=100%><tr><td width=100% bgcolor=#141414 height=360><center><img src='"+table_photo[num]+"' height=350 BORDER=0></center></td></tr></table></td></tr><tr>"+diaporama_fin+"</tr></table></center></div>";
}
}
window.onload = new Function("showing_photos(0)")
</SCRIPT>
<DIV align="center" ID="affichage_photos"></DIV>
</body>
</html>
et voici le seul autre fichier entrant en ligne de compte (images.class.php)
class images {
var $repertoire;
var $nb_par_ligne;
function ajouter_image($image,$nom) {
if (is_dir($this->repertoire)) {
if (copy($image, $this->repertoire . "/" . $nom)) return true;
else return false;
} else return false;
}
function lister_repertoire() {
$liste = array();
if (is_dir($this->repertoire)) {
if ($pointeur = opendir($this->repertoire)) {
while (($fichier = readdir($pointeur)) !== false) {
if (!is_dir($this->repertoirte . "/" . $fichier)) {
$liste[] = $fichier;
}
}
closedir($pointeur);
return $liste;
} else return false;
} else return false;
}
function liste_select() {
$liste = $this->lister_repertoire();
for ($i = 0; $i < count($liste); $i++) {
echo " <option value=\"$this->repertoire/$liste[$i]\">$liste[$i]</option>\n";
}
}
function afficher_liste() {
$liste = $this->lister_repertoire();
echo "<table summary=\"table d'images\">\n";
for ($i = 0; $i < count($liste); $i++) {
$nom = explode(".", $liste[$i]);
$nom = str_replace("_", " ", $nom[0]);
$nom = str_replace("-", " ", $nom);
$nom = strtoupper(substr($nom, 0, 1)) . substr($nom, 1);
if (round($i/$this->nb_par_ligne) == ($i/$this->nb_par_ligne)) echo " <tr>\n";
echo " <td align=\"center\">" . $this->afficher_image($liste[$i]) . "<br></td>\n";
if (round(($i+1)/$this->nb_par_ligne) == (($i+1)/$this->nb_par_ligne) || ($i+2) > count($liste)) echo " </tr>\n";
}
echo "</table>\n";
}
function afficher_image($fichier) {
return "<img width=\"340px\" src=\"" . $this->repertoire . "/" . $fichier . "\" alt=\"" . $fichier . " - " . round((filesize($this->repertoire. "/" . $fichier)/1024), 2) . " ko\">";
}
}
?>
Hors ligne
Non, le nom de l'image apparait même avec l'accent, seuleument voila ce que je trouves bizarre c'est que l'image ne s'affiche pas quand il y a un accent dans le nom de l'image, j'ais le nom et une croix à la place de l'image et le problème vient bien des accents car lorsque je modifie le nom de l'image et que je supprime l'accent elle apparait
Hors ligne
Le script ne génère pas de chemin, l'adresse reste tjrs la même www.monsite.com/galerie/index.php et rien d'autre à la suite
Hors ligne
Déjà si tu as index.php dans tes chemins d'image il y a un gros soucis... Ou alors on ne parle pas de la même chose non ?
Mais si je comprend bien ce code :
affiche de temps à autre du vide ? Ou bien tu irais trop loin dans une boucle ? Es-tu sûr de n'avoir que des fichiers image dans ton répertoire ?
Hors ligne
Dans le dossier galerie, j'ais le fichier index.php ainsi que le fichier images.class.php et le dossier galerie ou se trouvent exclusisement les photos. Dans les noms de photos il gère les espaces entre les noms sans problèmes.
Je viens aussi d'essayer d'ouvrir l'image en direct sur http://www.monsite.com/galerie/galerie/ … ardins.jpg et mon navigateur me dit que le lien est corrompu
Dernière modification par webide67 (24-12-2009 08:43:19)
Hors ligne
Je suis sur mutualisé chez phpnux.com , je ne saurais pas te dire beaucoup plus
Hors ligne
J'ais créer un fichier phpinfo pour connaitre toutes les infos du serveur, ou dois je chercher l'encodage du serveur je suis perdu dans toutes ces données
Hors ligne
Le seul que j'ais trouvé c'est cela:
default_charset local value: no value Master value:no value
Hors ligne
Hello,
je déboule un peu dans le thread mais bon je me permet de donner mon avis :
Les noms de fichiers avec des accents peuvent poser pleins de problèmes (pas que celui que tu rencontres actuellement...), plutôt que de chercher comment corriger ce problème là tu auras plus vite fais de renommer ton fichier sans accents.
Quitte à ce que tu fasse un petit script qui supprime les caractères accentués de tes noms de fichiers.
La programmation est composée de 80% de réflexion pour 20% de syntaxe -> réfléchissez à votre problème par étapes
Recommande l'utilisation du pattern Singleton
Si jamais je poste un morceau de code pour vous aider, prenez bien compte que je n'ai pas forcément testé le code que je poste et qu'il est possible qu'il contienne des erreurs
Hors ligne
Pages :: 1