Devo estrarre casualmente dei numeri (degli id) da un db, allora faccio eseguire un rand(), dove imposto i valori minimi e massimi del range (controllando l'id più piccolo e l'id più alto - sono id numerici). Però ho bisogno anche di controllare nel contempo che l'id "casuale" effettivamente esista, quindi ho bisogno di rendere la funzione ricorsiva, in modo tale che se l'id casuale non esiste nel db, php ne generi un altro diverso.
Ora, il codice in sè mi funziona (su db Mysql), ma se provo a metterlo dentro a una funzione poi non elabora. E non riesco a capire perchè: sapreste suggerirmi un possibile motivo?
Ecco il codice:
Codice PHP:
$_CONFIG['host'] = "localhost";
$_CONFIG['user'] = "***";
$_CONFIG['pass'] = "*****************************************************";
$_CONFIG['dbname'] = "test";
$conn = mysql_connect($_CONFIG['host'], $_CONFIG['user'], $_CONFIG['pass'])
or die('Impossibile stabilire una connessione');
mysql_select_db($_CONFIG['dbname']);
function random_number()
{
$query = "SELECT MIN(id) FROM rand";
$mysql_query = mysql_query($query); #query da datbase, ricavo il primo id
$array = mysql_fetch_array($mysql_query);
$min = $array['0']; #valore minimo del range in cui estrarre il numero casuale
$sql = "SELECT MAX(id) FROM rand";
$sql_query = mysql_query($sql); #query da datbase, ricavo l'ultimo id
$arra = mysql_fetch_array($sql_query);
$max = $arra['0']; #valore massimo del range in cui estrarre il numero casuale
$query_2 = mysql_query("SELECT id FROM rand");
$f = mysql_fetch_array($query_2);
$rand = rand($min, $max);
#ancora nn mi funziona il codice prima, a questa parte ci penso dopo
#if ( in_array($rand, $f) )
# {echo $rand;}
#else
# { random();}
}
#qua funziona
$prova = "SELECT id FROM rand";
$query = mysql_query($prova);
while($f = mysql_fetch_array($query))
{echo "$f[0]\n";}
$query = "SELECT MIN(id) FROM rand";
$mysql_query = mysql_query($query); #query da datbase, ricavo il primo id
$array = mysql_fetch_array($mysql_query);
$min = $array['0']; #valore minimo del range in cui estrarre il numero casuale
echo "min -> $min\n";
$sql = "SELECT MAX(id) FROM rand";
$sql_query = mysql_query($sql); #query da datbase, ricavo l'ultimo id
$arra = mysql_fetch_array($sql_query);
$max = $arra['0']; #valore massimo del range in cui estrarre il numero casuale
echo "max -> $max\n";
$query = mysql_query("SELECT id FROM rand");
$f = mysql_fetch_array($query);
$rand_0 = rand($min, $max);
echo "rand_0 -> $rand_0\n";
$rand = random_number();
echo "rand -> $rand\n";
?>