Images aléatoires (php)

Résolu/Fermé
Maze - 24 févr. 2008 à 13:01
carbon3
Messages postés
469
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
6 janvier 2013
- 2 avril 2008 à 01:06
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 ?

36 réponses

Mazamazine
Messages postés
81
Date d'inscription
mercredi 27 février 2008
Statut
Membre
Dernière intervention
10 février 2015
13
27 févr. 2008 à 21:06
MON PROBLEME EST RESOLUUUUU !!!!!!!
Avec php impossible de le faire marcher mais j'ai trouvé un script en Javascript qui fonctionne à merveille !
Pour ceux qui seraient interessés par ce détournement, voila le code FONCTIONNEL !

1. Insérer ce script dans le <head> :

<SCRIPT LANGUAGE="JavaScript">
			/*
			** Extention de vos fichiers Image.
			** Le nom de vos images doivent etre du type : 
			** --> 1.jpg, 2.jpg, 3.jpg, 4.jpg, .... X.jpg
			** --> 1.gif, 2.gif, 3.gif, 4.gif, .... X.gif
			** --> ...
			*/
			var extention = ".jpg" ;
			/*
			** Nombre d'images diférentes à afficher.
			*/
			var nbimage = 4 ;
			/*
			** Déclaration d'autres variables.
			*/
			var url;
			var rep;
			var alt;
			
			function Images_Aleatoire()
			{
				//Génére un nombre aléatoire, pour donner un numéro d'image.
				numimage = Math.round( Math.random() * ( nbimage - 1 ) + 1 );
				// Nom de votre page d'accueil
				Page = "Accueil.htm";
				// Nom du répertoire de vos images.
				rep = "images"; 
				// Message info bulle, lors du survole de l'image affichée.
				alt = "--> Cliquez pour Entrer <--"; 
				// Assemblage de la chaine pour afficher votre image.
				url = './' + rep + '/' + numimage + extention ;
				// Affiche le numéro d'image généré aléatoirement.
				document.write( 'Numéro Image : ' + numimage + '<br><br>' );
				// Affiche l'image choisie ainsi que le lien vers votre page d'accueil.
				document.write ('<div align=center><a href="' + Page + '"><img src="' + url + '" alt="' + alt + '" border=0></a></div>');
			}
		</SCRIPT>



2. à l'endroit où on veut insérer l'image, dans le <BODY> :

<SCRIPT language="JavaScript">Images_Aleatoire();</SCRIPT>
4
carbon3
Messages postés
469
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
6 janvier 2013
73
27 févr. 2008 à 21:12
bon, comme ça, on progresse.
mais ça va te faire changer de stratégie...

en tous cas je reste sur les rangs pour résoudre l'affaire en php
0
clintm
Messages postés
689
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
10 juin 2015
75
25 févr. 2008 à 16:32
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'>";
?>


@+
1
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 ?
0
carbon3
Messages postés
469
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
6 janvier 2013
73
26 févr. 2008 à 04:13
il y a peut-être une erreur de syntaxe dans ton code ?
tu nous fais voir tes lignes ?
(souviens-toi du "_self"... ;-p)
0
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">
0

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

Posez votre question
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]");
?>
0
carbon3
Messages postés
469
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
6 janvier 2013
73
26 févr. 2008 à 04:32
euh... si t'en le point devant ./images/ ?
0
J'avais essayé... J'ai retenté au cas où mais non ! C'est pareil !
0
carbon3
Messages postés
469
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
6 janvier 2013
73
26 févr. 2008 à 04:52
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 ?
0
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 !
0
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.....
0
carbon3
Messages postés
469
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
6 janvier 2013
73
26 févr. 2008 à 05:11
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 ?
0
Dand le document.htm :

<img src="images aleatoires.php" border=0 alt="Image aléatoire">
0
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"
0
carbon3
Messages postés
469
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
6 janvier 2013
73
26 févr. 2008 à 05:27
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^??
0
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>';
0
carbon3
Messages postés
469
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
6 janvier 2013
73
26 févr. 2008 à 05:38
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é.
0
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 !)
0
carbon3
Messages postés
469
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
6 janvier 2013
73
26 févr. 2008 à 05:58
garde l'avantage d'avoir ton php séparé si tu utilises la fonction dans plusieurs pages !!

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

https://forum.phpfrance.com/

ils ont m^ un tchat !!
on aurait pu s'y retrouver.
0
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>
0
Je vais faire un tour sur https://forum.phpfrance.com/ et sur le tchat
0