[MySQL] Affichage aléatoire compliqué

Fermé
brice77 - 24 mars 2006 à 10:48
 polo - 8 juil. 2007 à 14:08
Bonjour!

Voilà mon souhait : je souhaite afficher 6 offres aléatoires et de clients aléatoires sur ma page d'accueil.

Voilà ma requete :
select id, id_client, date_fin,texte_offre from bdd_offre where (CURDATE() >= date_debut) AND (CURDATE() <= date_fin) group by id_client order by RAND() limit 6


Voilà mon problème : les offres s'affichent bien de clients aléatoires, mais quand un client a plusieurs offres dispo c'est toujours la meme qui est choisie et affichée (la premiere). Or je souhaiterai que cela soit aussi aleatoire pour les offres.

Suis je clair? sinon n'hésitez pas à demander

Merci d'avance bcp bcp

Brice77
A voir également:

3 réponses

Ohm-WorK Messages postés 1464 Date d'inscription mardi 25 octobre 2005 Statut Contributeur Dernière intervention 29 octobre 2019 420
24 mars 2006 à 11:53
Salut

J'ai eu a faire un affichage aléatoire lors de la réalisation d'un site web, la seule solution fiable que j'ai trouvé, c'est de mettre toutes tes lignes dans un tableau, et il existe une commande php pour mélanger les données d'un tableau. Ensuite tu affiche le tableau via une boucle while ou for...

Je te donne la commande dés que je la retrouve...

Tchuss
0
Merci de ta réponse.

J'ai aussi envisagé cette possibilité, mais par curiosité j'aimerai plutot savoir comment le faire par le SQL plutot que PHP. Ca sera moins lourd ds le code, et ma mise à jour sera plus facile que de réecrire du code.

Merci quand même!

Avis aux autres pour la solution par SQL!
0
voici le script pour les images mais que tu peux également utiliser à tes besoins.
C'est sans doute le script que Ohm-WorK recherche :D

<html>
<title>Images aléatoires</title>
<body>
<?
// information pour la connection à le DB
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'images';

// connection à la DB
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());

// requête SQL qui compte le nombre total d'images dans la table et qui
//récupère tous leurs noms 
$select = 'SELECT * FROM images';
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$nbimages= mysql_num_rows($result);

// si on a récupéré un résultat on l'affiche.
if($nbimages) {
    // on remplit un tableau contenant les noms des images
    $numimage=0;
    while($row = mysql_fetch_array($result)) 
   {
       $nomimages[$numimage]=$row["nom"];
       $numimage++;
   }

   // on recherche aléatoirement le numéro de la case du tableau contenant le nom de l'image à afficher
   srand((double)microtime()*1000000);
   $affimage=rand(1,$nbimages); 

?>

   <!-- Affichage de l'image -->
   <img src="images/<?echo $nomimages[$affimage];?>" border=0 width=50 height=50 alt="Image aléatoire">

<?
}
?>
</body>
</html>


Source: http://www.asp-php.net/ressources/bouts_de_code.aspx?id=158
0