GORAGOD.com

freelance, web developer, web designer, hosting, domain name

ผมส่งค่าภายในฟอร์มไม่ได้เลยครับ เป็น listbox สามชั้นครับ

เป็นลิสบ๊อกสามชั้นครับ เอาไว้เสิร์ซหาสินค้า โค้ดก็มีสองหน้าดังนี้

index.php

              <form method="get" name="sel" action="productsearch.php" onsubmit="return validSearch();">
                <tr>
                  <td width="101" align="right"><span class="style3">หมวดสินค้า:</span></td>
                 
                  <td width="136" align="left"><font id=amphur>
                 
                  <select name="amphur">
                  <option value='0'>--------------------</option>
                  </select></font>
                  </td>
                  <td align="right">&nbsp;</td>
                </tr>
               
                 <tr>
                  <td align="right"><span class="style3">ยี่ห้อ:</span></td>
                  <td colspan="2" align="left"><font id=tumbon><select name="tumbon">
                  <option value='0'>--------------------</option>
                  </select></font>
                  </td>
                </tr>
                <tr>
                  <td align="right"><span class="style3">ชื่อสินค้า:</span></td>
                  <td colspan="2" align="left"><font id=ban><select name="ban">
                  <option value='0'>--------------------</option>
                  </select></font>
                  </td>
                 
                  <script language=Javascript>
function Inint_AJAX() {
   try { return new ActiveXObject("Msxml2.XMLHTTP");  } catch(e) {} //IE
   try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {} //IE
   try { return new XMLHttpRequest();          } catch(e) {} //Native Javascript
   alert("XMLHttpRequest not supported");
   return null;
};

function dochange(src, val) {
     var req = Inint_AJAX();
     req.onreadystatechange = function () {
          if (req.readyState==4) {
               if (req.status==200) {
                    document.getElementById(src).innerHTML=req.responseText; //รับค่ากลับมา
               }
          }
     };
     req.open("GET", "province.php?data="+src+"&val="+val); //สร้าง connection
     //req.open("POST", "productsearch.php",true); //สร้าง connection

     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=tis-620"); // set Header
     req.send(null); //ส่งค่า
}

function banchange() {
     document.getElementById('result').innerHTML=sel.amphur.value+', '+sel.tumbon.value+', '+sel.ban.value;
}

window.onLoad=dochange('amphur', -1);
</script>

หน้า province.php

<?
include("connect.php");
include("config.inc.php");
include("function.php");
     //กำหนดให้ IE อ่าน page นี้ทุกครั้ง ไม่ไปเอาจาก cache
     header ("Expires: Mon, 26 Jul 1997 05: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");
    
     $data=$_GET['data'];
     $val=$_GET['val'];
  
     if ($data=='amphur') {
          $sql="select * from product_cat order by pro_cat";
          $result = mysql_query($sql);
           echo "<select name='amphur' onChange=\"dochange('tumbon', this.value)\">
";
          echo "<option value='0'>-กรุณาเลือกประเภทสินค้า-</option>
";
         
               while($fetcharr = mysql_fetch_array($result)) {
                                $val = $fetcharr['pro_cat'];
                              $label = $fetcharr['procat_name'];
               echo "<option value=\"$val\">$label</option>
" ;
              }
     } else if ($data=='tumbon') {
          echo "<select name='tumbon' onChange=\"dochange('ban', this.value)\">
";
          $sql="select * from product_type_sub a inner join product_brand b on a.brand_id=b.brand_id  where  a.pro_cat = '$val'";
          $result = mysql_query($sql);
          echo "<option value='0'>-กรุณาเลือกยี่ห้อ-</option>
";
          while($fetcharr = mysql_fetch_array($result)) {
               $val = $fetcharr['brand_id'];
               $label = $fetcharr['brand_name'];
               echo "<option value=\"$val\">$label</option>
" ;
          }
     } else if ($data=='ban') {
                
          echo "<select  name='ban' onChange=\"banchange()\">
";
          $sql="select pro_id,pro_name from product  where  pro_cat='$pro_cat' and  brand_id='$val'";
         
          $result = mysql_query($sql);
          echo "<option value='0'>-กรุณาเลือกสินค้า-</option>
";
          while($fetcharr = mysql_fetch_array($result)) {
               $val = $fetcharr['pro_id'];
               $label = $fetcharr['pro_name'];
               echo "<option value=\"$val\">$label</option>
" ;
          }
     }
     echo "</select>
"; 
   
?>
ชั้นที่ 1 กับ ชั้นที่ 2 เลือกได้ครับ แต่พอชั้นที่ 3 เลือกแล้วมันไม่ตรงกับเงื่อนไข คือชั้นที่สามตั้งใช้เงื่อนไขจากชั้นที่ 1และ 2 

ผมพยายามส่งค่า select จากชั้นที่ 1 มาชั้นที่ 3 ในหน้า province.php เพื่อใช้เป็นเงื่อนไขในคำสั่ง sql แต่ก็ไม่ได้สักทีครับ พอรู้วิธีไหมครับว่าจะทำอย่างไร

 

03 ต.ค. 2551 4 5,303

ชั้นที่ 3 ต้องส่งเงื่อนไข ทั้งชั้นที่ 1 และ 2 ออกไป query ด้วยครับ

ชั้นแรก -> ส่งค่าว่าง

ชั้นที่ 2 -> ส่งค่าที่เลือกจากชั้นที่ 1 ไป

ชั้นที่ 3 -> ส่งค่าที่เลือกจากชั้นที่ 1 และ 2 ไป

ลองตรวจสอบโค้ดให้เป็นไปตามเงื่อนไขนี้ครับ

#1

ส่งไปยังไงหรอครับ พอยกตัวอย่างได้ไหมครับ พอดีผมเพิ่งลองเอาไปใช้นะครับ ไม่ค่อยมีความรู้เรื่องอาแจ็กครับ

#2

แล้วค่าที่จะส่งไปของชั้นที่ 1 และ 2  ใช้ชื่อของ select ป่าวคับ เราจะรู้ค่า value ของชั้นที่ 1,2 ได้ยังไงหรอครับ เพื่อเอามาใช้ query ในชั้นที่ 3  เท่าที่ผมดูมันรับ parameter 2 ตัว คือ $data และ $val  ผมงงหละคับ....หุหุ 

#3

ดูในตัวอย่างโค้ดเลยครับ พิจารณาตามตัวอย่างครับ

ถ้าไม่แน่ใจ ให้เอา UTF-8 ไปครับ

ปัญหาก็คือ ตัวอย่างมันทำงานได้ ดังนั้น ความผิดพลาดก็ไปอยู่ที่ส่วนประกอบที่ใช้ ให้ทดสอบโดย run ตัวอย่างเปล่าๆ ครับว่า ทำงานมั้ย ถ้ามันทำงาน ก็ต้องไปตรวจสอบร่วมกับโค้ดที่ใช้งานด้วยอีกที ซึ่งส่วนนี้ผมตอบไม่ได้ครับ

ปัญหาที่เจอบ่อยก่อยได้แก่ id ที่ใช้มันซ้ำกันครับ หรือไม่ก็ใช้ภาษาที่ไม่ถูกต้อง รายละเอียดเยอะครับ ยังไงก็ลองค่อยๆแก้ไปทีละส่วน

ส่วนที่ถามถึงตัวอย่าง ก็โค้ดที่ดาวน์โหลดไปนั่นแหละครับตัวอย่างที่ดีที่สุด

#4
ความคิดเห็น
ไฟล์อัปโหลด ชนิด jpg, jpeg ขนาดไฟล์ไม่เกิน 2M
^