Hola, lo puedes realizar directamente desde la consulta SQL, o mediante una funcion en php.
Mediante sql seria de la siguiente forma:
Código :
$random_row = mysql_fetch_row(mysql_query("select * from TU_TABLA order by rand() limit 1"));
$random_row devuelve un array con los datos de la fila extraida aleatoriamente
Cuando la tabla es muy grande, este metodo empieza a ser algo lento (alrededor de 10,000 registros).
La funcion en php seria la siguiente:
Código :
<?php
function random_row($table, $column) {
$max_sql = "SELECT max(" . $column . ")
AS max_id
FROM " . $table;
$max_row = mysql_fetch_array(mysql_query($max_sql));
$random_number = mt_rand(1, $max_row['max_id']);
$random_sql = "SELECT * FROM " . $table . "
WHERE " . $column . " >= " . $random_number . "
ORDER BY " . $column . " ASC
LIMIT 1";
$random_row = mysql_fetch_row(mysql_query($random_sql));
if (!is_array($random_row)) {
$random_sql = "SELECT * FROM " . $table . "
WHERE " . $column . " < " . $random_number . "
ORDER BY " . $column . " DESC
LIMIT 1";
$random_row = mysql_fetch_row(mysql_query($random_sql));
}
return $random_row;
}
//MODO DE USO
echo '<pre>';
print_r(random_row('TU TABLA', 'TU COLUMNA'));
echo '</pre>';
?>
Saludos, espero te sirva