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 :: сравнение переменных со списком ID

 PHP.SU

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


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

> Без описания
Voxxxxx
Отправлено: 15 Декабря, 2013 - 05:46:31
Post Id


Новичок


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


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




Доброго времени суток!
Очень надеюсь на помощь гуру и просто грамотных людей, потому что самостоятельно.. даже не знаю как приступить к исполнению данной мысли.

Возникла такая задача:

на сайте есть выпадающий список (в форме), в котором отображается дерево папок сервера, генерируемое обычной функцией чтения каталогов.

есть таблица в мускуле, где присутствуют поля ID и Текстовый эквивалент

пример:
123 | Василий Тёркин
124 | Иванов Иван
125 | Пушкин Ас


папки на сервере проименованы номерами ID.

пример:
info/0123
info/0124
info/0125


можно ли как-то сделать, чтобы при генерации выпадающего списка с папками, считывалась информация из базы и в списке отображалось значение Текстового Эквивалента, а не номер папки, потому что постоянно искать и сравнивать номера... задача совсем утомительная. (((

Заранее благодарен даже за наводки на тему в какую сторону копать.
Если кто-то подскажет более или менее готовое решение - ...буду сильно-пресильно благодарен! Закатив глазки
 
 Top
Deonis
Отправлено: 15 Декабря, 2013 - 06:56:52
Post Id



Посетитель


Покинул форум
Сообщений всего: 298
Дата рег-ции: Нояб. 2009  


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




1. Вытаскиваете все данные из БД
2. В цикле формируете массив, ключами которого будут ID
PHP:
скопировать код в буфер обмена
  1.  // запрос к базе пропускаю.
  2. $data = array();
  3. while($line = $res->fetch()){
  4.     $data[$line['id']] =  $line['text_equivalent'];
  5. }
  6. // если используете устаревший метод mysql_*, то так:
  7. while($line = mysql_fetch_assoc($res)){
  8.      $data[$line['id']] =  $line['text_equivalent'];
  9. }
  10. // на выходе мы получим примерно такой массив:
  11. $data = array (
  12.         123=>'Василий Тёркин',
  13.         124=>'Иванов Иван',
  14.         125=>'Пушкин Ас'
  15. );
3. Предположу, что вы считали все дерево каталога в массив $arr:
PHP:
скопировать код в буфер обмена
  1. $arr = array(
  2.   'info/0123',
  3.   'info/0124',
  4.   'info/0125'
  5. );
  6. $folders_array = array();
  7. foreach($arr as $val){
  8.         $folders_array[ (int)substr($val, strrpos($val,'/')+1) ] = $val;
  9. }
  10. // Массив теперь выглядит так:
  11. $folders_array = array (
  12.   123 => 'info/0123',
  13.   124 => 'info/0124',
  14.   125 => 'info/0125',
  15. )

4. Теперь, генерируя html-код выпадающего списка, остается подставлять необходимые значения:
PHP:
скопировать код в буфер обмена
  1. $list = '<select>';
  2. foreach($folders_array as $key => $val){
  3.     $list .= '<option value="'.$val.'">'.$data[$key].'</option>';
  4. }
  5. $list .= '</select>';
  6. echo $list;


Если пропустить этапы получения данных из БД, то пример можно посмотреть тут.

(Отредактировано автором: 15 Декабря, 2013 - 07:01:46)

 
 Top
Voxxxxx
Отправлено: 16 Декабря, 2013 - 05:25:38
Post Id


Новичок


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


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




Deonis
Спасибо большое за развёрнутый ответ. Пока всё выглядит более или менее понятным - пойду пробовать это реализовать.

(Отредактировано автором: 16 Декабря, 2013 - 05:26:51)

 
 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