Visualizzazione dei risultati da 1 a 8 su 8

Discussione: record random

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2004
    Messaggi
    131

    record random

    ciao a tutti

    qualcuno conosce il modo per fare una query che mi restiusca 3 record random ad ogni reload della pagina?
    Ho un db pronto ma se bisogna creare una struttura di tabelle e campi ad hoc posso ancora modificarlo
    grazie mille dell'aiuto


    grazie molte

    ciao PAOLO

  2. #2
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Ciao Paolo,

    invece di fare una query che ti restituisce dei record a random non ti conviene caricare tutti i record e poi prenderne 3 a caso?
    codice:
    strAccessDB = "/db/TuoDB.mdb"
    Set Conn = Server.CreateObject("ADODB.Connection")
    strCon = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath(strAccessDB)
    Conn.Open strCon
    Set rs = Server.CreateObject("ADODB.Recordset")
    query = "SELECT * FROM NomeTabella"
    rs.Open query,Conn,3,3
    if not rs.EOF then
      N = 3 'numero di record casuali da visualizzare
      Randomize
      max = rs.RecordCount-1
      redim arr(max)
      'popolo l'array da 0 al numero di record 
      for i=0 to max
    	arr(i)=i
      next
      'mischio i numeri in modo casuale
      for i=0 to max
        casuale = Int((max)*Rnd)
    	temp = arr(i)
    	arr(i) = arr(casuale)
    	arr(casuale) = temp
      next
      'visualizzo gli N record casuali
      for i=0 to N-1
        rs.Move arr(i)
        Response.Write rs("Campo") & "
    "
        rs.MoveFirst 
      next
    end if

  3. #3
    Non so se è molto corretto come codice, però funziona.
    (per inciso lo script è stato ricavato da una piccola modifica al codice di Lukeonweb)

    codice:
    <%@LANGUAGE = JScript%>
    <%
    // Creo gli oggetti Connection e Recordset
        var Cn = new ActiveXObject("ADODB.Connection");
        var Rs = new ActiveXObject("ADODB.Recordset");
    
    // Apro la connessione ed il Recordset
        Cn.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("database.mdb"));
        Rs.Open("SELECT campo FROM tabella", Cn, 3, 3);
    
    // Conto i record nel database e mi posiziono sul primo
        var Quanti = parseInt(Rs.RecordCount);
        Rs.MoveFirst();
    
    // Estraggo il primo record a caso
        var Casuale = parseInt(Math.random() * Quanti);
        Rs.Move(Casuale); // Mi muovo verso un record a caso
        Response.Write(Rs("campo") + "
    ")
    
    // Conto i record nel database e mi posiziono sul primo
        var Quanti = parseInt(Rs.RecordCount);
        Rs.MoveFirst();
    
    // Estraggo il secondo record a caso
       var Casuale = parseInt(Math.random() * Quanti);
        Rs.Move(Casuale); // Mi muovo verso un record a caso
        Response.Write(Rs("campo") + "
    ")
        
    // Conto i record nel database e mi posiziono sul primo
        var Quanti = parseInt(Rs.RecordCount);
        Rs.MoveFirst();
        
    // Estraggo il terzo record a caso
        var Casuale = parseInt(Math.random() * Quanti);
        Rs.Move(Casuale); // Mi muovo verso un record a caso
        Response.Write(Rs("campo") + "
    ")
    
    
        Rs.Close();
        Cn.Close();
    %>
    Vedi se ti può servire.

  4. #4
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Come hai fatto tu michele può succedere che visualizzi lo stesso record più volte... non serve contare ogni volta il numero di record perché rimane sempre quello

  5. #5
    Giustissimo! Hai perfettamente ragione.
    Però avevo sottolineato che non sapevo se il codice era corretto.
    Ho provato il tuo script ed è decisamente migliore, se non altro perché se uno volesse aggiungere o diminuire il numero dei record random da visualizzare basta aumentare o diminuire il numero N=

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2004
    Messaggi
    131
    devo ringraziarvi tanto perche' e' sempre molto piacevole ricevere aiuti come i vostri. grazie

    Vi chiedo ancora una cosetta inerente.

    E se volessi far apparire random 3 titoli di libri inerenti ad una determinata categoria?

    Esempio:
    Questo script l'ho messo in una pagina di archivio che richiama l'id del libro in oggetto che ha un det id e ha diverse caratteristiche: appartiene ad una categoria ecc...
    Come questo libro appartiene ad una det categoria anche altri libri vi appartengono

    E se volessi mettere random solo 3 determinati record che appartengono alla stessa categoria del libro visualizzato?

    spero di essermi spiegato

    grazie mille

    ciao PAOLO

  7. #7
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    lo script visualizza N record a caso di un recordset... basta che fai la query filtrando per categoria.

  8. #8
    Utente bannato
    Registrato dal
    Jan 2002
    Messaggi
    440
    c'è qualcosa di più semplice?? cioè seguendo il primo esempio devo mescolare gli array ma se io già prevedevo un loop con il popolamento di una decina di array diventa tutto più difficile....

    potrebbe esisstere una semplice query che effettua la visualizzazione random di più record?

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.