Page 1 sur 1
affichage aléatoire d'une page.php
Posté : 05 déc. 2005, 14:34
par cartel
bonjour messieurs et mesdames,
voici mon probleme : j'ai trois pages (page1.php , page2.php , page3.php) et j'aimerai en afficher une en la selectionnant aléatoirement.
j'ai essayé d'utiliser un fichier mais au lieu de m'afficher la page, ça m'affiche le nom "page1.php" :'(
comment faire svp ?
merci
Posté : 05 déc. 2005, 15:04
par jobherzt
tu cree une page dans laquelle tu mets :
<?
mt_srand((double)(microtime() ^ posix_getpid())); //initialisation du generateur aleatoire
$i=rand(1,3); //tire un nombre entre 1 et 3
header("Location:page".$i.".php"); //redirection vers la page $i
?>
Posté : 05 déc. 2005, 15:13
par Invité
<?php
$tabPage = array('page1.php','page2.php','page3.php'); // array contenant la liste des pages
$tabRand = array_rand($tabPage); // sort une clé de l'array au hasard
header("Location: ".$tabPage[$tabRand]); // Redirection
?>
méthode par les tableaux , plus propre à mon gout ... je reste ouvert à toutes observations

Posté : 05 déc. 2005, 15:24
par mario
Arf désolé
le post ci dessus viens de moi
Posté : 05 déc. 2005, 15:30
par jobherzt
joli, j'aime bien !

Posté : 05 déc. 2005, 19:34
par cartel
merci à vous deux pr votre aide !
j'ai cette erreur,
Code : Tout sélectionner
Warning: Cannot modify header information - headers already sent by (output started at /home/www/musique/index.php:5) in /home/www/musique/random.php on line 4
je vais essayer de chercher d'ou ca vient
Posté : 05 déc. 2005, 20:32
par jobherzt
le grand classique : les header doivent etre envoye avant que quoi que ce soit n'est ete ecrit sur la page. moralite : pas le moindre symbole, pas meme un espace ou un retour a la ligne ne doit preceder <?
Posté : 05 déc. 2005, 20:51
par cartel
le problème c'est que la page aléatoire doit être incluse dans une autre page... alors ya forcement un peu de code avant !
j'avais pensé faire un
<?php
$val = rand(1,3);
echo $val;
?>
pour réccuperer le numéro de la page... et faire mon include avec cette variable mais ça marche pas non plus help

Posté : 05 déc. 2005, 20:57
par jobherzt
ok, pigé. le code que nous te proposions faisait une redirection vers la page. le code que tu montre ne fonctionne pas non plus, puisque "echo" est une fonction qui affiche une variable de type texte. la bonne fonction a utiliser est "include".
donc :
$page="unePage.php";
echo $page; //pas bon :-)
//affiche tout simplement le texte "unePage.php" al'ecran
//par contre
include($page);
//incluera le contenu de unePage.php dans ta page
donc au final, en reprenant mon code ( marche aussi avec le coup du tableaux ) :
<?
//debut de ta page
//a l'endroit ou tu veux inclure cette page
mt_srand((double)(microtime() ^ posix_getpid())); //initialisation du generateur aleatoire
$i=rand(1,3); //tire un nombre entre 1 et 3
include("page".$i.".php"); //inclusion de la page $i
//reste de ton code
?>
Posté : 05 déc. 2005, 21:09
par mario
mt_srand((double)(microtime() ^ posix_getpid()));
Note : Depuis PHP 4.2.0, vous n'avez plus besoin d'initialiser le générateur de nombres aléatoires avec srand() ou mt_srand() car c'est fait automatiquement.
donc
$i=rand(1,3); //tire un nombre entre 1 et 3
include("page".$i.".php"); //inclusion de la page $i
suffit
parcontre en utilisant le tableau, toutes les pages aléatoires n'ont pas besoin d'avoir le même nom (page1.php, page2.php, page3.php, ....)
$tabPage = array('page1.php','page2.php','page3.php'); // array contenant la liste des pages
$tabRand = array_rand($tabPage); // sort une clé de l'array au hasard
include($tabPage[$tabRand]); // On inclus la page aléatoire
bon j'arrête de vendre ma proposition

Posté : 05 déc. 2005, 21:12
par cartel

MERCI
ça fonctionne parfaitement
Posté : 05 déc. 2005, 21:19
par mario
=D>
si tu as choisi la solution de
jobherzt, utilise mt_rand plutot que rand
mt_rand -- Génère une valeur aléatoire
(meilleure méthode)
c'est la doc

qui le dit
