|
|
|
ขอความช่วยเหลือเรื่อง ระบบ 2 เมนู ผันตามกันหน่อยครับ |
|
|
|
|
|
|
|
ผมต้องการทำเมนู 2 เมนู คือ เมนูจังหวัด (หลัก) และเมนูอำเภอ (ย่อย) โดยที่เมื่อคลิกเลือกจังหวัดในเมเมนูหลัก ให้แสดงรายการอำเภอของจังหวัดที่เลือก โค้ดของผมแบบนี้ครับ (ปัญหาตอนนี้คือเมื่อเลือกจังหวัดแล้วรายชื่ออำเภอของจังหวัดไม่แสดงครับ)
//ส่วนที่เป็น Java ที่อยากให้ช่วยอธิบายโค้ดให้หน่อย
?>
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_jumpMenu(targ,selObj,restore){ //v3.0
eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
if (restore) selObj.selectedIndex=0;
}
function validate() {
if(document.check_person.province.value=='') {
alert('Please select cat2 \nกรุณาเลือกหมวดย่อยด้วยจ้า...พ่อคุณ');
document.check_person.province.focus();
return false;
}
else {
return true;
}
}
//-->
</script>
//ข้างล่างนี้คือส่วนที่เป็นเมนูหลักและเมนูรองครับ
<form action="add_person.php" method="post" enctype="multipart/form-data" name="check_person" id="check_person" onSubmit='return validate();' >
<table width="80%" border="1" align="center">
<tr>
<th scope="row"><div align="left">ภูมิลำเนา</div></th>
<td><input name="txt_domicile" type="text" id="txt_domicile" size="100" maxlength="100" /></td>
</tr>
<tr>
<th scope="row"><div align="left">ที่อยู่ปัจจุบัน</div></th>
<td>จังหวัด
<?php
include("host.inc.php");//ติดต่อ Server ครับ
//เมนูหลัก (จังหวัด)
$select_province' = $_REQUEST[select_province' ];
//คำสั่งเตรียมข้อมูลที่จะแดสงส่วนแรกของเมนู $sql = "SELECT * FROM province WHERE pro_id = '$select_province' ";
$res = mysql_query( $sql , $link );
if (mysql_fetch_array($res) ) {
$current = mysql_result($res, 0, 'pro_name');
}
else {
$current = "-กรุณาเลือก-";
}
//คำสั่ง sql เพื่อดึงรายชื่อจังหวัดมาแสดงในเมนูจังหวัด
$sql = "SELECT * FROM province ORDER BY pro_id ";
$res=mysql_query($sql , $link);
?>
<select name='select_province' onChange="MM_jumpMenu('parent',this,0)">
<?php
echo "<option value=$select_province>$current</option> \n" ;
echo "<option value=\"$PHP_SELF?pro_id=$pro_id\">-------</option> \n" ;
While( $row = mysql_fetch_array($res) ) {
$pro_id = $row['pro_id'];
$pro_name = $row['pro_name'];
echo "<option value=\"$PHP_SELF?pro_id=$row[pro_id]\">$pro_name</option> \n" ;
}
echo "</Select>";
?>
อำเภอ<select name='select_umpher' onChange="MM_jumpMenu('parent',this,0)">
<?php
$sql = "SELECT * FROM umpher WHERE pro_id = '$select_province' ORDER BY pro_id ";
$res = mysql_query( $sql, $link);
echo "<option value=$select_province>$current</option> \n" ;
echo "<option value=\"$PHP_SELF?pro_id=$pro_id\">-------</option> \n" ;
while( $row = mysql_fetch_array($res) ) {
$ump_id= $row[ump_id];
$ump_name= $row[ump_name];
$pro_id=$row[pro_id];
echo "<option value=\"$PHP_SELF?pro_id=$row[ump_id]\">$ump_name</option> \n" ;
}
echo "</select>";
?>
Tag : - - - -
|
|
|
|
|
|
Date :
10 ก.พ. 2551 01:05:09 |
By :
เต่า.php |
View :
1914 |
Reply :
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เท่าที่ดูผมว่ามันเพี้ยนๆ นิดๆ คือ concept คือเลือกจังหวัดและมีอำเภอในจังหวัดในเลือกใน dropdown menu
อันที่ 2 ป่ะครับ หรือเลือกอำเภอแล้วต้องมีตำบลต่อ เพราะถ้าเป็นแค่หยุดที่อำเภอ code นจ่าจะเป็น
อำเภอ<select name='select_umpher' >
<?php
$sql = "SELECT * FROM umpher WHERE pro_id = '$select_province' ORDER BY pro_id ";
ผมเดาว่าคุณมี 2 table อันแรกน่าจะเป็นจังหวัด ประกอบด้วย pro_id, pro_name อีกตารางคือ อำเภอ ประกอบ
ด้วย ump_id, ump_name, pro_id
ถ้าตามที่ผมพูด คุณน่าจะเปลี่ยนเป็น
$sql = "SELECT * FROM umpher WHERE pro_id = '$select_province' ORDER BY ump_id ";
$res = mysql_query( $sql, $link);
ส่วนตรงนี้ก็
if (mysql_num_rows($res) != 0) {
while( $row = mysql_fetch_array($res) ) {
$ump_id= $row[ump_id];
$ump_name= $row[ump_name];
$pro_id=$row[pro_id];
echo "<option value="$ump_id">$ump_name</option> \n" ;
}
}else{
echo "<option value='0'>กรุณาเลือกจังหวัดก่อน</option> \n" ;
}
echo "</select>";
?>
แล้วค่อย มีปุ่ม submit เอาก็ได้ครับ แต่ถ้าเป็นกรณี เลือกจังหวัดแล้วเลือกอำเภอ ตามด้วยตำบล ช่วยบอกมาอีกทีนะครับ
|
|
|
|
|
Date :
10 ก.พ. 2551 22:02:59 |
By :
สมมติ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอเสริม concept หลักๆ จริงๆ ก็คือ ใน dropdown ที่ 2 สามารถ query ได้ข้อมูลไหม ถ้าเปิด page ครั้งแรก แน่นอนว่า
$select_province จะไม่มีค่า ดังนั้น query จะไม่ได้ข้อมูล เราก็บังคับให้เลือกได้เฉพาะว่า ให้เลือกจังหวัดก่อน
แต่ถ้าเลือกจังหวัดแล้ว ก็ให้ query และเรียงตาม ump_id ก็ได้ครับ
ไม่ว่าจะแปรผันมาแค่ไหน ก็คือถ้าอยากให้ 3 แปรผันก็เอา
"<option value="$PHP_SELF?pro_id=$row[pro_id]">$pro_name</option> \n" ;
สำหรับอันแรก
"<option value="$PHP_SELF?pro_id=$row[pro_id]&ump_id=$row[ump_id]">$ump_name</option> \n" ;
|
|
|
|
|
Date :
10 ก.พ. 2551 22:12:12 |
By :
สมมติ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณ คุณสมมติ มากครับสำหรับคำแนะนำ ผมต้องขอโทษด้วยที่ไม่ได้ให้รายละเอียดครบ
คืองี้คับ ที่จริงผมต้องการทำ4 เมนู (จังหวัด,อำเภอ, ตำบล, หมู่บ้าน) ผันตามกันดังนี้
1. เมื่อเลือกจังหวัด ให้แสดงรายการอำเภอของแต่ละจังหวัด และเมื่อเลือกอำเภอก็ให้แสดงรายการตำบล เมนูสุดท้ายคือเลือกตำบลแล้วให้แสดงรายการหมู่บ้าน
2. ซึ่งตอนนี้ผมสามารถเขียนให้สามารถเลือกเมนูได้ทั้ง 4 เมนูแล้ว ตามโค้ดที่ส่งมาให้ดูข้างล่างนี้ แต่ปัญหามีอยู่ว่าเมือเลือกรายการหลักและส่งค่าไปยังรายการรองลงไปแล้ว ตัวเลือกจากรายการหลักจะหายไป เช่น เมื่อเลือกจังหวัด พอแเมนูรองแสดงรายการอำเภอ แล้ว ค่าที่เมนูจังหวัดจะกลับมาเลือกที่ -กรุณาเลือก- (เป็นทุกเมนู) จึงทำให้ตอน submit ไม่ผ่านเนื่องจาก สคริปต์ของ JAVA จะเช็คว่ายังไม่มีการเลือกเมนูหลัก ซึ่งปัญหานี้ผมแก้ไม่ตกจริง ๆ ( ติดมา 3 คืน+พาราเซตามอล 6 เม็ด) ผมเข้าใจว่าน่าจะเกิดมาจากสคริปต์ของ JAVA ที่ส่งค่าแล้วเรียกใหม่ (refresh) ทุกครั้งที่เลือก
3. ยังไงก็อยากรบกวนช่วยดูโค้ดให้หน่อยนะคับ เผื่อว่าจะเป็นประโยชน์ต่อผู้อื่นบ้างที่เจอปัญหาเช่นเดียวกับผม
4. รายะเอียดแต่ละตาราง
4.1 province [pro_id char(2) , pro_name char(30) ]
4.2 umpher [ump_id char(4) , ump_name char(30), pro_id char(2) ]
4.3 tambon [tam_id char(6) , tam_name char(30) , ump_id char(4) ]
4.4 village [vil_id char(8) , vil_name char(30) , tam_id char(6) ]
5. ส่วนนี้คือโค้ด ระบบ 4 เมนู ผันตามกันคับ
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_jumpMenu(targ,selObj,restore){ //v3.0
eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
if (restore) selObj.selectedIndex=0;
}
function validate() {
if(document.check_person.umpher.value=='') {
alert('Please select Umpher \nกรุณาเลือกหมวดย่อย');
document.check_person.umpher.focus();
return false;
}
else {
return true;
}
}
//-->
</script>
<center>
<!-- ส่วนของฟอร์มรับข้อมูล -->
<form action="add_person.php" method="post" enctype="multipart/form-data" name="check_person" id="check_person" >
<?php
echo "<center>";
echo "ฟอร์มบันทึกข้อมูล [บุคคล]";
echo "</center>";
echo "<br>";
?>
<table width="80%" border="1" align="center">
<tr>
<th scope="row"><div align="left">ที่อยู่ปัจจุบัน</div></th>
<td>
<?php
// เริ่มการทำระบบ 4 เมนู ผันตามกัน
require("host.inc.php");
$province = $_REQUEST['province'];
$umpher = $_REQUEST['umpher'];
$tambon = $_REQUEST['tambon'];
$village = $_REQUEST['village'];
$vil_id = $village;
$sql = "SELECT * from province Where pro_id='$province' ";
$result = mysql_query( $sql );
if (mysql_fetch_array($result) ) {
$current = mysql_result($result, 0, 'pro_name');
} else {
$current = "-กรุณาเลือก-";
}
$sql = "SELECT * from province Order by pro_id "; // cat_label
$result = mysql_query( $sql);
?>
จังหวัด <Select Name='province' onChange="MM_jumpMenu('parent',this,0)">
<?php
echo "<option value=$province>$current</option> \n" ;
echo "<option value=\"$PHP_SELF?province=$province\">---------------</option> \n" ;
While( $fetcharr = mysql_fetch_array($result) ) {
$pro_id = $fetcharr['pro_id'];
$pro_name = $fetcharr['pro_name'];
echo "<option value=\"$PHP_SELF?province=$pro_id\">$pro_name</option> \n" ;
}
echo "</Select>";
?>
อำเภอ <SELECT NAME='umpher' size=1 onChange="MM_jumpMenu('parent',this,0)">
<?php
$sql = "SELECT * from umpher Where pro_id='$province' ";
$result = mysql_query( $sql );
if (mysql_num_rows($result) == 0 ) {
echo "<option>กรุณาเลือก</option> \n" ;
} else {
echo "<option value=>-กรุณาเลือก-</option> \n" ;
}
While( $fetcharr = mysql_fetch_array($result) ) {
$ump_id = $fetcharr['ump_id'];
$ump_name = $fetcharr['ump_name'];
echo "<option value=\"$PHP_SELF?umpher=$ump_id\">$ump_name</option> \n" ;
}
echo "</Select>";
?>
ตำบล <SELECT NAME='tambon' size=1 onChange="MM_jumpMenu('parent',this,0)">
<?php
$sql = "SELECT * from tambon Where ump_id='$umpher' ";
$result = mysql_query( $sql );
if (mysql_num_rows($result) == 0 ) {
echo "<option>กรุณาเลือก</option> \n" ;
} else {
echo "<option value=>-กรุณาเลือก-</option> \n" ;
}
While( $fetcharr = mysql_fetch_array($result) ) {
$tam_id = $fetcharr['tam_id'];
$tam_name = $fetcharr['tam_name'];
echo "<option value=\"$PHP_SELF?tambon=$tam_id\">$tam_name</option> \n" ;
}
echo "</Select>";
?>
หมู่บ้าน <SELECT NAME='village' size=1 onChange="MM_jumpMenu('parent',this,0)">
<?php
$sql = "SELECT * from village Where tam_id='$tambon' ";
$result = mysql_query( $sql );
if (mysql_num_rows($result) == 0 ) {
echo "<option>กรุณาเลือก</option> \n" ;
} else {
echo "<option value=>-กรุณาเลือก-</option> \n" ;
}
While( $fetcharr = mysql_fetch_array($result) ) {
$vil_id = $fetcharr['vil_id'];
$vil_name = $fetcharr['vil_name'];
echo "<option value=\"$PHP_SELF?village=$vil_id\">$vil_name</option> \n" ;
}
echo "</Select>";
//จบการทำเมนูผันตามกัน 4 เมนู
?>
</td>
</tr>
<td colspan = 2 align=center><div align="left">
<input type="submit" name="Submit" value="Submit" id="Submit" />
<input type="reset" name="Reset" value="Reset" id="label" />
</div></td>
</tr>
</table>
</form>
หมายเหตุ : โค้ดอาจจะดูมั่วๆ สักนิด เพราะมือใหม่คับ แต่โค้ดนี้สามารถแสดงเมนูได้ถูกต้องตามข้อมูลที่เก็บอยู่ในตารางคับ งัยก็คงต้องรบกวนช่วยดูอีกครั้งนะครับ ขอบคุณล่วงหน้าครับผม
|
|
|
|
|
Date :
11 ก.พ. 2551 17:06:35 |
By :
เต่า.php |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 05
|