【问题标题】:PHP create drop down menu, insert into databasePHP创建下拉菜单,插入数据库
【发布时间】:2017-12-05 00:17:44
【问题描述】:

我正在尝试为用户创建一个下拉菜单,以便将他们的订单插入我的数据库系统。

我在创建下拉菜单时遇到问题,但我大致了解我应该做什么。我是新手,所以请耐心等待。 如果有帮助,这是我的 uml:

<?php

$databaseName = 'pizza_db';
$databaseUser = 'root';
$databasePassword = 'root';
$databaseHost = '127.0.0.1';
$conn = new mysqli($databaseHost, $databaseUser, $databasePassword, $databaseName);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
echo "Connected sucessfully";
if(isset($_POST['submit'})){

$sql = "SELECT size FROM size";
$result = mysqli_query($sql); 
$opt = "<select name='size'>";
while($row = mysqli_fetch_assoc($result)) {
    $opt .= "option value='{$row['size']}' >{$row['size']}></option>";
}

$opt .="</select>";

if ($conn->query($sql)){
    $msg = "Data inserted successfully";
} else{
    $msg = "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
}
?>


<!DOCTYPE html>
<html>
<head>
    <title>Pizza</title>
</head>
<body>
<form action="size.php" method="POST">
    <select name="size">

    </select>
    <button type ="submit" name="submit"> Submit</button
</form>
</body>
</html>

我知道我的 html 代码错误或不完整。如何创建多个下拉菜单以及如何在一个脚本中使用多个 $sql 插入语句以将数据提交到我的数据库中?任何帮助将不胜感激。

【问题讨论】:

    标签: php html mysql mysqli


    【解决方案1】:
    1. 您的拼写错误很少。在第 13 行中,if(isset($_POST['submit'})){ 应该是 if(isset($_POST['submit'])){。 在选项 while 循环中,您应该有 $opt .= "&lt;option value='{$row['size']}' &gt;{$row['size']}&gt;&lt;/option&gt;";(缺少“

    2. 此外,还有一些冗余代码。 mysqli_query()$conn-&gt;query() 做同样的事情 (see this SO tread)。简单的 OOP 与过程语法。

    你可以删除

    if ($conn->query($sql)){
        $msg = "Data inserted successfully";
    }
    else{
         $msg = "Error: " . $sql . "<br>" . $conn->error;
    }
    

    以后这样就够了

    <?php
    
    $databaseName = 'pizza_db';
    $databaseUser = 'root';
    $databasePassword = 'root';
    $databaseHost = '127.0.0.1';
    $conn = new mysqli($databaseHost, $databaseUser, $databasePassword, $databaseName);
    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }
    echo "Connected sucessfully";
    if(isset($_POST['submit'])){
    
        $sql = "SELECT size FROM size";
        $result = mysqli_query($sql); 
        $opt = "<select name='size'>";
        while($row = mysqli_fetch_assoc($result)) {
            $opt .= "<option value='{$row['size']}' >{$row['size']}></option>";
        }
    
        $opt .="</select>";
        $conn->close();
    }
    ?>
    

    但是,据我了解,您有一个空表单,提交时会获取所有尺寸。如果你想让它像 php get sizes > generate form > submit form and redirect to next step 你应该这样做或类似这个(并从 php 部分删除 if $_POST['submit'] 条件)

    <!DOCTYPE html>
    <html>
    <head>
        <title>Pizza</title>
    </head>
    <body>
    <form action="submit-chosen-size.php" method="POST">
        <label for="size">Select your size:</label>
        <?php echo($obj); ?>
        <button type ="submit" name="submit"> Submit</button
    </form>
    </body>
    </html>
    

    编辑:请尝试使用此代码。它与上面的代码非常相似,但有助于找到问题

    <?php
    $databaseName = 'pizza_db';
    $databaseUser = 'root';
    $databasePassword = 'root';
    $databaseHost = '127.0.0.1';
    $conn = new mysqli($databaseHost, $databaseUser, $databasePassword, $databaseName);
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }
    echo "Connected sucessfully";
    
    $sql = "SELECT size FROM size";
    $result = mysqli_query($sql); 
    $opt = "<select name='size'>";
    while($row = mysqli_fetch_assoc($result)) {
        $opt .= "<option value='{$row['size']}' >{$row['size']}></option>";
        echo $row['size']; // you can remove this later
    }
    $opt .="</select>";
    echo $obj; //you can remove this later
    $conn->close();
    ?>
    
    <!DOCTYPE html>
    <html>
        <head>
            <title>Pizza</title>
        </head>
        <body>
            <form action="submit-chosen-size.php" method="POST">
                <label for="size">Select your size:</label>
                <?php echo(isset($obj) ? $obj : "Empty"); ?>
                <button type ="submit" name="submit"> Submit</button
            </form>
        </body>
    </html>
    

    【讨论】:

    • 谢谢你,我试过了,差不多完成了,我想得到的下拉菜单会说比萨大小像小,中,大,就像你在网上订购比萨一样,而且我无法使用代码从我的数据库中提取它。
    • 那么,您正在访问该文件,其中包含 php 和 html 部分,对吧?有什么错误?空选择还是别的什么?
    • 我试图从我的数据库中访问这个表 imgur.com/9OcROqy 并将它变成像这样的下拉菜单 imgur.com/CfzY3cs,你为我修复的代码是这个 imgur.com/py1ZcVB 几乎在那里我不相信它报告了任何错误,如果有意义的话,我只需要将它放入包含我的数据库中尺寸表的下拉菜单中?
    • 我更新了答案,请重试。让我们试着找出问题:)
    猜你喜欢
    • 1970-01-01
    • 2020-03-27
    • 2018-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 2023-03-07
    相关资源
    最近更新 更多