Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Recuperare record a caso!

    Ciao.
    Nonostante sia solo lunedì, mi sono impuntato in una cosa dalla quale non riesco a venirne fuori, almeno non come vorrei...
    Ecco il problema:
    ho un db, popolato con dei record... vorrei recuperarne 3 da visualizzare in una pagina, ma che ogni volta fossero diversi, o quanto meno non sempre gli stessi fissi!

    L'idea è di utilizzare la funzione Randomize() e poi Rnd... ma qui mi intoppo!!
    Non ho mai avuto occasione di usarle prima, e ora non so bene come arrivare alla conclusione di questa questione...
    Ho fatto la select che mi tira fuori tutti i record... poi??

    Mi date una parola illuminante per favore?
    Grazie.

  2. #2

  3. #3
    Ne ho già provati 5-6 presi dai link che ho torvato a quegli indirizzi... ma neanche uno che funzioni!!

    O sto proprio fuso io :berto: , o c'è qualcosa che non torna...


  4. #4
    Utente di HTML.it L'avatar di orcim
    Registrato dal
    May 2003
    Messaggi
    1,692
    In MySQL la sintassi per l'estrazione di valori random è la seguente:

    codice:
    sql = "SELECT * FROM tbl ORDER BY RAND() LIMIT 3"
    3 è il numero di records estratti randomicamente.
    "Ubi Maior, Minor Cessat"
    Domandare è lecito, rispondere è cortesia...
    A tutti è dovuta una risposta, comunque...

    “Dio gradisce molto di più le bestemmie dell’uomo disperato che non le lodi del benpensante la domenica mattina durante il culto“ Martin Lutero

  5. #5
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Se i tuoi ID vanno a salti è normale che devi andare a "tentativi".
    Mettere in un ciclo l'estrazione e ripeterla fino a quando non tira fuori tre ID diversi e tutti presenti...

    Roby

  6. #6
    Io uso Access... ho visto che si poteva fare un Rnd nella select... ma cercando in giro mi sembra di aver capito che questo sistema non è molto valido... infatti a me restituisce i record sempre nello stesso ordine... poi ho trovato un sistema che faceva uso di GetRows, ma questo proprio non sono riuscito a farlo funzionare!


  7. #7
    Utente di HTML.it L'avatar di orcim
    Registrato dal
    May 2003
    Messaggi
    1,692
    "Ubi Maior, Minor Cessat"
    Domandare è lecito, rispondere è cortesia...
    A tutti è dovuta una risposta, comunque...

    “Dio gradisce molto di più le bestemmie dell’uomo disperato che non le lodi del benpensante la domenica mattina durante il culto“ Martin Lutero

  8. #8
    Grazie Orcim, questo non l'avevo visto... dopo cena lo provo...


  9. #9
    Questo mi funziona... anche se devo metterci le mani perchè io vorrei che mi venissero estratti 3 record...in questo modo praticamente (aparte un problema che mi dava errore e per cui ho dovuto mettere int(RandomNumber) riferito al numero dell'ID di paragone per estrarre gli ID) mi estrae 3 record in sequenza (ho inserito un loop dentro l'IF che testava se c'erano record o no)... invece vorrei fare in modo estragga il primo record a caso, poi ricalcoli il RandomNumber, testi che non sia un ID già estratto, e recuperi il record, così per le n volte (nel mio caso 3)....
    Ora vedo di metterci le mani e vediamo che viene fuori...


  10. #10
    Per ora ho trovato questa soluzione:

    codice:
    <%
    dim Link_Visualizati, RandomNumber
    Link_Visualizati = 0
    %>
    <ul class="menu">
    <%
    '*** cicliamo per estrarre i vari record (massimo 3 record) ***
    do while not Link_Visualizati >=3
    	'*** calcoliamo un valore casuale compreso tra 0 e l'ultimo id inserito utilizzando la funzione Rnd() ***
    	Randomize
    	RandomNumber = Rnd * MaxId
    
    	'*** Quindi andiamo ad estrarre un record utilizzando il numero appena calcolato: ***
    	SQL = "SELECT * FROM Links WHERE IdLink >= " & int(RandomNumber)
    	set ObjRs = Conne.Execute(SQL)
    'response.write ("
    int(RandomNumber) = ")&int(RandomNumber)
    	If Not ObjRs.Eof Then
    	%>
    		[*]
    			"><%=objRS("DescrLink")%>
    		
    	<%
    	End If
    	Link_Visualizati = Link_Visualizati + 1
    	'response.write ("
    link_visualizzati = ")&Link_Visualizati
    loop
    %>[/list]
    Non è proprio ottimale in quanto c'è la possibilità che estragga più volte lo stesso ID (specialmente nel mio caso che ho pochi record ancora nella tabella in questione, e che comunque non penso saranno mai molti...), però già dovrei essere un po' più vicino alla soluzione... forse si potrebbe anche ottimizzare un po' il codice, non so... sto cotto... rimandiamo tutto a domani... se intanto vi viene in mente qualcosa sparate pure...
    Grazie.


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 © 2026 vBulletin Solutions, Inc. All rights reserved.