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ì:
in questo modo, genero un numero random compreso tra 1 ed il numero di colonne della tabella; quindi:$result = mysql_query("SELECT * FROM `profili`");
$totalrows = mysql_num_rows($result);
srand((double)microtime()*1000000);
$random_number = rand(1,$totalrows);
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.$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."";
}
Come posso risolvere?
Avevo pensato di mettere, nella seconda query, una condizione if, del tipo:
ma il risultato è che va in loop, senza restituirmi alcunché.if ($row2['pro_id']) {...
Suggerimenti?
![]()