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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: уже имеющиеся темы на форуме - читал, не ругайтесь :)
AlexNewaro
Отправлено: 21 Марта, 2015 - 02:10:25
Post Id



Новичок


Покинул форум
Сообщений всего: 29
Дата рег-ции: Янв. 2015  


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




Приветствую!
Прошу подсказки, а не сделать за меня Улыбка
Приходит из формы произвольное количество ID ( name чекбоксов = exc[] )
При приеме собирается в текстовый ряд ID:

if( count($_GET['exc']) > 0 )
{
$exc = implode(', ',$_GET['exc']);
}

А как я могу получить для каждого полученного ID соответствующее название статьи?
То есть я же не могу прописать заранее ассоциативный массив с названиями в этом случае, так как ID в таблице чекбоксов, доступных пользователю изначально, формируется из базы данных. Получается мне нужно, чтобы ассоциативный массив названий - id сформировался на лету, при получении списка выбранных id.

Жесть, короче, написал.

Посоветуете?
(Добавление)
Уточню:

Вывел таблицу с титлами статей, id статей в качестве value и чекбоксами.
Человек отметил те статьи, что ему интересны.
Запрос GET передал эти выбранные id.

PHP:
скопировать код в буфер обмена
  1. if( count($_GET['id']) > 0 )
  2. {$exc = implode(',',$_GET['id']);}


Скидыщь! Красота - получили

Теперь хорошо бы списочком опять тайтлы подвесить на выбранные id.

Добавляем сборку значений для запроса, выходит так:


PHP:
скопировать код в буфер обмена
  1. if( count($_GET['id']) > 0 )
  2. {$exc = implode(',',$_GET['id']);
  3.  $excquery.= ' IN('.$exc.')';}



Получили запрос:
CODE (SQL):
скопировать код в буфер обмена
  1. $query = "SELECT * FROM puk WHERE `id` = '$excquery'";
то есть
CODE (SQL):
скопировать код в буфер обмена
  1. $query = "SELECT * FROM puk WHERE `id` = 'IN (5,15,67)' ";


Получили в ответ массив титлов.

И вот тут случается попа.

Если бы варианты выбора чекбоксов всегда были одинаковые, то


PHP:
скопировать код в буфер обмена
  1. $puk[5] = 'Про любовь';
  2. $puk[15] = 'Про картошку';
  3. $puk[67] = 'Про соус Карри';



, далее


PHP:
скопировать код в буфер обмена
  1. $exces= array();
  2. foreach ($_GET['id'] as $val) {
  3. $exces[] = $puk[$val];}
  4. $exces= implode(', ', $exces);
  5.  
  6. echo $exces;



Получили бы
CODE (html):
скопировать код в буфер обмена
  1. Про любовь,Про картошку,Про соус Карри


НО!

Чекбоксы все время имеют разные ID, так как список статей для выбора (в самом начале путешествия) формируется на лету из базы, на основе и свежих поступлений. Поэтому заранее определенный ассоциативный массив - не катит. Получается его нужно собирать на лету.

И вот что делать бедному гусару, если список титлов нужен-нужен?
 
 Top
Sail
Отправлено: 21 Марта, 2015 - 20:08:50
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


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




AlexNewaro, атрибут value у checkbox'а использовать пробовали? Очень удобно ему задавать значение ID полученной из базы записи...
 
 Top
AlexNewaro
Отправлено: 21 Марта, 2015 - 23:05:41
Post Id



Новичок


Покинул форум
Сообщений всего: 29
Дата рег-ции: Янв. 2015  


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




Sail пишет:
AlexNewaro, атрибут value у checkbox'а использовать пробовали? Очень удобно ему задавать значение ID полученной из базы записи...


Куда я без без валью у чекбокса ))
А как я передаю, по вашему, выбранные ID через get-запрос? Они в валью из базы вставляются.

На самом деле вопрос уже решил, спасибо!
 
 Top
Russer
Отправлено: 21 Марта, 2015 - 23:13:47
Post Id


Гость


Покинул форум
Сообщений всего: 91
Дата рег-ции: Февр. 2015  


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




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


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB