if else ใน Javascript แทรก คำสั่ง PHP ลงไปแล้วไม่ทำงาน ค่ะ และก็ต้องการ onChange จาก select list แล้วส่งค่าไปให้ txtfield ใน form php
type มีค่าจริงหรือเปล่าครับ ลอง alert(); ออกมาดูก่อนเข้าเงื่อนไข
Date :
2013-04-09 14:15:26
By :
Ex-[S]i[L]e[N]t
type มีค่าจริงอ่ะ เข้า เงือนไข แล้วก็ alert ตามเงื่อนไขเลยค่ะ
Date :
2013-04-09 14:27:50
By :
JuNiorWP
ค่า types ส่งมาจากไหนครับ
แล้วเมื่อได้ $sql_code จะนำไปใช้ยังไงต่อครับ
เผื่อจะใช้วิธีแบบอื่นได้ ^^
Date :
2013-04-09 14:40:53
By :
Naizan
มันเช็คอย่างนั้นไม่ได้ครับ ลองวิธีนี้ดูครับ ว่าใช่อย่างนี้หรือเปล่า
1. Copy Code ด้านล่างนี้ไปตั้งชื่อ เป็น form1.php
Code (PHP)
<HTML>
<HEAD>
<TITLE> Form1 </TITLE>
<script language="javascript">
function fncChange(_val){
if(_val != ""){
document.f.target = "ifupdate";
document.f.method = "post";
document.f.action = "form2.php?types="+_val;
document.f.submit();
}
}
</script>
</HEAD>
<BODY>
<form name="f">
<TABLE border="1">
<TR>
<TD>
<select name="slName" id="slName" onchange="fncChange(this.value)">
<option value="">---select---</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
</TD>
</TR>
<TR>
<TD>
<INPUT TYPE="text" NAME="txtName" id="txtName">
</TD>
</TR>
</TABLE>
</form>
<iframe name="ifupdate" width="800" height="300" style="display:none"></iframe>
</BODY>
</HTML>
2. Copy Code ด้านล่างนี้ไปตั้งชื่อ เป็น form2.php
<HTML>
<HEAD>
<TITLE> Form2 </TITLE>
</HEAD>
<BODY>
<?php
$conn = mysql_connect("localhost","root","root") or die("Error Connect to Database");
$objDB = mysql_select_db("tablename");
mysql_query("SET NAMES 'utf8'");
$types = $_REQUEST["types"];
if($types == "1"){
$sql_code="SELECT a1 as value FROM aaa";
}else if($types == "2"){
$sql_code="SELECT b1 as value FROM bbb";
}else if($types == "3"){
$sql_code="SELECT c1 as value FROM ccc";
}else if($types == "4"){
$sql_code="SELECT d1 as value FROM ddd";
}
$rs = mysql_query($sql_code,$conn) or die ("Error Query [".$sql_code."]");
while ($objResult = mysql_fetch_array($rs)){
$value = $objResult["value"];
?>
<script language="javascript">
parent.document.getElementById("txtName").value="<?=$value;?>";
</script>
<?php
}
?>
</BODY>
</HTML>
***** รายละเอียด
เมือ Onchange ที่ slName ก็จะทำการ submit ค่าส่งไปที่ form2.php
พอ form2.php รับค่าแล้วก็ทำการ select ข้อมูลตามเงื่อนไข แล้วส่งค่ากลับไปที่ txtName ของ form1.php
ลองทดสอบดูครับ
Date :
2013-04-09 14:46:24
By :
thep
แนะนำให้ส่งค่า types ที่ได้ไปแบบ $_GET['type'] หรือ $_POST['type'] ไปเลยครับ
แล้วค่อยตรวจสอบค่า type ที่ส่งมาในไฟล์ php ครับ
จะได้ตรวจสอบที่ php ที่เดียว
ตามตัวอย่างโค๊ดของความคิดเห็นที่ 4 ครับ
ประวัติการแก้ไข 2013-04-09 15:13:05
Date :
2013-04-09 15:11:56
By :
Naizan
พูดถึงใช้ php ธรรมดา เพียวๆก็ได้แล้วนะครับ เช็ค type ก่อนแล้วเข้าเงื่อนไข
Date :
2013-04-09 15:12:26
By :
Ex-[S]i[L]e[N]t
ขอถามคอนเสปหน้านี้หน่อยครับ ต้องการให้page นี้ทำงานอย่างไร ขอละเอียด
เดี๋ยเขียน example ให้ครับ
Date :
2013-04-09 15:26:31
By :
Ex-[S]i[L]e[N]t
คงต้องใช้ Ajax & jQuery แล้วหละครับ รอซักครู่ครับเดี๋ยเขียนตัวอย่างให้ครับ
Date :
2013-04-09 16:20:08
By :
Ex-[S]i[L]e[N]t
มี db มั้ยครับ รบกวนส่งเข้า email หน่อยได้มั้ยครับ
Date :
2013-04-09 16:23:01
By :
Ex-[S]i[L]e[N]t
มันติดตรงที่ ถ้ากลับมาที่หน้าเดิมแล้วค่าอื่นๆ มันหายน่ะสิคะ
Date :
2013-04-09 16:23:39
By :
JuNiorWP
php ในการแสดงผลแต่ละครั้ง จำการ refresh หน้า เพราะฉะนั้นต้องใช้ ajax&jquery ในการกระทำครับ
Date :
2013-04-09 16:25:08
By :
Ex-[S]i[L]e[N]t
ผมก็ทำตัวอย่างให้ดูแล้วครับ ที่ คำตอบที่ 4 การ submit ด้วย iframe ได้แน่นอนครับ
คุณลองเอา 2 file นี้ไป ลองทดสอบดู แก้ไขแค่ Database ให้เหมือนกับของคุณ เท่านั้นเอง ถ้าได้แล้วคุณค่อยมาประยุกต์ใส่ของคุณอีกทีครับ
โชคดี
1. Copy Code ด้านล่างนี้ไปตั้งชื่อ เป็น form1.php
<HTML>
<HEAD>
<TITLE> Form1 </TITLE>
<script language="javascript">
function fncChange(_type,_val){
if(_val != ""){
document.f.target = "ifupdate";
document.f.method = "post";
document.f.action = "form2.php?gType="+_type+"&gValue="+_val;
document.f.submit();
}
}
</script>
</HEAD>
<BODY>
<form name="f">
<TABLE border="1">
<TR>
<TD>
Type <select name="slType" id="slType" onchange="fncChange(this.value,'type')">
<option value="">---select---</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
</TD>
<TD>
Code <select name="slCode" id="slCode" onchange="fncChange(this.value,'code')">
<option value="">---select---</option>
</select>
</TD>
<TD>
Size<INPUT TYPE="text" NAME="txtSize" id="txtSize">
</TD>
<TD>
Unit <INPUT TYPE="text" NAME="txtUnit" id="txtUnit">
</TD>
</TR>
</TABLE>
</form>
<iframe name="ifupdate" width="800" height="300" style="display:none"></iframe>
</BODY>
</HTML>
2. Copy Code ด้านล่างนี้ไปตั้งชื่อ เป็น form2.php
<HTML>
<HEAD>
<TITLE> Form2 </TITLE>
</HEAD>
<BODY>
<?php
$conn = mysql_connect("localhost","root","root") or die("Error Connect to Database");
$objDB = mysql_select_db("tablename");
mysql_query("SET NAMES 'utf8'");
$gType = $_REQUEST["gType"];
$gValue = $_REQUEST["gValue"];
if($gType == "type"){ // Type
$arrValue = "";
if($gValue == "1"){
$sql_code="SELECT a1 as value FROM aaa";
}else if($gValue == "2"){
$sql_code="SELECT b1 as value FROM bbb";
}else if($gValue == "3"){
$sql_code="SELECT c1 as value FROM ccc";
}else if($gValue == "4"){
$sql_code="SELECT d1 as value FROM ddd";
}
$rs = mysql_query($sql_code,$conn) or die ("Error Query [".$sql_code."]");
while ($objResult = mysql_fetch_array($rs)){
if($arrValue != "")$arrValue.= ",";
$arrValue .= $objResult["value"];
}
if($arrValue != ""){
?>
<script language="javascript">
var _arr="<?=$arrValue;?>";
var _arrValue = _arr.split(",");
var PChooser = parent.document.f.elements["slCode"];
while (PChooser.options.length) {
PChooser.remove(0);
}
newElem = document.createElement("option");
newElem.text = "---select---";
newElem.value = "";
PChooser.add(newElem, where);
for (var i = 0; i < _arrValue.length; i++) {
newElem = document.createElement("option");
newElem.text = _arrValue[i];
newElem.value =_arrValue[i];
PChooser.add(newElem, where);
}
</script>
<?php
}
}
else{ // Code
$sql_code = "select size,unit from tablename where code=".$gValue;
$rs = mysql_query($sql_code,$conn) or die ("Error Query [".$sql_code."]");
while ($objResult = mysql_fetch_array($rs)){
$size = $objResult["size"];
$unit = $objResult["unit"];
echo "<script language='javascript'>";
echo "parent.document.getElementById('txtSize').value="<?=$size;?>";
echo "parent.document.getElementById('txtUnit').value="<?=$unit;?>";
echo "</script>";
}
}
?>
</BODY>
</HTML>
Date :
2013-04-09 16:52:38
By :
thep
Update ล่าสุด ได้แน่นอนครับ
<HTML>
<HEAD>
<TITLE> Form1 </TITLE>
<script language="javascript">
function fncChange(_type,_val){
if(_val != ""){
document.f.target = "ifupdate";
document.f.method = "post";
document.f.action = "test3.php?gType="+_type+"&gValue="+_val;
document.f.submit();
}
}
</script>
</HEAD>
<BODY>
<form name="f">
<TABLE border="1">
<TR>
<TD>
Type <select name="slType" id="slType" onchange="fncChange('type',this.value)">
<option value="">---select---</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
</TD>
<TD>
Code <select name="slCode" id="slCode" onchange="fncChange('code',this.value)">
<option value="">---select---</option>
</select>
</TD>
<TD>
Size<INPUT TYPE="text" NAME="txtSize" id="txtSize">
</TD>
<TD>
Unit <INPUT TYPE="text" NAME="txtUnit" id="txtUnit">
</TD>
</TR>
</TABLE>
</form>
<iframe name="ifupdate" width="800" height="300" style="display:"></iframe>
</BODY>
</HTML>
<HTML>
<HEAD>
<TITLE> Form2 </TITLE>
</HEAD>
<BODY>
<?php
$conn = mysql_connect("localhost","root","root") or die("Error Connect to Database");
$objDB = mysql_select_db("shop");
mysql_query("SET NAMES 'utf8'");
$gType = $_REQUEST["gType"];
$gValue = $_REQUEST["gValue"];
if($gType == "type"){ // Type
$arrValue = "";
if($gValue == "1"){
$sql_code="SELECT ptid as value FROM producttype";
}else if($gValue == "2"){
$sql_code="SELECT ptid as value FROM producttype";
}else if($gValue == "3"){
$sql_code="SELECT ptid as value FROM producttype";
}else if($gValue == "4"){
$sql_code="SELECT ptid as value FROM producttype";
}
$rs = mysql_query($sql_code,$conn) or die ("Error Query [".$sql_code."]");
while ($objResult = mysql_fetch_array($rs)){
if($arrValue != "")$arrValue.= ",";
$arrValue .= $objResult["value"];
}
if($arrValue != ""){
?>
<script language="javascript">
var newElem;
var where = (navigator.appName == "Microsoft Internet Explorer") ? -1 : null;
var _arr="<?=$arrValue;?>";
var _arrValue = _arr.split(",");
var PChooser = parent.document.f.elements["slCode"];
while (PChooser.options.length) {
PChooser.remove(0);
}
newElem = document.createElement("option");
newElem.text = "---select---";
newElem.value = "";
PChooser.add(newElem, where);
for (var i = 0; i < _arrValue.length; i++) {
newElem = document.createElement("option");
newElem.text = _arrValue[i];
newElem.value =_arrValue[i];
PChooser.add(newElem, where);
}
</script>
<?php
}
}
else{ // Code
$sql_code = "select price,amt from product where ptid=".$gValue." limit 0,1";
$rs = mysql_query($sql_code,$conn) or die ("Error Query [".$sql_code."]");
while ($objResult = mysql_fetch_array($rs)){
$size = $objResult["price"];
$unit = $objResult["amt"];
echo "<script language='javascript'>";
echo "parent.document.getElementById('txtSize').value=\"".$size."\";";
echo "parent.document.getElementById('txtUnit').value=\"".$unit."\";";
echo "</script>";
}
}
?>
</BODY>
</HTML>
Date :
2013-04-09 17:14:25
By :
thep
ทำให้ในรูปแบบ JSON นะครับ สามารถ copy paste ได้เลย setting ตาม db ให้เรียบร้อยครับ
form.php
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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<table border="0">
<tr>
<td>Type</td>
<td>
<select id="seType">
<option value="">กรุณาเลือก</option>
<option value="aaca">aaca</option>
<option value="aact">aact</option>
<option value="acsra">acsra</option>
<option value="acsrt">acsrt</option>
</select>
</td>
<td>Code</td>
<td>
<select id="seCode">
<option value="">กรุณาเลือก</option>
</select>
</td>
<td>Site</td>
<td><input type="text" id="txtSite" name="txtSite" value="" disabled="disabled" /></td>
<td>Unit</td>
<td><input type="text" id="txtUnit" name="txtUnit" value="" disabled="disabled" /></td>
</tr>
</table>
<script language="javascript" src="admin/module/inc/scripts/jquery-1.8.1.min.js"></script>
<script>
$(document).ready(function() {
//select Type
$('#seType').change(function(){
var db=this.value;
var txtSite=$('#txtSite');
var txtUnit=$('#txtUnit');
txtSite.empty();
txtUnit.empty();
var seCode=$('#seCode');
var field='';
if(db=='aaca'){
field='CA1';
}else if(db=='aact'){
field='CT1';
}else if(db=='acsra'){
field='RA1';
}else if(db=='acsrt'){
field='RT1';
}
seCode.empty();
$.ajax({url:"access.php",
async:false,
cache:false,
global:false,
type:'POST',
data:'act=db&db='+db+
'&field='+field,
success: function(result){
var obj=jQuery.parseJSON(result);
seCode.append('<option>กรุณาเลือก</option>');
$.each(obj,function(key,val){
seCode.append('<option value='+val[field]+'>'+val[field]+'</option>');
});
}
});
});
$('#seCode').change(function(){
var code=this.value;
var db=$('#seType').val();
var txtSite=$('#txtSite');
var txtUnit=$('#txtUnit');
var field='';
var site='';
var uni='';
if(db=='aaca'){
field='CA1';
site='CA2';
uni='CA6';
}else if(db=='aact'){
field='CT1';
site='CT3';
uni='CT5';
}else if(db=='acsra'){
field='RA1';
site='RA2';
uni='RA6';
}else if(db=='acsrt'){
field='RT1';
site='RT3';
uni='RT5';
}
$.ajax({url:"access.php",
async:false,
cache:false,
global:false,
type:'POST',
data:'act=code&db='+db+
'&code='+code+
'&field='+field+
'&site='+site+
'&unit='+uni,
success: function(result){
var obj=jQuery.parseJSON(result);
$.each(obj,function(key,val){
txtSite.val(val[site]);
txtUnit.val(val[uni]);
});
}
});
});
});
</script>
</body>
</html>
access.php
Code (PHP)
<? error_reporting(0);
$Host="localhost";
$HostUsername="root";
$HostPassword="123456";
$DB="ct_cal";
$Connect=mysql_connect($Host,$HostUsername,$HostPassword);
if($Connect){
$select_DB=mysql_select_db($DB);
if($select_DB){
mysql_query("SET NAMES UTF8");
}
}else{
echo "connection error";
}
$act=$_POST['act'];
$arrResult=array();
switch($act){
case 'db' : $db=$_POST['db'];
$field=$_POST['field'];
$query=mysql_query("select $field from $db") or die (mysql_error());
$num_field=mysql_num_fields($query);
while($result=mysql_fetch_array($query)){
$arrCol=array();
for($i=0;$i<=$num_field;$i++){
$arrCol[mysql_field_name($query,$i)]=$result[$i];
}
array_push($arrResult,$arrCol);
}
break;
case 'code' : $db=$_POST['db'];
$field=$_POST['field'];
$code=$_POST['code'];
$site=$_POST['site'];
$unit=$_POST['unit'];
$query=mysql_query("select $site,$unit from $db WHERE $field='".$code."'") or die (mysql_error());
$num_field=mysql_num_fields($query);
while($result=mysql_fetch_array($query)){
$arrCol=array();
for($i=0;$i<=$num_field;$i++){
$arrCol[mysql_field_name($query,$i)]=$result[$i];
}
array_push($arrResult,$arrCol);
}
}
echo json_encode($arrResult);
?>
Date :
2013-04-09 18:11:51
By :
Ex-[S]i[L]e[N]t
รบกวนอีกทีค่ะ ลองทำในกรณีถ้าไม่เลือก Code ก็ไม่ให้แสดงค่า size กับ unit อ่ะค่ะ ลองเอา txtSite.empty(); แล้วก็ไม่ได้อ่ะค่ะ แล้วต้องการจะ Clear ค่า site unit ในกรณีที่ไม่ได้เลือก Code จะต้องทำอย่างไรอ่ะค่ะ
Date :
2013-04-09 20:07:24
By :
JuNiorWP
ทำได้แล้วค่ะ เพิ่ม txtSite.val(''); , txtUnit.val(''); เข้าไปในส่วนของ Select type ไม่รู้ว่าเป็นวิธีที่ดีที่สุดมั้ย แต่มันก็สามารถทำงานได้ตามต้องการ
success: function(result){
var obj=jQuery.parseJSON(result);
seCode.append('<option>กรุณาเลือก</option>');
$.each(obj,function(key,val){
seCode.append('<option value='+val[field]+'>'+val[field]+'</option>');
txtSite.val('');
txtUnit.val('');
});
}
Date :
2013-04-09 21:20:30
By :
JuNiorWP
ผมกำหนด disabled="disabled" ของ type text แล้วหนิครับ ถ้าไม่เลือกมันก็ไม่แสดงผลอยู่แล้ว
Date :
2013-04-09 21:22:38
By :
Ex-[S]i[L]e[N]t
Load balance : Server 02