Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente bannato
    Registrato dal
    Nov 2004
    Messaggi
    202

    [Mysql e PHP] Selezione casuale di una riga

    Io ho bisogno di selezionare una riga casuale da un database e ottenere l'ID corrispondente.
    In pratica lo script conta il numero di righe contenute nella tabella poi sceglie un numero casuale tra 1 (la prima riga) e il numero massimo di righe.
    Una volta ottenuto il numero della riga però come faccio ad ottenere l'ID.
    Bisogna considerare il fatto che il campo ID non è sempre numerato in sequenza (ci sono molti salti) e non sempre contiene il numero reale della riga (ANZI QUASI MAI).
    Si posso avere situazioni del tipo
    | N riga | ID |
    | 1 | 25 |
    | 2 | 243 |
    | ... | ... |
    | 12 | 76 |

    Esiste qualche funzione che dato il numero di riga estrae il valore dei campi ?

  2. #2
    Prova ad usare RAND() ...

    select * from tabella
    order by RAND()
    limit 1


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente bannato
    Registrato dal
    Nov 2004
    Messaggi
    202
    forse ho scritto male il post e ho creato confusione.
    Nel database non esiste la colonna N Riga... è proprio quello il problema.

    Non esiste perchè sarebbe una cosa impossibile da gestire... nel caso ci fossero 10000 righe e si cancellasse la prima bisognerebbe rinumerarle tutte !

  4. #4
    Originariamente inviato da The FireFox
    forse ho scritto male il post e ho creato confusione.
    Nel database non esiste la colonna N Riga... è proprio quello il problema.

    Non esiste perchè sarebbe una cosa impossibile da gestire... nel caso ci fossero 10000 righe e si cancellasse la prima bisognerebbe rinumerarle tutte !


    E che c'entra.... ordini in modo randomize quello che c'e', e ne prendi uno.....

    Prendere quello che non c'e' non ci riesce manco la versione mysql rilasciata a LOURDES....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Originariamente inviato da The FireFox
    forse ho scritto male il post e ho creato confusione.
    Nel database non esiste la colonna N Riga... è proprio quello il problema.

    Non esiste perchè sarebbe una cosa impossibile da gestire... nel caso ci fossero 10000 righe e si cancellasse la prima bisognerebbe rinumerarle tutte !
    Scrivi la struttura dalla tabella

  6. #6
    Utente bannato
    Registrato dal
    Nov 2004
    Messaggi
    202
    la struttura della tabella è

    id (colonna degli id, non sono sequenziali)
    uid (colonna degli id abbinati agli user, non sequenziali)
    user (colonna che contiene il nome utente)


    codice:
    mysql_select_db($ndb);
    
    $record=mysql_query("SELECT * FROM prova ORDER BY RAND() LIMIT 1");
    
    print("$record");
    In questo modo mi seleziona sempre mi da sempre il messaggio:
    Resource id #2

  7. #7
    Originariamente inviato da The FireFox
    la struttura della tabella è

    id (colonna degli id, non sono sequenziali)
    uid (colonna degli id abbinati agli user, non sequenziali)
    user (colonna che contiene il nome utente)


    codice:
    mysql_select_db($ndb);
    
    $record=mysql_query("SELECT * FROM prova ORDER BY RAND() LIMIT 1");
    
    print("$record");
    In questo modo mi seleziona sempre mi da sempre il messaggio:
    Resource id #2
    E lo credo bene... quello e' il resource id number...
    codice:
    mysql_select_db($ndb);
    
    $record=mysql_query("SELECT * FROM prova ORDER BY RAND() LIMIT 1");
    
    $row = mysql_fetch_assoc($record);
    
    echo $row['id'];

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    Utente bannato
    Registrato dal
    Nov 2004
    Messaggi
    202
    Grazie Piero.mac. Come sampre dai buoni consigli.

    Mi ero dimenticato che il risultato era un array di valori....
    (Una dimenticanza abbastanza grave)


  9. #9
    Originariamente inviato da The FireFox
    Grazie Piero.mac. Come sempre dai buoni consigli.
    Mi ricordi un caro amico ... che cantava:

    codice:
    si sa che la gente da buoni consigli
    sentendosi come Gesu' nel tempio,
    
    si sa che la gente da buoni consigli 
    se non puo' piu' dare il cattivo esempio


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.