Affichage images

Résolu
xzonz Messages postés 103 Date d'inscription mardi 13 janvier 2004 Statut Membre Dernière intervention 23 novembre 2022 - 24 déc. 2007 à 14:11
xzonz Messages postés 103 Date d'inscription mardi 13 janvier 2004 Statut Membre Dernière intervention 23 novembre 2022 - 27 déc. 2007 à 12:31
salut tout le monde

et bonnes fetes



j'ai un souci que je n'arrive pas à résoudre
(déja posté mais pas mieux depuis)

j'ai une page qui liste le contenu d'un repertoire
une icone s'affiche devant chaque fichier selon l'extension

sous firefox ca marche impec - mais sous ie pas moyen d'afficher les icones.
- j'ai testé jpg,png,ico
-verifié tous les chemins d'acces au repertoire image
- essayé un script de préload

rien n'y fait

les chemins sont bons car ie n'affiche pas la petite croix à la place de l'image
mais le cadre sans rien dedans (quand je fais un clic droit sur ce dernier - propriete)
le chemin est le bon.

il suffit que je navigue directement via l'url dans le repertoire image sur une icone
il me l'affiche bien - et quand je reviens sur la page en question ... la l'image s'affiche
sans probleme - j'y comprend plus rien
pb de cache ???

voila le code de ma page

merci de votre aide car la je seche graaaaaaave
---------------------------------------------------------------------
<head>
<meta http-equiv= "Content-Type" content="text/html; charset=iso-8859-1">
<SCRIPT language="JavaScript">

<!--script pour vérifier les données entrées dans le formulaire-->
function verif()
{
Check = confirm("---------------------------------------------- \n CONFIRMEZ VOUS LA SUPPRESSION ? \n ----------------------------------------------");
if(Check == false) return false;
return true;
}
</script>

<form method='POST' action='/admin/delete.php'>
<?php
include($_SERVER['DOCUMENT_ROOT']."/admin/config.php");
?>

</head>
  [javascript:history.back() [page
  précédente]
]     [javascript:history.forward() [page
  suivante]]
  [<? print(substr($_SERVER['DOCUMENT_ROOT'],0,1)); ?> [accueil]]&nbsp;&nbsp;&nbsp;

 

 

 
  REPERTOIRE ACTUEL
  :
  <?php
$rep = getcwd();
$file = basename ($rep);
echo $file;
?>
 

<hr>
  &nbsp;[<?php $_SERVER['DOCUMENT_ROOT'] ?>/admin/creer-repertoire.php [cr&eacute;er
  un repertoire]]&nbsp;&nbsp;&nbsp;[<?php $_SERVER['DOCUMENT_ROOT'] ?>/admin/supprimer-repertoire.php [supprimer
  un repertoire]]&nbsp;&nbsp;&nbsp;[<?php $_SERVER['DOCUMENT_ROOT'] ?>/admin/upload-multiple.php [uploader
  des fichiers]]&nbsp;&nbsp;&nbsp;[<?php $_SERVER['DOCUMENT_ROOT'] ?>/admin/wake-on-wan.php [wake
  on wan]]

<hr>

<?php

 // Accès au repertoire
 // -------------------
 $chemin="./";
 $handle_du_repertoire_ouvert=opendir($chemin);

 // Boucle réccupérant toute les entrées contenu dans le répertoire
 // ----------------------------------------------------------------
 $sortie_de_la_boucle=false; // Initialise la boucle
 while ($sortie_de_la_boucle==false)
 {

 // Récupère les entrées contenu dans le repertoire une par une
 // -----------------------------------------------------------
 $entree=readdir($handle_du_repertoire_ouvert); // Readdir lit le fichier suivant dans un dossier

 // Condition de sortie de la boucle
 // --------------------------------
 if ($entree=="")
 $sortie_de_la_boucle=true;
 else

 // Affichage
 // ---------
 if (($entree!="."))

 if (is_dir($entree)) //affichage repertoire
    {
    // on choisi les repertoires à ne pas afficher
    if (($entree!="images")&&($entree!="_vti_bin")&&($entree!="_vti_pvt")&&($entree!="_vti_txt")&&($entree!="admin"))
    echo "&nbsp;".$entree."
";
    }

 if (is_file($entree)) //affichage fichiers
    {
    // on choisi les fichiers à ne pas afficher
     if (($entree!="index.php")&&($entree!=".htaccess")&&($entree!=".htpasswd"))
        {
        //On récupère l'extension
          ereg("\.([^\.]*$)", $entree, $elts);
          $ext = $elts[1];
          // On définit l'icone en fonction de l'extension
          $icone = $ext .'.'.'ico';
          echo "&nbsp;&nbsp;".$entree."
";
         }
         
    }
 }

 ?>

