Problème caractères spéciaux

Eléphant du PHP | 96 Messages

14 sept. 2008, 15:08

Bonjour,
J'essaie de mettre en place un texte sur un site seulement je dois codifié en caractères spéciaux au lieu de pouvoir utiliser les caractères normaux (é, à, è, etc.....) mais comme le texte sera remis à jour par quelqu'un ne connaissant pas les caractères spéciaux, je sis qu'il faut codifier dans le head pour que les caractères normaux soient pris en compte et non des carrés à la place.

Merci d'avance

Mammouth du PHP | 959 Messages

14 sept. 2008, 15:21

"codifier" = remplacer par des entités ? (ex : é : é )

Si oui, la fonction htmlentities() fera l'affaire, si non, bah précises un peu plus :P

Eléphant du PHP | 96 Messages

14 sept. 2008, 15:26

"codifier" = remplacer par des entités ? (ex : é : é )

Si oui, la fonction htmlentities() fera l'affaire, si non, bah précises un peu plus :P
J'ais réussi à régler une partie du problème car j'utilise une fonction qui récupère le texte à afficher dans un fichier texte seulement maintenant aux endroit ou je mets une ' il apparait juste avant un \
Voici d'alleurs le code permettant la lecture du fichier texte

Code : Tout sélectionner

<? $lecture=fopen("interact/informationsdupatron.txt","r"); while (!feof($lecture)) { $ligne=fgets($lecture,4096); echo "$ligne <BR>"; } fclose($lecture); ?>

Mammouth du PHP | 959 Messages

14 sept. 2008, 15:41

utilises stripslashes() ;)

Eléphant du PHP | 96 Messages

14 sept. 2008, 15:42

utilises stripslashes() ;)
Excuse mon ignorance mais comment dois je faire :oops:

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Mammouth du PHP | 959 Messages

14 sept. 2008, 15:53

<?php
$lecture=fopen("interact/informationsdupatron.txt","r");
while (!feof($lecture)) {
  $ligne=fgets($lecture,4096);
  echo stripslashes($ligne).'<br />';
}
fclose($lecture);
?>
;)

Eléphant du PHP | 96 Messages

15 sept. 2008, 19:15

Merci beaucoup ça marche impecc. J'aurais juste encore une dernière question, j'utilise le même principe pour les images par contre sur la page apparait une image en petite taille et j'essaie de faire en sorte qu'en cliquant sur cette image unefenêtre ouvre avec l'image en plus grand tout fonctionnes sauf l'appel (<a href)
J'ais essayé plusieurs solutions sans succès
Voici le code appelant l'image se trouvant dans un repertoire

Code : Tout sélectionner

<td width="30%" valign=top> <a href="resto1.php"> <?php $images = new images(); $images->repertoire = "resto1"; $images->nb_par_ligne = 1; $images->afficher_liste(); ?></A> </td>
Merci d'avance et promis c'est la dernière fois que je viens embêter.

Mammouth du PHP | 959 Messages

15 sept. 2008, 19:46

Commence par mettre ton </A> en </a> puis après, vérifies ton code HTML HTML généré au final ... (Ctrl+U sous Firefox) et localise la partie concernée ;)

Eléphant du PHP | 96 Messages

15 sept. 2008, 19:52

Commence par mettre ton </A> en </a> puis après, vérifies ton code HTML HTML généré au final ... (Ctrl+U sous Firefox) et localise la partie concernée ;)
J'ais modifié le </A> en </a> et ça ne fonctionnes tjrs pas, ensuite j'ais affiché la source et voici le resultat:

Code : Tout sélectionner

<td width="30%" valign=top> <a href="resto1.php"> <table summary="table d'images"> <tr> <td align="center"><img width="200px" src="resto1/resto1.jpg" alt="resto1.jpg - 23.25 ko"><br></td> </tr> </table> </a> </td>
[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Mammouth du PHP | 959 Messages

15 sept. 2008, 19:56

normal que ça marche pas.... ton <a> encadre la balise <table>
Or, a = inline
table = block
(regarde sur Google des documents sur inline et block ;))

Donc une balise inline ne peut pas contenir une balise block...

La solution est de placer le lien sur chaque images, se qui implique à modifier ta Class...

Eléphant du PHP | 96 Messages

15 sept. 2008, 20:14

Donc il faut que je fasses une modif sur le fichier image.class.php qui gère les photos

Code : Tout sélectionner

<?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=\"200px\" src=\"" . $this->repertoire . "/" . $fichier . "\" alt=\"" . $fichier . " - " . round((filesize($this->repertoire. "/" . $fichier)/1024), 2) . " ko\">"; } } ?>
Seulement je ne vois ou modifier
Ou la modif doit être faites ici

Code : Tout sélectionner

<td width="30%" valign=top> <a href="resto1.php"> <?php $images = new images(); $images->repertoire = "resto1"; $images->nb_par_ligne = 1; $images->afficher_liste(); ?></a> </td>

Mammouth du PHP | 959 Messages

15 sept. 2008, 21:44

Quelque chose comme ça, j'ai pas testé et j'ai fais ça vite fais :P
<?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($lien) {
  $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";
	if( isset($lien) && !empty($lien) ) {
		$lien_avant = '<a href="'.$lien.'">';
		$lien_apres = '</a>';
	} else {
		$lien_avant = '';
		$lien_apres = '';
	}
    echo "    <td align=\"center\">" . $lien_avant . $this->afficher_image($liste[$i]) . $lien_apres ."<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=\"200px\" src=\"" . $this->repertoire . "/" . $fichier . "\" alt=\"" . $fichier . " - " . round((filesize($this->repertoire. "/" . $fichier)/1024), 2) . " ko\">";
}


}

?>
<td width="30%" valign=top> 
<a href="resto1.php">   <?php 
$images = new images(); 
$images->repertoire = "resto1"; 
$images->nb_par_ligne = 1; 
$images->afficher_liste('resto1.php'); 
?></a>   </td>
;)