Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it L'avatar di wegawhite
    Registrato dal
    Aug 2004
    Messaggi
    1,400

    Estrazione random da asp+mysql

    Buonasera.

    Come si estraggono randomicamente diciotto records per volta da un db mysql?
    I records nel db mysql sono circa 1000.

    Grazie

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    '************* Bouble Sort - Ordinamento array **************
    Function Random(limiteinf,limitesup)
    If limiteinf>limitesup or limiteinf=limitesup then
    err.raise 500,"Asp Function Error : Random","Parametri Errati"
    end if
    Randomize
    Random = Int((limitesup - limiteinf + 1) * Rnd + limiteinf)
    end function

    Function GetRandomArray(nElement,limiteinf,limitesup)
    If limitesup-limiteinf+1<nElement then
    err.raise 500,"Asp Function Error : GetRandomArray","Parametri Errati"
    end if
    Set Dic = Server.CreateObject("Scripting.Dictionary")
    For i=1 to nElement
    nRnd = Random(limiteinf,limitesup)
    while Dic.Exists(nRnd)
    nRnd = Random(limiteinf,limitesup)
    Wend
    Dic(nRnd) = nRnd
    next
    GetRandomArray = Dic.items
    Dic.RemoveAll
    Set Dic = Nothing
    end function

    'Ipotizzando che il numero di record sia 1000
    tot_rec = 1000

    arr = GetRandomArray(18,1,tot_rec)


    In arr hai l'array dei 18 indici estratti. Puoi farci poi le query sulla tabella.

    roby

  3. #3
    Roby tutte ste righe di codice non servono:

    codice:
    sql = "SELECT campo FROM tbl ORDER BY RAND() LIMIT 18"

  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Ah beh, non avevo letto la cosa più importante: mysql

    Roby

  5. #5
    Utente di HTML.it L'avatar di wegawhite
    Registrato dal
    Aug 2004
    Messaggi
    1,400
    Grazie per le risposte, mi spiegate per favore la differenza tra questo codice (che estrae 18 records randomicamente dal db mysql):

    codice:
    'Recupero le variabili per paginare
    page = Cint(request.querystring("page"))
    if page = 0 then page = 1
    
    'Totale dei record
    strSQL = "SELECT COUNT(*) FROM tbl_quote"
    
    Set objRS = objConn.Execute(strSQL)
    tot_record = objRS(0)
    set objRS = nothing
    
    'Record per pagina
    pageSize = 18
    
    'Primo record di ogni pagina
    inizio = (page - 1) * pageSize
    
    'Pagine complessive per effetto della paginazione
    pagine_totali = CInt(tot_record) / pageSize
    
    'Arrotondamento in caso di resto della divisione precedente
    if pagine_totali - CInt(pagine_totali) > 0 then
    pagine_totali = CInt(pagine_totali + 1)
    else
    pagine_totali = CInt(pagine_totali)
    end If
    
    'Visualizzazione dei record paginati
    strSQL = "SELECT * FROM tbl_quote ORDER BY RAND() LIMIT "& inizio &", "& pageSize &""
    e la query suggerita da supergeniux:

    codice:
    sql = "SELECT campo FROM tbl ORDER BY RAND() LIMIT 18"

  6. #6
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Il primo ne prende 18 ma li pagina.
    Il secondo script ne prende 18, punto e basta.

    Roby

  7. #7
    il primo usa una funzione nativa del db, il secondo è una porcata ideata per supplire una mancanza del db

  8. #8
    Originariamente inviato da santino83
    il primo usa una funzione nativa del db, il secondo è una porcata ideata per supplire una mancanza del db
    Porcata sta per?

  9. #9
    porcata sta per "mi arrangio e m'invento qualcosa" per estrarre 18 valori rnd

  10. #10
    tanto porcata non mi sembra allora, poi dipende dai gusti :rollo:

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.