只发送一种形式的值

时间:2016-02-16 16:44:18

标签: php jquery forms post

我正在创建一个搜索界面,让用户从表格中选择一行,行数在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可能是更好的方式吗?

编辑:

  • 添加&#39;方法=&#34;发布&#34;&#39;
  • 澄清了许多复选框,没有必要

2 个答案:

答案 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']
}