更新由PHP的下拉列表选择的SQL表中的特定行

问题描述 投票:1回答:2

我一直在为一个学校项目制作停车场系统,而现在我已经在这个问题上停留了一段时间。该项目的目标是最多具有10个停车位,用户可以在其中从下拉框中选择他们想要进入的停车位。到目前为止,我已经设法使下拉框与10个停车位一起显示,但是我无法在下拉框上选择的行上对其进行更新。到目前为止,这是我的代码:

<?php

$CustomerName = $PlateNumber = $CarName = $CarColor = $Slot = "";
$CustomerNameErr = $PlateNumberErr = $CarNameErr = $CarColorErr = "";

if($_SERVER["REQUEST_METHOD"] == "POST")
{
    if(empty($_POST["CustomerName"]))
    {
        $CustomerNameErr = "Please fill out this field";
    }
    else
    {
        $CustomerName = $_POST["CustomerName"];
    }

    if(empty($_POST["PlateNumber"]))
    {
        $PlateNumberErr = "Please fill out this field";
    }
    else
    {
        $PlateNumber = $_POST["PlateNumber"];
    }

    if(empty($_POST["CarName"]))
    {
        $CarNameErr = "Please fill out this field";
    }
    else
    {
        $CarName = $_POST["CarName"];
    }

    if(empty($_POST["CarColor"]))
    {
        $CarColorErr = "Please fill out this field";
    }
    else
    {
        $CarColor = $_POST["CarColor"];
    }
}

?>

<form class="logintext" method="POST" action="<?php htmlspecialchars("PHP_SELF");?>">

    <br><b>Register Parking</b><br><br>
    <!-- Slot select-->
    Select Slot: <select name="slots">
        <?php 
            $mysqli = NEW mysqli('localhost','root','','sad');

            $slot_query = $mysqli->query("SELECT slot FROM parkingrecords");
            while ($rows = $slot_query->fetch_assoc())
            {
                $SlotVal = $rows['Slot'];
                echo "<option value='".$rows['Slot']."'>".$rows['Slot']."</option>";
            }
        ?>
    </select><br><br>

    <!-- fill-up form; this is the data that replaces the "empty" slots on the table-->
    Customer Name: &nbsp; <input type="text" name="CustomerName" value="<?php echo $CustomerName ?>"><br>
    <span class="error"><?php echo $CustomerNameErr; ?></span><br>

    Plate Number: &nbsp; <input type="text" name="PlateNumber" value="<?php echo $PlateNumber ?>"><br>
    <span class="error"><?php echo $PlateNumberErr; ?></span><br>

    Car Name: &nbsp; <input type="text" name="CarName" value="<?php echo $CarName ?>"><br>
    <span class="error"><?php echo $CarNameErr; ?></span><br>

    Car Color: &nbsp; <input type="text" name="CarColor" value="<?php echo $CarColor ?>"><br>
    <span class="error"><?php echo $CarColorErr; ?></span><br>

    <input type="submit" value="Register">

</form>

<?php 

include("carpark_connections.php");

if($Slot && $CustomerName && $PlateNumber && $CarName && $CarColor)
{
    $query = mysqli_query($connections, "UPDATE parkingrecords SET CustomerName = '$CustomerName', PlateNumber = '$PlateNumber', CarName = '$CarName', CarColor = '$CarColor' WHERE Slot = '$SlotVal' ");

    echo "<script language = 'javascript'>alert('You have been registered!')</script>";
    echo "<script>window.location.href='ParkNow.php';</script>";
} ...

我尝试提交更新表单时没有任何反应。我输入的数据似乎一点都没有,但是由于javascript警报正在工作,它仍然会执行查询。我不知道我在这里想念什么。任何帮助,将不胜感激!

编辑:我修复了一些代码,现在什么也没有发生,无论我在下拉列表中选择哪个插槽,它都将继续更新第十个插槽。

php html mysql
2个回答
1
投票

您缺少应该在哪里接受$ _POST ['slots']的部分

if(empty($_POST["slots"]))
    {
        $slotErr = "Please select value for this field";
    }
    else
    {
        $slot = $_POST["slots"];
    }

0
投票

下面是更新的代码,请用此更新的代码替换。

<?php

    $CustomerName = $PlateNumber = $CarName = $CarColor = $Slot = "";
    $CustomerNameErr = $PlateNumberErr = $CarNameErr = $CarColorErr = "";

    if($_SERVER["REQUEST_METHOD"] == "POST")
    {
        if(empty($_POST["CustomerName"]))
        {
            $CustomerNameErr = "Please fill out this field";
        }
        else
        {
            $CustomerName = $_POST["CustomerName"];
        }

        if(empty($_POST["PlateNumber"]))
        {
            $PlateNumberErr = "Please fill out this field";
        }
        else
        {
            $PlateNumber = $_POST["PlateNumber"];
        }

        if(empty($_POST["CarName"]))
        {
            $CarNameErr = "Please fill out this field";
        }
        else
        {
            $CarName = $_POST["CarName"];
        }

        if(empty($_POST["CarColor"]))
        {
            $CarColorErr = "Please fill out this field";
        }
        else
        {
            $CarColor = $_POST["CarColor"];
        }
        if(empty($_POST["slots"]))
        {
            $SlotErr = "Please fill out this field";
        }
        else
        {
            $Slot = $_POST["slots"];
        }

    }

    ?>

    <form class="logintext" method="POST" action="<?php htmlspecialchars("PHP_SELF");?>">

        <br><b>Register Parking</b><br><br>
        <!-- Slot select-->
        Select Slot: <select name="slots">
            <?php 
                $mysqli = NEW mysqli('localhost','root','','sad');

                $slot_query = $mysqli->query("SELECT slot FROM parkingrecords");
                while ($rows = $slot_query->fetch_assoc())
                {
                    $SlotVal = $rows['Slot'];
                    echo "<option value='$SlotVal'>$SlotVal</option>";
                }
            ?>
        </select><br><br>

        <!-- fill-up form; this is the data that replaces the "empty" slots on the table-->
        Customer Name: &nbsp; <input type="text" name="CustomerName" value="<?php echo $CustomerName ?>"><br>
        <span class="error"><?php echo $CustomerNameErr; ?></span><br>

        Plate Number: &nbsp; <input type="text" name="PlateNumber" value="<?php echo $PlateNumber ?>"><br>
        <span class="error"><?php echo $PlateNumberErr; ?></span><br>

        Car Name: &nbsp; <input type="text" name="CarName" value="<?php echo $CarName ?>"><br>
        <span class="error"><?php echo $CarNameErr; ?></span><br>

        Car Color: &nbsp; <input type="text" name="CarColor" value="<?php echo $CarColor ?>"><br>
        <span class="error"><?php echo $CarColorErr; ?></span><br>

        <input type="submit" value="Register">

    </form>

    <?php 

    include("carpark_connections.php");

    if($Slot && $CustomerName && $PlateNumber && $CarName && $CarColor)
    {
        $query = mysqli_query($connections, "UPDATE parkingrecords SET CustomerName = '$CustomerName', PlateNumber = '$PlateNumber', CarName = '$CarName', CarColor = '$CarColor' WHERE Slot = '$Slot' ");

        echo "<script language = 'javascript'>alert('You have been registered!')</script>";
        echo "<script>window.location.href='ParkNow.php';</script>";
    } 
© www.soinside.com 2019 - 2024. All rights reserved.