8721 sujets

Développement web côté serveur, CMS

Bonjour,

Comment faire pour charger un fichier avec include de façon aléatoire à chaque nouvelle ouverture d'une page ?

Un grand merci par avance.
Salut,

Pour moi la meilleur façon c'est de stocker la totalité de tes includes dans un tableau

tab[1][-include-1]
tab[2][-include-2]

et de tier un int aléatoire. ensuite tu affiche tab[nombreAléatoire];

je sais pas si c'est la meilleur solution
Modifié par JENCAL (18 Sep 2014 - 11:09)
Effectivement il te faudrait créer un array() avec les noms de tes fichiers pour valeurs dedans.
Utiliser la fonction array_flip() pour inverser les valeurs et les clés puis utiliser la fonction array_rand() pour retourner une clé au hasard (qui du coup est le nom de ton fichier).
Modifié par Pedrothelion (18 Sep 2014 - 12:45)
Merci à vous.
J'ai trouvé cette solution qui fonctionne mais il faut 5 fichiers. Comment adapter le code pour plus ou moins de fichiers ? Voir les commentaires dans le code. Merci par avance.

<?php
$input = array("input01.php", "input02.php", "input03.php", "input04.php", "input05.php"); // Tableau avec les noms de mes fichiers
$rand_keys = array_rand($input, 2); // Ici opère la magie je suppose, mais je ne sais pas à quoi correspond le nombre '2'
echo $input[$rand_keys[0]]; // Avec echo cela fonctionne, mais pas avec include or le but et d'inclure du code à partir de l'un des fichiers du tableau. À quoi sert la valeur '0' entre crochets ?
?>

Modifié par franckh (18 Sep 2014 - 13:50)
J'aimerai aussi améliorer mon script de sorte qu'un fichier ne puisse être inclus 2 fois de suite en cas de rechargement (actualisation) de la page. Je suppose qu'il faut faire appel aux conditionx et ouvrir une session mais je ne sais comment faire. Merci.
$rand_keys = array_rand($input, 2);

2 correspond au nombre de clés du tableau input() que tu choisis d'extraire.

Pour ton include :
$val = $input[$rand_keys[0]];
include($val);


Si tu actualise ta page, pourquoi te retrouverais-tu avec 2 include()... ? Je ne saisis pas bien ton raisonnement.
En effet, pourquoi extraire 2 includes, seulement il y a un problème lorsque je passe cette valeur à 1 puisque cela ne fonctionne plus du tout. Autre problème, en laissant sur 2, seule 4 pages sont extraites jamais la 5ème (?) Je ne sais que faire...
En fait les 5 pages sont bien prises en compte mais certaines sont choisies beaucoup plus souvent que d'autres. Quelqu'un a t-il une idée du pourquoi je ne peux extraire qu'une seule valeur de mon tableau ?
Il suffit de ne pas spécifier le parametre de quantité, je crois...
$rand_keys = array_rand($input);


Quand à ta deuxième question, je n'ai absolument aucune idée du fonctionnement de l'algorithme qui permet d'extraire des valeurs au hasard Smiley smile

Tu peux mélanger ton tableau avant d'extraire une clé au hasard, avec array_shuffle(), comme les cartes avant de les distribuer, mais je ne sais pas si cela à une influence.