 |
มีปัญหาเรื่องการค้นหาหลายๆ ฟิลด์ มันแสดงผลไม่ถูกต้องเลยครับ |
|
 |
|
|
 |
 |
|
สวัสดีครับ ผมมีปัญหาการค้นหาพร้อมๆกันหลายๆฟิลด์ เวลาค้นหาแล้วไม่เจอข้อมูล หรือ ข้อมูลแสดงผลไม่ถูกต้องครับ โดยผมมีหน้าจอสำหรับค้นหาดังรูป

ฟิลด์ที่ใช้ค้นหาในตาราง customer มีดังนี้ customer_fname, customer_lname, customer_fname_en, customer_lname_en, customer_idcard, customer_passportno, customer_id
อีกตารางเป็นตารางที่เก็บข้อมูลการเดินทางของลูกค้าคือ order มีฟิลด์ดังนี้ date_travelfrom, date_travelto, customer_id, program_id
ตารางนี้เป็นตารางที่เก็บโปรแกรมการเดินทาง program มีฟิลด์ดังนี้ program_id, program_name
โดยผลลัพธ์ที่ต้องการคือ ชื่อ นามสกุลของลูกค้า, โปรแกรมที่ลูกค้าเคยเดินทาง วันที่เดินทางไปและกลับ
ปัญหาที่ผมเจอเวลา join table กัน ข้อมูลจะแสดงไม่ถูกต้องครับ รบกวนผู้รู้ด้วยครับ
Tag : PHP
|
|
 |
 |
 |
 |
Date :
2012-07-21 08:35:46 |
By :
nottp106 |
View :
1238 |
Reply :
9 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ต้องดูด้วยนะครับว่าjoin แบบไหน left join, Right join , inner join หรืออื่นๆเลือกใช้ให้ถูกต้อง อันไหนที่like. อันไหนที่ ==
|
 |
 |
 |
 |
Date :
2012-07-21 10:16:54 |
By :
adaaugusta |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ผมใช้ left join ครับ มันไม่ work ผมอยากจะรบกวนเขียนตัวอย่างให้ดูหน่อยครับว่า ถ้าผมมีฟอร์มแบบนี้ ผมต้องการให้มันแสดงผลได้อย่างถูกต้อง ต้องเขียนอย่างไร
|
 |
 |
 |
 |
Date :
2012-07-21 12:56:27 |
By :
nottp |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ที่บอกว่าแสดงข้อมูลไม่ถูกต้อง ไม่ถูกอย่างไร แล้วที่ Join ไว้เขียนไว้อย่างไรครับ
|
 |
 |
 |
 |
Date :
2012-07-21 13:21:42 |
By :
adaaugusta |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แล้วที่บอกว่าแสดงผลไม่ถูกต้องนี้ไม่ถูกอย่างไรล่ะครับกรุณาอธิบายละเอียดๆหน่อยคนช่วยจะได้ช่วยได้
|
 |
 |
 |
 |
Date :
2012-07-21 23:19:34 |
By :
adaaugusta |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
จขกท เอาตารางมาลงครับ และก็บอกความต้องการว่าจะค้นหาฟิลด์ไรบ้างครับ
|
 |
 |
 |
 |
Date :
2012-07-21 23:21:21 |
By :
Dragons_first |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ผมเอารูปมาให้ดูครับ เช่น ผมใช้คำว่า ทดสอบ ค้นหาในช่อง ชื่อลูกค้า ปกติจะต้องออกมาเฉพาะคนชื่อ ทดสอบ แต่ผลไม่ออกตามที่ต้องการครับ ดังรูป

|
 |
 |
 |
 |
Date :
2012-07-21 23:59:14 |
By :
nottp106 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ใส่ชื่อฟิลด์ แล้วก็ตัวแปรเองนะ
ทำแบบนี้น่าจะได้ค่า Query ที่ต้องการถูกต้องนะ
เพราะเวลาที่เราทำการค้นหาแบบหลายเงื่อนไข ก็จะทำแบบนี้น่ะง่ายดี
Code (PHP)
$Sql ="select * from customer where";
if($_POST['ชื่อ']=='' and $_POST['สกุล']=='' and $_POST['รหัสประชาชน']=='' and $_POST['เลขพาสปอร์ต']=='' and $_POST['ตั้งแต่วันที่']=='' and $_POST['ถึงวันที่']==''){
$Sql .=" 1";
} else if($_POST['ชื่อ']!='' and $_POST['สกุล']=='' and $_POST['รหัสประชาชน']=='' and $_POST['เลขพาสปอร์ต']=='' and $_POST['ตั้งแต่วันที่']=='' and $_POST['ถึงวันที่']==''){
$Sql .=" customer_fname='".$_POST['ชื่อ']."' ";
} else if($_POST['ชื่อ']=='' and $_POST['สกุล']!='' and $_POST['รหัสประชาชน']=='' and $_POST['เลขพาสปอร์ต']=='' and $_POST['ตั้งแต่วันที่']=='' and $_POST['ถึงวันที่']==''){
$Sql .=" fieldname='".$_POST['สกุล']."' ";
} else if($_POST['ชื่อ']=='' and $_POST['สกุล']=='' and $_POST['รหัสประชาชน']!='' and $_POST['เลขพาสปอร์ต']=='' and $_POST['ตั้งแต่วันที่']=='' and $_POST['ถึงวันที่']==''){
$Sql .=" fieldname='".$_POST['รหัสประชาชน']."' ";
} else if($_POST['ชื่อ']=='' and $_POST['สกุล']=='' and $_POST['รหัสประชาชน']=='' and $_POST['เลขพาสปอร์ต']!='' and $_POST['ตั้งแต่วันที่']=='' and $_POST['ถึงวันที่']==''){
$Sql .=" fieldname='".$_POST['เลขพาสปอร์ต']."' ";
} else if($_POST['ชื่อ']=='' and $_POST['สกุล']=='' and $_POST['รหัสประชาชน']=='' and $_POST['เลขพาสปอร์ต']=='' and $_POST['ตั้งแต่วันที่']!='' and $_POST['ถึงวันที่']!=''){
$Sql .=" fieldname between'".$_POST['ตั้งแต่วันที่']."' and '".$_POST['ถึงวันที่']."' ";
}
|
 |
 |
 |
 |
Date :
2012-07-22 10:15:59 |
By :
บังเอิญผ่านมาเห็น |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ผลออกมาถูกแล้วล่ะครับ ตามที่เขียนไว้เลย
เพราะตรง OR customer_lname คุณกำหนดเป็น Like% แต่ไม่มีค่าเข้ามา
มันเลยดึงฟิลด์ว่างออกมา ก็ถูกต้องแล้วครับ
select * from customer LEFT JOIN his_tour on his_tour.customer_id = customer.customer_id where customer_fname like '%ทดสอบ%'
เอาแค่นี้ไปใช้ก่อนครับ ถ้าผลถูกต้องค่อยไปขั้นตอนต่อไป
|
 |
 |
 |
 |
Date :
2012-07-22 11:24:31 |
By :
adaaugusta |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|