我怀疑。我有3个文本框,每个文本框旁边都有复选框。我想要展示 仅单击其相应复选框的那些文本框的值。以下是附加的HTML和PHP代码:
<html>
<head>
</head>
<body>
<form name="f" method="post" action="4.php">
<table>
<tr>
<th> Facility </th>
</tr>
<tr>
<td><input type="text" name="a1" value="a"></td><td><input type="checkbox" id="facility[]" name="facility[]" value="Hostel"></td>
</tr>
<tr>
<td><input type="text" name="b1" value="b"></td><td><input type="checkbox" id="facility[]" name="facility[]" value="Transport"></td>
</tr>
<tr>
<td><input type="text" name="c1" value="c"></td><td><input type="checkbox" id="facility[]" name="facility[]" value="Food"></td>
</tr>
<tr>
<td colspan="3"><input type="submit" value="submit" /></td>
</tr>
</table>
</form>
</body>
</html>
以下是PHP部分。
<?php
$a=$_POST['a1'];
$b=$_POST['b1'];
$c=$_POST['c1'];
$facilityArray = $_POST['facility'];
$facility = "";
if(count($facilityArray) > 0)
{
foreach($facilityArray as $fac)
{
$facility .= " " . $fac;
}
}
echo $facility; echo "<br>";
echo $a; echo "<br>";
echo $b; echo "<br>";
echo $c;
?>
借助以下代码,我可以显示已选中复选框的所有值。我还能够显示所有文本框的值。但我实际上只想显示那些单击其相应复选框的文本框的值。我知道这可能是一个非常基本的问题,但请帮助我在PHP中成长。提前谢谢...... :(
答案 0 :(得分:1)
您的文本框也应该在数组帖子中以实现此目的。
要实现此更改,请将输入行更改为:
<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>
为了确保$ _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语句,根据$ _POST变量是否已成功发布,从isset()函数中获取布尔标志
if(isset($_POST['textboxes']))
和
if(isset($_POST['facility']))