我有一個資料庫 叫 door
內容如下
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET NAMES utf8mb4 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
-- 導出 door 的資料庫結構
CREATE DATABASE IF NOT EXISTS `door` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `door`;
-- 導出 表 door.machine 結構
CREATE TABLE IF NOT EXISTS `machine` (
`district` varchar(50) DEFAULT NULL,
`machine` varchar(100) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 正在導出表 door.machine 的資料:~2 rows (大約)
/*!40000 ALTER TABLE `machine` DISABLE KEYS */;
INSERT INTO `machine` (`district`, `machine`) VALUES
('PC', 'PC_1F'),
('PC', 'PC_6F');
/*!40000 ALTER TABLE `machine` ENABLE KEYS */;
-- 導出 表 door.people 結構
CREATE TABLE IF NOT EXISTS `people` (
`center` varchar(50) NOT NULL,
`unit` varchar(50) NOT NULL,
`name` varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 正在導出表 door.people 的資料:~4 rows (大約)
/*!40000 ALTER TABLE `people` DISABLE KEYS */;
INSERT INTO `people` (`center`, `unit`, `name`) VALUES
('A', '00', '林xx'),
('A', '07', '葉xx'),
('B', '00', '石xx'),
('B', '01', '張xx'),
('A', '07', '鄭xx'),
('A', '07', '吳xx');
/*!40000 ALTER TABLE `people` ENABLE KEYS */;
/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
我希望能弄出一個 動態的三層下拉選單
第一層(從資料庫query出有那些center,目前是只有A、B,這個我會,假設選了A好了)
第二層(會帶出00和07的下拉選項,假設選了07)
第三層(會帶出葉xx,鄭xx,吳xx三個人的下拉)
其實 query 的語法我都會
只是這個牽扯到 javascript 的語法
_<
不知道有沒有什麼方法
可以讓我做出我要的那個功能呢
謝謝大家
我這邊有個JQuery的解法給你參考一下,
我這邊不做資料庫的示範,我使用陣列先取代.
我底下有三個檔案 a and b.php 為AJAX,
c.php為HTML + JQuery部分,
希望有幫助您學習到AJAX部分
a.php
<pre class="c" name="code">
<?php
if($_POST['type'] == 'A'){
$a = [1,2,3,4,5,9,7];
}else{
$a = [8,9,10,11,12,13,14];
}
echo json_encode($a);
b.php
<pre class="c" name="code"><?php
if($_POST['num'] == 0){
echo json_encode(['ken']);
}elseif($_POST['num'] == 2){
echo json_encode(['joe','ted']);
}else{
echo json_encode(['sam']);
}
c.php
<pre class="c" name="code">
<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
<select name="type" id="type">
<option value="A">A</option>
<option value="B">B</option>
</select>
<select name="num" id="num">
</select>
<div id="name">
</div>
<script>
$(function(){
$('#type').blur(function(){
$.post('a.php',{type:$('#type').val()},function(data){
var loan = data.length;
var type_html = '';
for(var i = 0;i<loan;i++){
type_html += '<option value="'+data[i]+'">'+data[i]+'</option>';
}
$('#num').html(type_html);
$('#num').blur(function(){
$.post('b.php',{num:$('#num').val()},function(data){
var loan = data.length;
var name_html = '';
for(var i = 0;i<loan;i++){
name_html += '<p>'+data[i]+'</p>';
}
$('#name').html(name_html);
},'json');
});
},'json');
});
});
</script>
我不推母獅的....請外獅佬放心....母鷹(推~~!
c.php 修改分段1(字數限制)
<pre class="c" name="code">
<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
<select name="type" id="type">
<option value="A">A</option>
<option value="B">B</option>
</select>
<select name="num" id="num">
</select>
<select name="name" id="name">
</select>
c.php 修改分段2(字數限制)
<pre class="c" name="code"><script>
$(function(){
$('#type').blur(function(){
$.post('a.php',{type:$('#type').val()},function(data){
var loan = data.length;
var type_html = '';
for(var i = 0;i<loan;i++){
type_html += '<option value="'+data[i]+'">'+data[i]+'</option>';
}
$('#num').html(type_html);
$('#num').blur(function(){
$.post('b.php',{num:$('#num').val()},function(data){
var loan = data.length;
var name_html = '';
for(var i = 0;i<loan;i++){
name_html += '<option value="'+data[i]+'">'+data[i]+'</option>';
}
$('#name').html(name_html);
},'json');
});
},'json');
});
});
</script>
如果你用jquery 的話 綁定 select 的 change事件
當有change的時候 丟出ajax 給server端要資料
要完資料 在ajax的callback 處理server丟回來的資料 再去更動select的內容
大概是這樣 :)
他的原理, 是在跟 server 要資料時, 順便將目前欄位選擇的內容也丟給 server
這樣子 server 就可以用這些資料當作搜尋條件去過濾