清空使用PHP从MySQL数据库填充选择HTML(下拉框)

时间:2017-12-16 11:12:42

标签: php html mysql mysqli

我正在向前道歉,这是我的第一个问题,我还是学生。

没时间浪费。

我正在创建一个网站,您可以在其中选择CPU,主板,内存和其他计算机部件,并通过电子邮件发送或打印出来或生成您和您的构建所特有的代码,因此构建存储在代码中。这一切都会在以后发生。

我的问题是,数据库中的表中列出的计算机部件不会在框(或下拉框)中加载,因为使用PHP从数据库生成它。我已经在Stackoverflow上搜索了很多问题和答案,但无济于事,我想要自杀(不是真的,我根本不是自杀,这是一种比喻)

这是我得到的。然后我将解释所有出现的问题。

的index.php

<?php
    include_once 'func.inc.php';
    connectDB();
    testDB();
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>PC Builder</title>
    <link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body background="background.jpg">
    <header>
        <h1>PC Builder</h1>
    </header>
    <section>
        <table>
            <tr>
                <td class="titlecolomn">CPU</td>
                <td><?php queryCPU(); ?></td>                    
            </tr>
        </table>
    </section>
</body>
</html>
<?php closeDB(); ?>

func.inc.php

<?php
include_once 'db.inc.php';
function connectDB(){
    $conn = new mysqli($servername, $username, $password, $dbname);
}
function testDB(){
    if ($conn->connect_error) {
        die("Debug: Connection Failed: " . $conn->connect_error);
    }
    echo "Debug: Connection Successful.";
}
function closeDB(){
     mysqli_close();
}
function queryCPU(){    
    $queryCPU = "SELECT * FROM CPU";
    $db = mysqli_query($db, $queryCPU);

    echo '<select name="selectCPU">';
    echo '<option value = "SelectCPU"> Select CPU </option>';
    while ( $db=mysqli_fetch_assoc($db)) {
    echo '<option value="{'.$db[ID].'}">'.$db[Name].'</option>';
    }
    echo '</select>';
}

db.inc.php

<?php    
    $servername = "localhost";
    $username = "theUsername";
    $password = "thePassword";
    $dbname = "tableName";
?>

MySQL数据库结构。

WebsiteName_PCBuilder

  • CPU(表)
    • ID(Int,AUTO_INC)
    • 姓名(Varchar,30)
    • ClockSpeed(十进制10,2)
    • Cores(Int)
    • 价格(十进制10,2)

以下是问题。

  1. 无论何种类型的密码或用户名或数据库名称或本地主机名,我总是返回ConnectDB();
      

    调试:连接成功。

  2. 因此<Select> </Select>中没有任何内容,但是 '<option value = "SelectCPU"> Select CPU </option>'
  3. 此外,如果您知道更好或替代方法,请推荐它。如果可以的话,我可以灵活地改变整个事物。

    这是网站。 http://pcbuilder.tariqsendi.ml/ 在上面提供的代码中,我剪掉了不重要的部分。 忽略主域名。

    提前感谢你。

2 个答案:

答案 0 :(得分:1)

那是因为你覆盖了相同的var。 变化

while ( $db=mysqli_fetch_assoc($db)) {
    echo '<option value="{'.$db[ID].'}">'.$db[Name].'</option>';
}

使用

while ($row = mysqli_fetch_assoc($db)) {
    echo '<option value="{'.$row['ID'].'}">'.$row['Name'].'</option>';
}

答案 1 :(得分:0)

 while ( $row=mysqli_fetch_assoc($db)) {
    echo '<option value="'.$row['ID'].'>'.$row['Name'].'</option>';
 }