A-AA+then

list menu ส่งค่าที่อยู่ในฟิล id

4,901

คือผมได้นำ list menu จังหวัด-->อำเภอ-->ตำบล จากเว็บไปประยุกต์ทำเป็นฟอร์มสมัครสมาชิกครับ

โดยไปประยุกต์ใช้ในฟอร์มสมัครสมาชิก คณะ-->สาขา  โดยสร้างตารางในฐานข้อมูลสองตารางคือ ของคณะกับของสาขา

ในแต่ละตารางแบ่งเป็น 2 ฟิล  คือ  id กับ name

ปัญหาอยู่ตรงนี้ครับ เวลากด submit แล้วมันส่งค่า เป็นค่าตัวเลขใน ฟิล id  อ่ะคับ

ยกตัวอย่าง  ผมเลือกที่ฟอร์มเป็น คณะ รัฐศาสตร์และนิติศาสตร์ --> สาขานิติศาสตร์

พอกด submit มันแสดงผลเป็น กำลังศึกษาอยู่คณะ 101  สาขา 1011

ผมอยากให้มันส่งค่าไปเก็บในฐานข้อมูลเป็น ชื่อคณะชื่อสาขาเลยอ่ะคับ 

เพื่อผมจะได้ดึงข้อมูลจากฐานข้อมูลมาแสดงผลเป็นชื่อคณะ และ สาขา อ่ะคับ

อยากให้มันส่งค่าในส่วนของ name ไปเก็บฐานข้อมูลอ่ะคับ ไม่ใช่ส่งของส่วน id อ่ะคับ

งงป่าวคับ

ขอบคุณล่วงหน้านะครับ

ผมนำโค๊ดมาให้ดูนะครับ ผมต้องไปแก้ตรงไหนบ้างครับ


khana.php

<?
 header( "Expires: Sat, 1 Jan 2005 00:00:00 GMT" );
 header( "Last-Modified: ".gmdate( "D, d M Y H:i:s" )."GMT" );
 header( "Cache-Control: no-cache, must-revalidate" );
 header( "Pragma: no-cache" );
 header( "content-type: application/x-javascript; charset=TIS-620" );

 $khana = $_POST[khana];
 $program = $_POST[program];
 
 $hostname_conn = "localhost";
 $username_conn = "xxxxxxxxxxx";
 $password_conn = "xxxxxxxxxxx";
 $database_conn = "xxxxxxxxxxxx";
 mysql_connect( $hostname_conn , $username_conn , $password_conn ) or die( "เชื่อมต่อฐานข้อมูลไม่ได้" );
 mysql_select_db( $database_conn ) or die( "เลือกฐานข้อมูลไม่ได้" );// เลือกฐานข้อมูล
 
 //ให้คืนค่าคณะไว้เป็นอันดับแรก
 $sql = "SELECT id, name FROM khana";
 $result = mysql_query( $sql );
 echo "[{\"khana\":\"";
 echo "<label for='khana'>คณะ :</label>";
 echo "<select name='khana' id='khana' onchange='dochange(this)'>";
 echo "<option value='0'>--กรุณาเลือกคณะ--</option>";
 while( $fetcharr = mysql_fetch_array( $result ) )
 {
  $id = $fetcharr[id];
  $name = $fetcharr[name];
  echo "<option value='$id'";
  if ( $khana == $id ) //เลือกคณะที่เลือกไว้
  {
   echo " selected='selected'";
  };
  echo ">
$name</option>";
 };
 echo "</select>\",\"program\":\"";

 echo "<label for='program'>สาขา :</label>";
 echo "<select name='program' id='program' onchange='dochange(this)'>";
 //ถ้ามีการเลือกจังหวัดมาแล้วให้แสดงอำเภอต่อ
 if ( $khana != "0" && $khana != "" )
 {
  echo "<option value='0'>--กรุณาเลือกสาขา--</option>";
  $sql = "SELECT id, name FROM program WHERE khanaID='$khana'";
  $result = mysql_query( $sql );
  while( $fetcharr = mysql_fetch_array( $result ) )
  {
   $id = $fetcharr[id];
   $name = $fetcharr[name];   
   echo "<option value='$id'";
   if ( $program == $id ) //เลือกสาขาที่เลือกไว้
   {
    echo " selected='selected'";
   };
   echo ">
$name</option>";
  };
 }
 else
 {
  echo "<option value=''>--------------</option>";
 };
 echo "</select>\"}]";

 mysql_close();
?>



index.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml
">
<head>
<title>จังหวัด-อำเภอ-ตำบล ด้วย AJAX</title>
<meta http-equiv="Content-Type" content="text/html; charset=TIS-620" />
<style type="text/css">
* {
 font-family:Tahoma;
 font-size:8pt;
}
</style>

