Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Случайный вывод данных из БД

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
unnamed_newbie
Отправлено: 01 Июня, 2011 - 12:52:33
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Здравствуйте товарищи программисты.

Сразу к делу:
Есть таблица с данными. Предположим что в ней есть 100 полей.
Мне нужно вывести 15 из них в случайном порядке, без повторений.

Сначала делал циклом, где в каждом шаге ставил случайное значение($i), затем делал выборку из базы данных где id равен $i.
И все бы ничего, но со временем стало ясно, что скорость работы такого скрипта очень сильно хромает из за бесконечной выборки из бд, а еще попадают одинаковые значения. И ко всему прочему, если допустим $i = 2, а в таблице идут поля со значениями id 1,3,4,5, то есть двойки нет, следовательно результат возвращает пустой...

Вот и решил обратиться сюда, поскольку своих знаний в данный момент не хватает для решения данной проблемы.
 
 Top
vlados
Отправлено: 01 Июня, 2011 - 12:56:13
Post Id



Посетитель


Покинул форум
Сообщений всего: 391
Дата рег-ции: Май 2011  


Помог: 1 раз(а)

[+][+][+]



Используй эту функцию
(Добавление)
unnamed_newbie кликни на "Спасибо" Ха-ха
 
 Top
unnamed_newbie
Отправлено: 01 Июня, 2011 - 12:58:18
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




vlados вы хотя бы читали первый пост целиком?
 
 Top
OrmaJever Модератор
Отправлено: 01 Июня, 2011 - 13:03:18
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. ... ORDER BY rand() LIMIT 15


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
unnamed_newbie
Отправлено: 01 Июня, 2011 - 13:06:48
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




OrmaJever, большое спасибо!
Заработало как надо Улыбка
 
 Top
vlados
Отправлено: 01 Июня, 2011 - 13:21:35
Post Id



Посетитель


Покинул форум
Сообщений всего: 391
Дата рег-ции: Май 2011  


Помог: 1 раз(а)

[+][+][+]


unnamed_newbie нет. А чем мой вариант отличается от варианта OrmaJever?
 
 Top
unnamed_newbie
Отправлено: 01 Июня, 2011 - 13:28:34
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




vlados, просто я так понял что ты мне назвал функцию, которая возвращает мне случайное число в каком то диапазоне, об этой функции я знал давно. А OrmaJever показал как применить эту самую функцию к выбору из базы данных, что мне собственно и нужно было. Теперь вот буду знать, что rand можно сувать в запрос к бд.
 
 Top
vlados
Отправлено: 01 Июня, 2011 - 13:33:47
Post Id



Посетитель


Покинул форум
Сообщений всего: 391
Дата рег-ции: Май 2011  


Помог: 1 раз(а)

[+][+][+]


unnamed_newbie ахахахахахахаахах Радость Радость Радость Радость Радость
Ну блин зачет чувак!!!!!!!!!!!!
Ты где учился sql?
 
 Top
kappa
Отправлено: 01 Июня, 2011 - 13:35:42
Post Id



Посетитель


Покинул форум
Сообщений всего: 349
Дата рег-ции: Апр. 2011  


Помог: 3 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT DISTINCT * FROM files ORDER BY rand() LIMIT 15

так вроде точно не будет повторятся

(Отредактировано автором: 01 Июня, 2011 - 13:37:17)

 
 Top
vlados
Отправлено: 01 Июня, 2011 - 13:38:18
Post Id



Посетитель


Покинул форум
Сообщений всего: 391
Дата рег-ции: Май 2011  


Помог: 1 раз(а)

[+][+][+]


CODE (htmlphp):
скопировать код в буфер обмена
  1. http://www.woweb.ru/load/93
 
 Top
unnamed_newbie
Отправлено: 01 Июня, 2011 - 13:40:28
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




vlados я вообще нигде не учился ни sql ни php
kappa а чем там DISTINCT занимается?
 
 Top
OrmaJever Модератор
Отправлено: 01 Июня, 2011 - 13:42:14
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




vlados пишет:
unnamed_newbie нет. А чем мой вариант отличается от варианта OrmaJever?

всем. Начём хотябы с того что rand() это php функция, а я привёл sql вариант.
unnamed_newbie пишет:
kappa а чем там DISTINCT занимается?

Ну если есть одинаковые значения то не будет повторений


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
vlados
Отправлено: 01 Июня, 2011 - 13:47:13
Post Id



Посетитель


Покинул форум
Сообщений всего: 391
Дата рег-ции: Май 2011  


Помог: 1 раз(а)

[+][+][+]


OrmaJever не умничай Хм Ты используешь ту же функцию но в скьюэл. Гений блин.
(Добавление)
OrmaJever гений помоги мне в вот этих топиках:
CODE (htmlphp):
скопировать код в буфер обмена
  1. http://forum.php.su/topic.php?forum=1&topic=7632
  2. http://forum.php.su/topic.php?forum=1&topic=7620
 
 Top
unnamed_newbie
Отправлено: 01 Июня, 2011 - 13:53:40
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




vlados в таком случае нужно было написать "вставь функцию rand в запрос mysql и припиши лимит", а иначе как бы я понял что ты имеешь ввиду.
 
 Top
vlados
Отправлено: 01 Июня, 2011 - 13:55:51
Post Id



Посетитель


Покинул форум
Сообщений всего: 391
Дата рег-ции: Май 2011  


Помог: 1 раз(а)

[+][+][+]


unnamed_newbie тебе может еще и скрипт написать? На германском форуме тебя бы забанили за это давно!
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB