ช่วยหน่อยจิครับ web master ไม่ได้จริง ๆครับ ลองหลายวิธีแล้ว
Code
mysql_select_db($database_conhos, $conhos);
if(!empty($_GET['btnsubmit'])){ //ถ้าปุ่ม btnsubmit ถูกกด
$keyword = explode(',',$_GET['pdx']); //ให้เอาข้อความที่ส่งมาจากช่องชื่อ t1 มาสับด้วยเครื่องหมาย , แล้วเอาทุกชิ้นที่ได้เก็บใส่ตัวแปรที่ชื่อว่า keyword
$x = count($keyword);
for($i=0;$i<count($keyword);$i++){ //ให้นั้ยว่า keyword ทั้งหมดมีกี่ตัว แล้ววนรอบเท่าจำนวนของ keyword
$i != ($x-1) ? $h="," : $h="";
$pdx01= "'$keyword[$i]'"."$h";
echo $pdx01;// ถ้า echo ตรงนี้ มันได้ค่า ตามที่กรอกใน textbox ครับ
}
}
นี้เป็นคำสั่ง sql ครับ
Code
$query_lab = "SELECT h.hn,h.vn,lo.lab_order_result as result,lo.lab_items_name_ref as Labname,h.order_date,v.pdx,v.dx0,v.dx1,v.dx2,v.dx3,v.dx4,v.dx5,concat(pt.pname,pt.fname,' ',pt.lname) AS ptname,concat(pt.addrpart,' ','หมู่',' ',pt.moopart,' ',th.full_name) AS address FROM lab_head h left outer join patient pt on pt.hn=h.hn left outer join vn_stat v on v.vn=h.vn left outer join lab_order lo on lo.lab_order_number = h.lab_order_number left outer join thaiaddress th ON th.addressid=v.aid WHERE h.order_date between '$date' and '$date1' AND lo.lab_items_code='$labcode' AND v.pdx in($pdx01) " ;// ทำยังไงมันจะได้ค่าเหมือน "'$keyword[$i]'"."$h";
$query_limit_lab = sprintf("%s LIMIT %d, %d", $query_lab, $startRow_lab, $maxRows_lab);
$lab = mysql_query($query_limit_lab, $conhos) or die(mysql_error());
$row_lab = mysql_fetch_assoc($lab);
//echo $query_lab;
Tag : PHP, MySQL
Date :
2012-06-24 16:46:24
By :
addy_it
View :
999
Reply :
8
คุณต้องทำ string ให้อยู่ในรูปแบบ 'x','y','z' แล้วค่อยเอาไป IN ครับ
Date :
2012-06-24 19:54:18
By :
mr.win
ผมสร้างแบบนี้มันถูกหลักการไหมครับ $pdx01= "'$keyword[$i]'"."$h";
แต่ทำแบบนี้ มันจะได้เฉพาะค่าตัวสุดท้ายครับ เช่นผมกรอก a,b,c,z เลาเอามาใส่ที่ คำสั่ง sql มันจะได้ เฉพาะ 'z' ตัวเดียว
แต่ถ้า
$pdx01= "'$keyword[$i]'"."$h";
echo $pdx01; อยู่ใน
if(!empty($_GET['btnsubmit'])){ //ถ้าปุ่ม btnsubmit ถูกกด
$keyword = explode(',',$_GET['pdx']); //ให้เอาข้อความที่ส่งมาจากช่องชื่อ t1 มาสับด้วยเครื่องหมาย , แล้วเอาทุกชิ้นที่ได้เก็บใส่ตัวแปรที่ชื่อว่า keyword
$x = count($keyword);
for($i=0;$i<count($keyword);$i++){ //ให้นั้ยว่า keyword ทั้งหมดมีกี่ตัว แล้ววนรอบเท่าจำนวนของ keyword
$i != ($x-1) ? $h="," : $h="";
$pdx01= "'$keyword[$i]'"."$h";
แบบนี้ค่ามันก็จะออกมา 'a','b','c','z' แต่พอเอาไปใส่ในคำสั่ง sql แล้วมันออกมาแค่ 'z' ตัวเดียวครับ
Date :
2012-06-25 10:28:48
By :
addy_it
ท่านอื่น ๆ ผ่านมาก็ช่วยหน่อยนะครับ
Date :
2012-06-25 11:06:02
By :
addy_it
ผมดู code แล้วไม่เข้าใจครับ
คุณลอง echo $pdx01; มันได้ค่าอะไรครับ
Date :
2012-06-25 16:10:36
By :
mr.win
กรณีที่คุณทำตัวแปรแบบตายตัวมารับค่า array คุณต้องลูปคิวรี่ตามจำนวน array ครับ
แต่ถ้าคุณต้องการคิวรี่รอบเดียว คุณต้องทำค่าตัวแปร array ให้อยู่ในรูปบบที่พี่วินบอกครับ
*************************
ที่คุณทำ มันคือ
$a = 1;
$a = 2;
$a = 3;
พอ echo ออกมา มันก็คือค่าหลังสุด คือ 3
แต่ถ้าค่า GET ที่รับมา มันอยู่ในรูปแบบ 1,2,3 อยู่แล้ว ไม่ต้องเอามาสับครับ เอาไปใส่ใน IN ($_GET) ได้เลย
Date :
2012-06-25 16:32:45
By :
Pine
ถ้า echo $pdx01; อกกมามันจะได้ 'a','b','c','z' ค่าตามที่กรอกเข้าไป แต่ถ้า เอา $pdx01 ไปใส่ในคำสั่ง sql มันจะได้เฉพาะค่าสุดท้ายเท่านั้นครับ คือ 'z' ถ้า GET ค่าจาก textbox เลย มันจะ ถ้าพิม 'a','b' มันจะได้ '\'a\',\'b\'' แบบนี้ครับ คือที่ผมอยากได้ ผมอยากให้มันแสดงค่าเป็น 'a','b','c','z' แล้วเอาตัวแปรไปใส่ในคำสั่ง in ครับ ช่วยผมหน่อยนะครับ
Date :
2012-06-25 16:55:06
By :
addy_it
ตอนที่ echo มันอยู่ในลูปครับ ค่ามันต้องออกอยู่แล้ว แต่พออยู่นอกลูป ค่ามันจะออกตัวหลังสุด
loop {
$a = 1;
echo $a; //1
$a = 2;
echo $a; //2
$a = 3;
echo $a; //3
}
echo $a; // 3
ถ้ามันติดตรงที่ว่า ไม่ต้องลูปสับครับ ใช้
$keyword = stripslashes($_GET['pdx']);
SQL => IN ($keyword)
Date :
2012-06-25 17:14:46
By :
Pine
ขอบคุณมาก ๆครับ
Date :
2012-06-26 15:00:01
By :
addy_it
Load balance : Server 02