Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Программирование > PHP

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 10.11.2003, 01:52
silgd вне форума Посмотреть профиль Отправить личное сообщение для silgd Посетить домашнюю страницу silgd Найти все сообщения от silgd
  № 1  
silgd
 
Аватар для silgd

Регистрация: Aug 2002
Адрес: Israel
Сообщений: 35
Отправить сообщение для silgd с помощью ICQ
Question Random query?

Подсакажите как сделать рандом запрос.

PHP код:
$result mysql_query("SELECT * FROM travel WHERE recommended='1' ORDER BY RAND() LIMIT 1"); 
Только без RAND(), с ним Bug в mysql 3.23.53,
я пытаюсь выбрать одну строку в рандомальном порядке где recommended='1', как ето можно вычеслить на PHP?
Без использования RANDOM().
__________________
EVIL-HORSE

Старый 10.11.2003, 02:20
kompadre вне форума Посмотреть профиль Отправить личное сообщение для kompadre Найти все сообщения от kompadre
  № 2  
kompadre
 
Аватар для kompadre

Регистрация: Aug 2001
Адрес: Barcelona
Сообщений: 1,277
Отправить сообщение для kompadre с помощью ICQ
Выбрать твою квери и в пхп и сделать rand(0, $max), прежде не забыв "рандомизировать" с помощью srand() ($max в ранде должен равнятся mysql_num_rows() твоего кверя).
Дальше - mysql_data_seek к получившимуся ранду...

Кстати, почему бы не актуализировать заведомо глючный мускул?

Старый 10.11.2003, 02:36
silgd вне форума Посмотреть профиль Отправить личное сообщение для silgd Посетить домашнюю страницу silgd Найти все сообщения от silgd
  № 3  
silgd
 
Аватар для silgd

Регистрация: Aug 2002
Адрес: Israel
Сообщений: 35
Отправить сообщение для silgd с помощью ICQ
Ты бы не мог на примере ето показать?
//please
__________________
EVIL-HORSE

Старый 10.11.2003, 03:22
kompadre вне форума Посмотреть профиль Отправить личное сообщение для kompadre Найти все сообщения от kompadre
  № 4  
kompadre
 
Аватар для kompadre

Регистрация: Aug 2001
Адрес: Barcelona
Сообщений: 1,277
Отправить сообщение для kompadre с помощью ICQ
$sql_q = "SELECT * FROM travel WHERE recommended='1' "
$qw = mysql_db_query($db, $sql_q);
$max = mysql_num_rows($qw);
$random_q = random(0, $max);
mysql_db_seek($qw, $random);
// dalshe delayesh mysql_result i vse chto tebe nado

function random ($min, $max) {
list($usec, $sec) = explode(' ', microtime());
$rand_t = $sec + ((float) $usec * 100000);
srand($rand_t);
return rand($min, $max);
}

Старый 10.11.2003, 09:32
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 5  
Crazy
[+1 23.05.11]
 
Аватар для Crazy

Регистрация: Dec 2001
Сообщений: 4,159
Ужас какой... Тянуть из базы туеву хучу строк, чтобы выбрать одну. Кто-то из мудрых советовал так:

Код:
select rand()+0 as r, .... from ... where ... order by 1 limit 1
Это работает даже в MySQL с глюком оптимизатора...
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++

Старый 10.11.2003, 22:19
kompadre вне форума Посмотреть профиль Отправить личное сообщение для kompadre Найти все сообщения от kompadre
  № 6  
kompadre
 
Аватар для kompadre

Регистрация: Aug 2001
Адрес: Barcelona
Сообщений: 1,277
Отправить сообщение для kompadre с помощью ICQ
Мдя, быть может тоже правда. Хотя в принципе то order by rand тоже присутвует. Да и ху*ву тучу строк из базы тянуть не обязательно.

Запрос увесистый получается? Вопрос правильной организации данных (и конечно - качественого администрирования и апдейта мускула).

Вот что странно : этот глюк касается только виндовозкого мускула (http://groups.google.com/groups?q=my....edu.tw&rnum=2) . Очень сомниваюсь что-бы на хостинге автора стоял Windows + Mysql . То есь на локалхосте проблемма? Почему бы его не обновить на более стабильную версию ?

Старый 11.11.2003, 00:29
silgd вне форума Посмотреть профиль Отправить личное сообщение для silgd Посетить домашнюю страницу silgd Найти все сообщения от silgd
  № 7  
silgd
 
Аватар для silgd

Регистрация: Aug 2002
Адрес: Israel
Сообщений: 35
Отправить сообщение для silgd с помощью ICQ
//

RAND() не отзывается хоть как на mysql 3.23.xx
точно ты заметил что Bug только на Windows

Cделал Upgrate to mysql 4.0.16 и всё ok, rand() работает как следует.
__________________
EVIL-HORSE

Старый 11.11.2003, 00:38
nagash вне форума Посмотреть профиль Отправить личное сообщение для nagash Посетить домашнюю страницу nagash Найти все сообщения от nagash
  № 8  
nagash
Ветеран форума
 
Аватар для nagash

Регистрация: Jul 2001
Адрес: Москва
Сообщений: 3,088
Отправить сообщение для nagash с помощью ICQ
а в мануале советуют MD5(RAND()) - я так пробовал...
работало...

Старый 11.11.2003, 01:07
silgd вне форума Посмотреть профиль Отправить личное сообщение для silgd Посетить домашнюю страницу silgd Найти все сообщения от silgd
  № 9  
silgd
 
Аватар для silgd

Регистрация: Aug 2002
Адрес: Israel
Сообщений: 35
Отправить сообщение для silgd с помощью ICQ
Оно так типа лучше рандомируется если с MD5?

Мне нужно что бы на заглавной странитце при загрузке поевлялось ADV, поетому нужен хороший рандомайзер.
__________________
EVIL-HORSE


Последний раз редактировалось silgd; 11.11.2003 в 01:14.
Старый 11.11.2003, 01:36
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 10  
Crazy
[+1 23.05.11]
 
Аватар для Crazy

Регистрация: Dec 2001
Сообщений: 4,159
Цитата:
Оригинал написал(а) silgd
Оно так типа лучше рандомируется если с MD5?
Это другой -- более дорогой -- способ подавить оптимизатор. Эффект тот же, что и от умножения на 1 или от добавления 0: оптимизатор видит, что это ВЫРАЖЕНИЕ и считает, что оно может быть различным для разных строк. В некоторых версиях, если мне память не изменяет, нужно использовать в выражении какое-нибудь поле. Типа такого: rand()+x*0.

P.S. В версии 3.23.XX нет никакого глюка с rand. Там есть глюк с оптимизатором запросов.
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++


Последний раз редактировалось Crazy; 11.11.2003 в 01:38.
Создать новую тему   Часовой пояс GMT +4, время: 09:05.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 09:05.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.