【问题标题】:PHP foreach executing code multiple timesPHP foreach 多次执行代码
【发布时间】:2016-12-22 16:29:01
【问题描述】:

在此代码的底部,您会看到一个“接受报价”按钮,当我单击该代码时,另一段代码将被执行,正如您在本文底部看到的那样。

例如,这个项目有 3 个投标人,所以 3 次 bidder_id 和 writer_bid 所以我使用“foreach”并将其加载到 div 中,工作正常,但现在我需要将这些变量存储在数据库中,这在技术上有效,但它没有'不存储我从中提取的行中的出价,它只从最后一行获取数据,也就是说,如果我将代码放在标题中此线程的底部。

但是,当我将它放在循环中执行 3 次时,我看到当我收到一条错误消息时,我必须关闭 3 次,因为我从中提取数据的数据库表中有 3 行。

如何防止这种情况发生,或者在代码位于 foreach 循环内时加载一次,或者让它提取正确的 writer_bid 和 bidder_id 进行存储。

                <div class="WB-Bottom-block lefts">
                <?php $getBidders=" AND project_id=$project_id"; $bidders=getBidder($getBidders); foreach($bidders as $bidder) {
                    $bidder_id=$bidder['writer_id'];
                    $writer_bid=$bidder['writer_bid'];
                ?>

                <div class="findwriters_boxes">

                    <div class="findwriters_right">
                        <div style="float:right;margin-top:6px;width:170px;">
                            <input type="hidden" name="writer_bid" id="writer_bid" value="<?php echo $writer_bid; ?>" />
                            <input type="hidden" name="bidder_id" id="bidder_id" value="<?php echo $bidder_id; ?>" />
                            <input type="submit" class="homebtn11" name="submit" id="submit" value="Accept Offer"/>
                        </div>
                    </div>
                </div><?php } ?>

在需要执行并导致问题的代码下方,无论是我将其放在 foreach 循环中还是在标头中。

如您所见,我尝试将其存储在输入字段中,以便它保留在那里,以便标题可以在刷新页面/单击按钮时将其拉出。

<?php if(isset($_POST['todo']) && $_POST['todo']=='submit_project') {
$balance=get_client_balance_info($current_user->ID);
$writer_bid=$_POST['writer_bid'];
$bidder_id=$_POST['bidder_id'];

if($balance >= $_POST['writer_bid']) {
    global $wpdb;
    $sql3="UPDATE `wp_project` SET `writer_id` = '".$bidder_id."' WHERE `id` =". $project_id;
    $wpdb->query($sql3);
    $sql4="UPDATE `wp_project` SET `price` = '".$writer_bid."' WHERE `id` =". $project_id;
    $wpdb->query($sql4);
    $sql5="UPDATE `wp_project` SET `status` = '2' WHERE `id` =". $project_id;
    $wpdb->query($sql5);
    $success_msg="You accepted a bid, the money will be deducted from your account.";
}

else $fail_msg="Your balance is not sufficient.";

【问题讨论】:

    标签: php mysql foreach


    【解决方案1】:

    我认为您应该为现在添加的每个 div 创建一个表单,您将 bidder_id 放入不同的输入但名称相同。
    所以它会得到最后的输入,也许最好用行 id 指定输入或分隔表单或将输入名称作为数组。
    希望对您有所帮助。

    【讨论】:

    • 我看到表单打开标签位于文档的开头,所以我现在将移动它以查看是否有帮助,感谢您的评论。
    • 哇,你太棒了,我只在最后一个有输入的 div 周围移动了
      标签,现在它可以工作了,哈哈,谁能想到它会这么容易。谢谢一百万。
    【解决方案2】:

    我在 Diar Selimi 的帮助下修复了这个问题:

    <div style="float:right;margin-top:6px;width:170px;">
    <form action="" name="frmeditor" method="post" id="frmeditor" >
        <input type="hidden" name="todo" id="todo" value="submit_project"  />
        <input type="hidden" name="writer_bid" id="writer_bid" value="<?php echo $writer_bid; ?>" />
        <input type="hidden" name="writer_id" id="writer_id" value="<?php echo $writer_id; ?>" />
        <input type="submit" class="homebtn11" name="submit" id="submit" value="Accept Offer"/>
    </form>
    

    在此之前,我的 form 和 value="submit_project" 标签分散在各处!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-25
      • 1970-01-01
      • 1970-01-01
      • 2014-12-22
      • 2014-12-18
      • 2015-09-26
      • 2012-09-02
      • 1970-01-01
      相关资源
      最近更新 更多