<hr>

</form>
&nbsp;

4 réponses

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
24 déc. 2007 à 14:49
Salut,

" ['.$chemin.$entree.' '.$entree.']
';

Les attributs des balises sont censés être entre guillemets doubles, et pas simples. Il n'y a normalement pas d'espace autour du = qui assigne une valeur à un attribut.
Ca, c'est pas correct :

C'est certes du XHTML 1.x, mais c'est compatible avec HTML 4


Sinon, quelques petites remarques, au passage :
ereg("\.([^\.]*$)", $entree, $elts);

=>

preg_match('`^(?:[^\.]).*\.([^\.]+)$`, $entree, $elts);

Une PCRE est TOUJOURS plus rapide qu'une regex standard, à motif équivalent. Par ailleurs, le motif que je te donne là permet d'éliminer les fichiers cachés, le tient obtient htaccess pour un fichier .htaccess, ce qui n'est pas correct.

$icone $ext .'.'.'ico';
>
$icone = $ext . '.ico';
Pourquoi concaténer deux chaines entre quotes ?

Si tu es sur PHP5, j'en profite pour attirer ton attention sur ma dernière source qui à défaut d'être ultra performante, a au moins le mérite de permettre ce que tu veux faire en beaucoup plus lisible et une syntaxe PHP5 (elle t'économiserait sûrement pas mal de lignes de code...)
3
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
26 déc. 2007 à 23:03
Salut,

Au risque de me répéter... Les valeurs des attributs des balises html DOIVENT (pour être conforme HTML 4) être entre guillemets doubles.
Quand j'affiche du HTML avec echo, j'utilise de préférence des guillemets simples ' pour délimiter mes chaines de caractères. Comme ça, je peux mettre les valeurs des attributs entre guillemets doubles, c'est plus propre, je m'y retrouve facilement.
Surtout pour l'attribut style !

echo ' ['.$chemin.$entree.' '.$entree.']
';

Cependant, j'ai un doute quant à l'origine des parse errors... Il ne me semble pas en avoir vu dans cette ligne... Es-tu certain que c'est à cette ligne qu'ils se produisent ?

Dernière chose : je ne peux que t'encourager à écrire du XHTML, au minimum XHTML 1.0 Transitionnal : HTML 4 c'est un peu révolu, et le XHTML transitionnal est plutôt bien supporté par les navigateurs et permet, comme son nom l'indique, une bonne transition entre HTML 4 et XHTML 1.x Strict. Quelques recherches sur google pour savoir comment bien respecter la syntaxe (c'est pas pour faire le chiant : plutôt pour t'assurer que ta page web évoluera bien dans le temps).
3
xzonz Messages postés 103 Date d'inscription mardi 13 janvier 2004 Statut Membre Dernière intervention 23 novembre 2022
26 déc. 2007 à 13:20
Salut Neigedhiver

tout d'abord merci pour ces conseils
je les ai appliqués cependant il me reste une ligne pour laquelle j'ai un peu de mal avec la syntaxe - puis je abuser une dernière fois de ton aide ?

la syntaxe suivante n'est surement pas la bonne -  il me met des parse error !! je dois oublier quelque chose

echo "&nbsp;&nbsp;".$entree."
";

voila la ligne avec sa syntaxe originale - peux tu me donner la bonne facon de l'écrire
ca va me permettre de garder l'exemple pour ne plus faire d'erreurs
merci de ton aide

Franck
0
xzonz Messages postés 103 Date d'inscription mardi 13 janvier 2004 Statut Membre Dernière intervention 23 novembre 2022
27 déc. 2007 à 12:31
Salut

ok ok j'ai pigé pour la syntaxe simple double quote - MERCI

quant à xhtml je vais voir sur google ce que je peut trouver à ce sujet

en tous les cas merci beaucoup de ton aide !!

Franck
0
Rejoignez-nous