</head>
<body>
<?   
 //ค่าที่ได้รับมาจากการ Submit
 $khana = $_POST[khana];
 $program = $_POST[program];
  
 if ( !empty( $program ) )
 {
  echo "<br /><br />ค่าที่ได้จากการ Submit คือ :<br /<br />คณะที่เลือก : $khana<br />สาขาที่เลือก : $program<br /><br /><br />\n";
 };
   
 echo "<form action=\"?\" method=\"post\">\n";
 echo '<span id="khanaDiv">';
 echo "<label for=\"khana\">คณะ :</label><select name=\"khana\" id=\"khana\" onchange=\"dochange('khana')\">\n";
 echo "<option value=\"$khana\">--------------</option> \n" ;
 echo "</select></span>\n";
   
 echo '<span id="programDiv">';
 echo "<label for=\"program\">สาขา :</label><select name=\"program\" id=\"program\" onchange=\"dochange('program')\">\n";
 echo "<option value=\"$program\">--------------</option> \n" ;
 echo "</select></span>\n";
     
 echo "<br /><br /><br /><input type=\"submit\" value=\"ส่ง\" name=\"submit\" />\n";
 echo "</form>\n";
?>

<script type="text/javascript">
//AJAX
function Inint_AJAX()
{
 try
 {
  return new ActiveXObject( "Msxml2.XMLHTTP" );
 }
 catch ( e )
 {
 };

 try
 {
  return new ActiveXObject( "Microsoft.XMLHTTP" );
 }
 catch ( e )
 {
 };

 try
 {
  return new XMLHttpRequest();
 }
 catch ( e )
 {
 };

 alert( "XMLHttpRequest not supported" );
 return null;
};

function dochange( obj )
{
 var req = Inint_AJAX();
 var khana = document.getElementById( 'khana' ).value;
  if ( obj && obj.name == 'khana' ) //เมื่อทำการเลือกที่คณะมา ให้เคลียร์ค่า -
 {
  var program = "";
 }
 else //เลือกรายการอื่น
 {
  var program = document.getElementById( 'program' ).value;
 };
 var data = "khana=" + khana + "&program=" + program;
 req.onreadystatechange = function()
 {
  if ( req.readyState == 4 )
  {
   if ( req.status == 200 )
   {
    var datas = eval( '(' + req.responseText + ')' ); // JSON
    document.getElementById( 'khanaDiv' ).innerHTML = datas[0].khana;
    document.getElementById( 'programDiv' ).innerHTML = datas[0].program;
       };
  };
 };
 req.open( "post" , "khana.php" , true ); //สร้าง connection
 req.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" ); // set Header
 req.send( data ); //ส่งค่า
};

//โหลดครั้งแรก
window.onload = function()
{
 dochange( '' );
};
</script>

</body>
</html>

7 ความคิดเห็น

ตอน submit ไปแล้วก่อนบันทึกลงฐานข้อมูล ก็ให้ทำการแปลงตวเลขให้เป็นชื่อคณะก่อนสิครับ ซึ่งจริงๆ แล้วสามารถทำบน mysql เลยก็ได้ครับ

INSERT INTO ..... province = (SELECT name FROM province WHER id = '$province'),........
1

เหอๆ ขอคำอธิบายสำหรับคนที่ยังไม่ค่อยสันทัดด้าน mysql หน่อยครับ ^ ^

ผมสนใจวิธีที่ 2 ครับ ที่ทำลงบน mysql อ่ะครับ

ผมใช้ชื่อฐานข้อมูลว่า menu  ครับ ตาราง 2 ตารางชื่อว่า khana กับ program ครับ

เนี่ยนอกจากนี้แล้วผมต้องทำอะไรต่อครับ ต้องทำอะไรตรงไหน หรือยังไง ขอละเอียดกว่านี้นะครับ

รบกวนหน่อยน๊าครับ
2

INSERT INTO ..... province = (SELECT name FROM province WHER id = '$province'),........

ผมต้องไปทำตรงไหนครับ  แล้วตรงที่จุดไว้ คือค่าของอะไรครับ
3

คงต้องไปศึกษาเกี่ยวกับคำสั่งของ MySQL แล้วมั้งครับ

SELECT name FROM province WHER id = '$province' ก็คือการอ่านชื่อจังหวัด โดยการใส่ id ที่ได้ลงไป

โค้ดส่วนอื่นๆก็คือโค้ด แทรกข้อมูลใหม่

ลองพยายามทำความเข้าใจและประยุกต์ใช้ดูครับ
4

ขอด้วยคนคับ  คือติดปัญหาเดียวกันเลยอ่ะคับ

INSERT INTO ..... province = (SELECT name FROM province WHER id = '$province'),........

ผมไม่เข้าใจคับ  ลองเอาไปแก้แล้วก้อยังไม่ได้อ่ะคับ


5

.... คือคำสั่ง อื่นๆ ที่อาจมีได้ไง

province = (SELECT name FROM province WHER id = '$province')

ก็หมายถึงเราจะ insert ฟิลด์ province (นอกวงเล็บ)โดยการเลือกข้อมูล มาจากใน วงเล็บอีกครั้ง

$provoince คือค่าที่ได้จากการเลือกซึ่งเป็นตัวเลข

SELECT name FROM province WHER id = '$province'

เป็นการแปลง ตัวเลข $province เป็นชื่อจังหวัด
6

ตอนนี้ผมทำINSERT เข้าฐานข้อมูลเป็นชื่อได้แล้วแต่ติดที่จะให้submitที่เดียวเลยคับ

คือตอนนี้กดsubmitแล้วได้แค่จังหวัดอ่ะคับ

ขอบคุณคับ

7
^