【问题标题】:Submitting multiple variables with one input一个输入提交多个变量
【发布时间】:2013-07-27 01:50:21
【问题描述】:
foreach($rates as $item){    
    if ($item->disabled == false){
        echo '<input type="radio" name="rate" id="membership" required="yes" message="Please select your membership type."  value="' . $item->rate . '"><input type="hidden" name="membership" value="' . $item->membership . '" >';
    }
}

这可能很简单,但我遇到的问题是我无法使用 $item->rate 提交 $item->membership。例如,当有人选择“125”费率时,它也应该提交“学生”或其他什么。但是,当我确实提交表单时,它会提交该系列中的最后一个 $item->membership,而不是与其费率相关的那个...任何帮助将不胜感激,我确定我想多了。

谢谢

【问题讨论】:

  • 所有隐藏的输入都将具有相同的名称membership。这对于单选按钮很好,但不适用于其他类型的输入。
  • 那么用正确的 $item->membership 提交 $item->rate 的适当方法是什么?
  • 最好的方法是获取membership 反对已发布的rate 不要尝试进入隐藏字段用户可以更改字段数据
  • @AustinSlominski - 您可以将隐藏字段命名为'membership_' . $item-&gt;rate,这意味着您可以根据提交的rate 确定使用哪个字段。但正如 dianuj 所说 - 最好不要依赖从表单传回的正确数量,以防它被更改。工作量有点大,但是取提交的速率并再次查询数据库以获得正确的数量会更安全。

标签: php jquery input radio-button


【解决方案1】:

因为它们都具有相同的 name 属性,所以它们多次设置相同的变量,因此最后一个是你总是得到的。尝试为所有隐藏的输入提供唯一名称,以便获得所需的成员资格。 HTML 表单不够智能,无法仅选择单选按钮旁边的隐藏输入,它们都会被发布。

【讨论】:

    【解决方案2】:

    当您提交表单时,隐藏字段和单选按钮是独立的元素,无论您如何将它们包装在一起。

    这是我为每个单选按钮传递多个变量的解决方案

    查看:

    <form method="post" action="your_post_file.php" >
        <?php $i = 1;  foreach($rates as $item){?>
            <input type="radio" name="rates[]" value="<?php echo $i?>" /><?php echo $item->rate?>
            <input type="hidden" name="rate<?php echo $i?>" value="<?php echo $item->rate?>" />
            <input type="hidden" name="membership<?php echo $i?>" value="<?php echo $item->member_id?>" />
        <?php $i++;}?>
    
        <input type="submit" />
    </form>
    

    在 your_post_file.php 上

    if(isset($_POST['rates'])){
                if(is_array($_POST['rates'])){
    
                    $index = $_POST['rates'][0]; //return the index of selected radio button
    
                    $rate =  $_POST['rate' . $index];
                    $membership_id =  $_POST['membership' . $index];
    
                    //print out the result
                    var_dump($rate);
                    var_dump($membership_id);
    
                }
            }
    

    Bingo,你得到你想要的,即使你想要每个速率的更多值,只需添加更多具有相同给定格式的隐藏字段,例如名字、姓氏或其他任何内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-08
      • 1970-01-01
      • 2013-08-06
      • 2013-06-28
      • 1970-01-01
      • 2012-01-05
      相关资源
      最近更新 更多