我正在创建一个搜索界面,让用户从表格中选择一行,行数在1到500行之间,并找到与所选词条相似的条目。
现在,我为每一行都有一个复选框形式,并直接在php中获取值。
index.php的一部分
<table>
<tr><!-- several tds -->
<td><form action="pfile.php" name="findsimilar1" method="post">
<input type="checkbox" name="color" value="red">
<!-- several more checkboxes with attributes -->
<input type="checkbox" name="darkness" value="8">
<input type="submit" name="submit_b">
</form></td></tr>
<tr><!-- several tds-->
<td><form action="pfile.php" name="findsimilar2" method="post">
<input type="checkbox" name="color" value="blue">
<!-- several more checkboxes with attributes -->
<input type="checkbox" name="darkness" value="2">
<input type="submit" name="submit_b">
</form></td></tr>
<tr><!-- several tds-->
<td><form action="pfile.php" name="findsimilar3" method="post">
<input type="checkbox" name="color" value="green">
<!-- several more checkboxes with attributes -->
<input type="checkbox" name="darkness" value="5">
<input type="submit" name="submit_b">
</form></td></tr></table>
pfile.php的一部分:
if(isset($_POST['submit_b'])){
if(isset($_POST['color'])){
$c = $_POST['color'];
}
if(isset($_POST['darkness'])){
$d = $_POST['darkness'];
}
}
但只有第一个/最后一个条目的值才能发送。我已经 - 在阅读了类似问题的答案后 - 通过将rownumber附加到名称来更改表单的名称,但这不会改变行为。
用户可以点击所有,一个或多个复选框。
我只想要点击其按钮被发送的表单的值。 php-version:5.3.3 浏览器:Firefox ESR 38.6.0
任何指向正确方向的指针或我可能错过的指示?
Jquery可能是更好的方式吗?
编辑:
答案 0 :(得分:0)
添加方法=&#34; POST&#34;
(您的桌子有点美化)
<table>
<tr><th style="text-align:left">color</th><th>darkness</th><th> </th></tr>
<tr><!-- several tds -->
<form action="pfile.php" name="findsimilar1" method="POST">
<td><input type="checkbox" name="color" value="red">red</input></td>
<td><input type="checkbox" name="darkness" value="8">active</input></td>
<td><input type="submit" name="submit_b" /></td>
</form>
</tr>
<tr><!-- several tds-->
<form action="pfile.php" name="findsimilar2">
<td><input type="checkbox" name="color" value="blue">blue</input></td>
<td><input type="checkbox" name="darkness" value="2">active</input></td>
<td><input type="submit" name="submit_b" /></td>
</form>
</tr>
<tr><!-- several tds-->
<form action="pfile.php" name="findsimilar3">
<td><input type="checkbox" name="color" value="green">green</input></td>
<td><input type="checkbox" name="darkness" value="5">active</input></td>
<td><input type="submit" name="submit_b" /></td>
</form>
</tr>
</table>
...或将$ _POST更改为 $ _ REQUEST (其中包含GET和POST方法)
顺便说一下:总是初始化变量并且不要让它们&#34;取消设置&#34 ;如果你以后会访问它们。
if(isset($_REQUEST['submit_b'])){
$color = isset($_REQUEST['color']) ? $_REQUEST['color'] : false;
$darkness = isset($_REQUEST['darkness']) ? $_REQUEST['darkness'] : false;
if ($color !== false) && ($darkness !== false) {
// Do anything...
}
} else {
// Nothing to do...
}
答案 1 :(得分:0)
使用jQuery ,您也可以在 this new fiddle
上对其进行测试HTML和JS
<form action="pfile.php" method="post" id="findsimilar">
<table>
<tr>
<td>
<input type="checkbox" name="ckColor" value="red">
<input type="checkbox" name="ckDarkness" value="8">
</td>
</tr>
<tr>
<td>
<input type="checkbox" name="ckColor" value="blue">
<input type="checkbox" name="ckDarkness" value="2">
</td>
</tr>
<tr>
<td>
<input type="checkbox" name="ckColor" value="green">
<input type="checkbox" name="ckDarkness" value="5">
</td>
</tr>
</table>
<input type="hidden" name="color" />
<input type="hidden" name="darkness" />
<input type="submit" name="submit_b">
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script type="text/javascript">
var chkDarkness= $('#findsimilar input[name="ckDarkness"]');
var chkColors=$('#findsimilar input[name="ckColor"]');
var getGolor=$('input[name="color"]');
var getDarkness=$('input[name="darkness"]');
chkColors.on('click',function(){
var el=$(this);
var elDark=el.parent().find('input[name="ckDarkness"]');
chkDarkness.not(elDark).prop('checked',false);
if (el.is(':checked')){
chkColors.not(el).prop('checked',false);
getGolor.val(el.val());
if (!elDark.is(':checked'))
getDarkness.val('');
} else {
getGolor.val('');
if (!elDark.is(':checked'))
getDarkness.val('');
}
});
chkDarkness.on('click',function(){
var el=$(this);
var elCol=el.parent().find('input[name="ckColor"]');
getDarkness.val('');
chkDarkness.not(el).prop('checked',false);
chkColors.not(elCol).prop('checked',false);
if (el.is(':checked'))
getDarkness.val(el.val());
if (!elCol.is(':checked'))
getGolor.val('');
})
</script>
PHP
if(isset($_POST['submit_b'])){
if(isset($_POST['color']))
$c = $_POST['color'];
if(isset($_POST['darkness']))
$d = $_POST['darkness']
}