Изменить обработку формы с checkbox на select

Тема в разделе "PHP", создана пользователем surfman, 16 май 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. surfman

    surfman

    Регистр.:
    20 мар 2007
    Сообщения:
    277
    Симпатии:
    13
    Помогите изменить обработку формы с checkbox на select

    Добрый день.
    Есть скрипт каталога. В нем есть поиск по параметрам, но все параметры выводятся в виде
    HTML:
    <input type=checkbox name=item[1][1] >значение 1
    <input type=checkbox name=item[1][2] >значение 2
    <input type=checkbox name=item[1][3] >значение 3
    <input type=checkbox name=item[2][11] >значение 11
    <input type=checkbox name=item[2][22] >значение 22
    <input type=checkbox name=item[2][33] >значение 33
    
    Но мне нужно изменить чекбоксы на выпадающие списки. Я нашел где формируется HTML вывод. Пока изменил результат на
    HTML:
    
    <select name="item[1]">
    <option value=[1] >значение 1</option>
    <option value=[2] >значение 2</option>
    <option value=[3] >значение 3</option>
    </select>
    <select name="item[2]">
    <option value=[11] >значение 1</option>
    <option value=[22] >значение 2</option>
    <option value=[33] >значение 3</option>
    </select>
    
    Хотя я не знаю, что нужно ставить в name и value.
    Вроде нашел обработчик.
    Код:
    if($_SESSION['item'])
    {
    $u="";
    foreach($_SESSION['item'] as $in=>$ses_sp)
    	{
    		$u .= " item".intval($in)." IN (";
    		$a=0;
    		foreach($ses_sp as $i=>$ses_s)
    			{
    			if($a>0)
    			$u .= ",";
    			$u .= intval($i);
    			$a++;
    			}
    		$u .= ") AND ";
    	}
    $rez .=$u;
    }
    
    В результате выбора в списке получаем номер строки в БД, где и отбираются и сравниваются параметры в списке каталога.
    Но лезут ошибки. ТОесть мне и обработчик наверно нужно изменить? как?
    Просто я PHP не занимался. Так, могу там удалить, тут заменить, но глобально не разбираюсь.
    Заранее благодарен.
     
  2. CrashX

    CrashX В прошлом XSiteCMS

    Регистр.:
    6 июн 2008
    Сообщения:
    682
    Симпатии:
    112
    в старом коде посмотри как у тебя было сделано обращение к item[2][33]
    оно и ставится вместо [33] и будет все норм.
     
  3. surfman

    surfman

    Регистр.:
    20 мар 2007
    Сообщения:
    277
    Симпатии:
    13
    Обработчик, что в первом сообщении, и есть он. Я из кода вырезал. Или на что-то другое нужно смотреть?
     
  4. jo0o00nyy

    jo0o00nyy Постоялец

    Регистр.:
    12 май 2010
    Сообщения:
    65
    Симпатии:
    27
    Обрати внимание где обрабатываются $_POST / $_REQUEST / $_GET.
    $_SESSION чутка другое
     
  5. surfman

    surfman

    Регистр.:
    20 мар 2007
    Сообщения:
    277
    Симпатии:
    13
    Удалил из кода все ненужное, или то что относится к другим формам. Вот так выглядит код файла обработки для item
    PHP:
    if(!isset($_GET['pn']) || $_POST['Clean'] || $_POST['sea'])
            {
            if(
    $_SESSION['item']) unset($_SESSION['item']);
            }
    if(
    $_POST['sea'] && !$_POST['Clean'])
            {
            if(
    $_POST['item']) $_SESSION['item']=$_POST['item'];
            }
    if(
    $_SESSION['item'])
    {
    $u="";
    foreach(
    $_SESSION['item'] as $in=>$ses_sp)
        {
            
    $u .= " item".intval($in)." IN (";
            
    $a=0;
            foreach(
    $ses_sp as $i=>$ses_s)
                {
                if(
    $a>0)
                
    $u .= ",";
                
    $u .= intval($i);
                
    $a++;
                }
            
    $u .= ") AND ";
        }
    $rez .=$u;
    }
    Я так понимаю, что при чекбоксе в обработку посылались весь item[2][33], если он отмечен, и потом разбирается на части. Я также пробывал указывать <option value=item[2][33] >значение 3</option>, чтоб посылался таже комбинация, но не работает.
     
  6. surfman

    surfman

    Регистр.:
    20 мар 2007
    Сообщения:
    277
    Симпатии:
    13
    Ошибка Warning: Invalid argument supplied for foreach() в строке foreach($ses_sp as $i=>$ses_s)
     
  7. so5tmaker

    so5tmaker Писатель

    Регистр.:
    7 мар 2010
    Сообщения:
    10
    Симпатии:
    0
    Спасибо за комментарий!
     
Статус темы:
Закрыта.