begin process at 2008 05 16 04:29:47
1 173 209 membres
51 nouveaux aujourd'hui
13 970 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

PRÉCHARGER TOUTES LES IMAGES D'UN RÉPERTOIRE


Information sur la source

Catégorie :Graphique Niveau : Débutant Date de création : 11/06/2004 Date de mise à jour : 27/08/2004 14:08:08 Vu : 6 777

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (18)
Ajouter un commentaire et/ou une note

Description

Cette fonction permet par exemple de précharger toutes les images d'un site (boutons, survols, etc...), pour peu que toutes ces images soient dans un même répertoire.

Il s'agit tout simplement de parcourir le répertoire, et d'extraire les noms des fichiers image afin des les précharger à l'aide des CSS et de la propriété display:none.

La fonction attend en paramètre le chemin (absolu ou relatif) du répertoire, par exemple : preload("images/boutons/");

Source

  • <?php
  • function preload($rep)
  • {
  • chdir("$rep");
  • $dossier=getcwd();
  • //Compatibilité path Unix et windows
  • if (strpos($dossier,"\\")) {$dossier.="\\";}
  • else {$dossier.="/";}
  • if ($handle = @opendir($dossier))
  • {
  • //boucle de parcours de tous les éléments du répertoire
  • while (($file = @readdir($handle)) !== false)
  • {
  • if (@getimagesize("$rep/$file")) //renvoi FAUX si le fichier n'est pas une image
  • { $img[] = "<img src='$rep/$file' style='display:none;' alt='' />\n"; }
  • }
  • }
  • @closedir($handle);
  • return $img;
  • }?>
  • Appel : <?php $tabImg=preload("img"); ?>
  • Puis, <?php foreach($tabImg as $i) echo $i; ?>
<?php
function preload($rep)
{
  chdir("$rep");
  $dossier=getcwd();
  //Compatibilité path Unix et windows
  if (strpos($dossier,"\\")) {$dossier.="\\";}
  else {$dossier.="/";} 

  if ($handle = @opendir($dossier))
  {
   //boucle de parcours de tous les éléments du répertoire
   while (($file = @readdir($handle)) !== false)  
   {
       if (@getimagesize("$rep/$file")) //renvoi FAUX si le fichier n'est pas une image
       { $img[] = "<img src='$rep/$file' style='display:none;' alt='' />\n"; }
   }
  }
  @closedir($handle);
  return $img;
}?>

Appel : <?php $tabImg=preload("img"); ?>
Puis, <?php foreach($tabImg as $i) echo $i; ?>

Conclusion

Le preload en CSS est inspiré de ce très bon site : http://www.alsacreations.com/articles/preload/

