[英]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.