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

coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 - 11 juin 2004 à 16:28
Dahorn Messages postés 2 Date d'inscription vendredi 5 juin 2009 Statut Membre Dernière intervention 24 juin 2009 - 24 juin 2009 à 11:57
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/23606-precharger-toutes-les-images-d-un-repertoire

Dahorn Messages postés 2 Date d'inscription vendredi 5 juin 2009 Statut Membre Dernière intervention 24 juin 2009
24 juin 2009 à 11:57
En faite c'est bon, j'ai trouvé une autre solution en Java-script :

//Préchargement des "images halo".
i0 = new Image();
i0.src = "imagesBureau/bureauOriginal.jpg";

i1 = new Image();
i1.src = "imagesBureau/formationsHalo.jpg";

i2 = ...
Tout bete, et ca marche tres bien ! ^^

Merci quand meme.
Dahorn Messages postés 2 Date d'inscription vendredi 5 juin 2009 Statut Membre Dernière intervention 24 juin 2009
24 juin 2009 à 11:18
Bonjour.

Alors voila:(Je débute en html/php) J'ai une image et dessus j'ai positionné plusieurs cadres de lien (sur les differents objets de l'image) lorsque l'on passe la souris sur un de ces cadres lien, une nouvelle image viens prendre la place de la premiere.

Je fais ca avec du Java-script :

function menu(val)
{
if(val=='contacts')
{
y = document.getElementById('encartimage').className='contacts';
}
else if(val=='none')
{
y = document.getElementById('encartimage').className='encarimage';
}
}
(il y a plusieurs if() normalement, c'est juste pour montrer le fonctionnement)

Les liens vers les images sont dans mon fichier css.

Mon probleme:
Lorsque je passe sur le cadre lien, la nouvelle image remplace bien comme il faut l'ancienne, mais il y a un temps de chargement, du coup j'ai un flash blanc, puis la nouvelle image s'affiche... autant sous firefox que sous IE (l'avantage de firefox c'est qu'il ne charge l'image qu'une seul fois.).

J'ai intergré la fonction preload dans mon code avec un include :

<?php
include ('prechargement.php'); //dans le meme répertoire que mon index.php
$rep=('imagesBureau/');
preload($rep);
?>

Je place ceci avant ma balise <html>

Je lance ca en local, mais aucun changement j'ai toujours les flashs blancs :s

Quelqu'un a une idée ?
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
6 févr. 2008 à 16:43
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.
bloxan56x2 Messages postés 2 Date d'inscription samedi 2 février 2008 Statut Membre Dernière intervention 6 février 2008
6 févr. 2008 à 14:40
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
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
5 févr. 2008 à 17:25
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 ?
bloxan56x2 Messages postés 2 Date d'inscription samedi 2 février 2008 Statut Membre Dernière intervention 6 février 2008
5 févr. 2008 à 17:00
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
Bahanix Messages postés 32 Date d'inscription samedi 31 juillet 2004 Statut Membre Dernière intervention 27 avril 2007
16 déc. 2004 à 12:54
De rien ce fut un plaisir ;-)
Moi j'utilise l'upload pr ma galerie d'image http://rpgisland.free.fr
orsam Messages postés 28 Date d'inscription jeudi 7 décembre 2000 Statut Membre Dernière intervention 22 octobre 2007
16 déc. 2004 à 00:16
PARFAIT !!!

ca marche !!!

Merci beaucoup ! et surement à bientot !
Bahanix Messages postés 32 Date d'inscription samedi 31 juillet 2004 Statut Membre Dernière intervention 27 avril 2007
12 déc. 2004 à 14:25
Voici mon script d'upload :

<form onsubmit="envoyer.disabled='disabled';envoyer.value='Patientez';" method="post" enctype="multipart/form-data">



</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
orsam Messages postés 28 Date d'inscription jeudi 7 décembre 2000 Statut Membre Dernière intervention 22 octobre 2007
11 déc. 2004 à 11:45
Oups désolé :

<FORM ENCTYPE="multipart/form-data" ACTION="" METHOD="POST">


Envoyer le fichier :

</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
orsam Messages postés 28 Date d'inscription jeudi 7 décembre 2000 Statut Membre Dernière intervention 22 octobre 2007
11 déc. 2004 à 11:40
Bonjour,

voici ma premiere page :
Bahanix Messages postés 32 Date d'inscription samedi 31 juillet 2004 Statut Membre Dernière intervention 27 avril 2007
11 déc. 2004 à 09:59
Rah ca c'est mal affiché :-(
je reécrit :

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

Ca devrait fonctionner...
Bahanix Messages postés 32 Date d'inscription samedi 31 juillet 2004 Statut Membre Dernière intervention 27 avril 2007
11 déc. 2004 à 09:58
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>

++
orsam Messages postés 28 Date d'inscription jeudi 7 décembre 2000 Statut Membre Dernière intervention 22 octobre 2007
10 déc. 2004 à 23:54
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 !
Bahanix Messages postés 32 Date d'inscription samedi 31 juillet 2004 Statut Membre Dernière intervention 27 avril 2007
27 août 2004 à 17:20
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 :-/
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
27 août 2004 à 13:54
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
Bahanix Messages postés 32 Date d'inscription samedi 31 juillet 2004 Statut Membre Dernière intervention 27 avril 2007
8 août 2004 à 15:03
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 "\n"; }
}
closedir($handle); // Pourquoi mettre un @ ?
?>
matrey Messages postés 399 Date d'inscription jeudi 31 janvier 2002 Statut Membre Dernière intervention 6 septembre 2004
12 juin 2004 à 21:30
passer par le CSS c'est pas mal mais c'est pas super "propre", comme aucune autre manière d'ailleurs... :D
cs_koko Messages postés 654 Date d'inscription lundi 14 janvier 2002 Statut Membre Dernière intervention 20 février 2005
12 juin 2004 à 01:14
je n'aime pas les fonctions qui affiche directement quelques choses et j'aime bien les tableaux :D

alors :
$img[] = "\n";
a la place de
echo "\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

<SCRIPT LANGUAGE="JavaScript">
i1 = new Image;
i1.src = "images/monimages.gif";
</SCRIPT>

par exemple pour précacher des images !
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
11 juin 2004 à 16:28
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