Multiplier par 3 :) ?

Résolu
luk -  
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

j ai un bout de script qui affiche une image dans une page

mais je voudrais 3 images dans la page

j y connais rien en php evidemment!

est ce que ya une fonction qui permet de dire qu il faut executer ce script 3 fois, ou est ce que je dois le placer 3 fois dans ma page ?

merci
A voir également:

13 réponses

kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
Bonjour,

Tu déclare une fonction, tu mets ton script en tant que corps de la fonction, puis dans ta page, tu appelles trois fois ta fonction. C'est bien plus propre que de coller trois fois le même bout de code d'affiler.

Si tu n'y connais vraiment rien dans le domaine de la programmation, donne nous le code (dans un post, entre balise < code> et < /code> (sans espace à l'intérieur) et on te donnera sa forme sous fonction ainsi que les trois appels.
0
luk
 
bonjour et merci de repondre si vite kij

je sais pas comment on fait pour appeler une fonction
voici le script

<?php
$dir = 'img/th/' ;
$array_file = array() ;
if ( is_dir ( $dir ) )
{
if ( $handle = opendir ( $dir ) )
{
while ( ( $file = readdir ( $handle ) ) !== false )
{
if ( $file != '.' && $file != '..' && getimagesize ( $dir . $file ) )
{
$array_file[] = $file ;
}
}
closedir ( $handle ) ;
}
}
shuffle ( $array_file ) ;
print("<a href=\"img/$array_file[0]\"><img src=".$dir.$array_file[0]." border=0 alt=\"Image aléatoire\"></a>");
exit() ;
?>
0
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
Re,


Il faut faire deux fonctions vu ce que fais ton code. Ce serait dommage de lister trois fois de suite le même dossier, perte de temps et de ressource. L'intérêt de ton code est la seconde partie : sélectionner une image plus ou moins aléatoirement pour l'afficher.

Le code :

function listRep ( $dir ){
   $array_file = array() ;
   if ( is_dir ( $dir ) ){
      if ( $handle = opendir ( $dir ) ){
         while ( ( $file = readdir ( $handle ) ) !== false ){
            if ( $file != '.' && $file != '..' && getimagesize ( $dir . $file ) ){
               $array_file[] = $file ;
            }
         }
         closedir ( $handle ) ;
      }
   } 
   return $array_file;
}

function aleaPrint ( $array ){
   shuffle ( $array_file ) ;
   print("<a href=\"img/$array_file[0]\"><img src=".$dir.$array_file[0]." border=0 alt=\"Image aléatoire\"></a>"); 
}

/* Uitlisation */
/* Initialisation - listing des images */
$my_array = listRep('img/th/');
/* 3 affichages à la suite */
aleaPrint($my_array);
aleaPrint($my_array);
aleaPrint($my_array);


Je n'ai pas testé le code, à priori ça devrait fonctionner je pense.

Edit : j'ai remodifié le code, oublié de '$' devant 'my_array', faute de syntaxe.
0
luk
 
j essaye tout de suite ! merci beaucoup!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
luk
 
et ben... pas du tout !

j ai tout un tas de messages d erreur, et 3 cadres qui s affichent pour les images, mais sans image

Notice: Use of undefined constant my_array - assumed 'my_array' in C:\Programme\EasyPHP3.1\www\rh2.php on line 32

Warning: shuffle() expects parameter 1 to be array, null given in C:\Programme\EasyPHP3.1\www\rh2.php on line 24

Notice: Undefined variable: dir in C:\Programme\EasyPHP3.1\www\rh2.php on line 25
0
luk
 
j avais pas vu ton edit !

il me reste encore ca
Warning: shuffle() expects parameter 1 to be array, null given

et aucune image, quand je fais "afficher la source" sur firefox, je vois en effet qu il en manque un bout dans les <img src="
c est $array_file[0] qui renvoie plus rien
0
luk
 
j ai remis $dir = chemin/du/rep au debut du fichier
mais j ai du le remettre une 2eme fois dans la deuxieme fonction sinon il me disait undefined variable
c est normal ?
0
luk
 
une petite aide ?
0
luk
 
power of posting :)

