Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    stampa random risultati query

    bon jeur tennici.

    sto' cercando una soluzione al seguente problema:

    in un db estraggo dei record di 5 in 5 e li porto a video
    esempio:

    id 100 --->104

    in questo modo
    "Select * from tab where id >="& inz & " and id <= "& fin

    li porto a video con

    do while not rs.eof

    response.write (rs("campo"))
    rs.movenext
    loop

    ora mi è stato chiesto di cambiare "random" i risultati ovvero:

    id 100 --->104

    messa a video

    102
    104
    101
    100
    103


    come posso fare
    grazie
    -Raia Riccardo-
    Un forumello gnocco
    La vita è strana per questo bella

    non ero moderatore quando zork era un alcolizzato

  2. #2
    Utente di HTML.it L'avatar di kluster
    Registrato dal
    Jul 2003
    Messaggi
    1,288
    crei una funzione che ti randomizzi un array che contiene i valori da 1 a 5 ( hai detto che prendi 5 id alla volta) e poi fai un move

    esempio:
    codice:
    Sub RandomizeArray()
    	For x = UBound(ar) To LBound(ar) Step -1
    	    RandomIndex    = Int((x - LBound(ar) + 1) * Rnd + LBound(ar))
    	    tmp = ar(RandomIndex)
    	    ar(RandomIndex)= ar(x)
    	    ar(x) 	   = tmp
    	Next
    End Sub
    Dim ar(4)
    ar(0) = 1
    ar(1) = 2
    ar(2) = 3
    ar(3) = 4
    ar(4) = 5
    Randomize()
    RandomizeArray
    a questo punto hai l'array ar che ha i numeri da 1 a 5 disposti in maniera random

    poi ti basta invece di fare un
    do while not rs.eof

    fai:

    codice:
    for i=Lbound(ar) to Ubound(ar)
        rs.movefirst
        rs.move ar(i) 'che sara' casuale il salto da 1 a 5
        response.write(rs("campo") 'bla bla bla bla
    next
    non ho gestito gli errori ne contemplato il caso che la select restituisca meno di 5 id quello lo devi fare contando il recordcount

  3. #3
    grazie mille per la risposta.

    avevo già pensato ad una soluzione simile, il problema è che mi trovo ad interrogare un db mysql per tanto non supporta il MOVE


    ora avevo pensato di inserire i risulti in un array
    tipo :
    codice:
    dim array(5)
    
    for i = 0 to 4
    array(i) = rs("campo")
    
    next
    a questo punto potrei fare un ciclo di for:
    codice:
    for i=0 to 4
    'funzione random
    randomize
    n = cint(rnd*5)-1
    ' porto a video con il random
    response.write array(n)
    il problema e che la variabile "n" assume valori che nel ciclo si duplicano e quindi alcuni record vengono stampati + volte mentre altri non vengono proprio visualizzati


    come risolvere?
    -Raia Riccardo-
    Un forumello gnocco
    La vita è strana per questo bella

    non ero moderatore quando zork era un alcolizzato

  4. #4
    ok ho risolto

    il mysql ha una clausola speciale che nn conoscevo:


    sql = "Select * from tab where id >="& inz & " and id <= "& fin &" order by rand() limit 5"

    a saperlo ci ho buttato il sangue una giornata

    -Raia Riccardo-
    Un forumello gnocco
    La vita è strana per questo bella

    non ero moderatore quando zork era un alcolizzato

  5. #5
    Utente di HTML.it L'avatar di kluster
    Registrato dal
    Jul 2003
    Messaggi
    1,288




Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.