info aleatoire

pcinfo
Invité n'ayant pas de compte PHPfrance

12 sept. 2011, 18:18

Bonjour,

J'ai trouvé un script pour avoir des infos aléatoires sur une page PHP.
J'ai compris le principe et ça marche.

Hors quand j'en rajoute deux autres, il se peut que deux, voir les trois, soient identique.
Comment faire pour régler ce probleme ?? T_T

VOICI MON CODE :

Page 1 :

<?php include ("breves.inc.php");
breve_aleatoire();

breve_aleatoire();

breve_aleatoire();
?>

Page breves.inc.php :

<?php
function breve_aleatoire()
{
$breves=array(
" <class='Titrenews'> 01 </class> <br>
<table width='400' border='0' cellspacing='5' cellpadding='0'>
<tr>
<td>IMAGE</td>
<td align='left' valign='middle' class='texte01' >TEXTE</td>
</tr>
</table>
<br>
",
" <class='Titrenews'> 02 </class> <br>
<table width='400' border='0' cellspacing='5' cellpadding='0'>
<tr>
<td>IMAGE</td>
<td align='left' valign='middle' class='texte01' >TEXTE</td>
</tr>
</table>
<br>
",
" <class='Titrenews'> 03 </class> <br>
<table width='400' border='0' cellspacing='5' cellpadding='0'>
<tr>
<td>IMAGE</td>
<td align='left' valign='middle' class='texte01' >TEXTE</td>
</tr>
</table>
<br>
",
" <class='Titrenews'> 04 </class> <br>
<table width='400' border='0' cellspacing='5' cellpadding='0'>
<tr>
<td>IMAGE</td>
<td align='left' valign='middle' class='texte01'>TEXTE</td>
</tr>
</table>
<br>
",
" <class='Titrenews'> 05 </class> <br>
<table width='400' border='0' cellspacing='5' cellpadding='0'>
<tr>
<td>IMAGE</td>
<td align='left' valign='middle' class='texte01'>TEXTE</td>
</tr>
</table>
<br>
",
" <class='Titrenews'> 06 </class> <br>
<table width='400' border='0' cellspacing='5' cellpadding='0'>
<tr>
<td>IMAGE</td>
<td align='left' valign='middle' class='texte01'>TEXTE</td>
</tr>
</table>
<br>
",

);
$num_breve=rand(0, sizeof($breves)-1 );
echo $breves[$num_breve];
}
?>


D'avance merci :priere:

ViPHP
xTG
ViPHP | 7331 Messages

12 sept. 2011, 18:36

Il faudrait supprimer les éléments déjà tirés.

En gros :
$liste= array(0,1,2,3,4,5);
function myRand(){
  global $liste;
  if( sizeof($liste) > 0 ) // il reste des nombres
  {
    shuffle($liste); // on mélange le tableau
    return array_shift($liste); // retourne le premier élément et le supprime du tableau
  }
  // sinon on ne renvoie rien
  return;
}
echo myRand();
echo myRand();
echo myRand();

pcinfo
Invité n'ayant pas de compte PHPfrance

13 sept. 2011, 09:01

Merci de m'avoir répondu si vite !!!

Hors je me croyais plus fort que ça !...

J'ai copié sur ma page 1 et remplacé myRand par breve_aleatoire, néansmoins ça ne marche pas ! :(

Mammouth du PHP | 672 Messages

13 sept. 2011, 09:05

J'ai copié sur ma page 1 et remplacé myRand par breve_aleatoire, néansmoins ça ne marche pas ! :(
C'est un peu court...
- Le script plante ? Message d'erreur ?
- Ca fonctionne mais le résultat ne correspond pas aux attentes ?
- Page blanche ?
- Autre (préciser) ?

Et si tu peux mettre du code, histoire qu'on ne joue pas à Madame Irma...
Au passage, tu peux mettre en forme le code, comme xTG, avec le bouton PHP ou les balises
. C'est plus lisible pour tout le monde...

ViPHP
ViPHP | 2577 Messages

13 sept. 2011, 09:23

Bonjour,

J'ai trouvé cette solution très élégante pour tirer aléatoirement plusieurs éléments d'un tableau.

pcinfo
Invité n'ayant pas de compte PHPfrance

13 sept. 2011, 09:59

C'est vrai ! si je ne donne pas d'explication, on ne peut pas me comprendre ! SORRY ! :roll:

Donc voici ce que j'ai fait :

<?php include ("breves.inc.php");
$liste= array(0,1,2,3,4,5);
function myRand(){
global $liste;
if( sizeof($liste) > 0 ) // il reste des nombres
{
shuffle($liste); // on mélange le tableau
return array_shift($liste); // retourne le premier élément et le supprime du tableau
}
// sinon on ne renvoie rien
return;
}
echo breve_aleatoire();
echo breve_aleatoire();
echo breve_aleatoire();

?>

Et le message dans la page est :
Fatal error: Cannot redeclare myRand() (previously declared
in C:\Program Files (x86)\EasyPHP-5.3.8.0\www\SITE\accueil\Sanstitre2.php:21)
in C:\Program Files (x86)\EasyPHP-5.3.8.0\www\SITE\accueil\breves.inc.php on line 65

ViPHP
ViPHP | 2577 Messages

13 sept. 2011, 10:21

La function myRand() est définie 2 fois. Le message t'indique ou.
A toi d'une supprimer une ou d'en renommer une.

pcinfo
Invité n'ayant pas de compte PHPfrance

13 sept. 2011, 11:34

Bien joué !! je suis bete de l'avoir copié deux fois !!! :roll:

Parcontre... j'ai toujours des doublons !!!
Il me semble pourtant avoir changer corectement $liste par $breves...

Mammouth du PHP | 672 Messages

13 sept. 2011, 11:43

Tu as bien défini $breve comme une variable globale ?
Et tu remplis ton tableau $breves à quel moment ? :roll:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

13 sept. 2011, 11:53

dans le dernier code complet tu appel breve_aleatoire() au lieu de myrand()

j'ai testé
<?php 
//include ("breves.inc.php");
$liste= array(0,1,2,3,4,5);
function myRand(){
	global $liste;
	if( sizeof($liste) > 0 ) // il reste des nombres
	{
		shuffle($liste); // on mélange le tableau
		return array_shift($liste); // retourne le premier élément et le supprime du tableau
	}
	// sinon on ne renvoie rien
return;
}
echo myRand();
echo myRand();
echo myRand();

?>
et cela fonction comme tu le souhaite (a priori), a chaque affichage il y a jamais deux fois la même infos de sortie, jusqu'a ce que le tableau d'entrée soit vide ^^

@+
Il en faut peu pour être heureux ......

pcinfo
Invité n'ayant pas de compte PHPfrance

13 sept. 2011, 12:37

Je comprend !... je me casse la tete à appeller la fonction... du moins le contenue dans une auter page, hors le tient contient tout l'ensemble !!

effectivement ça marche, je dois trouver le moyen d'appeller le contenue dans la page breves.inc.php !

galere ! galere ! :|

pcinfo
Invité n'ayant pas de compte PHPfrance

13 sept. 2011, 15:20

ça y est !!! je me suis trompé dans l'écriture !!

devant mon include j'avais laissé un "/" !

MILLE MERCIS A TOI, moogli !
J'aime bien avancé grâce à toi !!! =D>
j'ai finit ma page d'accueil !