Page 1 sur 1

While et affichage

Posté : 06 mars 2008, 18:24
par Invité
Bonjour, je selectionne des données de cette facon :
$req=mysql_query("SELECT * FROM de ORDER BY rand()");
while ($resu = mysql_fetch_array($req) )
{
$ps = $resu['ps'];
$ur = $resu['ur'];
$mes= $resu['mes'];

} 
Et j'affiche le résultat comme ceci :
echo'<marquee scrollamount="2">- '.$ps.' | '.$mes.' | <a href="'.$ur.'" target="_blank">'.$ur.'</a> -</marquee>';
Là, il m'affiche 1 résultat aléatoire...

J'ai cherché mais je trouve pas comment faire pour afficher plusieurs résultat à la fois qui défile dans la balise <marquee>, par exemple 10 résultats.

Merci à ceux qui pourront m'aider :wink:

Posté : 07 mars 2008, 11:17
par Ryle
La requête que tu utilises te retourne l'ensemble des éléments de ta table "de" trié dans un ordre aléatoire. Ta boucle permet de les parcourir un par un (en écrasant la valeur de chacune de tes variable avec les valeurs de l'enregistrement qui est lu). Si ton echo se trouve en dehors de la boucle, cela signifie qu'il a parcouru l'ensemble des enregistrement et que tu affiches le dernier :)

Pour que ton echo puisse afficher plusieurs enregistrements, il faut qu'il soit dans la boucle.
Pour que l'ensemble des éléments soient présent dans le marquee, il faut que celui-ci soit autour de la boucle.
Enfin, pour que seulement 10 éléments ne soient affichés et non pas tout le contenu de la table, tu peux utiliser la commande LIMIT de MySQL qui permet à ta requête de ne retourner que les 10 premiers enregistrements : " ... ORDER BY rand() LIMIT 0, 10" (soit 10 enregistrements à partir de l'enregistrement 0)

HTH

Posté : 08 mars 2008, 04:03
par Aureusms
Question ? Si il met 0,10 dans limit il fera un rand que sur la portion entre 0 et 10 ?
$req=mysql_query("SELECT `ps`,`ur`,`mes` FROM `de` ORDER BY rand() LIMIT 0,10");
$k=0;
while ($resu = mysql_fetch_assoc($req) )
{
$tab_sortie[$k]['ps'] = $resu['ps'];
$tab_sortie[$k]['ur'] = $resu['ur'];
$tab_sortie[$k]['mes'] = $resu['mes'];
$k++;
}
//après tu travailles sur ton tableau comme tu veux :
foreach ($tab_sortie as $valeur)
{
echo'<marquee scrollamount="2">- '.$valeur['ps'].' | '.$valeur['mes'].' | <a href="'.$valeur['$ur'].'" target="_blank">'.$valeur['ur'].'</a> -</marquee>';
}

Edit : j'ai fais un petit truc pour sortir tout tes résultats et remplacer mysql_fetch_array par mysql_fetch_assoc pour libérer de la mémoire (merci encore à ce forum de me l'avoir instruit !)

Posté : 08 mars 2008, 13:46
par Ryle
Question ? Si il met 0,10 dans limit il fera un rand que sur la portion entre 0 et 10 ?
Nope, le LIMIT ne fait que restreindre le nombre d'enregistrements retournés par MySQL, il n'affecte en rien l'exécution de la requête :)