在PHP循环中单行运行UPDATE

时间:2016-04-21 12:30:52

标签: php sql

我已经编写了这段代码,抱歉,我是PHP的新手。

我有一个循环,可以从数据库中抓取所有马匹。

我在每个条目下面创建了一个卖出按钮,我遇到的问题是当我点击"卖出"在一个条目上它"出售所有条目。

这是我的代码;

$query = "SELECT * FROM horses WHERE (owner = '$id') AND (status = 'active')";

                        if($result = $connect->query($query)) {

                            echo "<ul id='horses' class='row'>";

                            while ($row = $result->fetch_assoc()) {

                                echo "<li class='col-sm-4'>";
                                    echo "<div class='horse-wrap'>";

                                        echo "<h2>" . $row['name'] . "</h2>";

                                        echo "<div class='details'>";
                                            echo "<strong>Age:</strong> " . $row['age'] . "<br>";
                                            echo "<strong>Colour:</strong> " . $row['colour'] . "<br>";
                                            echo "<strong>Country:</strong> " . $row['country'] . "<br>";
                                            echo "<strong>Value:</strong> £" . number_format($row['value']) . "<br>";
                                        echo "</div>";

                                        echo "<h3>Record</h3>";
                                        echo "<ul class='history row'>";
                                            echo "<li class='col-sm-3'>Runs: " . $row['runs'] . "</li>";
                                            echo "<li class='col-sm-3'>Wins: " . $row['first'] . "</li>";
                                            echo "<li class='col-sm-3'>2nd: " . $row['second'] . "</li>";
                                            echo "<li class='col-sm-3'>3rd: " . $row['third'] . "</li>";
                                        echo "</ul>";

                                        echo "<ul class='skills'>";
                                            echo "<h4>Speed</h4><li><span class='skill' style='width: " . $row['skill_speed'] . "%;'>" . $row['skill_speed'] . "</span></li>";
                                            echo "<h4>Jumping</h4><li><span class='skill' style='width: " . $row['skill_jump'] . "%;'>" . $row['skill_jump'] . "</span></li>";
                                            echo "<h4>Temperament</h4><li><span class='skill' style='width: " . $row['skill_temperment'] . "%;'>" . $row['skill_temperment'] . "</span></li>";
                                            echo "<h4>Endurance</h4><li><span class='skill' style='width: " . $row['skill_endurance'] . "%;'>" . $row['skill_endurance'] . "</span></li>";
                                        echo "</ul>";

                                        // SELL HORSE BUTTON
                                        echo "
                                        <form action='./stables.php' method='post'>
                                            <input type='hidden' value='" . $row['value'] . "' name='sellvalue' />
                                            <input type='hidden' value='" . $row['name'] . "' name='sellname' />
                                            <input type='submit' value='Sell Horse' name='sell' class='sell' />
                                        </form>

                                        ";

                                    echo "</div>";
                                echo "</li>";

                                // SELL HORSE
                                if(!empty($_POST["sell"])) {

                                    //REMOVE HORSE FROM USER
                                    $horseName = $row['name'];
                                    $status = 'sold';

                                    if($updateHorse = $connect->prepare("UPDATE horses SET status = ? WHERE name = ?")) {

                                        $updateHorse->bind_param('ss', $status, $horseName);
                                        $updateHorse->execute(); 
                                        $updateHorse->close();

                                    }
                                    //ADD MONEY TO USER

                                    $updateAmount = $money + $row['value'];

                                    if($updateUser = $connect->prepare("UPDATE users SET money = ? WHERE id = ?")) {

                                        $updateUser->bind_param('ss', $updateAmount, $id);
                                        $updateUser->execute(); 
                                        $updateUser->close();

                                    }

                                }

                            }

                            echo "</ul>";

                        } else {

                            echo "You currently have no horses.";

                        }

1 个答案:

答案 0 :(得分:0)

您正在循环中进行更新,但是您永远不会检查循环的当前马是否是客户试图销售的马。正如它的编写, 将为每一个执行。

您正在检查表单是否已提交:

// SELL HORSE
if(!empty($_POST["sell"])) {

这是确保您拥有合适马匹的理想场所:

// SELL HORSE
if(!empty($_POST["sell"]) && $row["name"] === $_POST["sellname"]) {