Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как сделать выборку определённого числа на php

44K
03 сентября 2010 года
vadim525
41 / / 09.03.2010
Всем доброго времени суток.
Кто может помогите советом, появилась необходимость в скрипте который берёт одно единственное число из имеющихся, допустим 30 чисел, но каждый раз эти числа были разные.
Так прям мне сразу и не определиться, куда копать??! подскажите
скрипт на php, кол-во чисел из которых нужно выбрать - это кол-во строк в базе mysql.
4
03 сентября 2010 года
mike
3.7K / / 01.10.2002
Если нужно выбирать случайное число из заданного набора, да так чтобы выбрать все без повторений, то проще всего сложить этот набор в массив, потом его перемешать ([phpdoc]shuffle[/phpdoc]) и потом уже выбирать по очереди.
44K
03 сентября 2010 года
vadim525
41 / / 09.03.2010
так, спасибо, буду смотреть.
244
03 сентября 2010 года
UAS
2.0K / / 19.07.2006
rand(1,30)
44K
03 сентября 2010 года
vadim525
41 / / 09.03.2010
не rand наверно не покатит..
мне нужно выбрать число из уже существующих чисел (который являются id-ми) и они идут не попорядку, например 2,5,6,10 и т.д.
244
04 сентября 2010 года
UAS
2.0K / / 19.07.2006
Использовать ORDER BY RAND в SQL-запросе накладно. Когда я смотрял сорсы википедии, вроде как там есть выбор рандома следующим образом:
1) вводится диапазон (допустим, 1..1000)
2) добавляется поле в таблице из кот. происходит выборка, например rand, далее в это поле при создании контента записывается значение rand(1,1000)
3) для выборки случайного значения исп. что-то типа SELECT ... WHERE `rand` > k1 LIMIT 1, где k1 это какое-то случайно гененрируемое число типа rand(1,999).

Метод, конечно, не такой уж и прекрасный, но лучше чем ORDER BY RAND (по скорости и нагрузке).
2
04 сентября 2010 года
squirL
5.6K / / 13.08.2003
Цитата: vadim525
не rand наверно не покатит..
мне нужно выбрать число из уже существующих чисел (который являются id-ми) и они идут не попорядку, например 2,5,6,10 и т.д.



а нельзя рандомом выбрать индекс массива, в котором лежат эти "числа непопорядку"? и потом брать по этому индексу нужное число?

13
04 сентября 2010 года
RussianSpy
3.0K / / 04.07.2006
Единственный верный и максимально простой вариант предложил mike. Перемешиваете массив, а потом из него вынимаете элементы по очереди.
44K
04 сентября 2010 года
vadim525
41 / / 09.03.2010
Что то у меня и не получается.
Не могу понять,
я получил из базы id из которых мне нужно выбрать одно случайное

$result = mysql_query("SELECT `id` FROM tovar WHERE cat='1'");
$res = mysql_fetch_array($result)

цифры там примерно такие:
1 2 3 5 12 14 17 21

не получается их перемешать и выбрать одно... эх
кто может помогите, плз.
44K
05 сентября 2010 года
vadim525
41 / / 09.03.2010
я когда начинаю перемешивать $res выдается ошибка.
да я наверно и не правильно делаю. И как сделать не могу понять.
ПОМОГИТЕ!!!
13
05 сентября 2010 года
RussianSpy
3.0K / / 04.07.2006
Текст ошибки напишите - мы же не телепаты.
369
05 сентября 2010 года
Kesano
451 / / 09.10.2007
хз что там у вас за проблема...

Код:
<?
//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>';
?>


в общем,классно работает... но для больших баз НЕ ПОДХОДИТ.
Для больших другое надо...
44K
06 сентября 2010 года
vadim525
41 / / 09.03.2010
Мужчины!!! спасибо большое )))
Ваша помощь неоценима. Спасибо, последний вариант подошел.
366
06 сентября 2010 года
int
668 / / 30.03.2005
 
Код:
while($arr[]=mysql_fetch_array($res))
 {
  // пустой цикл прокатит
 }
=>
 
Код:
while($arr[]=mysql_fetch_array($res));
array_pop($arr); //Один пустой элемент в конце не нужен
369
06 сентября 2010 года
Kesano
451 / / 09.10.2007
Цитата: vadim525
Мужчины!!! спасибо большое )))
Ваша помощь неоценима. Спасибо, последний вариант подошел.



Такие восторженные "спасибо" говорят нажимая на значок весов под аватарой.

2 int:
А там что, пустой элемент добавляется в конце? :(

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог