Page 1 sur 1

ligne de texte aléatoire - comment ?

Posté : 20 sept. 2005, 02:08
par laurence
Bonjour a tous

voila j'ai un nombre de ligne de texte a faire tourner de maniere aleatoire, je m'explique :

par exemple dans une page j'ai ces quelques phrases :

- AVENIR TELECOM : 2004-2005 mitigé, 2005-2006 encourageant
- Le Pdg de Total dénonce le procès fait aux pétroliers
- Paris: de nombreuses raisons de baisser mais score étriqué.
- etc...
- etc...
- etc...

toutes ces lignes doivent rester dans la meme page mais s'afficher de maniere aleatoire !! peux importe l'ordre ...

Je cherche la portion de code qui peut permettre cela , pouvez vous m'aider ?
Merci beaucoup ! ma boite au lettre est [email protected]
mais je reviendrai sur le forum

Laurence

Posté : 20 sept. 2005, 02:25
par HD
pas la peine pour l'email (ca va pas faire plaisir aux moderateurs!)

pour generer un numero de ligne aleatoire : rand
http://fr2.php.net/manual/fr/function.rand.php
mais precise min et max selon le nombre de lignes que t'as

ensuite pour afficher la ligne correspondante il faut voir ou tu stocke ces lignes et comment se presente ton code

re

Posté : 20 sept. 2005, 03:33
par laurence
Merci pour ta reponse HD !
et surtout de m'avoir envoyé sur le site de php.net

j'ai essayé un code avec le lien que tu ma donné mais marche pas , en revanche j'ai trouvé un autre code en fouillant et celui ci fonctionne le voici ci -dessous

<?

srand ((float) microtime() * 10000000);

$input = array (
"<li>phrase 1<br>",
"<li>phrase 2<br>",
"<li>phrase 3<br>",
"<li>phrase 4<br>",
"<li>phrase 5<br>",
"<li>phrase 6<br>");

$keys = array_rand ($input, sizeof($input));

while (list($k, $v) = each($keys))
{
echo $new_input = $input[$v];
}

?>

celui ci est bien, de plus il ne tire jamais 2 fois les memes c'est ce que je voulais !
en revanche, j'aurai voulu la meme chose mais que je puisse mettre les phrase dans un fichier texte par exemple dans "phrase.txt", aurais tu une ligne de code magique pour cela ??

merci a toi ..
Laurence

Posté : 20 sept. 2005, 04:54
par HD
j'aurai voulu la meme chose mais que je puisse mettre les phrase dans un fichier texte
adapte ton code en inserant les fonctions fopen :
http://www.commentcamarche.net/php/phpfich.php3

ps: la prochaine fois pour poser du code php utilise les balises (php) en haut quand tu tape ton message :wink:

Posté : 20 sept. 2005, 09:17
par Cyrano
Ce que tu peux faire, c'est stocker les phrases dans un tableau indexé et "mélanger" le tableau avec shuffle() pour ensuite les afficher via une boucle dans l'ordre aléatoire obtenu.

Ensuite tu fais une boucle for ou foreach pour l'affichage.

Posté : 20 sept. 2005, 09:20
par HD
bonne idee, la gestion sera bcp plus simple :-k

Posté : 20 sept. 2005, 12:38
par Tho
Thomas a testé pour vous
<?php

//$retour = "\n"; // linux
$retour = "\r\n"; // windows
$fichier = "a.txt";
$nLignes = 3;

$contenu = file_get_contents($fichier);
$tLignes = explode($retour,$contenu);

echo "une ligne : ".$tLignes[array_rand($tLignes)]."<br>"; 

echo "plusieurs lignes : <br>";
shuffle($tLignes);
for($i = 0; $i<$nLignes && $i<count($tLignes); $i++)
  echo $tLignes[$i]."<br>";
?>

re

Posté : 20 sept. 2005, 18:28
par Laurence
Bonjour et merci a tous pour le temps que je vous fais perdre

Bon et bien j'ai tenté beaucoup de chose mais rien ne marche :cry:

faut dire que je suis nul (par contre j'ai appris beaucoup de chose)

j'ai essayé aussi avec le code de thomas pas exemple :
<?php 

//$retour = "\n"; // linux 
$retour = "\r\n"; // windows 
$fichier = "a.txt"; 
$nLignes = 3; 

$contenu = file_get_contents($fichier); 
$tLignes = explode($retour,$contenu); 

echo "plusieurs lignes : <br>"; 
shuffle($tLignes); 
for($i = 0; $i<$nLignes && $i<count($tLignes); $i++) 
  echo $tLignes[$i]."<br>"; 
?> 
avec le fichier a.txt et plusieurs ligne dedans

mais voici la réponse :
Fatal error: Call to undefined function: file_get_contents() in /home/.sites/90/site26/web/test/index2.php on line 8

j'ai tenté maladroitement d'intégrer shuffle() et fopen mais fonctionne pas... tampis pour moi, merci beaucoup a vous en tous cas

Laurence

Posté : 20 sept. 2005, 21:35
par Truc
Salut, verifi ta version php, file_get_contents() est disponible depuis la version 4.3.0.

Posté : 21 sept. 2005, 11:19
par Tho
Désolé j'ai pas pensé à la version. J'ai plus court, et normalement compatible.
<?php
$retour = "\r\n";
$nomfichier = "a.txt";
$nLignes = 3;

$tLignes = file($nomfichier);

shuffle($tLignes);
for($i = 0; $i<$nLignes && $i<count($tLignes); $i++)
  echo $tLignes[$i]."<br>";
?>

c'est bon ! nickel !!

Posté : 07 oct. 2005, 12:38
par laurence
Bonjour a tous !

Thomas excuse moi du retard de reponse mais j'étais absente, je viens d'essayer tes lignes de code (les dernieres) et ca fonctionne super !!

c'est exactement ce que je voulais !! merci beaucoup a tous pour votre gentillesse et vos competences..

Amicalement - Laurence