PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 21-12-2009 16:49:28

webide67
Membre
Inscription : 23-07-2009
Messages : 20

Problème avec accent

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

<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]+"' 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

#2 22-12-2009 10:19:37

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Problème avec accent

Utilises la fonction addslashes, elle permet d'échapper les ', " et autres du genre.

Hors ligne

#3 22-12-2009 16:01:56

webide67
Membre
Inscription : 23-07-2009
Messages : 20

Re : Problème avec accent

Ok mais pour ce qui est des é, à, è que puis je faire?

Hors ligne

#4 22-12-2009 21:46:07

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Problème avec accent

Bah il n'y a aucun problème avec ces lettres là...
A moins que tu ne les convertisses en caractères html ?

Hors ligne

#5 22-12-2009 21:48:59

webide67
Membre
Inscription : 23-07-2009
Messages : 20

Re : Problème avec accent

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

#6 22-12-2009 22:39:01

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Problème avec accent

Je ne suis pas sûr de comprendre là...
Pourrais-tu nous écrire l'un des chemins posant problème ?

Hors ligne

#7 23-12-2009 08:19:30

webide67
Membre
Inscription : 23-07-2009
Messages : 20

Re : Problème avec accent

Je pense que c'est à cet endroit

 // 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++;
    }

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

#8 23-12-2009 08:38:59

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Problème avec accent

les accents ne sont nullement gérés dans ce que tu m'as mis.
Mais peut importe, j'aimerai un nom de fichier qui pose problème, pas un bout de code.

Hors ligne

#9 23-12-2009 08:53:55

webide67
Membre
Inscription : 23-07-2009
Messages : 20

Re : Problème avec accent

Le fichier est index.php et voici le code complet
(il ne manque pas grand chose par rapport au premier fichier envoyé)

<html><head>
<META
<link rel="stylesheet" type="text/css" href="style-gal.css">
<TITLE></TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head><body bgcolor="#141414">
<?php include("images.class.php"); ?>


<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)

<?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

#10 23-12-2009 09:38:27

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Problème avec accent

Au risque de me répéter pour la 3eme fois, c'est quoi le nom de l'image qui ne s'affiche pas ?

Hors ligne

#11 23-12-2009 10:17:36

webide67
Membre
Inscription : 23-07-2009
Messages : 20

Re : Problème avec accent

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

#12 23-12-2009 10:22:25

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Problème avec accent

Bon changeons de méthode.... -_____-

Lorsque tu copies le chemin que ton script génère jusqu'à l'image affichant une croix rouge et que tu le colles dans ton navigateur. L'image s'affiche-t-elle ?

Hors ligne

#13 23-12-2009 13:06:56

webide67
Membre
Inscription : 23-07-2009
Messages : 20

Re : Problème avec accent

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

#14 23-12-2009 23:01:34

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Problème avec accent

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 :

echo "table_noms[$a] = '$file_name';";

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

#15 24-12-2009 08:35:45

webide67
Membre
Inscription : 23-07-2009
Messages : 20

Re : Problème avec accent

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

#16 24-12-2009 14:48:41

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Problème avec accent

C'est donc un problème d'encodage.
Quel encodage utilise ton serveur Apache ?

Hors ligne

#17 24-12-2009 15:37:23

webide67
Membre
Inscription : 23-07-2009
Messages : 20

Re : Problème avec accent

Je suis sur mutualisé chez phpnux.com , je ne saurais pas te dire beaucoup plus

Hors ligne

#18 29-12-2009 10:30:33

webide67
Membre
Inscription : 23-07-2009
Messages : 20

Re : Problème avec accent

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

#19 29-12-2009 12:47:32

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Problème avec accent

Fais une recherche sur le mot "charset".

Hors ligne

#20 29-12-2009 14:35:07

webide67
Membre
Inscription : 23-07-2009
Messages : 20

Re : Problème avec accent

Le seul que j'ais trouvé c'est cela:

default_charset   local value: no value    Master value:no value

Hors ligne

#21 29-12-2009 17:36:13

Maskime
Membre
Lieu : Paris 15ème
Inscription : 11-05-2009
Messages : 134
Site Web

Re : Problème avec accent

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 wink

Hors ligne

Pied de page des forums