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 :: Выборка и склеивание значенией из БД
Покинул форум
Сообщений всего: 9
Дата рег-ции: Дек. 2007
Помог: 0 раз(а)
Здравствуйте!
такой вопрос.... у меня есть таблица sites в ней три поля: id, content, active, used. Мне нужно случайным образом взять три строки со значениями, и на выходе получить переменную, которая будет содержать как бы content сразу трех сайтов.... и для каждой строки которую мы брали, used сделать равной единице. Ну то есть типа эту мы использовали.
Champion
Отправлено: 21 Марта, 2009 - 14:09:11
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
select first 3 ... order by rand(); // взяли
потом fetch это в массивы id и content;
потом $content = implode('', $content);
потом $id = implode(', ', $id);
потом "update ... set used = 1 where id in ($id)"
phillip
Отправлено: 21 Марта, 2009 - 15:38:01
Новичок
Покинул форум
Сообщений всего: 9
Дата рег-ции: Дек. 2007
Помог: 0 раз(а)
СПАСИБОО!!! буду пробовать
phillip
Отправлено: 22 Марта, 2009 - 15:30:24
Новичок
Покинул форум
Сообщений всего: 9
Дата рег-ции: Дек. 2007
Помог: 0 раз(а)
пока что не получается.... Подскажите как правильно должно быть, пожалуйста
Покинул форум
Сообщений всего: 9
Дата рег-ции: Дек. 2007
Помог: 0 раз(а)
http://www.php.su/functions/?implode я ориентировался сюда)
>>что ты пытаешься сделать этим запросом?
этим запросом я счас пробую из таблицы sites достать три строки, и три поля 'content' соеденить в одно. для примера:
Таблица sites
id content active used
1 nokia 1 N
2 motorola 1 N
3 samsung 1 N
4 telefon21 1 N
Хочу получить строку 'nokia, motorola, samsung'
а уж потом N у трех строк сменить на Y
Champion
Отправлено: 23 Марта, 2009 - 09:28:28
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
Ладно. Функция implode вторым аргументом принимает массив. Во вторых, чтобы выбрать 3 строки, надо писать в запросе SELECT FIRST 3 или SELECT ... LIMIT 3.
phillip
Отправлено: 23 Марта, 2009 - 20:50:52
Новичок
Покинул форум
Сообщений всего: 9
Дата рег-ции: Дек. 2007
Помог: 0 раз(а)
спасибо, дождался вперед ответа на другом форуме)
Roman
Отправлено: 24 Марта, 2009 - 06:37:19
Новичок
Покинул форум
Сообщений всего: 8
Дата рег-ции: Нояб. 2008
Помог: 0 раз(а)
тем не менее попробуйте использовать прилагаемую библиотеку
перед этим конечно должно быть выполненно подключение к БД
В параметрах вам нужно передать только лишь количество требуемых записей для
выборки, вы указывали три, но библиотека построена так, что их кол-во можно изменять.
Вообще в этой задачке есть некторые "подводные камни", я постарался их учесть.Если попробуете, или будет что нибудь непонятно - отпишитесь. Отвечу. (Добавление)
ну, как обычно ошибочка есть в строке 40 надо исправить цифру 3 не переменную $summ, а то работать будет "неровно".
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.