Bueno finalmente he decidido agregar un order by multiple a la consulta sql es decir haré un order by campo1 , campo2 , campo3 , campo4 .
Para seleccionar los campo1 ,campo2, campo3 y campo4 creo un array con los nombres de los campos, despues genero los numeros aleatorios y los añado a la consulta.
Así genero registros aleatorios pero con un patrón, con lo que puedo paginarlos sin repetir ninguno pero cada vez que se inicia una busqueda los resultados son distintos.
Bueno pongo el código para que se entienda
Código PHP:
sql = "Select * from mitabla order by "
campos = Array ("campo1","campo2","campo3"...........)
manipulado = false 'Asi detecto si manipulan la querystring o si biene vacia'
If request.QueryString("criterio") <>"" then
criterio = request.QueryString("criterio")
indice = split(criterio,",")
for i=0 to uBound(indice)
if (isNumeric(indice(i)) and (indice(i) > 22 or indice(i)<0)) then
manipulado = true
exit for
end if
sql2 = sql2 & " " & campos(indice(i)) & ","
next
else
manipulado = true
end if
if manipulado then
randomize
for i=0 to 3
indice = round(rnd()*22)
criterio = criterio & indice & ","
sql2 = sql2 & " " & campos(indice) & ","
next
criterio = MID(criterio,1,LEN(criterio)-1)' quito la ultima coma'
end if
sql2 = MID(sql2,1,LEN(sql2)-1) 'quito la ultima coma'
sql = sql & sql2
Bueno pues basicamente es esto cada vez que alguien hace una busqueda tiene resultados distintos pero si se pone a navegar por ellos con los botones de anterior y sigiente no obtendrá resultados repetidos
Bueno ahora lo testearé un poco y listo
Gracias por su colaboración.
Un saludo
Iñaki