mysql query random riga

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
Ragazzi buondì,

Ho un problema nel realizzare una query.

Ho una tabella nel db chiamata Link che si compone di due colonne, una id con appunto un id AUTO_INCREMENT e una link con appunto al suo interno dei link.
Es:

id link
1 www.google.it
2 www.yahoo.com
3 www.bing.it

Vorrei creare una query che estragga randomicamente un solo link.

Ho provato svariate soluzioni ma non mi vanno, vi posto il file php interessato:

PHP:
// Mi connetto al database
require "../config.php";
$link=mysql_connect($HOST, $DB_USER_NAME, $DB_USER_PWD); 
mysql_select_db ($DB);


//$result = mysql_query("SELECT link FROM Link WHERE RAND()<(SELECT ((1/COUNT(*))*10) FROM Link) ORDER BY RAND() LIMIT 1");

/*$range_result = mysql_query( " SELECT MAX(id) AS max_id , MIN(id) AS min_id FROM Link ");
$range_row = mysql_fetch_object( $range_result ); 
$random = mt_rand( $range_row->min_id , $range_row->max_id );
$result = mysql_query( " SELECT * FROM Link WHERE id >= $random LIMIT 0,1 ");*/

$result = mysql_query("SELECT link FROM Link ORDER BY RAND() LIMIT 1");



var_dump($result);
echo $result;

Da sempre come risultato resource(4) of type (mysql result) Resource id #4
 
Ciao, l'ultima query è giusta, ma, hai dimenticato di estrarre il risultato
PHP:
$row = mysql_fetch_assoc($result);
echo $row['link'];
se fai il var_dump di $result è corretto che ti mostra quello che hai postato
 
Ciao, l'ultima query è giusta, ma, hai dimenticato di estrarre il risultato
PHP:
$row = mysql_fetch_assoc($result);
echo $row['link'];
se fai il var_dump di $result è corretto che ti mostra quello che hai postato

Infatti si :)

Stavo per postare di aver risolto in questo modo

PHP:
<?php
// Mi connetto al database
require "../config.php";
$link=mysql_connect($HOST, $DB_USER_NAME, $DB_USER_PWD); 
mysql_select_db ($DB);

$range_result = mysql_query( " SELECT MAX(id) AS max_id , MIN(id) AS min_id FROM Link ");
$range_row = mysql_fetch_object( $range_result ); 
$random = mt_rand( $range_row->min_id , $range_row->max_id );
$result = mysql_query( " SELECT * FROM Link WHERE id >= $random LIMIT 0,1 ");

$titolo = mysql_fetch_row($result);

var_dump($result);

echo "<pre>";
print_r($titolo);
echo "</pre>";
?>

Mi spiace di aver postato, alle volte vado in panico e sono troppo precipitoso XD
 
Una query secca secondo me è il modo migliore per risparmiare risorse (umane sopratutto)
PHP:
<?php
$result = mysql_query("SELECT link FROM Link ORDER BY RAND() LIMIT 1");
$row = mysql_fetch_assoc($result);
echo $row['link'];
?>
basta notare la quantità minima di istruzioni
 

Discussioni simili