Rechercher : dans
Par :

Images aléatoires (php)

Maze, le 24 fév 2008 à 13:01:26
 Signaler ce message aux modérateurs

Bonjour,

AU SECOOOURS !!!
J'ai passé des heures à tester un nombre incalculable de scripts php pour afficher une image de manière aléatoire. Ceux permettant d'afficher tout le contenu d'un dossier en aléatoire, ceux permettant d'afficher un nombre choisi d'images...

J'ai soit l'affichage alt="image aléatoire", soit l'affichage de quelques caractères de la fin du code "; } ?>"
Le seul script qui semblait fonctionner m'affiche systématiquement, quelque chemin que je mette :
"Impossible d'ouvrir le dossier d'image !"
"Le répertoire d'images spécifié est incorrect !"; } ?>

J'ai essayé d'ouvrir directement mes .php avec mon navigateur, et aussi de créer des .htm avec le code <img src="mon.php"> pour voir, rien ne marche !

Je ne sais plus quoi faire !!!! Dans les commentaires des scripts que j'ai copiés, les gens disent souvent "c'est simple, ca marche", alors c'est que c'est moi ! Peut-être qu'il est tout simplement impossible de tester un script php sans passer par un serveur ??

Quelqu'un a t-il LE script simple et efficace ?? LA solution ?

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « Images aléatoires (php) » dans :

1

clintm, le 25 fév 2008 à 16:32:23

Salut,

tu peux avoir un répertoire où tu à tes images qui apparaissent aléatoire (ex: img_alea)
et renommer chacune des image, 1.jpg, 2.jpg, 3.jpg ...

et tu utilise ce script :

<?php
$aleatoire = rand(1, 25); //25 étant le nombre max d'image
print "<img src='$aleatoire.jpg'>";
?>


@+
------------------------------------------
>>Trop de paroles noient la vérité<<

2

Maze, le 26 fév 2008 à 01:25:15

Merci de ta réponse,

A la place de l'image j'ai un cadre vide de la taille de l'image et un petit losange rouge encadré en haut à gauche, comme s'il ne trouvait pas l'image.

- J'ai crée un fichier "imgalea.php" avec ton script
- sur ma page d'accueil où l'image doit être aléatoire j'ai fait <img src="imgalea.php">
- Accueil.htm et imgalea.php sont dans le même dossier. Les images (numérotées de 1 à...) sont dans un sous-dossier "img_alea".

J'ai essayé de mettre les images directement dans le même dossier que mon Acccueil.htm et mon php, pas mieux...
Comment ton script sait-il dans quel dossier aller chercher les images ?

3

carbon3, le 26 fév 2008 à 04:13:43

Il y a peut-être une erreur de syntaxe dans ton code ?
tu nous fais voir tes lignes ?
(souviens-toi du "_self"... ;-p)

4

Maze, le 26 fév 2008 à 04:21:14

Concernant le dernier scipt décrit, j'ai testé :

----------------------------------------------------------
Avec les images dans un dossier img_alea nommées 1.jgp, 2.jgp, 3.jgp etc...

1) Dans le fichier "images aleatoires.php" :

<?php
$aleatoire = rand(1, 25); //25 étant le nombre max d'image
print "<img src='img_alea/$aleatoire.jpg'>";
?>

2) Dans le fichier "Accueil.htm" :

<img src="images aleatoires.php">

------------------------------------------------------------
Avec les images dans le même dossier que le htm et le php, nommées 1.jgp, 2.jgp, 3.jgp etc...

1) Dans le fichier "images aleatoires.php" :

<?php
$aleatoire = rand(1, 25); //25 étant le nombre max d'image
print "<img src='$aleatoire.jpg'>";
?>

2) Dans le fichier "Accueil.htm" :

<img src="images aleatoires.php">

5

Maze, le 26 fév 2008 à 04:26:23

Sinon autre test,
Les images se trouvent dans le dossier images.
J'ai un fichier de test.htm avec <img src="script.php"> et le scipt.php qui suit.
Ca m'affiche le ALT=

<?php

$path = './images/';

$files=array();
if ($handle=opendir("$path")) {
while(false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
substr($file,-3)=='gif';
substr($file,-3)=='jpg';
substr($file,-3)=='jpeg';
substr($file,-3)=='png';
$files[count($files)] = $file;
}
}
}
closedir($handle);

$random=rand(0,count($files)-1);
if(substr($files[$random],-3)=='gif') header("Content-type: image/gif");
elseif(substr($files[$random],-3)=='jpg') header("Content-type: image/jpeg");
elseif(substr($files[$random],-3)=='jpeg') header("Content-type: image/jpeg");
elseif(substr($files[$random],-3)=='png') header("Content-type: image/png");
readfile("$path/$files[$random]");
?>

