PHP Ionic Angular HTML5 AJAX Javascript CSS MySQL jQuery Forum


การส่งค่า get จาก hidden text ไปใช้ใน dropdownlist

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา การส่งค่า get จาก hidden text ไปใช้ใน dropdownlist

การส่งค่า get จาก hidden text ไปใช้ใน dropdownlist

จากรูปคือ พิมพ์ชื่อบริษัท แบบ autocomplete   แล้วจะมีข้อมูลชื่อบริษัท และ cid อยู่ด้านข้าง
แล้วอยากให้ cid ตัวนี้ ไปมีผลกับ dropdownlist ผู้ติดต่อด้านล่าง ซึ่งบริษัทนึงมีผู้ติดต่อหลายคน แล้วแต่เค้าจะเลือก 


หน้าAdd.php
<script language="JavaScript" type="text/javascript">
function list(tagNext, val, txtCon) {  
	var cid = $("#cid").val();
    $.getJSON('searchContactCus.php', {'name':txtCon,'value':val,'cid':cid}, function(data) {
        var select = $(tagNext);
        var options = select.attr('options');
        $('option', select).remove();
           $(select).append('<option value=""> - เลือกผู้ติดต่อ - </option>');
        $.each(data, function(index, array) {
			//alert(array[0]);
                $(select).css("display","inline");
				var data = array[0].split('|');
                $(select).append('<option value="'+ array[0] +'">' + data[1]+','+ data[2]+ '</option>');
        });
    });
}
</script>


<form id="form1" action="save.php" name="form1" method="POST" onSubmit="JavaScript:return fncSubmit();" >

<table width="100%">


<tr>
<td width="15%">บริษัท</td>
<td width="35">
<input name="cname" type="text" id="cname" size="50" class="form-control"/>
  <input name="cid" type="text" id="cid" onChange="list('#Contact',this.value,'cid')"/>


	</td>

</tr>

<tr>
<td>ผู้ติดต่อ</td>
<td>  <select name="Contact" id="Contact"  class="form-control"></select>
 
   

	<input name="id_contact" type="hidden" id="id_contact" />
	
	<input name="purName" type="hidden" id="purName" /></td></tr>
</table>
</form>
<!-----เรียกใช้ autocomplete------->
<script type="text/javascript">
function make_autocom(autoObj,showObj,showObj2){
	var mkAutoObj=autoObj; 
	var mkSerValObj=showObj; 
	var mkSerValObj2=showObj2; 
	new Autocomplete(mkAutoObj, function() {
		this.setValue = function(id,caddress) {		
			document.getElementById(mkSerValObj).value = id;
			document.getElementById(mkSerValObj2).value = caddress;
		}
		if ( this.isModified )
			this.setValue("");
		if ( this.value.length < 1 && this.isNotClick ) 
			return ;	
		return "autocomplete/autocomplete2.php?q=" +encodeURIComponent(this.value);
    });	
}	
 
// การใช้งาน
// make_autocom(" id ของ input ตัวที่ต้องการกำหนด "," id ของ input ตัวที่ต้องการรับค่า");
make_autocom("cname","cid","caddress");
</script>


หน้า autocomplete2.php

@header("Content-type:text/html; charset=UTF-8");        
@header("Cache-Control: no-store, no-cache, must-revalidate");       
@header("Cache-Control: post-check=0, pre-check=0", false);       
// เชื่อมต่อฐานข้อมูล
include('../Connections/conndb.php');
 
