2010-11-16 4 views
5

J'ai avancé la recherche sur ma page Web, maintenant comment cela fonctionne est la suivante. Quand une recherche est faite, les résultats aléatoires apparaissent sur la page de contenu, maintenant cette page a également inclus la pagination, donc mon problème est chaque fois que le visiteur va à la première page différents résultats apparaissent. Est-il possible d'utiliser la pagination avec ceci, ou l'ordring sera toujours aléatoire.Valeurs aléatoires dans la requête MySql avec pagination

J'utilise la requête comme une

SELECT * FROM table ORDER BY RAND() LIMIT 0,20; 

Répondre

12

Vous devez utiliser une graine pour MySQL RAND pour obtenir des résultats cohérents. En PHP vous faites une

$paginationRandSeed = $_GET['paginationRandSeed']? 
    ((int) $_GET['paginationRandSeed']): 
    rand() 
; 

et MySQL vous utilisez cette graine

"SELECT * FROM table ORDER BY RAND(".$paginationRandSeed.") LIMIT 0,20" 

Bien sûr, vous aurez besoin de propager la graine initiale dans les demandes de page.

Bonne chance,
Alin

+0

Thanx pour moi pointant dans la bonne direction, votre solution a fonctionné pour moi parfaitement – Roland

+0

Excellent point pour étudier plus pour cette fonction RAND() dans la documentation MySQL. J'ai une liste d'offres de propriétés sur mon site client J'ai ajouté '$ seed = date ('jnY');' – kkatusic