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
Форумы портала PHP.SU :: Версия для печати :: Помогите разобраться с динамически созданным SELECT`ом
Форумы портала PHP.SU » » Работа с СУБД » Помогите разобраться с динамически созданным SELECT`ом

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

1. Andrew_li - 07 Июня, 2011 - 09:58:59 - перейти к сообщению
Добрый день, друзья Улыбка

Помогите разобраться с таким вот SELECT`ом:

PHP:
скопировать код в буфер обмена
  1. $FILTER = new Filter($DB);
  2. $filter_list = $FILTER->GetList();
  3. $filter_option_list = '<select id="fil_id" name="filter_id"><option value="0">(Не выбрано)</option>';
  4.  
  5. foreach($filter_list as $filter_id => $filter_data)
  6. {
  7. if($filter_id == $data['filter_id']) $filter_option_list .= '<option value="'. $filter_id .'" selected="selected">'. $filter_data['name'] .'</option>';
  8. else $filter_option_list .= '<option value="'. $filter_id .'">'. $filter_data['name'] .'</option>';
  9. }
  10. $filter_option_list .= '</select>';


При выборе фильтра, выдается сообщение:

PHP:
скопировать код в буфер обмена
  1. if($_POST['paty_radio'] == 1 && $_POST['filter_id'] == $_POST['filter_id'])
  2.                 {      
  3.                         $item_list = $ITEM->GetListFilter('filter_1');
  4.                         AddStatus('note', 'Был выбран фильтр,'. $filter_data['name']);
  5.                 }


Но name выдает самое последнее в списке.
Уже голову сломал.. Не понял
2. DlTA - 07 Июня, 2011 - 11:20:51 - перейти к сообщению
Andrew_li пишет:
Но name выдает самое последнее в списке.
А это кто?

смотрите чему у вас равно $data['filter_id'] при сравнении
3. Andrew_li - 07 Июня, 2011 - 11:48:43 - перейти к сообщению
DlTA пишет:
Andrew_li пишет:
Но name выдает самое последнее в списке.
А это кто?

смотрите чему у вас равно $data['filter_id'] при сравнении


name - это $filter_data['name']

Я занимаюсь PHP недавно, поэтому я может где напутал. Закатив глазки
4. DlTA - 07 Июня, 2011 - 12:13:51 - перейти к сообщению
скрипт работает походу нормально
а вот логика скрипта нет.
поясняю:
когда у вас проходит цикл foreach то по его завершению переменная $filter_data равна тому что было ей присвоено при последней итерации
а это и есть последнее значение

запрашивать надо не у $filter_data
а у $filter_list[$_POST['filter_id']]['name'] именно по индексу $_POST['filter_id'] и будет нужная структура
5. Andrew_li - 07 Июня, 2011 - 13:09:42 - перейти к сообщению
DlTA пишет:

запрашивать надо не у $filter_data
а у $filter_list[$_POST['filter_id']]['name'] именно по индексу $_POST['filter_id'] и будет нужная структура


Спасибо Ха-ха все заработало!!!

P.S. а можно сохранить выбранный select`ы и radio-кнопки после submit`а?
Побывал сессии, в файле сессии данные остаются, а значения сбрасываются. Хотя я наверно $_SESSION не правильно использовал.. Растерялся
Не подскажите, как должен выглядеть $_SESSION для radio-кнопки?
6. DlTA - 07 Июня, 2011 - 13:19:53 - перейти к сообщению
можно

так же как и не для radio-кнопки


вопрос в том что у вас в коде.
7. Andrew_li - 07 Июня, 2011 - 14:00:24 - перейти к сообщению
DlTA пишет:
можно
так же как и не для radio-кнопки
вопрос в том что у вас в коде.


Мое чудо вот: Улыбка
CODE (html):
скопировать код в буфер обмена
  1. <form id="filter" method="post"><table><tr>
  2. <td align="left" valign="middle"><input type="radio" value="1" name="paty_radio" onclick="HideTip(this)">Фильтер1</input></td>
  3. <td>{$filter_option_list}</td><td rowspan="2"><input type="submit" name="send_filter" value="Фильтровать"></td></tr>
  4. <tr>
  5. <td align="left" valign="middle"><input type="radio" value="2" name="paty_radio" onclick="HideTip(this)">Фильтер2</input></td>
  6. <td>{$filter_k_option_list}</td></tr></table></form>


В примерах про сессии $_SESSION присваивается значение, а потом $_SESSION[значение] можно пользоваться, я вроде правильно понял..
А как быть если я не перехожу на страницу, куда мне воткнуть $_SESSION[значение] ума не приложу Однако ?
8. morosit - 07 Июня, 2011 - 14:23:32 - перейти к сообщению
форма это же не всё чудо что у вас есть
вставляете
$_SESSION[значение]=значение
после того как определите значение
9. Andrew_li - 07 Июня, 2011 - 14:37:40 - перейти к сообщению
morosit пишет:
форма это же не всё чудо что у вас есть
вставляете
$_SESSION[значение]=значение
после того как определите значение


Я так полагаю, что это должно выглядеть так:
$_SESSION[$_POST['paty_radio']] = $_POST['paty_radio'];
10. morosit - 07 Июня, 2011 - 15:21:56 - перейти к сообщению
Andrew_li
скорее так
PHP:
скопировать код в буфер обмена
  1. $_SESSION['paty_radio'] = $_POST['paty_radio']
11. Andrew_li - 07 Июня, 2011 - 15:27:54 - перейти к сообщению
morosit пишет:
Andrew_li
скорее так
PHP:
скопировать код в буфер обмена
  1. $_SESSION['paty_radio'] = $_POST['paty_radio']


Спасибо, ну а вот теперь $_SESSION['paty_radio'] нужно как-то использовать.. Потому что в файле сессии данные paty_radio зафиксированы.
12. DlTA - 07 Июня, 2011 - 15:47:53 - перейти к сообщению
CODE (htmlphp):
скопировать код в буфер обмена
  1. <input ... value='<?=@$_SESSION['имя переменной'];?>' ...>

(Добавление)
для select у вас проверка уже есть
только вмето $_POST используйте $_SESSION

для чекбоксов или радио батанов
проверка по типу
if (isset($_SESSION['название']))
// вывод чезкбокса или радиобатана с атриботом checked
13. Andrew_li - 08 Июня, 2011 - 09:50:34 - перейти к сообщению
DlTA

При
CODE (html):
скопировать код в буфер обмена
  1. value="<?=@$_SESSION['paty_radio'];?>"
выдает ошибку:

Цитата:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in G:\home\****.ru\www\edit.php on line 310


И замена $_POST так же не увенчалась успехом Огорчение
14. DlTA - 08 Июня, 2011 - 11:04:11 - перейти к сообщению
посмотрите еще раз свой код
скорее всего налабали чет типа
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.   echo '...value="<?=@$_SESSION['paty_radio'];?>" ...';
  3. ?>
а это не правильно
учите синтаксис
предложенный код вставляется в HTML вставки, а не в PHP код.
(Добавление)
тоесть
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2.  .................
  3. ?>
  4. <input ... value='<?=@$_GET/$_POST/...?>' ......>
15. Andrew_li - 10 Июня, 2011 - 11:43:42 - перейти к сообщению
HTML код представлен так:

$table =<<<HTML
bla
bla
HTML;

и так:

$table .='<input type="text">bla</input>';

В таком случае, как поступать?

 

Powered by ExBB FM 1.0 RC1