Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывод рандомных столбцов из MySQL 
:(
    Опции темы
Sice
  Дата 23.12.2008, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Радио Онлайн
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 4.12.2007

Репутация: 0
Всего: 0



Помогите пожалуйста, нужно вывести 20 рандомных записей из БД (MySQL) и занести их в массив.
Не понимаю как осуществить, подскажите пожалуйста, заранее спасибо.
PM MAIL WWW   Вверх
MoLeX
Дата 23.12.2008, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



что то наподобие
Код

SELECT * FROM `table`ORDER BY RAND( ) LIMIT 0 , 20



--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
skyboy
Дата 23.12.2008, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата

Вывод рандомных столбцов

Цитата(Sice @  23.12.2008,  13:30 Найти цитируемый пост)
нужно вывести 20 рандомных записей

надо определиться. то ли тебе случайные поля одной записи(дикая денормализация?), либо тебе 20 записей.
PM MAIL   Вверх
Sice
Дата 23.12.2008, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Радио Онлайн
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 4.12.2007

Репутация: 0
Всего: 0



Цитата(skyboy @ 23.12.2008,  14:39)
Цитата

Вывод рандомных столбцов

Цитата(Sice @  23.12.2008,  13:30 Найти цитируемый пост)
нужно вывести 20 рандомных записей

надо определиться. то ли тебе случайные поля одной записи(дикая денормализация?), либо тебе 20 записей.

извиняюсь, 20 столбцов нужно вывести, спасибо MoLex, тогда получается

Код

$result = mysql_query("SELECT * FROM `table`ORDER BY RAND( ) LIMIT 0 , 20");
$rows = mysql_fetch_array($result);


Получается, что в $result занесся только первый столбик, а вопрос в том, как 'положить' остальные 19 столбиков в массив или просто в переменные?

p.s я только учусь  smile 

Это сообщение отредактировал(а) Sice - 23.12.2008, 14:46
PM MAIL WWW   Вверх
bars80080
Дата 23.12.2008, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



в $result занёсся индификатор выборки, а в $row ты получил первую строку выборки, разбиваемую в массив по полям
чтобы получить все 20, достаточно прокрутить $rows = mysql_fetch_array($result); в цикле. всякий раз в $row будет новая строка


"20 столбцов нужно вывести" - не соответствует тому что предложил Molex
PM MAIL WWW   Вверх
Sice
Дата 23.12.2008, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Радио Онлайн
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 4.12.2007

Репутация: 0
Всего: 0



Цитата(bars80080 @ 23.12.2008,  15:16)
в $result занёсся индификатор выборки, а в $row ты получил первую строку выборки, разбиваемую в массив по полям
чтобы получить все 20, достаточно прокрутить $rows = mysql_fetch_array($result); в цикле. всякий раз в $row будет новая строка


"20 столбцов нужно вывести" - не соответствует тому что предложил Molex

я просто путаю столбцы с полями )))) 

bars, вот смотри, через цикл прогоняем например так:

Код

<?
do
{
//
}
while (mysql_fetch_array($rows));
?>


Как я понял так? А теперь как мне присвоить к каждому полю переменную ?? Не писать же мне еще19 раз этот цикл ? smile

Добавлено @ 17:58


Это сообщение отредактировал(а) Sice - 23.12.2008, 18:00
PM MAIL WWW   Вверх
bars80080
Дата 23.12.2008, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



ня, достаточно прочитать книжку по пхп, это ж классический пример. или здесь на форуме порыскать, наверное в каждой второй теме попадается

скажем, так:

Код

$sql = 'SELECT * FROM `table`ORDER BY RAND( ) LIMIT 0 , 20';
$result = mysql_query($sql);
$i = 0;
while($row = mysql_fetch_array($result)) {
    echo 'строчка '.$i.': колонка1='.$row['column1'].', колонка2='.$row['column2']; // и т.д.
    $i++;
}


конечно надо заменить column1 и т.д. на имена твоих полей
PM MAIL WWW   Вверх
gibbzy
Дата 24.12.2008, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 25.1.2008

Репутация: нет
Всего: 3



а если не секрет для чего это ? 
PM MAIL WWW ICQ   Вверх
bars80080
Дата 24.12.2008, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



наверно, для того чтобы решить задачу топикстартера
PM MAIL WWW   Вверх
skyboy
Дата 24.12.2008, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



gibbzy, ну, типа "20 случайных фото" или "20 произвольных продуктов в категории"
PM MAIL   Вверх
gibbzy
Дата 24.12.2008, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 25.1.2008

Репутация: нет
Всего: 3



skyboy, можно ещё взять максимальное id и методами php сгенерить случайное число в этом диапазоне. А потом выбрать. 
Я картинки обычно называю id шниками тут и выбирать не нужно 
PM MAIL WWW ICQ   Вверх
theworldcreator
Дата 24.12.2008, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 362
Регистрация: 25.8.2007
Где: Москва

Репутация: 10
Всего: 13



gibbzy
Гениально. Вместо использования одного быстрого и рабочего mysql запроса, воспользуемся двумя, инициализируем лишний раз генератор случайных чисел, так еще и лишимся стабильности. Браво.
PM MAIL WWW ICQ   Вверх
bars80080
Дата 24.12.2008, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



при этом не учитывая, что наличие id=100, не говорит о наличии ста записей
PM MAIL WWW   Вверх
Nigel
Дата 24.12.2008, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


познаю мир
**


Профиль
Группа: Участник
Сообщений: 515
Регистрация: 20.11.2007

Репутация: 7
Всего: 19



Цитата(theworldcreator @ 24.12.2008,  18:12)
gibbzy
Гениально. Вместо использования одного быстрого и рабочего mysql запроса, воспользуемся двумя, инициализируем лишний раз генератор случайных чисел, так еще и лишимся стабильности. Браво.

Это какой быстрый и рабочий запрос? 
Код

select * from `table` order by rand()

Этот чтоли? Это самый тормознутый из всех запросов мускула smile 
PM MAIL   Вверх
godvinn
Дата 24.12.2008, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 4.4.2008
Где: possibility of mo ving to Kyiv

Репутация: 1
Всего: 1



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


--------------------
Everything happens in life.
user posted image
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0856 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.