我的每一行都有一个带复选框的html表,当我点击特定行的复选框时,我应该使用php回显输入文本。但是,我只能获取第一行的输入文本。所有其他行都给我一个空白数据。我不明白我的代码是什么错误
<?php
if(isset($_POST['submit']))
{
foreach($_POST['test'] as $key=>$value)
{
echo $_POST['tCode'][$key];
}
}
?>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div style="width:48%; margin-left:440px">
<table border="0px" align="center" class = "table" style="margin-right:530px;">
<form name="MainForm" method="post" action="" >
<tr>
<th style = "float:right">Tracking code:</th>
<th>
<td> <input type="textbox" name="tCode[]" id="1" ></td>
<td> <input type="checkbox" name="test[]" id="name" value ="1" />
</td>
</th>
</tr>
<tr>
<th style = "float:right" >Order Code: </th>
<th>
<td> <input type="textbox" name="tCode[]" id="2" ></td>
<td> <input type="checkbox" name="test[]" id="name" value ="2" />
</td>
</th>
<th>
</tr>
<tr>
<th style = "float:right" >product Code: </th>
<th>
<td> <input type="textbox" name="tCode[]" id="3" >
</td>
<td> <input type="checkbox" name="test[]" id="name1" value ="3"/></td>
</th>
<th>
</tr>
<td></td>
<td><input class="btn" type="submit" value="Submit" name = "submit" style="margin-left:50px" /></td>
当我勾选第一个复选框,并在第一个texbox中键入hello world时,单击“提交”,它可以回显“hello world”,而对于其他复选框,输入的文本为空白,尽管文本框具有值它。
答案 0 :(得分:0)
好的,这里有很多值得解决的事情。请记住,这源于希望帮助您成为更好的程序员的精神。并非所有这些都适用于PHP,但所有反馈都将帮助您成为更好的编码器。
id
。在html输入上,使用id
只有两个目的:(a)所以你可以用CSS样式来解决它们,或者(b)所以你可以使用一些javascript代码轻松访问它们。你们两个都没做,所以我把所有的ID都删掉了。isset
,! empty
或array_key_exists
)。注意我在下面使用array_key_exists
- 这是因为其他方法仍然可以返回FALSE,即使它已设置(但没有值)。 它无效的原因是因为复选框仅在$_POST
超全局中出现,如果已选中。因此,索引与您期望的不匹配。例如,仅检查第二个框导致$key
为1,而不是2,如您所料。
我已经更新了输入以及PHP。
以下代码已经过更新,测试并证明有效:
<?php
if( isset( $_POST[ 'submit' ] ) ) {
// this is for debugging / testing. Comment / remove as necessary
var_dump( $_POST );
// load ALL of the text inputs for convenient access in the loop
$codes = $_POST['tCode'];
// test first to be sure ANY checkboxes were checked, to prevent notices
if ( isset( $_POST[ 'test' ] ) ) {
// loop over all posted checkboxes
foreach( $_POST[ 'test' ] as $key => $on ) {
// isset or ! empty can return FALSE if present, but empty value
if ( array_key_exists( $key, $codes ) ) {
echo '<br>The input for row ' . $key . ' is: ' . $codes[ $key ];
}
}
}
}
?>
<html>
<head>
<meta charset="UTF-8">
<title>
</title>
</head>
<body>
<form name="MainForm" method="post" action="" >
<table>
<tr>
<th>
Tracking code:
</th>
<td>
<input type="textbox" name="tCode[1]" >
</td>
<td>
<input type="checkbox" name="test[1]" />
</td>
</tr>
<tr>
<th style = "float:right" >
Order Code:
</th>
<td>
<input type="textbox" name="tCode[2]" >
</td>
<td>
<input type="checkbox" name="test[2]" />
</td>
</tr>
<tr>
<th>
product Code:
</th>
<td>
<input type="textbox" name="tCode[3]" >
</td>
<td>
<input type="checkbox" name="test[3]" />
</td>
</tr>
</table>
<input class="btn" type="submit" value="Submit" name="submit" />
</form>
</body>
</html>