簡體   English   中英

PHP,MySql下拉列表僅顯示每個選擇一個記錄

[英]PHP, MySql drop down list only showing one record per selection

我是新手,我正在嘗試創建一個動態下拉列表以從數據庫檢索數據。 問題是,第一個下拉列表中的每個選擇僅給我一個下拉列表項(第二個列表)。 有人請幫忙。 這是代碼。

 <?php
    require_once("dbcontroller.php");

    $query ="SELECT * FROM campus";

    ?>
    <html>
    <head>
        <TITLE>Campus and Faculty Select</TITLE>
    <head>
    <style>
            body{width:610px;}
            .frmDronpDown {border: 1px solid #F0F0F0;background-color:#C8EEFD;margin: 2px 0px;padding:40px;}
            .demoInputBox {padding: 10px;border: #F0F0F0 1px solid;border-radius: 4px;background-color: #FFF;width: 50%;}
            .row{padding-bottom:15px;}
    </style>
        <script src="https://code.jquery.com/jquery-2.1.1.min.js" type="text/javascript"></script>
    <script>
        function getcampus_id(val) {
            $.ajax({
            type: "POST",
            url: "get_faculty.php",
            data:'campus_id='+val,
            success: function(data){
                $("#faculty-list").html(data);
            }
            });
        }

        function selectcampus_id(val) {
        $("#search-box").val(val);
        $("#suggesstion-box").hide();
        }
    </script>
    </head>
    <body>
        <div class="frmDronpDown">
            <div class="row">
                <label>Country:</label><br/>
                    <select name="campus" id="campus-list" class="demoInputBox" onChange="getcampus_id(this.value);">
                        <option value="">Select Country</option>
                        <?php
                                    $query ="SELECT * FROM campus";
                                    $results = mysqli_query($con, $query);
                                    //loop
                                    foreach ($results as $campus){
                                ?>
                            <option value="<?php echo $campus["campus_id"]; ?>"> <?php echo $campus["name"]; ?></option>
                            <?php
                                }
                            ?>
                    </select>
            </div>
            <div class="row">
                <label>State:</label><br/>
                    <select name="faculty" id="faculty-list" class="demoInputBox">
                        <option value="">Select State</option>
                    </select>
            </div>
        </div>
    </body>
    </html>

get_faculty.php

    <?php
    require_once("dbcontroller.php");

    if(!empty($_POST["campus_id"])) {
        $campus_id = $_POST["campus_id"];
        $query ="SELECT * FROM faculty WHERE faculty_id = $campus_id";
        $results = mysqli_query($con, $query);
    ?>
        <option value="">Select Campus</option>
    <?php
        foreach($results as $faculty) {
    ?>
        <option value="<?php echo $faculty["faculty_id"]; ?>"><?php echo $faculty["faculty_name"]; ?></option>
    <?php
        }
    }
    ?>

和dbcontroller.php

<?php
$username = "root";
$password = "";
$host = "localhost";
$dbname = "registration";

    $con = mysqli_connect($host, $username, $password) or die("Could not Connect");
    mysqli_select_db($con, $dbname);
?>

使用while($row = mysqli_fetch_assoc($result)從數據庫獲取所有記錄。

<?php
    require_once("dbcontroller.php");

    if(!empty($_POST["campus_id"])) {
        $campus_id = $_POST["campus_id"];
        $query ="SELECT * FROM faculty WHERE faculty_id = $campus_id";
        $results = mysqli_query($con, $query);
    ?>
        <option value="">Select Campus</option>
    <?php
        while($row = mysql_fetch_assoc($results)) {
    ?>
        <option value="<?php echo $row ["faculty_id"]; ?>"><?php echo $row ["faculty_name"]; ?></option>
    <?php
        }
    }
    ?>

foreach處理數組! $result變量不是其mysqli_result對象的數組

因此,您需要get每個結果行,然后使用該行數據。 為此使用while循環。

當您像這樣編碼PHP和HTML以使用

while () :
   . . .
endwhile;

語法,因為這樣可以更輕松地查看循環等從何處開始和結束。 否則,您可能會在這種代碼中迷失方向。

<?php

error_reporting(E_ALL); 
ini_set('display_errors', 1);

require_once("dbcontroller.php");

if(!empty($_POST["campus_id"])) {
    $campus_id = $_POST["campus_id"];
    $query ="SELECT * FROM faculty WHERE faculty_id = $campus_id";
    $result = mysqli_query($con, $query);

    if ( $result === false ) {
        echo mysqli_error($con);
        exit;
    }

    echo '<option value="">Select Campus</option>';

    while ( $faculty = mysqli_fetch_assoc($result) ) :
        echo '<option value="' . $faculty['faculty_id'] . '">';
        echo $faculty['faculty_name']; 
        echo '</option>';
    endwhile;
}
?>

當然,我假設您未顯示的代碼在此代碼前后都有必需的<select....></select>標記

dbcontroller不到任何錯誤,但我會做

<?php
$username = "root";
$password = "";
$host = "localhost";
$dbname = "registration";

$link = mysqli_connect($host, $username, $password, $dbname);

if (!$link) {
    die('Connect Error (' . mysqli_connect_errno() . ') '
            . mysqli_connect_error());
}

作為mysqli_select_db(); 當第一個數據庫成功連接到第二個數據庫時,實際上是切換到第二個數據庫

問題在這里,

if(!empty($_POST["campus_id"])) {
    $campus_id = $_POST["campus_id"];
    $query ="SELECT * FROM faculty WHERE faculty_id = $campus_id";
    $result = mysqli_query($con, $query);

    if ( $result === false ) {
        echo mysqli_error($con);
        exit;
    }

$query ="SELECT * FROM faculty WHERE faculty_id = $campus_id";

應該

 $query ="SELECT * FROM faculty WHERE campus_id = $campus_id";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM