Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вопрос про обработку форм(checkbox и textfield)
 
 автор: strug   (21.08.2006 в 11:24)   письмо автору
 
 

Есть такая форма (прикрепленый файл). Для обработки формю использую следующий обработчик.

<? 
echo "<table width=100% border=1 cellpadding=3 cellspacing=2 bgcolor=#CCCCCC>";
if(
$_POST[checkbox]) 
foreach(
$_POST[checkbox] as $id=>$key

if(
$key)
{
$vars=explode("/",$key); 
$var1=$vars[0]; 
$var2=$vars[1];
if (!
$textfield[$id]){ $textfield[$id] = "не указано";
}
echo 
"<tr><td> $vars[0] </td><td> $vars[1] </td><td> $textfield[$id]</td></tr>"
echo 
$key
}
}
echo 
"</table>";
?>

Вопрос в чем ошибка? И как добится того чтобы выбранным чекбоксам соответствовали правильные текстфилд?

   
 
 автор: Trianon   (21.08.2006 в 12:06)   письмо автору
 
   для: strug   (21.08.2006 в 11:24)
 

нужно переделать скрипт, отвечающий за вывод формы.
input'ы передаются все. checkbox'ы - только отмеченные.
Поэтому и name=checkbox[] и name=textfield[] нужно связать индексами.
".... name=checkbox[$id] ... name=textfield[$id] ...."

   
 
 автор: strug   (21.08.2006 в 12:34)   письмо автору
 
   для: Trianon   (21.08.2006 в 12:06)
 

Если я правильно понял то правильно форма должна выглядеть так
<tr>
                <td width="1%" align="center"><input type="checkbox" name="checkbox[$id]" value="PT1005_1/Пружина"></td>
                <td width="10%" align="center">1</td>
                <td width="20%">PT1005_1</td>
                <td>Пружина</td>
                <td width="15%" align="center"><input name="textfield[$id]" type="text" size="4" maxlength="4"></td>
                <td width="10%" align="center"></tr>
или так ?
<tr>
                <td width="1%" align="center"><input type="checkbox" name="checkbox[1]" value="PT1005_1/Пружина"></td>
                <td width="10%" align="center">1</td>
                <td width="20%">PT1005_1</td>
                <td>Пружина</td>
                <td width="15%" align="center"><input name="textfield[1]" type="text" size="4" maxlength="4"></td>
                <td width="10%" align="center"></tr>
- в смысле $id = 1,2,3,4,5, ...

но
1) Дело в том, что форма представляет собой обычную html-страничку, делается она дизайнером в ручную - без использования php.
2) Не могли бы Вы привести более подробный пример (часть кода).

   
 
 автор: Trianon   (21.08.2006 в 12:54)   письмо автору
 
   для: strug   (21.08.2006 в 12:34)
 

Вы правильно поняли. $id будет разным для разных строк таблицы.
Если же форма делается вручную, можно предложить её создавать так:

<tr> 
                <td width="1%" align="center"><input type="checkbox" name="checkbox[PT1005_1/Пружина]" value="1"></td> 
                <td width="10%" align="center">1</td> 
                <td width="20%">PT1005_1</td> 
                <td>Пружина</td> 
                <td width="15%" align="center"><input name="textfield[PT1005_1/Пружина]" type="text" size="4" maxlength="4"></td> 
                <td width="10%" align="center"></tr> 


Но и при таком способе Вы не застрахованы от ошибок....
Обычно создание таких форм доверяют скрипту.

   
 
 автор: strug   (21.08.2006 в 13:07)   письмо автору
 
   для: Trianon   (21.08.2006 в 12:54)
 

Большое спасибо за оперативность. Думал не прийдется в ручную индексы забивать - но что ж поделаешь - по-хитрому не получается.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования