Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074

    valore random da selezionare

    Questo è il problema:
    ho una tabella di db (mysql) in cui sono registrati una serie di dati;
    questi dati sono soggetti a continua variazione, nel senso che possono essere cancellati, se ne aggiungono di nuovi, ecc.
    Per identificare in modo univoco questi dati, dispongo di un campo di tabella, denominato 'pro_id', autoincrementale. Naturalmente, quando un dato viene cancellato, il relativo 'pro_id' scompare, mentre se ne aggiungo uno nuovo, il relativo 'pro_id' sarà uguale al 'pro_id' più alto, +1.
    Il problema sorge perchè, in un'altra pagina, devo richiamare in modo random uno qualunque dei dati della tabella.
    Io ho proceduto così:
    $result = mysql_query("SELECT * FROM `profili`");
    $totalrows = mysql_num_rows($result);
    srand((double)microtime()*1000000);
    $random_number = rand(1,$totalrows);
    in questo modo, genero un numero random compreso tra 1 ed il numero di colonne della tabella; quindi:
    $result2 = mysql_query("SELECT * FROM `profili` WHERE pro_id = '$random_number'");while ($row2 = mysql_fetch_array($result2)) {
    $descr = $row2["descrizione"];
    $sede = $row2["sede"];
    $full = $descr." | Sede di: ".$sede."";
    }
    Il fatto è che, il numero random che viene generato è compreso tra 1 ed il n° di 'pro_id' più elevato, quindi può anche comprendere numeri che non si riferiscono più ad alcun 'pro_id' (perchè nel frattempo è stato cancellato); di conseguenza, spesso non viene richiamato alcun dato.
    Come posso risolvere?
    Avevo pensato di mettere, nella seconda query, una condizione if, del tipo:
    if ($row2['pro_id']) {...
    ma il risultato è che va in loop, senza restituirmi alcunché.
    Suggerimenti?

  2. #2
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003
    fai la query in questo modo:
    "SELECT * FROM `profili` ORDER BY RAND() LIMIT 1";
    Ti seleziona un record casuale e sarai sicuro che è presente nel db

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    well!!!
    grazie 1000....

  4. #4
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003
    prego

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.