Ваши текстовые поля также должны быть в массиве для достижения этой цели.
Для этого измените строки ввода следующим образом:
<td><input type="text" name="textboxes[]" value="a"></td><td><input type="checkbox" id="facility[]" name="facility[]"></td>
С php вы будете получать размещенные текстовые поля в виде:
$textbox=$_POST['textboxes'];
Затем вы должны пройти через массив флажков и, если соответствующий флажок «включен» (щелкнул), отобразить значение текстовых полей. Для этого вам также понадобится счетчик, чтобы убедиться, что вы используете один и тот же индекс массива для флажков и текстовых полей:
if(count($facilityArray) > 0)
{
$i = 0;
foreach($facilityArray as $fac)
{
if($fac == "on")
{
echo $textbox[$i] . "</br>";
}
$i ++;
}
}
Я также добавил имя к кнопке отправки, чтобы вы проверяли форму только после ее отправки.
Ваша страница должна выглядеть примерно так:
<?php
if(isset($_POST['submit']))
{
$textbox=$_POST['textboxes'];
$facilityArray = $_POST['facility'];
if(count($facilityArray) > 0)
{
$i = 0;
foreach($facilityArray as $fac)
{
if($fac == "on")
{
echo $textbox[$i] . "</br>";
}
$i ++;
}
}
}
?>
<form name="f" method="post" action="4.php">
<table>
<tr>
<th> Facility </th>
</tr>
<tr>
<td><input type="text" name="textboxes[]" value="a"></td><td><input type="checkbox" id="facility[]" name="facility[]"></td>
</tr>
<tr>
<td><input type="text" name="textboxes[]" value="b"></td><td><input type="checkbox" id="facility[]" name="facility[]"></td>
</tr>
<tr>
<td><input type="text" name="textboxes[]" value="c"></td><td><input type="checkbox" id="facility[]" name="facility[]"></td>
</tr>
<tr>
<td colspan="3"><input name="submit" type="submit" value="submit" /></td>
</tr>
</table>
</form>
UPDATE:
Чтобы убедиться, что переменная $ _POST существует, прежде чем присваивать ее переменной, мы используем isset (). В вашем случае просто обновите сегмент php:
<?php
if(isset($_POST['submit']))
{
if(isset($_POST['textboxes']))
{
$textbox=$_POST['textboxes'];
if(isset($_POST['facility']))
{
$facilityArray = $_POST['facility'];
if(count($facilityArray) > 0)
{
$i = 0;
foreach($facilityArray as $fac)
{
if($fac == "on")
{
echo $textbox[$i] . "</br>";
}
$i ++;
}
}
}
}
}
?>
Где единственными изменениями являются добавление еще двух операторов if, которые принимают логический флаг из функции isset () в зависимости от того, была ли переменная $ _POST опубликована успешно
if(isset($_POST['textboxes']))
И
if(isset($_POST['facility']))