ถามเกี่ยวกับ listbox 3 ชั้นหน่อยคับ คือตอนนี้มีปัญหาที่ ค่าของตัว cpu อ่ะคับที่เป็น listbox อันที่สองอ่ะคับ
Code (PHP)
<?php
$msg = '';
if (isset($_POST['title'])){
require_once 'config.inc.php';
$e = array();
$level = 'mainboard';
// validation
if (empty($_POST['title'])){
$e[] = 'title ไม่ถูกต้อง';
}
if (empty($_POST['mb_id'])){
if (empty($_POST['cpu_id'])){
if (empty($_POST['brand_id'])){
$e[] = 'ไม่ได้ระบุ brand';
}
$e[] = 'ไม่ได้ระบุ cpu';
$e[] = 'ไม่ได้ระบุ mainborad';
} else {
$cpu_id = intval($_POST['cpu_id']);
$r = mysql_query("SELECT count(*) FROM `cpu` WHERE `cpu_id`=$cpu_id");
if (mysql_result($r,0)==0){
$e[] = 'cpu ไม่ถูกต้อง';
} else {
$r = mysql_query("SELECT count(*) FROM `mainboard` WHERE `cpu_id`=$cpu_id");
if (mysql_result($r,0)>0){
$e[] = 'ยังไม่ได้ระบ mainboard';
} else {
$level = 'cpu';
}
}
}
} else {
$mb_id = intval($_POST['mb_id']);
$r = mysql_query("SELECT count(*) FROM `mainboard` WHERE `mb_id`=$mb_id");
if (mysql_result($r,0)==0){
$e[] = 'mainboard ไม่ถูกต้อง';
}
}
if (count($e)>0){
$msg = '<div id="error">'.implode('<br />',$e).'</div>';
} else {
$msg = "<div id=\"notice\">valid at level : $level</div>";
$mainboard_value = 0;
if ($level == 'mainboard'){
$r = mysql_query("SELECT * FROM `mainboard` WHERE `mb_id`=$mb_id");
$mainboard_value = $mb_id;
$cpu_value = mysql_result($r,0,'cpu_id');
$brand_value = mysql_result($r,0,'brand_id');
} else {
$r = mysql_query("SELECT * FROM `cpu` WHERE `cpu_id`=$cpu_id");
$cpu_value = mysql_result($r,0,'cpu_id');
$brand_value = mysql_result($r,0,'brand_id');
}
}
}
function textbox($name){
global $_POST;
echo isset($_POST[$name])?htmlspecialchars($_POST[$name]):'';
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="th" xml:lang="th">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="Author" content="num, dragon_html[at]hotmail.com" />
<title>combobox jquery</title>
<style type="text/css">
#error {color:red}
#notice {color:green}
</style>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
var brand_id = <?php echo isset($_POST['brand_id']) ? intval($_POST['brand_id']) : '0'; ?>;
var cpu_id = <?php echo isset($_POST['cpu_id']) ? intval($_POST['cpu_id']) : '0'; ?>;
var mb_id = <?php echo isset($_POST['mb_id']) ? intval($_POST['mb_id']) : '0'; ?>;
function loadSelectBox(id,url,selected){
$.get(
url,{},function(data){
$(id).html(data);
if (selected!=0){
$(id+' option[value='+selected+']').attr('selected','selected');
}
}
);
}
$(function(){
loadSelectBox(
'#brand_id',
'buypc_combo.php?load=brand',
brand_id
);
loadSelectBox(
'#cpu_id',
'buypc_combo.php?load=cpu&brand_id='+brand_id,
cpu_id
);
loadSelectBox(
'#mb_id',
'buypc_combo.php?load=mainboard&cpu_id='+cpu_id,
mb_id
);
$('#brand_id').change(function(e){
var selected = e.target.value;
loadSelectBox(
'#cpu_id',
'buypc_combo.php?load=cpu&brand_id='+selected,
0
);
$('#mb_id :not(option:first)').remove(); //add
});
$('#cpu_id').change(function(e){
var selected = e.target.value;
loadSelectBox(
'#mb_id',
'buypc_combo.php?load=mainboard&cpu_id='+selected,
0
);
});
});
</script>
</head>
<body>
<h1>combobox jquery</h1>
<?php echo $msg;?><br />
brand
<select id="brand_id" name="brand_id">
<option value="0">-- เลือก brand --</option>
</select>
<br />
cpu
<select id="cpu_id" name="cpu_id">
<option value="0">-- เลือก cpu --</option>
</select>
<br />
mainboard
<select id="mb_id" name="mb_id">
<option value="0">-- เลือก mainboard --</option>
</select>
<br />
</body>
</html>
Code (PHP)
<?php
header('Content-type:text/html;charset=UTF-8');
require_once 'config.inc.php';
if (!isset($_GET['load'])){
$_GET['load'] = 'brand';
}
switch($_GET['load']){
case 'brand':
$r = mysql_query("SELECT * FROM `brand`") or report();
echo '<option value="0">-- brand --</option>';
while ($row = mysql_fetch_assoc($r)){
echo '<option value="',$row['brand_id'],'">',
$row['brand_name'],
'</option>';
}
break;
case 'cpu':
$brand_id = isset($_GET['brand_id'])?intval($_GET['brand_id']):0;
$r = mysql_query("SELECT * FROM `cpu` WHERE `brand_id`=$brand_id") or report();
echo '<option value="0">-- cpu --</option>';
while ($row = mysql_fetch_assoc($r)){
echo '<option value="',$row['cpu_id'],'">',
$row['cpu_name'],
'</option>';
}
break;
case 'mainboard':
$cpu_id = isset($_GET['cpu_id'])?intval($_GET['cpu_id']):0;
$r = mysql_query("SELECT * FROM `mainboard` WHERE `cpu_id`=$cpu_id") or report();
echo '<option value="0">-- mainboard --</option>';
while ($row = mysql_fetch_assoc($r)){
echo '<option value="',$row['mb_id'],'">',
$row['mb_name'],
'</option>';
}
break;
}
function report(){
return die('<option>'.htmlspecialchars(mysql_error()).'</option>');
}
?>
คือตอนนี้มีปัญหาที่ ค่าของตัว cpu อ่ะคับที่เป็น listbox อันที่สองอ่ะคับ ค่าไม่แสดงขึ้นอ่ะคับแต่ค่ามันมานะคับเพราะ
ที่จะไปเลือก listbox อันที่สาม ได้อ่ะคับ แต่ค่าของ listbox อันที่สองไม่ขึ้นอ่ะคับ มันเป็นว่างๆๆ แต่เลือกได้นะคับ
เป็นแบบรูปอ่ะคับ ผมเอาโคดจากเว็บนี้มาแกะอ่ะคับ http://cakephp.jitwitya.com/post/jquery-multilevel-combobox
รบกวนผู้รู้ช่วยตอบทีงับ Tag : - - - -
Date :
2009-12-30 00:27:38
By :
weerayos
View :
1788
Reply :
8
อ่าไม่มีใครมาตอบเลยง่า
Date :
2009-12-30 21:53:36
By :
weerayos
เงีนบเลยอ่า
Date :
2009-12-31 11:00:26
By :
weerayos
Code (PHP)
echo '<option value="',$row['brand_id'],'">',
$row['brand_name'],
'</option>';
ใช้ , แทน . ได้ด้วยแห่ะ ความรู้ใหม่เลยน่ะเนี่ย
ถ้า query แล้วข้อมูลมาจริงก็คงจะเป็นที่ $roe[brand_name] ครับเช็คว่าชื่อถูกเปล่า หรือในฐานข้อมูล brand_name มีค่าเป็น null เปล่า
Date :
2009-12-31 11:14:04
By :
xbeginner01
ตรง brand อ่ะออกนะครับ มันมี 2 ค่า ขึ้น intel กับ amd ที่ไม่ออกคือ ตัวถัดมาอ่ะคับ มันเหมือนว่าค่าที่ได้อ่ะคับมีอยู่เลือกได้แต่พวกตัวอักษรไม่ขึ้นอ่ะคับ ผมงง แต่อันสุดท้ายขึ้นนะคับ ประมาณเลือก จังหวัด อำเภอ ตำบล อ่ะคับ
Date :
2009-12-31 19:17:23
By :
weerayos
โทษทีครับ quote ผิดอัน แต่ก็ตอบได้ด้วยน่ะ
แต่ถ้า cpu มีค่าน่ะ ลองเช็ค brand_id ครับ
mysql_query("SELECT * FROM `cpu` WHERE `brand_id`=$brand_id")
เป็นไปได้เงื่อนไข where brand=$brand_id จะไม่มีจริงครับ ลอง
echo "SELECT * FROM `cpu` WHERE `brand_id`=$brand_id";
เช็คดูครับว่าค่าที่ส่งไปในฐานข้อมุลมีเปล่า
Date :
2009-12-31 19:57:36
By :
xbeginner01
ขอบคุณคับได้แล้วคับ ขอบคุณมากคับที่สละเวลามาตอบให้คับ
Date :
2010-01-01 03:11:52
By :
weerayos
http://www.99points.info/2010/12/n-level-dynamic-loading-of-dropdowns-using-ajax-and-php/
Date :
2015-01-13 16:02:50
By :
kongnakoan
http://www.99points.info/2010/06/ajax-tutorial-dynamic-loading-of-combobox-using-jquery-and-ajax-in-php/
CREATE TABLE IF NOT EXISTS `ajax_categories` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`category` varchar(50) NOT NULL,
`pid` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ;
<?php
if($_REQUEST)
{
$id = $_REQUEST['parent_id'];
$query = "select * from ajax_categories where pid = ".$id;
$results = mysql_query( $query);?>
<select name="sub_category" id="sub_category_id">
<option value="" selected="selected"></option>
<?php
while ($rows = mysql_fetch_assoc(@$results))
{?>
<option value="<?php echo $rows['category'];?> ID=<?php echo $rows['id'];?>"><?php echo $rows['category'];?></option>
<?php
}?>
</select>
<?php
}?>
<div class="both">
<h4>Select Category</h4>
<select name="search_category" id="search_category_id">
<option value="" selected="selected"></option>
<?php
$query = "select * from ajax_categories where pid = 0";
$results = mysql_query($query);
while ($rows = mysql_fetch_assoc(@$results))
{?>
<option value="<?php echo $rows['id'];?>"><?php echo $rows['category'];?></option>
<?php
}?>
</select>
</div>
<div class="both">
<h4 id="show_heading">Select Sub Category</h4>
<div id="show_sub_categories" align="center">
<img src="loader.gif" style="margin-top:8px; float:left" id="loader" alt="" />
</div>
</div>
Date :
2015-01-13 16:08:48
By :
kongnakoan
Load balance : Server 05