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

    Vero RANDOM per database?

    Ciao a tutti

    uso questa query per prendere dei valori random su database, ma che effettivamente random non sono perchè tutti sanno che Rand() di mysql fa schifo ...

    Codice PHP:
    // QUERY CHE PRENDE 2 MASCHI E 2 FEMMINE
    mysql_select_db($database_connessione$connessione);
    $query_concorrenti "(SELECT * FROM people WHERE sesso = 'M' AND ID_people != '$row_scheda_user[ID_people]' ORDER BY RAND() LIMIT 2 )UNION(SELECT * FROM people WHERE sesso = 'F'  AND ID_people != '$row_scheda_user[ID_people]' ORDER BY RAND() LIMIT 2 )";
    $concorrenti mysql_query($query_concorrenti$connessione) or die(mysql_error());
    $row_concorrenti mysql_fetch_assoc($concorrenti);
    $totalRows_concorrenti mysql_num_rows($concorrenti); 
    Qualcuno mi dice come farli veramente random?

    con questa query ho notato che prende il più delle volte sempre le stesse persone.
    MITTICCOOOOOOOOO!

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    La funzione RAND() accetta un parametro che varia da 0 a 1 e che funziona come 'seme' per il generatore random. Se usi una funzione random di php puoi crearti un vero random.

    codice:
    $pippo = 0.001;
    $pluto = 0.789;
    
    $query_concorrenti = "(SELECT * FROM people WHERE sesso = 'M' AND ID_people != '$row_scheda_user[ID_people]' ORDER BY RAND($pippo) LIMIT 2 )UNION(SELECT * FROM people WHERE sesso = 'F'  AND ID_people != '$row_scheda_user[ID_people]' ORDER BY RAND($pluto) LIMIT 2 )";

  3. #3
    $pippo e $ pluto li genero con mt_rand?
    MITTICCOOOOOOOOO!

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    si. basta che il numero rinviato sia compreso tra 0 e 1.

  5. #5
    Dove posso trovare maggiori informazioni su questa cosa
    proprio non sapevo di questi 0 e 1
    MITTICCOOOOOOOOO!

  6. #6
    comunque ho provato e non va...
    mi seleziona sempre i record 1, 2, 3, 4
    MITTICCOOOOOOOOO!

  7. #7
    Anzi perche accetta anche numeri maggiori di 1?
    sto provando con questa funzione

    Codice PHP:
    // inizializza usando i microsecondi
    function crea_seme() 
    {
       list(
    $usec$sec) = explode(' 'microtime());
       return (float) 
    $sec + ((float) $usec 100000);
    }
    mt_srand(crea_seme());
    $pippo mt_rand();
    $pluto mt_rand(); 
    e non genera nessun errore
    MITTICCOOOOOOOOO!

  8. #8
    Utente di HTML.it L'avatar di chris
    Registrato dal
    Sep 1999
    Messaggi
    1,568
    Forse i record ammissibili per la tua query sono pochi.
    Comunque RAND() accetta tranquillamente un qualunque valore, ma devi fare in modo che sia diverso per ogni record.
    usa un RAND(campo_id_di_una_tabella_usata_nella_query)
    "Nei prossimi tre anni col mio governo vogliamo vincere anche il cancro, che colpisce ogni anno 250.000 italiani e riguarda quasi due milioni di nostri concittadini"

  9. #9
    Utente di HTML.it L'avatar di Teuzzo
    Registrato dal
    Mar 2002
    Messaggi
    969
    Lascia stare la funzione RAND() di mysql, fa schifo.
    Se vuoi un vero random usa il php:

    1) seleziona gli id con la query
    2) mettili in un array
    3) randomizza l'array con shuffle() o meglio con mt_rand().

  10. #10
    Originariamente inviato da Teuzzo
    Lascia stare la funzione RAND() di mysql, fa schifo.
    Se vuoi un vero random usa il php:

    1) seleziona gli id con la query
    2) mettili in un array
    3) randomizza l'array con shuffle() o meglio con mt_rand().

    Provato funziona benissimo


    Grazie
    3/6/2003 è morto l'angelo della mia vita..
    www.markwebinformatica.net
    My BLOG

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