ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingถามเรื่อง ทำฟอร์ม search แบบหลาย keyword จาก mysql หลายฟิลด์ หน่อยครับ
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: ถามเรื่อง ทำฟอร์ม search แบบหลาย keyword จาก mysql หลายฟิลด์ หน่อยครับ  (อ่าน 3890 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
thisontime
ก๊วนเสียว
*

พลังน้ำใจ: 8
ออฟไลน์ ออฟไลน์

กระทู้: 208



ดูรายละเอียด
« เมื่อ: 15 พฤศจิกายน 2013, 16:21:54 »

ต้องการทำ form ค้นหา <input type=text name=keyword id=keyword> ช่องเดียว

แต่นำข้อมูลจาก mysql หลายๆ field เหมือนพวก wordpress หรือ google

เช่น ตาราง table_car มีฟิลล์ดังนี้  brand, version, price, location, description

แล้วพิมพ์คำค้นหา toyota vios ปราจีนบุรี

ก็จะปรากฏข้อมูลตามที่ค้นหา สามารถทำอย่างไรได้บ้างครับ

ผมลองโค้ดต่อไปนี้แล้ว
ผลลัพท์คือมันเลือกแสดงผลแค่คีย์แรกอย่างเดียวครับ
เช่น toyota แต่มันไม่สนใจ vios กับ ปราจีนบุรีเลย

โค๊ด:
if($_GET["brand"]){

$q="select * from table_car where brand like '%".$_GET['keyword']."%'";

if($_GET["keyword"] != "")
{
$q.= " OR version like '".$_GET["keyword"]."' ";
$q.= " OR location like '".$_GET["keyword"]."' ";
}
}

$q.=" ORDER BY edit_date DESC";
$qr=mysql_query($q);
......

สามารถทำอย่างไรได้บ้างครับ

ขอบคุณมากครับ
« แก้ไขครั้งสุดท้าย: 15 พฤศจิกายน 2013, 16:56:46 โดย thisontime » บันทึกการเข้า
sys2528
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 301
ออฟไลน์ ออฟไลน์

กระทู้: 3,601



ดูรายละเอียด
« ตอบ #1 เมื่อ: 15 พฤศจิกายน 2013, 16:48:20 »

ต้องการทำ form ค้นหา <input type=text name=keyword id=keyword> ช่องเดียว

แต่นำข้อมูลจาก mysql หลายๆ field เหมือนพวก wordpress หรือ google

เช่น ตาราง table_car มีฟิลล์ดังนี้  brand, version, price, location, description

แล้วพิมพ์คำค้นหา toyota vios ปราจีนบุรี

ก็จะปรากฏข้อมูลตามที่ค้นหา สามารถทำอย่างไรได้บ้างครับ

ผมลองโค้ดต่อไปนี้แล้ว
ผลลัพท์คือมันเลือกแสดงผลแค่คีย์แรกอย่างเดียวครับ
เช่น toyota แต่มันไม่สนใจ vios กับ ปราจีนบุรีเลย

โค๊ด:
if($_GET["brand"]){

$q="select * from table_car where brand like '%".$_GET['keyword']."%'";

if($_GET["keyword"] != "")
{
$q.= " OR version".$_GET["keyword"]."')";
$q.= " OR location ".$_GET["keyword"]."')";
}
}

$q.=" ORDER BY edit_date DESC";
$qr=mysql_query($q);
......

สามารถทำอย่างไรได้บ้างครับ

ขอบคุณมากครับ


ก็อีก 2 ฟิลที่ไม่ได้ให้ค้นหาจากข้อความอ่ะครับ

if($_GET["brand"]){

$q="select * from table_car where brand like '%".$_GET['keyword']."%'";

if($_GET["keyword"] != "")
{
$q.= " OR version like '%'".$_GET["keyword"]."%'')";
$q.= " OR location like '%'".$_GET["keyword"]."%'')";
}   
}

$q.=" ORDER BY edit_date DESC";
$qr=mysql_query($q);

ลองดูครับ  wanwan019
« แก้ไขครั้งสุดท้าย: 15 พฤศจิกายน 2013, 16:51:26 โดย sys2528 » บันทึกการเข้า

kobkung
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 103
ออฟไลน์ ออฟไลน์

กระทู้: 1,312



ดูรายละเอียด เว็บไซต์
« ตอบ #2 เมื่อ: 17 พฤศจิกายน 2013, 22:56:04 »

ถ้าค้นหาแบบแยกช่องส่งค่า ก็ตามเรปบน
ถ้าช่องกรอกมีอันเดียว ต้อง split array ออกมาก่อน แล้วก็ตามเรปบน
บันทึกการเข้า

เราเป็นบริษัท รับทำเว็บไซต์ แก้เว็บเดิม เขียน Php+Mysql+jQuery+css+bootstrap  งานตามสั่ง ประสบการณ์ จะ 19 ปี ละจ้า
Smilephp.com รับทำเว็บไซต์บริษัท e-commerce + ระบบชำระเงิน paypal,ธนาคาร  เว็บบริษัท เว็บขายของ ระบบจอง เช่า เขียน PHP ได้ทุกแนว  ช่วงนี้เน้นรับงาน ERP ระบบเอกสารบริษัท ,บัญชี ,  Barcode, Stock , Warehouse , Logistic ติดต่อ 086-364-5262

งดตอบคนทำเว็บนอกลู่นอกทาง ไม่ทำเว็บ WP ปั่นแชร์ เว็บประมูล สคริปปั่นใดๆ ไม่ทำเว็บบอลและพ
phaishow
คนรักเสียว
*

พลังน้ำใจ: 11
ออฟไลน์ ออฟไลน์

กระทู้: 151



ดูรายละเอียด
« ตอบ #3 เมื่อ: 18 พฤศจิกายน 2013, 00:04:40 »

โค๊ด:
$query_col = mysql_query("describe table_car");
$keyword = explode(" ",$_GET['keyword']);
$where = array();
while($col=mysql_fetch_row($query_col)){
    foreach($keyword as $key){
        $where[] = $col[0]." like '%".$key."%'";
    }
}
$query = mysql_query("select * from table_car where ".implode(" or ",$where));

ไม่รู้ว่าได้หรือเปล่า ลองดูครับ
บันทึกการเข้า

รู้หลบเป็นปีก รู้หลีกเป็นหาง .. รู้ทุกอย่าง เป็นไปไม่ได้
---
รับเขียนโปรแกรม php ทุกรูปแบบ
รับเขียนโปรแกรม desktop pc ด้วยภาษา php,html,javascript
สนใจ/คุยรายละเอียด PM ได้เลยครับ
หน้า: [1]   ขึ้นบน
พิมพ์