Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 37
  1. #1
    Utente di HTML.it L'avatar di bob18
    Registrato dal
    Jun 2004
    Messaggi
    1,035

    Richiamare dati random da db

    salve!

    come potrei fare se volessi richiamare in una tabella dei dati dal db in maniera random?

    ad esempio
    NomeRandom1 CognomeRandom1 DatoRandom1
    NomeRandom2 CognomeRandom2 DatoRandom2
    NomeRandom3 CognomeRandom3 DatoRandom3
    NomeRandomN CognomeRandomN DatoRandomN


    grazie

  2. #2
    Generare un numero casuale, da usare poi nella query per l'estrazione del record, non è difficile.

    Bisogna sapere, prima, se il database ha un campo che identifica i records in modo univoco (ID, CODICE...), se questo è numerico, contatore, testo.......e in quale intervallo possono variare i suoi valori.

    Poi costruiremo la query.

    Fai sapere.


    PS: solo come esempio, funzionante a prescindere dal numero dei records e dal campo identificativo, visto che vengono contati i records e poi ne viene scelto uno a caso tra quelli esistenti, questo è il codice che uso per estrarre il campo "testo" di un record scelto a caso dalla tabella "tabella" di un database Access:
    codice:
    sqldat = "SELECT COUNT(*) FROM tabella"
    
    Set objRS = objConn.Execute(sqldat)
    
    dim max
    max = objRS(0)
    
    if max=0 then 'database vuoto!
    response.redirect("/nonews_.asp")
    end if
    
    objRS.Close
    Set objRS = Nothing
    
    Set objRs = Server.CreateObject("ADODB.Recordset")
    objRs.Open "tabella", objConn
    
    Randomize()
    casual = Int(Rnd() * Max) 
    
    If Not objRs.EOF Then
    
    objRs.MoveFirst    
    objRs.Move casual
    
    	testo=objRS.fields.item("testo").value
    %>
    
    
    
    <div><%=testo%></div>
    
    
    
    <%
    
    end if
    
    objRs.Close
    Set objRs = Nothing
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  3. #3
    Utente di HTML.it L'avatar di bob18
    Registrato dal
    Jun 2004
    Messaggi
    1,035
    c'è il campo ID, che è in formato numerico.
    posto una immagine per farti vedere.

    grazie

  4. #4
    Utente di HTML.it L'avatar di bob18
    Registrato dal
    Jun 2004
    Messaggi
    1,035
    up
    :rollo:

  5. #5
    Bene.

    Se non ti piace lo script che ho postato, puoi utilizzarne la parte relativa alla creazione di un numero casuale, mettendo come valore della variabile max il massimo ID presente nel database, eventualmente eliminando i numeri casuali minori del minimo ID presente nel database, per esempio con una istruzione condizionale come

    codice:
    if casual > min(ID) then ......
    dove min(ID) è appunto quel valore, e infine estrarre il record avente come ID quello generato in modo casuale con una query come

    codice:
    sql = "SELECT * FROM tabella WHERE ID = "&casual&""
    Come vedi, nella query non ci sono apici intorno alla variabile casual visto che il campo ID del database è numerico.......

    Se altri record verranno inseriti nella tabella, dovrai tenerne conto per quanto riguarda il minimo e massimo ID che usi per generare il numero casuale.....inoltre dovrai controllare che il record con ID uguale al numero casuale generato esista effettivamente nel database..........infine esistono script (fai una ricerca) per generare numeri casuali compresi in un certo intervallo, e non, come in questo, solo minori di un certo valore massimo, così potresti evitare di eliminare quelli minori del minimo ID presente nella tabella.

    Io preferisco nettamente lo script che ho postato prima, visto che funziona indipendentemente dal tipo e numero di dati. Estrae tutti i records e poi muove il cursore all' ennesimo record, dove n è il numero casuale generato, che è compreso tra zero e il numero dei records.

    Penso che qui sopra ci sia materiale a sufficienza per risolvere il tuo problema, buon divertimento.

    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  6. #6
    Utente di HTML.it L'avatar di bob18
    Registrato dal
    Jun 2004
    Messaggi
    1,035
    ciao teorema.
    scusami ma pensavo che il tuo script non andasse bene per il mio caso, altrimenti non avrei uppato.
    scusami.

    un'ultima domanda:
    e se io volessi estrapolare questi dati random da più tabelle?
    ad esempio da 5 tabelle del mio db:
    mettiamo: roma; milano; torino; firenze; venezia


    come dovrei agire?


    grazie mille ancora

  7. #7
    La cosa si fa più complicata.

    Se i records non sono moltissimi e le tabelle hanno la stessa struttura puoi estrarre prima tutti i records dalle diverse tabelle con un unica query, poi contarne il numero con la proprietà RecordCount() del recordset che avrai creato e infine utilizzare il primo script usando come variabile max il numero dei records estratti........
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  8. #8
    Utente di HTML.it L'avatar di bob18
    Registrato dal
    Jun 2004
    Messaggi
    1,035
    mmm in effetti il tutto diventa abbastanza complicato...

    vabbè cercherò di adattarmi...

    grazie mille

  9. #9
    Utente di HTML.it L'avatar di bob18
    Registrato dal
    Jun 2004
    Messaggi
    1,035
    ciao teorema. ho provato lo script ma non va...
    mi compare questo errore
    codice:
    Tipo di errore:
    Errore di run-time di Microsoft VBScript (0x800A01A8)
    Necessario oggetto: ''
    riferito alla riga contenente questo parametro
    codice:
    Set objRS = objConn.Execute(sqldat)

    sicuramente l'errore è mio, però non riesco a risolverlo...
    ti riporto tutto il codice della pagina.

    codice:
    <%
    'creo la connessione al db
    set connessione=server.CreateObject("adodb.connection")
    connessione.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("db.mdb")
    
    sqldat = "SELECT COUNT(*) FROM Roma"
    
    Set objRS = objConn.Execute(sqldat)
    
    dim max
    max = objRS(0)
    
    if max=0 then 'database vuoto!
    response.write("Non ci sono dati.")
    end if
    
    objRS.Close
    Set objRS = Nothing
    
    Set objRs = Server.CreateObject("ADODB.Recordset")
    objRs.Open "Roma", objConn
    
    Randomize()
    casual = Int(Rnd() * Max) 
    
    If Not objRs.EOF Then
    
    objRs.MoveFirst    
    objRs.Move casual
    
    	testo=objRS.fields.item("name").value
    %>
    
    <table width="450" border="2" bordercolor="#000000">
      <tr>
    			
    	<td align="left" width="150" valign="top">
    	<font face="Georgia" size="2"><%=rs("name")%></font>
    
    	<font face="Georgia" size="1"><%=rs("class")%></font>
    
    	<font face="Georgia" size="1"><%=rs("minrate")%></font>
        </td>
    	</tr>
    </table>
      
    <%end if
    
    objRs.Close
    Set objRs = Nothing
    Connessione.close
    set Connessione=nothing
    %>

    grazie tante

  10. #10
    Utente di HTML.it L'avatar di bob18
    Registrato dal
    Jun 2004
    Messaggi
    1,035
    uppete


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.