Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21

Discussione: Random con clausola

  1. #1

    Random con clausola

    $query2 = "SELECT * FROM Tabella ORDER BY RAND()";

    E' possibile far comparire più frequente un record che ha un campo 'Priorita' 10 rispetto ad uno che ha 5?

  2. #2

  3. #3

  4. #4

  5. #5
    al massimo puoi fare questo:
    $query2 = "SELECT * FROM Tabella where priorità='10' ORDER BY RAND()";

  6. #6
    E qua c'arrivo!

  7. #7
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    secondo me potresti fare una cosa cosi' s nn esiste una funzione specifica.
    Estari i dati senza rand();
    Li metti in un array e usi una funzione per estrarre random un valore all'interno.
    Nel momento dell'esecuzione, controlli il valore estratto .
    Allo stesso tempo ti crei un valore di indice ( $i ) che si incrementa di 1 ogni volta che viene eseguito il random e salvi il suo valore in un dato di sessione.
    A questo punto con un altro controllo fai questo :
    Calcoli quante volte e' stao incrementato il valore e ogni tot incrementi, forzi l'estrazione sul valore che ti serve.
    Sembra incasinato ma in realta' e' piu' semplice da farsi.

  8. #8
    Incasinato sì VVoVe:

  9. #9
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    provo a farlo io se vuoi...poi tipasso il codice

  10. #10
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    Ho fatto questo e funziona. Provalo cosi' com'e' e vedi un'po'...ovviamente lo dovrai adattare coi tuoi dati...
    fammi sapere.

    <?
    //require ("_configure/config.cfg.php");
    session_start();

    //$_SESSION['INDICE']=0;
    //echo "session iniziale=".$_SESSION['INDICE']."
    ";

    $dati = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18 ,19,20); //qui hai un array con i tuoi valori

    $tot = 20; //calcoli il totale dei risultati

    $rand = rand(1,$tot); //genera un numero a caso da 1 al numero massimo esistente
    echo "random generato iniziale = ".$rand."
    ";

    if($rand != 10) {
    $_SESSION['INDICE'] = $_SESSION['INDICE'] + 1;
    }

    if($_SESSION['INDICE'] <= 3) {
    echo "valore casuale=".$dati[$rand]."
    ";
    } else {
    if($_SESSION['INDICE'] > 3) {
    $_SESSION['INDICE'] = 0;
    echo "valore forzato=".$dati[9]."
    ";
    }
    }

    echo "session_indice=".$_SESSION['INDICE'];
    //in questo modo ogni 3 o 4 volte esce il dato fisso che vuoi tu.
    ?>

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.