อยากทราบว่าใครพอเคยทำ list menu 3 ชั้น แบบว่า 1,2 ดึงจาก DB 1 แล้วตัวที่ 3 ดึงจาก DB 2 บ้างครับ
ลองทำดู ครับ วุ่นวาย ดี ผมกำลังทำอยู่เลย
ผมใช้ ajax jQuery ครับ ขี้เกียจเขียน ฟังก์ชัน ajax
ตอนนี้ ก็แสดงได้หมดแล้วเหลือ แต่ จะส่งค่ากลับ มา edit ยัง งงอยู่เหมือนกัน ครับ
Date :
2009-10-28 12:01:43
By :
DownsTream
ขอบคุณสำหรับคำแนะนำนะครับ
Date :
2009-10-28 12:37:31
By :
giroo
ไม่มี Code ตัวอย่างบ้างหรอครับ มึนเลยอะครับเจอลักษณะนี้
Date :
2009-10-28 12:38:26
By :
giroo
พี่ DownsTream พอจะให้ Code ผมมาดูหน่อยได้หรือป่าวครับ ผมทำ ajax jQuery ไม่เป็นอะครับ Code เยอะไม่เข้าใจม้ากมายเลยครับ
ต้องขอบคุณพี่ num มากนะครับที่ให้ตัวอย่างมา
Date :
2009-10-28 15:39:33
By :
giroo
Code (PHP)
<!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">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title> ทดลองเลือกภาค จังหวัด อำเภอ และ ตำบล จ้า</title>
<?php
/*** By Weerachai Nukitram ***/
/*** http://www.ThaiCreate.Com ***/
$objConnect = mysql_connect("localhost","root","") or die("Error Connect to Database");
$objDB = mysql_select_db("geo");
@mysql_query("SET NAMES UTF8");
?>
<script language = "JavaScript">
//**** List Province (Start) ***//
function ListProvince(SelectValue)
{
document.frmMain.ddlProvince.length = 0
//document.frmMain.ddlAmphur.length = 0
//document.frmMain.ddldistrict.length = 0
//*** Insert null Default Value ***//
var myOption = new Option('--เลือกจังหวัด--','0')
document.frmMain.ddlProvince.options[document.frmMain.ddlProvince.length]= myOption
<?
$intRows = 0;
$strSQL = "SELECT * FROM province ORDER BY province_id ASC ";
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
$intRows = 0;
while($objResult = mysql_fetch_array($objQuery))
{
$intRows++;
?>
x = <?=$intRows;?>;
mySubList = new Array();
strGroup = <?=$objResult["geo_id"];?>;
strValue = "<?=$objResult["province_id"];?>";
strItem = "<?=$objResult["province_name"];?>";
mySubList[x,0] = strItem;
mySubList[x,1] = strGroup;
mySubList[x,2] = strValue;
if (mySubList[x,1] == SelectValue){
var myOption = new Option(mySubList[x,0], mySubList[x,2])
document.frmMain.ddlProvince.options[document.frmMain.ddlProvince.length]= myOption
}
<?
}
?>
}
//**** List Province (End) ***//
//**** List Amphur (Start) ***//
function ListAmphur(SelectValue)
{
document.frmMain.ddlAmphur.length = 0
//*** Insert null Default Value ***//
var myOption = new Option('--เลือกอำเภอ--','0')
document.frmMain.ddlAmphur.options[document.frmMain.ddlAmphur.length]= myOption
<?
$intRows = 0;
$strSQL = "SELECT * FROM amphur ORDER BY amphur_id ASC ";
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
$intRows = 0;
while($objResult = mysql_fetch_array($objQuery))
{
$intRows++;
?>
x = <?=$intRows;?>;
mySubList = new Array();
strGroup = <?=$objResult["province_id"];?>;
strValue = "<?=$objResult["amphur_id"];?>";
strItem = "<?=$objResult["amphur_name"];?>";
mySubList[x,0] = strItem;
mySubList[x,1] = strGroup;
mySubList[x,2] = strValue;
if (mySubList[x,1] == SelectValue){
var myOption = new Option(mySubList[x,0], mySubList[x,2])
document.frmMain.ddlAmphur.options[document.frmMain.ddlAmphur.length]= myOption
}
<?
}
?>
}
//**** List Amphur (End) ***//
//**** List district (Start) ***//
function Listdistrict(SelectValue)
{
document.frmMain.ddldistrict.length = 0
//*** Insert null Default Value ***//
var myOption = new Option('--เลือกตำบล--','0')
document.frmMain.ddldistrict.options[document.frmMain.ddldistrict.length]= myOption
<?
$intRows = 0;
$strSQL = "SELECT * FROM district ORDER BY district_id ASC ";
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
$intRows = 0;
while($objResult = mysql_fetch_array($objQuery))
{
$intRows++;
?>
x = <?=$intRows;?>;
mySubList = new Array();
strGroup = <?=$objResult["amphur_id"];?>;
strValue = "<?=$objResult["district_id"];?>";
strItem = "<?=$objResult["district_name"];?>";
mySubList[x,0] = strItem;
mySubList[x,1] = strGroup;
mySubList[x,2] = strValue;
if (mySubList[x,1] == SelectValue){
var myOption = new Option(mySubList[x,0], mySubList[x,2])
document.frmMain.ddldistrict.options[document.frmMain.ddldistrict.length]= myOption
}
<?
}
?>
}
//**** List district (End) ***//
</script>
</head>
<form name="frmMain" action="" method="post">
ภาค :
<select id="ddlGeo" name="ddlGeo" onChange = "ListProvince(this.value)">
<option select value="0">-- เลือกภาค --</option>
<?
$strSQL = "SELECT * FROM geography ORDER BY geo_id ASC ";
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
while($objResult = mysql_fetch_array($objQuery))
{
?>
<option value="<?=$objResult["geo_id"];?>"><?=$objResult["geo_name"];?></option>
<?
}
?>
</select>
จังหวัด :
<select id="ddlProvince" name="ddlProvince" style="width:120px" onChange = "ListAmphur(this.value)">
<option value="0">-- เลือกจังหวัด --</option>
</select>
อำเภอ :
<select id="ddlAmphur" name="ddlAmphur" style="width:200px" onchange = "Listdistrict(this.value)">
<option value="0">-- เลือกอำเภอ --</option>
</select>
ตำบล :
<select id="ddldistrict" name="ddldistrict" style="width:200px">
<option value="0">-- เลือกตำบล --</option>
</select>
</form>
</body>
</html>
<?
mysql_close($objConnect);
?>
อย่างนี้เป่าคับ
Date :
2009-10-28 15:46:12
By :
ไวยวิทย์
โค้ดผมวุ่นวาย นะครับกำลัง หัดเขียน แบบ ฟังก์ชั่นอยู่ครับ ทุก query return ค่าจาก ฟังก์ชัน เขียน คล้าย concept class แต่ไม่ใช่ class
แบบว่าแยก ส่วน query ออกจากหน้า html พอดีวันก่อนรับงานที่เค้าเขียนแบบ class มาก็เลยได้ idea มานิดหน่อย แต่ผมคิดว่า เวร์ค กว่า แบบธรรดา
เพราะว่า การ query แบบ return ค่าจาก ฟังก์ชัน คือ เราไม่ต้องเขียน query แบบซ้ำ เขียนฟังก์ชันทีเดียวแล้วใช้ ส่ง parameter เอาครับ
แอด msn มา ละกัน เผื่อ จะแนะนำอะไรได้ บ้าง ranarong[at]live[dot]com
Example:
function getDivisionByZone($zone)
{
$command = "SELECT * FROM game_division WHERE zone_id = '$zone' ORDER BY division_name_en;";
$result = mysql_query($command) or die (mysql_error());
$retarr = array();
while($rs = mysql_fetch_assoc($result))
{
$retarr[] = array(
'division_id' => $rs['division_id'],
'zone_id' => $rs['zone_id'],
'division_name_en' => $rs['division_name_en'],
'division_name_th' => $rs['division_name_short'],
'division_pic' => $rs['division_pic']
);
}
return $retarr;
}
$division = getDivisionByZone($_POST['zone']); // Call function
Date :
2009-10-28 21:03:39
By :
DownsTream
Load balance : Server 02