【问题标题】:How to get PHP to match textbox with corresponding checkbox from a form [duplicate]如何让PHP将文本框与表单中的相应复选框匹配[重复]
【发布时间】:2019-05-23 23:28:03
【问题描述】:

基本上,我的数据库中有大约 700 名客户,我在一个带有循环的页面中显示他们,循环遍历所有 700 名客户。此循环会在每个客户旁边添加一个复选框,因此您可以选择要在接下来几天的日程安排中选择哪一个客户,平均而言这将是大约 30 个客户。

这是我的表格:

<table>
<tr>
    <td class="search_result_fullname"><?php echo $row['fullname']; ?></td>
    <td class="search_result_price">&pound;<input type="text" name="price[]" value="<?php echo $price; ?>" class="schedule_price"></td>
    <td class="search_result_phone"><a href="tel:<?php echo $phone; ?>"><?php echo $phone; ?></a></td>
    <td class="search_result_checkbox"><input type="checkbox" name="customerid[]" value="<?php echo $row['id']; ?>"></td>
</tr>
<tr>
    <td colspan="5"><input type="text" name="remarks[]" placeholder="Remarks" class="remarks"></td>
</tr>
</table>

提交此表单后,它会重新加载页面并且我有一个if(isset($_POST['add'])){。我尝试了各种不同的循环,但我一生都无法弄清楚如何去做。

因此,表单提交了一组仅被选中的复选框。如果我打电话给print_r($_POST['customerid']); 进行验证,这表明它按预期工作。然后,如果我选择客户5051,那么它应该返回一个只有这两个的数组。

现在的问题是,我还想为每个客户(5051)获取正确的价格值,但 $_POST['price'] 的数组正在提交所有 700 个客户的价格。如何让价格与我检查过的正确客户相对应?

非常感谢任何支持。

【问题讨论】:

    标签: php


    【解决方案1】:

    您可以设置 price 数组以按客户 ID 进行索引:

    <input type="text" name="price[<?=$row['id']?>]" value="<?=$price?>" class="schedule_price">
    

    ...然后按客户 ID 参考价格:

    $customerIds = $_POST['customerid'];
    $prices = $_POST['price'];
    
    foreach ($customerIds as $customerId) {
      $price = $prices[$customerId];
    }
    

    【讨论】:

    • 第一种方式无法匹配复选框,因为未选中的框不会发送到服务器。这就是索引不同步的原因。
    • @Barmar 哦,我明白了,是的。
    • 谢谢showdev,完美运行。你不知道这给了我多少时间和挫败感!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-11
    • 2016-06-04
    相关资源
    最近更新 更多