while($arr[]=mysql_fetch_array($res))
{
// пустой цикл прокатит
}
Как сделать выборку определённого числа на php
Кто может помогите советом, появилась необходимость в скрипте который берёт одно единственное число из имеющихся, допустим 30 чисел, но каждый раз эти числа были разные.
Так прям мне сразу и не определиться, куда копать??! подскажите
скрипт на php, кол-во чисел из которых нужно выбрать - это кол-во строк в базе mysql.
Если нужно выбирать случайное число из заданного набора, да так чтобы выбрать все без повторений, то проще всего сложить этот набор в массив, потом его перемешать ([phpdoc]shuffle[/phpdoc]) и потом уже выбирать по очереди.
так, спасибо, буду смотреть.
rand(1,30)
мне нужно выбрать число из уже существующих чисел (который являются id-ми) и они идут не попорядку, например 2,5,6,10 и т.д.
1) вводится диапазон (допустим, 1..1000)
2) добавляется поле в таблице из кот. происходит выборка, например rand, далее в это поле при создании контента записывается значение rand(1,1000)
3) для выборки случайного значения исп. что-то типа SELECT ... WHERE `rand` > k1 LIMIT 1, где k1 это какое-то случайно гененрируемое число типа rand(1,999).
Метод, конечно, не такой уж и прекрасный, но лучше чем ORDER BY RAND (по скорости и нагрузке).
Цитата: vadim525
не rand наверно не покатит..
мне нужно выбрать число из уже существующих чисел (который являются id-ми) и они идут не попорядку, например 2,5,6,10 и т.д.
мне нужно выбрать число из уже существующих чисел (который являются id-ми) и они идут не попорядку, например 2,5,6,10 и т.д.
а нельзя рандомом выбрать индекс массива, в котором лежат эти "числа непопорядку"? и потом брать по этому индексу нужное число?
Единственный верный и максимально простой вариант предложил mike. Перемешиваете массив, а потом из него вынимаете элементы по очереди.
Не могу понять,
я получил из базы id из которых мне нужно выбрать одно случайное
$result = mysql_query("SELECT `id` FROM tovar WHERE cat='1'");
$res = mysql_fetch_array($result)
цифры там примерно такие:
1 2 3 5 12 14 17 21
не получается их перемешать и выбрать одно... эх
кто может помогите, плз.
да я наверно и не правильно делаю. И как сделать не могу понять.
ПОМОГИТЕ!!!
Текст ошибки напишите - мы же не телепаты.
Код:
<?
//mysql connection here
//table TEST: id, myname;
$res=mysql_query("select * from test");
$rows=mysql_num_rows($res);
while($arr[]=mysql_fetch_array($res))
{
// пустой цикл прокатит
}
$random=rand(0,($rows-1));
echo '<b>'.$arr[$random]["id"].': '.$arr[$random]["myname"].'</b>';
?>
//mysql connection here
//table TEST: id, myname;
$res=mysql_query("select * from test");
$rows=mysql_num_rows($res);
while($arr[]=mysql_fetch_array($res))
{
// пустой цикл прокатит
}
$random=rand(0,($rows-1));
echo '<b>'.$arr[$random]["id"].': '.$arr[$random]["myname"].'</b>';
?>
в общем,классно работает... но для больших баз НЕ ПОДХОДИТ.
Для больших другое надо...
Ваша помощь неоценима. Спасибо, последний вариант подошел.
Код:
Код:
while($arr[]=mysql_fetch_array($res));
array_pop($arr); //Один пустой элемент в конце не нужен
array_pop($arr); //Один пустой элемент в конце не нужен
Цитата: vadim525
Мужчины!!! спасибо большое )))
Ваша помощь неоценима. Спасибо, последний вариант подошел.
Ваша помощь неоценима. Спасибо, последний вариант подошел.
Такие восторженные "спасибо" говорят нажимая на значок весов под аватарой.
2 int:
А там что, пустой элемент добавляется в конце? :(