通过下拉列表从数据库中读取条目

时间:2015-05-01 11:27:27

标签: php html mysqli

我如何设置该部分下拉列表显示某个主题可用的所有部分,具体取决于包含主题的上一个下拉列表。例如:如果我选择了主题A,它应该显示主题A的所有部分。目前该主题的下拉工作,它获取所有可用的主题,但我无法使第二个下拉获取部分,因为我想这样做:

select section from class WHERE (name of subject chosen above is equal to the name column in the database. 

毕竟我是初学者,请忽略我的代码风格。提前谢谢。

我的代码:

<div>
            <label for="subjects" accesskey="o">Subject</label>&nbsp;&nbsp;

<?php

$conn = new mysqli('localhost', 'afhfhdfhf', 'fhfhhfhfhfhf', 'fhfhfhfh') 
or die ('Cannot connect to db');

    $result = $conn->query("select name from class");

    echo "<html>";
    echo "<body>";
    echo "<select name='subject'>";

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

                  unset($id, $name);
                  $name = $row['name']; 
                  echo '<option value="subject">'.$name.'</option>';

}

    echo "</select>";
    echo "</body>";
    echo "</html>";
?> 
        </div>
<br>    
        <div>
            <label for="section" accesskey="o">Section</label>&nbsp;&nbsp;
            <?php

$conn = new mysqli('localhost', 'fgfgfgfg', 'rfgfgfgfg!~fgfgf', 'fgfgfgf') 
or die ('Cannot connect to db');

    $result = $conn->query("select section from class WHERE name = '$name'");

    echo "<html>";
    echo "<body>";
    echo "<select name='id'>";

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

                  unset($id, $name);
                  $name = $row['name']; 
                  echo '<option value="">'.$name.'</option>';

}

    echo "</select>";
    echo "</body>";
    echo "</html>";
?> 
        </div>
<br>   

1 个答案:

答案 0 :(得分:1)

(n.b。这确实应该是一个评论,但它太长了,所以回答是: - )

你在那里遇到了一些问题......首先,你正在呼出<html><body>标签,你已经在页面上有了这些标签,所以你不要需要这样做。

第二个问题是$name在您查看第二个查询的方式中并不存在。实际上,它是您在第一个循环中回显的姓氏的值。

因此,基本问题是PHP在服务器上运行然后传递给客户端,并且您希望根据浏览器中发生的用户输入限制select。所以您需要做的是选择subject,提交回服务器以获取section或者您可以使用jQuery之类的内容来AJAX回调服务器以检索此信息(可以是您可以解析和使用的JSON,也可以是HTML,您可以将其打包到表单中)。第二种选择肯定是要走的路。

有一个谷歌关于这种事情,你会找到负荷的例子,如果你遇到路障,请回到这里: - )