affichage aléatoire d'une page.php

cartel
Invité n'ayant pas de compte PHPfrance

05 déc. 2005, 14:34

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

Eléphant du PHP | 383 Messages

05 déc. 2005, 15:04

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
?>

Invité
Invité n'ayant pas de compte PHPfrance

05 déc. 2005, 15:13

<?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 :wink:

Mammouth du PHP | 768 Messages

05 déc. 2005, 15:24

Arf désolé
le post ci dessus viens de moi
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Eléphant du PHP | 383 Messages

05 déc. 2005, 15:30

joli, j'aime bien ! :-)

cartel
Invité n'ayant pas de compte PHPfrance

05 déc. 2005, 19:34

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

Eléphant du PHP | 383 Messages

05 déc. 2005, 20:32

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 <?

cartel
Invité n'ayant pas de compte PHPfrance

05 déc. 2005, 20:51

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 :)

Eléphant du PHP | 383 Messages

05 déc. 2005, 20:57

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
?>

Mammouth du PHP | 768 Messages

05 déc. 2005, 21:09

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 :wink:


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 :lol:
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

cartel
Invité n'ayant pas de compte PHPfrance

05 déc. 2005, 21:12

:idea: MERCI :idea:

ça fonctionne parfaitement

Mammouth du PHP | 768 Messages

05 déc. 2005, 21:19

=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 ElePHPant qui le dit :D
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?