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

Статус
В этой теме нельзя размещать новые ответы.

surfman

Старатель
Регистрация
20 Мар 2007
Сообщения
282
Реакции
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 не занимался. Так, могу там удалить, тут заменить, но глобально не разбираюсь.
Заранее благодарен.
 
в старом коде посмотри как у тебя было сделано обращение к item[2][33]
оно и ставится вместо [33] и будет все норм.
 
Обработчик, что в первом сообщении, и есть он. Я из кода вырезал. Или на что-то другое нужно смотреть?
 
Обработчик, что в первом сообщении, и есть он. Я из кода вырезал. Или на что-то другое нужно смотреть?
Обрати внимание где обрабатываются $_POST / $_REQUEST / $_GET.
$_SESSION чутка другое
 
Удалил из кода все ненужное, или то что относится к другим формам. Вот так выглядит код файла обработки для 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>, чтоб посылался таже комбинация, но не работает.
 
Ошибка Warning: Invalid argument supplied for foreach() в строке foreach($ses_sp as $i=>$ses_s)
 
Удалил из кода все ненужное, или то что относится к другим формам. Вот так выглядит код файла обработки для 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>, чтоб посылался таже комбинация, но не работает.
Спасибо за комментарий!
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху