2016-05-06 121 views
0

我是新手这个,我想创建一个动态的下拉列表,从数据库中检索数据。问题是,第一个下拉列表中的每个选项只会给我一个下拉项目(在第二个列表中)。有人请帮忙。 这是代码。PHP,MySql下拉列表只显示一个记录每个选择

<?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); 
?> 
+4

使用,而($行= mysqli_fetch_assoc($结果),而不是的foreach。 – RJParikh

回答

1

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();是真的用于切换到第二个数据库一旦第一个数据库华qs成功连接到

+0

信息量最大,但我很疑惑ning'get_campus.php' <他们的代码和'url:“get_faculty.php”,' - * Hm .... *哦,让他们把它整理出来;-) –

+0

我这样实现它,但现在它不显示no项目。我没有看到什么? <?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); ?> <选项值= “”>选择校园 <选项值=? ““><?php echo $ faculty [”faculty_name“]; ?> <?php } } ?> –

+0

@ Fred-ii-对于我来说,Yea看起来很奇怪,我也假设(我们知道他会领导)他粘贴了错误的代码。现在我不太确定 – RiggsFolly

2

使用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 
     } 
    } 
    ?> 
+0

我像这样实现它,但现在它根本没有显示任何项目。我没有看到什么? <?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); ?> <选项值= “”>选择校园 <?PHP的 而($教师= mysql_fetch_assoc($结果)){ ?> <选项值= “<?PHP的回声$教师[” faculty_id” ];?>“><?php echo $ faculty [”faculty_name“]; ?> <?php } } ?> –

+0

faculty_id和campus_id记录有问题。请检查它,而不是代码正确实施。 @NjonjoKiroga – RJParikh

0

的问题是在这里,

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"; 
相关问题