Случайно ID от таблица

bganonymous

Registered
Имам следната таблица в phpMyAdmin: вижте снимката.

Искам да имам една променлива (например: $get_random_id), която да показва на случаен принцип цифра от полето "user_id" в таблицата на снимката. Как става това? :)
 
PHP:
$q = mysql_query("SELECT `user_id` FROM `users`");
while($r = mysql_fetch_array($q))
{
  $all_ids[] = $r['user_id'];
}

echo $all_ids[array_rand($all_ids)];
:?: :?:
 
Така, ако имам ID-та: 1, 2, 3, и 4. Няма да ми показва на случаен принцип едно от тях, а ще ми показва нещо от сорта на: 1133, 1111, 1214, 1213 и т.н.
 
я пробвай така:
PHP:
 $all_ids = array();
$q = mysql_query("SELECT `user_id` FROM `users`");
while($r = mysql_fetch_array($q))
{
  $all_ids[$r['user_id']] = $r['user_id'];
}

echo $all_ids[array_rand($all_ids)];
:idea:
 
Няма смисъл да се записват в масив при положение,че това може да стане в заявката.
[sql]
SELECT id FROM table ORDER BY RAND() LIMIT 1[/sql]
 
На fbian решението много по-елегантно, ако се взима само една произволна стойност. Но няколко заявки може да забавят процеса, а решението на joTunkiq може да се опрости до това:

PHP:
$all_ids = array();
$q = mysql_query("SELECT `user_id` FROM `users`");
while($r = mysql_fetch_array($q))
{
  $all_ids[] = $r['user_id'];
}
echo array_rand($all_ids);
 
anonimen каза:
На fbian решението много по-елегантно, ако се взима само една произволна стойност. Но няколко заявки може да забавят процеса, а решението на joTunkiq може да се опрости до това:

PHP:
$all_ids = array();
$q = mysql_query("SELECT `user_id` FROM `users`");
while($r = mysql_fetch_array($q))
{
  $all_ids[] = $r['user_id'];
}
echo array_rand($all_ids);
Не съм съгласен...
1) Селектира само номер на потребител, при което потока на данните е адски малък. И тази заявка
[sql]SELECT id FROM table ORDER BY RAND() LIMIT 1
[/sql]
би се задъхала и то не значитлено при база данни с брой записи над 7-8 милиона :)
 

Back
Горе