le script ci dessous marche impec, mais j ai a nouveau un soucis, c est pour les <a href
l
e lien doit pointer dans le rep juste au dessus et le nom de la photo est identique... sauf les 3 premieres lettres.
par exemple si l image aleatoire s appelle img/th/th_test.jpg
elle doit pointer vers img/test.jpg

comment je peux faire ?

<script>
<?php
$dir = 'img/th/' ;
$array_file = array() ;
if ( is_dir ( $dir ) )
{
if ( $handle = opendir ( $dir ) )
{
while ( ( $file = readdir ( $handle ) ) !== false )
{
if ( $file != '.' && $file != '..' && getimagesize ( $dir . $file ) )
{
$array_file[] = $file ;
}
}
closedir ( $handle ) ;
}
}
shuffle ( $array_file ) ;
print("<a href=\"img/$array_file[0]\"><img src=\"".$dir.$array_file[0]."\" border=0 alt=\"Image aléatoire\"></a>  ");
print("<a href=\"img/$array_file[1]\"><img src=\"".$dir.$array_file[1]."\" border=0 alt=\"Image aléatoire\"></a>  ");
print("<a href=\"img/$array_file[2]\"><img src=\"".$dir.$array_file[2]."\" border=0 alt=\"Image aléatoire\"></a>  ");



?>
</script>
0
luk
 
arf c etait pas <script> et </script> qu il fallait que je mette mais < code> et </ code> pour que ca s affiche bien ici
0
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
Salut,

Alors, en fait ton script affiche trois fois la même image finalement ? Je pensais qu'il fallait que ce soit trois fois une image aléatoire.
Pour mon script, effectivement j'ai fait des erreurs de recopie, par exemple dans la fonction 2, le paramètre il fallait juste changer le nom '$array_file' au lieu de '$array' et c'était bon.

Pour ton histoire de pointer sur un autre répertoire avec le nom de l'image, tu peux faire un découpage du nom de fichier je pense non ?

Si tu as 'img/th/th_test.jpg', tu dois obtenir 'img/test.jpg'. Il faut donc que tu supprime la partie en gras.
Pour ce faire, tu peux utiliser les fonctions PHP 'strpos' et 'substr' pour récupérer que les parties qui t'intéresse, puis les assembler pour faire ton nouveau chemin.

Voilà de la doc pour ces deux fonctions :
strpos : http://www.manuelphp.com/php/function.strpos.php
substr : http://www.manuelphp.com/php/function.substr.php

Je te laisse faire toi même le code, si tu as un souci post le (dans les bonnes balises cette fois ;)) et je verrai ce qui ne va pas.
0
luk
 
bonjur kij !

je crois que j ai reussi ! ca affiche 3 images differentes aleatoirement et ca pointe sur le rep au dessus, mais je copie le code pour etre sur qu il n y a pas un "defaut" dans mon code, genre un truc qui pourrait etre utilisé contre mon site (je vois pas quoi mais je veux pas risquer que quelqu un fasse tout buguer!)

<?php
$dir = 'sexy/galleries/photos-sexy/thumbnail/' ;
$array_file = array() ;
if ( is_dir ( $dir ) )
{
if ( $handle = opendir ( $dir ) )
{
while ( ( $file = readdir ( $handle ) ) !== false )
{
if ( $file != '.' && $file != '..' && getimagesize ( $dir . $file ) )
{
$array_file[] = $file ;
}
}
closedir ( $handle ) ;
}
}
shuffle ( $array_file ) ;
$href = str_replace('TN-','',$array_file);
print("<a href=\"sexy/galleries/photos-sexy/$href[0]\"><img src=\"".$dir.$array_file[0]."\" border=0 alt=\"Image aléatoire\"></a>  ");
print("<a href=\"sexy/galleries/photos-sexy/$href[1]\"><img src=\"".$dir.$array_file[1]."\" border=0 alt=\"Image aléatoire\"></a>  ");
print("<a href=\"sexy/galleries/photos-sexy/$href[2]\"><img src=\"".$dir.$array_file[2]."\" border=0 alt=\"Image aléatoire\"></a>  ");
?>
0
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
/ho, un futur site de sesce ?

Met ton sujet en "résolu" si tout est bon.
0