Page 1 sur 1

info aleatoire

Posté : 12 sept. 2011, 18:18
par pcinfo
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:

Re: info aleatoire

Posté : 12 sept. 2011, 18:36
par xTG
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();

Re: info aleatoire

Posté : 13 sept. 2011, 09:01
par pcinfo
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 ! :(

Re: info aleatoire

Posté : 13 sept. 2011, 09:05
par macgawel
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...

Re: info aleatoire

Posté : 13 sept. 2011, 09:23
par Mazarini
Bonjour,

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

Re: info aleatoire

Posté : 13 sept. 2011, 09:59
par pcinfo
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

Re: info aleatoire

Posté : 13 sept. 2011, 10:21
par Mazarini
La function myRand() est définie 2 fois. Le message t'indique ou.
A toi d'une supprimer une ou d'en renommer une.

Re: info aleatoire

Posté : 13 sept. 2011, 11:34
par pcinfo
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...

Re: info aleatoire

Posté : 13 sept. 2011, 11:43
par macgawel
Tu as bien défini $breve comme une variable globale ?
Et tu remplis ton tableau $breves à quel moment ? :roll:

Re: info aleatoire

Posté : 13 sept. 2011, 11:53
par moogli
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 ^^

@+

Re: info aleatoire

Posté : 13 sept. 2011, 12:37
par pcinfo
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 ! :|

Re: info aleatoire

Posté : 13 sept. 2011, 15:20
par pcinfo
ç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 !