2016-05-06 2 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 ($ результат), а не Еогеасп. – 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(); действительно для переключения на вторую базу данных после первой базы данных wa qs успешно подключен к

+0

Наиболее информативно. Тем не менее, я квесто ning 'get_campus.php' <их код и' url: "get_faculty.php", '- * Hm .... * О, ну, пусть они сортируют его ;-) –

+0

Я реализовал его так, но теперь он не показывает предметы на всех. Что я не вижу? <параметр значение = ""> Select Campus <параметр значение =? " ">

+0

@ Fred-II- Yea выглядел странным, и я только предположил, что (и мы знаем, что wherwe ведет) он вставил неправильный бит кода. Теперь я не так уверен – 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

Я реализовал его так, но теперь он не показывает никаких предметов. Что я не вижу? <параметр значение = ""> Выберите Campus <параметр значение = " ">

+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; 
    } 

The

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

Должно быть

$query ="SELECT * FROM faculty WHERE campus_id = $campus_id"; 
Смежные вопросы