PHP foreach多次执行代码

时间:2016-12-22 16:29:02

标签: php mysql foreach

在此代码的底部,您会看到“接受优惠”按钮,当我点击另一段代码时,您可以在此帖子的底部看到。

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

然而,当我把它放在循环中它执行三次时,我看到当我收到一条错误消息,我不得不关闭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.";

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

我在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>

在此之前,我的表单和值=“submit_project”标签分散在各处!