$q = urldecode($_GET["q"]);
$pagesize = 50; // จำนวนรายการที่ต้องการแสดง
$table_db="customer"; // ตารางที่ต้องการค้นหา
$find_field="cname"; // ฟิลที่ต้องการค้นหา
$sql = "SELECT * FROM $table_db  where locate('$q', $find_field) > 0 order by locate('$q', $find_field), $find_field limit $pagesize";
$results = mysql_query($sql);
while ($row = mysql_fetch_array( $results )) {
	$id = $row["cid"]; // ฟิลที่ต้องการส่งค่ากลับ
	$caddress = $row["caddress"]; // ฟิลที่ต้องการส่งค่ากลับ
	$name = ucwords( strtolower( $row["cname"] ) ); // ฟิลที่ต้องการแสดงค่า
	// ป้องกันเครื่องหมาย '
	$name = str_replace("'", "'", $name);
	// กำหนดตัวหนาให้กับคำที่มีการพิมพ์
	$display_name = preg_replace("/(" . $q . ")/i", "<b>$1</b>", $name);
	echo "<li onselect="this.setText('$name').setValue('$id','$caddress');">$display_name</li>";
}
mysql_close();
หน้า searchContactCus.php
include('Connections/conndb.php'); 

$param = $_GET["term"];

$data = array();
$id = $_GET['value'];
$nameType = $_GET['name'];
if($nameType == 'cid') {
	if($id!=""){
		
		$query_subType = "SELECT DISTINCT id_contact,purName
FROM contactcus, customer
WHERE contactcus.cusID = customer.cid
AND contactcus.cusID =$id";
		$subType = mysql_query($query_subType) or die(mysql_error());		
		$totalRows_subType = mysql_num_rows($subType);
		if($totalRows_subType>0){
			while($row_subType = mysql_fetch_array($subType)){
				$data[] = array($row_subType["id_contact"].'|'.$row_subType["purName"]);
				
			}
		}
	}
	
}

echo json_encode($data);

flush();

ค่า cid ส่งไป มันไม่ขึ้นให้ค่ะ

 



Saranya2532 223.204.255.xxx 08-08-2014 14:38:15

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ


  • ( หรือ สามารถทำการ สมัครสมาชิก และล็อกอิน ด้วย ปุ่ม Log in with Facebook ด้านล่าง )
 ความคิดเห็นที่ 1
แนะนำไม่ถูก ต้องดูที่การ ส่งค่า และการทำงาน ว่าผิดตรงไหน

เดี๋ยวจะทำเป็นบทความ ไว้ประยุกต์ใช้


Ninenik 124.120.58.xxx 08-08-2014
 ความคิดเห็นที่ 2
input name="cid" type="text" id="cid" onChange="list('#Contact',this.value,'cid')"/>  ค่าจะมาจาก function make_autocom ค่ะ แล้วจะเอา ค่า cid ตรงนี้ ไปใช้กับ function list(tagNext, val, txtCon) อ่ะค่ะ


Saranya2532 223.204.255.xxx 08-08-2014 15:43
 ความคิดเห็นที่ 3
ลองดูตัวอย่างนี้เป็นแนวทาง

ประยุกต์ ใช้งาน autocomplete กับ select ข้อมูล สองตาราง 


Ninenik 124.120.58.xxx 08-08-2014
 ความคิดเห็นที่ 4
ขอบคุณมากค่ะ


Saranya2532 223.204.255.xxx 08-08-2014 17:30
 ความคิดเห็นที่ 5
สอบถามค่ะ คือ ส่งค่า address มา ซึ่งข้อมูลที่อยู่ บางตัวมีเครื่องหมาย , อยู่ ซึ่งทำให้ ไม่สามารถ run ต่อได้ แต่พอลองลบ , ออก ก็ใช้งานได้ปกติค่ะ เช่น บจก.กขค ที่อยู่ 84/1 rama2, BKK จะใช้ไม่ได้ แต่ถ้าเปลี่ยนที่อยู่เป็น 84/1 rama2 BKK ใช้งานได้ค่ะ ลอง str_replace ที่ address ดูแล้ว ไม่ได้ค่ะ พอจะมีวิธีแก้หรือเปล่าค่ะ


Saranya2532 1.46.72.xxx 16-10-2014 23:34
 ความคิดเห็นที่ 6

ทำได้แล้วค่ะ

$address = preg_replace('/ss+/', ' ', $address);



Saranya2532 223.204.255.xxx 17-10-2014 09:41