6

carbon3, le 26 fév 2008 à 04:32:42

Euh... si t'en le point devant ./images/ ?

7

Maze, le 26 fév 2008 à 04:39:28

J'avais essayé... J'ai retenté au cas où mais non ! C'est pareil !

8

carbon3, le 26 fév 2008 à 04:52:41

Ok, et si tu abandonnes unmoment la notion aléatoire en mettant un constante
dans le script de test avec accueil.htm et image aléatoire.php
avec

 print "<img src='1.jpg'>

est-ce qu'elle sort ?

9

Maze, le 26 fév 2008 à 05:00:30

Très bonne idée, ça cible le problème...
En effet ça ne fonctionne pas plus et m'affiche toujours le ALT=

J'ai essayé print="<img src='1.jpg'> pour voir si le = changerait pas quelque chose mais non !

10

Maze, le 26 fév 2008 à 05:03:40

Je viens d'essayer avec echo à la place de print (puisque ça affiche correctement l'image dans un autre fichier .php que j'ai avec echo.... Sait-on jamais). Toujours la même chose.....

11

carbon3, le 26 fév 2008 à 05:11:03

Mais si ça affiche ALT=, c'est qu'il manque un guillemet ou qu'il y en a un de trop quelque part. Il est où ce ALT ?

12

Maze, le 26 fév 2008 à 05:13:04

Dand le document.htm :

<img src="images aleatoires.php" border=0 alt="Image aléatoire">

13

Maze, le 26 fév 2008 à 05:14:52

Au cas où... Je précise :
Ca ne m'affiche pas ALT= mais "le ALT=" (ce n'était pas clair...) donc en fait ça affiche "Image aléatoire"

14

carbon3, le 26 fév 2008 à 05:27:10

Donc le html ne reconnaît pas ton fichier php comme source pour img quoi...
faudrait que tu intègres ta fonction dans la page htm ?
rassures-moi, si tu mets <img src='1.jpg'> (à la place de test.php) dans ton .htm c'est ok qd m^??

15

Maze, le 26 fév 2008 à 05:32:02

Ouf oui !! Héhé !
J'ai essayé aussi d'ouvrir le php directement dans firefox, ça affiche la fin du code : "; ?>

Ce qui m'étonne c'est que j'ai un autre php qui affiche l'image correctement. Il s'agit d'une page de réponse à l'envoi d'un formulaire en html. La ligne se présente comme suit et ça fonctionne :

echo '<div align=center><IMG SRC="1.jpg" width=225 height=300></div><BR>';

16

carbon3, le 26 fév 2008 à 05:38:43

Oui mais comme je le pense, tu n'envoie pas un file.php dans la src de img.
plus approprié serait

<img src="<?php$aléatoire_img?>" alt="tu vois pas l'image ?">

dans le fichier.htm
et tu fais un
include_once(image_aleatoire.php)

dans le head, ou bien là où t'en as besoin, si tu veux vraiment garder la fonction dans un fichier.php séparé.

17

Maze, le 26 fév 2008 à 05:53:19

Aaaaah mais attends !! Tu m'éclaires....
Sache que je débute totalement en création et pour l'instant j'ai tout appris en me baladant sur le web.
Ce que je trouvais pour images aléatoires était toujours en fichier php séparé.
Je peux donc inclure la fonction php directement dans mon .htm ?
Je ne tiens pas particulièrement au fichier séparé ceci dit ça m'éviterai de rectifier toutes mes pages (j'en ai beaucoup !)
J'essaie ta méthode sur mon test (mais cela revient à modifier le <head> de toutes mes pages .htm ! Enfin si ça marche !! J'aurais le courage !)

18

carbon3, le 26 fév 2008 à 05:58:42

Garde l'avantage d'avoir ton php séparé si tu utilises la fonction dans plusieurs pages !!

tiens, en patientant, j'ai trouvé ça

http://www.phpfrance.com

ils ont m^ un tchat !!
on aurait pu s'y retrouver.

19

Maze, le 26 fév 2008 à 05:59:29

Alors... Voila. Je ne connais pas include_once, j'ai donc fait ça (et non, je ne vois pas l'image !) :
Sachant que pour le moment j'ai laissé simplement print "<img src='1.jpg'>"; dans le php

<html>
<head>
<include_once="image_aleatoire.php">
</head>
<body>

<img src="<?php$aléatoire_img?>" alt="tu vois pas l'image ?">

</body>
</html>

20

Maze, le 26 fév 2008 à 06:04:23

Je vais faire un tour sur http://www.phpfrance.com et sur le tchat