Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 19/03/2010, 08h48   #1
Membre du Club
 
Inscription : février 2009
Messages : 313
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 313
Points : 56
Points : 56
Par défaut Afficher 10 résultats aléatoirement

Bonjour à tous,

J'ai une requete qui m'affiche une liste de résulats dans un tableau :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
$relance="SELECT MM_Entreprise.NumEntreprise, MM_Entreprise.NomEntreprise, MM_Entreprise.ContactEntreprise, MM_Entreprise.AdresseEntreprise, MM_Entreprise.VilleEntreprise, MM_Entreprise.Tel1Entreprise, MM_Relance.DateRelance
FROM MM_Entreprise, MM_Relance
WHERE MM_Relance.NumEntreprise = MM_Entreprise.NumEntreprise AND MM_Entreprise.loginName='{$_SESSION['logname']}' AND MM_Relance.loginName='{$_SESSION['logname']}'
GROUP BY MM_Entreprise.NumEntreprise
HAVING MAX( MM_Relance.DateRelance )  < DATE_SUB( CURDATE( ) , INTERVAL 30 DAY )
ORDER BY MM_Relance.DateRelance
";
 
$res_relance=mysql_query($relance)
     or die (mysql_error());
 
 
while($data2 = mysql_fetch_assoc($res_relance)) {
 
$datefr2=changedateusfr($data2['DateRelance']);
 
 
    echo "<tr></tr>";
    echo "<tr>";
	echo "<td bgcolor='#B1C0F5'><strong><a href='Consult_Entreprise.php?NumEntreprise=".$data2['NumEntreprise']."'>".$data2['NumEntreprise']."</a></strong></td>";
	echo "<td>".$data2['NomEntreprise']."</td>";
	echo "<td>".$data2['ContactEntreprise']."</td>";
	echo "<td>".$data2['AdresseEntreprise']."</td>";
	echo "<td>".$data2['VilleEntreprise']."</td>";
	echo "<td>".$data2['Tel1Entreprise']."</td>";
    echo "</tr>";
 
   }
Je souhaiterai que la requete ne m'affiche que 10 resultats, pour ça j'ai essayé LIMIT10 et c'est ok. Mais je voudrais que c'est 10 résultats changent à chaque fois que la page est chargée donc aléatoire.

Je ne sais pas si je peux me servir de rand()

Merci pour votre aide.
mikael2235 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2010, 09h01   #2
Membre habitué
 
Inscription : juillet 2009
Messages : 156
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 156
Points : 133
Points : 133
Pourquoi ne pas faire une requête sur toute ta table, tu stock tout dans un tableau et tu te sert du rand() pour te sortir 10 clé aléatoire de ton tableau...
Ze AzAr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2010, 09h07   #3
Membre du Club
 
Inscription : février 2009
Messages : 313
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 313
Points : 56
Points : 56
Merci Ze AzAr,

mais vous pouvez m'aider ???
mikael2235 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2010, 09h47   #4
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 242
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 242
Points : 2 597
Points : 2 597
Salut

Peut être exploiter SQL avec la fonction RAND().

Exemple :
Code sql :
SELECT ... FROM ... WHERE ... ORDER BY MM_Relance.DateRelance, RAND() LIMIT 10
__________________
Win XP | WampServer 2.2 | Apache 2.2.21 | Php 5.3.8 | MySQL 5.5.16
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2010, 09h52   #5
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Par rapport a la proposition de RunCodePhp, il y a, a priori, contradiction a classer par date puis par hasard.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2010, 10h07   #6
Membre du Club
 
Inscription : février 2009
Messages : 313
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 313
Points : 56
Points : 56
Oui j'ai déja essayé le LIMIT10 dans la requete c'est OK, mais le rand() ne marche pas !
mikael2235 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2010, 10h26   #7
Membre confirmé
 
Avatar de BenoitDenis
 
Inscription : avril 2005
Messages : 538
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : avril 2005
Messages : 538
Points : 219
Points : 219
Envoyer un message via MSN à BenoitDenis
Sinon tu fait un Select sans limite, tu stock les résultats dans un tableau et tu fait un random en php
__________________
Le contenu est roi, optimisé il est empereur...

Comme la Hongrie, le monde informatique a une langue qui lui est propre. Mais il y a une différence. Si vous restez assez longtemps avec des Hongrois, vous finirez bien par comprendre de quoi ils parlent.

http://www.tethis-interactive.com
BenoitDenis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2010, 10h29   #8
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 242
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 242
Points : 2 597
Points : 2 597
Effectivement, c'est un peu contradictoire de faire un trie alors qu'on souhaite des résultats aléatoire.

Mais un RAND() ça fonctionne.

Cependant, "ça ne marche pas" ne veut pas dire grand chose.
Une erreur est elle retournée ?
Les résultats sont ils toujours les mêmes ?
Puis si tu ne mets ni de RAND() ni de LIMIT, combien de ligne retourne la requête ? (si elle retourne que 10, il ne peut pas avoir de résultat aléatoire).
Ou alors, pour essai, mets un RAND() et un LIMIT 2

Faut pousser les essai un peu plus pour pouvoir en dire plus.
__________________
Win XP | WampServer 2.2 | Apache 2.2.21 | Php 5.3.8 | MySQL 5.5.16
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2010, 10h30   #9
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
ORDER BY RAND() ca fonctionne comme syntaxe, autant l'utiliser.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2010, 10h48   #10
Membre du Club
 
Inscription : février 2009
Messages : 313
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 313
Points : 56
Points : 56
Citation:
Envoyé par sabotage Voir le message
ORDER BY RAND() ca fonctionne comme syntaxe, autant l'utiliser.
Oui ça fonctionne, mais comme tu le disais j'avais du laisser en plus de mon Rand(), ORDER BY Date !!!

Et pour répondre à RunCodePhp, ma requete peut renvoyer 50 résultats environ.

Merci encore pour votre aide.
mikael2235 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 14h55.


 
 
 
 
Partenaires

Hébergement Web