...Petite correction suggérée, à juste titre, par R@f  ;o)
27 août 2004 14:08:08 :
Modif suite aux suggestions de koko et Bahanix : - path unix / windows - la fonction renvoie un tableau - utilisation de getimagesize, pour fonctionner avec plus d'extensions images.
  • signaler à un administrateur
    Commentaire de coockiesch le 11/06/2004 16:28:26

    Salut!
    Ca à l'air sympa!
    Je pense que la création de l'array est à factoriser et éventuellement à éviter: Si c'est pour trois tests, autant faire des if, c'est plus rapide, je pense ;-)

    @++

    R@f

  • signaler à un administrateur
    Commentaire de koko le 12/06/2004 01:14:30

    je n'aime pas les fonctions qui affiche directement quelques choses et j'aime bien les tableaux :D

    alors :
    $img[] = "&lt;img src='$rep/$file' style='display:none;' alt='' /&gt;\n";
    a la place de
    echo "&lt;img src='$rep/$file' style='display:none;' alt='' /&gt;\n";

    return $img;

    apres un foreach pour parcourir le tableau !

    sinon je ne sais pas si c'est vraiment comme cela que l'on précache des images

    &lt;SCRIPT LANGUAGE="JavaScript"&gt;
    i1 = new Image;
    i1.src = "images/monimages.gif";
    &lt;/SCRIPT&gt;

    par exemple pour précacher des images !

  • signaler à un administrateur
    Commentaire de matrey le 12/06/2004 21:30:42

    passer par le CSS c'est pas mal mais c'est pas super "propre", comme aucune autre manière d'ailleurs... :D

  • signaler à un administrateur
    Commentaire de Bahanix le 08/08/2004 15:03:56

    J'ai un peu simplifié le code :

    <?php
    $rep="img/";
    chdir("$rep");
    $dossier=getcwd()."/"; // Correction d'un erreur
    $handle = opendir($dossier);
    while ($file = readdir($handle)) // False inutile à mes connaissance
    {
      $ext=strtolower(substr($file,-3));
      if ( ($ext=="gif") || ($ext=="png") || ($ext=="jpg") )
        { echo "<img src='$rep/$file' style='display:none;' alt='' />\n"; }
    }
    closedir($handle); // Pourquoi mettre un @ ?
    ?>

  • signaler à un administrateur
    Commentaire de arnal69130 le 27/08/2004 13:54:06

    Mersi Bahanix pour tes suggestions, toutefois j'ajouterais quelques précisions :

    1./ L'emploi du "\\" n'était pas une erreur, mais une spécificité Windows. Pour plus de compatibilité remplacer
    « $dossier=getcwd()."\\"; //pour avoir le chemin complet du répertoire »
    par  
    « $dossier=getcwd();
       if (strpos($dossier,"\\")) {$dossier.="\\";}
      else {$dossier.="/";} »
    Ainsi les path contenant des "\"(Windows) seront complétés par des "\", et les path unix seront complétés par des "/".

    2./ Selon http://www.php.net/manual/fr/function.readdir.php, le FALSE n'est pas inutile :

    /* Ceci est la façon correcte de traverser un dossier. */
       while (false !== ($file = readdir($handle)))
       { echo "$file\n"; }

    /* Ceci est la MAUVAISE façon de traverser un dossier. */
       while ($file = readdir($handle))
       { echo "$file\n"; }

    3./Le "@" permet d'éviter l'affichage d'éventuelles erreur lors de l'ouverture et de la fermeture du répertoire, par exemple si les droits sont insuffisants.

    Arno

  • signaler à un administrateur
    Commentaire de Bahanix le 27/08/2004 17:20:27

    C'est interressant merci pr l'info ;)
    ceci dit je me demande si cela change réelement le script (en rapidité peut etre ?) entre la "bonne" et "mauvaise" facon du parcour du repertoire :-/

  • signaler à un administrateur
    Commentaire de orsam le 10/12/2004 23:54:07

    Bonjour à tous,

    je trouve ce code trés sympa, c'est exactement ce que je cherche. cependant etant débutant en PHP, j'ai un probleme pour faire une redirection suite à cette source. A la fin du Code j'ai simplement mis header("Location: pagesuivante.php"); et j'obtiens une erreur ! alors comment peut on demander une redirection APRES que le traitement soit terminé ??

    Merci à tous et à bientot !

  • signaler à un administrateur
    Commentaire de Bahanix le 11/12/2004 09:58:15

    C'est normal toutes les "header" doivent être placés en premiere ligne ;-)

    Contourne le probleme en plaçant ça ou tu veut :
    <script laguage="javascript">window.location="http://www.tonsite.com/pagesuivante.php"</script>

    ++

  • signaler à un administrateur
    Commentaire de Bahanix le 11/12/2004 09:59:20

    Rah ca c'est mal affiché :-(
    je reécrit :

    <script laguage="javascript">
    window.location="http://www.tonsite.com/pagesuivante.php"
    </script>

    Ca devrait fonctionner...

  • signaler à un administrateur
    Commentaire de orsam le 11/12/2004 11:40:14

    Bonjour,

    voici ma premiere page :

  • signaler à un administrateur
    Commentaire de orsam le 11/12/2004 11:45:58

    Oups désolé :

    <FORM ENCTYPE="multipart/form-data" ACTION="" METHOD="POST">
    <font face="Verdana" size="2">
    <INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="350000">
    Envoyer le fichier : <INPUT NAME="Fichier" TYPE="file">
    <INPUT TYPE="submit" VALUE="Envoyer">
    </font></FORM>
    <script laguage="javascript">
    window.location="http://www.tonsite.com/pagesuivante.php"
    </script>
    <?php
    $repertoire = "jaquettes";
    if ($Fichier && $Fichier != "none") {
    copy($Fichier, $repertoire."/"."jaquette_".$HTTP_GET_VARS['num'].".jpg");
    }
    ?>

    ce qui permet aux visiteurs d'ajouter des photos sur mon serveur. le probleme c'est que quand je met ton script java, il ne s'arret pas au formulaire d'envoie de fichier et passe à la suite ! donc maj de la base de données. j'espere etre claire dans mes explications.

    Merci pour ton aide... Orsam

  • signaler à un administrateur
    Commentaire de Bahanix le 12/12/2004 14:25:50

    Voici mon script d'upload :

    <form onsubmit="envoyer.disabled='disabled';envoyer.value='Patientez';" method="post" enctype="multipart/form-data">
    <input type="file" name="userfile">
    <br /><input type="submit" value="Upload !" name="envoyer">
    </form>
    <?php
    $max=200*1000;
    $ptjpg=explode(".",$_FILES["userfile"]["name"]);

    // VERIFIE LA VALIDITé DU FICHIER
    if(!file_exists($rep.strtolower($_FILES["userfile"]["name"])) && isset($_FILES["userfile"]) && strlen($_FILES["userfile"]["name"])>4 && strlen($_FILES["userfile"]["name"])<=23  && ($ptjpg[1]=="jpg" || $ptjpg[1]=="JPG" || $ptjpg[1]=="gif" || $ptjpg[1]=="GIF") && $_FILES["userfile"]["size"]>0 && $_FILES["userfile"]["size"]<$max)
    {
      // UPLOAD...
      $nom=strtolower($_FILES['userfile']['name']);
      $savefile=$rep.$nom;
      $temp=$_FILES["userfile"]["tmp_name"];
      move_uploaded_file($temp, $savefile);
      $ok=true;
      echo "<script language=\"JavaScript\">alert('Upload achevé avec succès !')</script>";
    }
    // GESTIONNAIRE DERREURS
    if($userfile){
      if(!$ok && file_exists($rep.strtolower($_FILES["userfile"]["name"])))echo "<script language=\"JavaScript\">alert('Ce nom existe déjà')</script>";
      if(!$ok && !isset($_FILES["userfile"]))echo "<script language=\"JavaScript\">alert('Ce n\'est pas un fichier')</script>";
      if(!$ok && strlen($_FILES["userfile"]["name"])<1)echo "<script language=\"JavaScript\">alert('Le nom de ce fichier est trop court')</script>";
      if(!$ok && strlen($_FILES["userfile"]["name"])>23)echo "<script language=\"JavaScript\">alert('Le nom de ce fichier est trop long')</script>";
      if(!$ok && $_FILES["userfile"]["size"]<5)echo "<script language=\"JavaScript\">alert('Ce fichier est vide')</script>";
      if(!$ok && $_FILES["userfile"]["size"]>$max)echo "<script language=\"JavaScript\">alert('Ce fichier est trop volumineux')</script>";
      if(!$ok && $ptjpg[1]!="jpg" && $ptjpg[1]!="gif")echo "<script language=\"JavaScript\">alert('Ce fichier n\'est pas dans le format jpg')</script>";
    }
    ?>


    Je vois pas pk tu veut redirigé... ou sinon tu met le script de redirection tt a la fin, après lupload, a l'interieur du IF

  • signaler à un administrateur
    Commentaire de orsam le 16/12/2004 00:16:52

    PARFAIT !!!

    ca marche !!!

    Merci beaucoup ! et surement à bientot !

  • signaler à un administrateur
    Commentaire de Bahanix le 16/12/2004 12:54:33

    De rien ce fut un plaisir ;-)
    Moi j'utilise l'upload pr ma galerie d'image http://rpgisland.free.fr

  • signaler à un administrateur
    Commentaire de bloxan56x2 le 05/02/2008 17:00:45

    Bonjour
    je début, création site internet.
    J'ai environ 380 images à mettre sur le site, répartit sur 28 pages.
    Comment faire, j'ai bien lu depuit le début ( PRÉCHARGER TOUTES LES IMAGES D'UN RÉPERTOIRE )
    Mais le script et changer à chaque commentaire.
    Qui peut donner un coup de main, me faire un script.
    Merci pour votre réponse et à bientot

  • signaler à un administrateur
    Commentaire de arnal69130 le 05/02/2008 17:25:24

    Bonjour Bloxan56x2,
    Le script a été mis à jour au fur et à mesure que des commentaires ont été postés. Il fonctionne tel quel.
    Quel est ton problème ? As-tu un message d'erreur ?

  • signaler à un administrateur
    Commentaire de bloxan56x2 le 06/02/2008 14:40:32

    Bonjour Arnal69130
    Mon probléme, je résume.
    1 ) Je copie tout le script dans ma page d'aceuil oui ou non ?
    2 ) Dans le script il y a 24 lignes, laquel je modifi ?
    3 ) Quel n° de ligne et par quoi ?
    4 ) Faut-il renommé tout mes images en "img" ? sacahant que j'ai: exemple = voitures.jpg, figurines.jeg ect.. environ 380 images

  • signaler à un administrateur
    Commentaire de arnal69130 le 06/02/2008 16:43:50

    Le mieux, pour avancer un peu tout seul, c'est d'essayer !

    -> oui, tu mets le script dans ta page d'accueil
    -> rien à modifier dans la fonction
    - Comme indiqué dans la description du code « La fonction attend en paramètre le chemin (absolu ou relatif) du répertoire, par exemple : preload("images/boutons/"); » Donc "img" c'est le nom du répertoire.

Ajouter un commentaire

Appels d'offres

Pub



CalendriCode

Mai 2008
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS