ปัญหาระบบ ค้นหาใน PHP

เริ่มโดย pooh20240, 29 มีนาคม 2011, 18:55:26

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

pooh20240

พอดีกำลังเขียน PHP ในการค้นหาข้อมูลใน Mysql

ไม่เชิงว่าเป็นปัญหามากครับคืออยากให้มันแสดงผล คำไกล้เคียงด้วย

เช่นปรกติผมใช้ code like '%".$_GET[p]."%

ข้อมูลใน db ชื่อ AAA BBB CCC DDD

ซึ่งเวลาพิมคำค้นหา AAA BBB CCC มันจะแสดง

แต่เวลาพิมค้น AAA DDD มันกลับไม่แสดง

:P

พอมีทางแก้ไขไหม
แหล่งรวมสาว AV 18+ <== BAN USER ถาวร เรียบร้อย

thongtae

แยกคำที่ต้องการค้นหา ออกมาเป็นคำๆก่อน

pooh20240

อ้างถึงจาก: thongtae ใน 29 มีนาคม 2011, 19:09:42
แยกคำที่ต้องการค้นหา ออกมาเป็นคำๆก่อน

มี script ตัวอย่างไหมครับ
แหล่งรวมสาว AV 18+ <== BAN USER ถาวร เรียบร้อย

thongtae

$inputText="AAA DDD";
$keywords=explode(" ",$inputText);//แยกคำด้วยช่องว่าง
echo $keywords[0];//AAA
echo $keywords[1];//DDD

แล้วเอาคำที่แยกแล้วไปค้นหาในquery
ประมาณนี้

ข้างบนต้องใช้loop วนดึงค่าarray ออกมา
ขี้เกียจเขียนน่ะ

kitazawa1st


$query = array();
$keywords = explode(' ',$_GET['keywords']);
foreach($keywords  as $val)
{
$query[] = "field LIKE '%".$val."%'";
}
$where = implode(' OR ',$query);

$sql = "SELECT field FROM table WHERE " . $where;


ปล. เขียนสด ไม่ได้ตรวจสอบ หากผิดพลาดขออภัย
เล็กสั้น ขยันซอย

Synchronize

ลองแบบนี้ดูครับ

$_x = explode(' ', $inputText);
$_y = array();
foreach($_x as $_z) $_y[] = ' code like '%". $_z ."%';



แล้วก็เอา $_y ไป สร้างคำสั่ง sql

$_s = 'select * from table where ' . implode(' and ', $_y);

 :wanwan017:
เนื้อหาความรู้น่าสนใจ ใหม่ๆ
[direct=https://develop.un-no.com/w3/docs/clear-float-in-div]เทคนิคการแก้ไขปัญหาจากการ float ซ้อน float แล้ว clear[/direct]

[direct=https://service.un-no.com/unbbz]ทำเว็บได้ด้วยตัวเองฟรี ด้วยระบบเว็บสำเร็จรูป unbbz , เว็บธรรมดา , เว็บบอร์ด , เว็บขายของ ทำได้หมดเลย[/direct]

pooh20240

ขอบคุณทุกๆท่านมากครับ เด๋วขอไปเทสก่อน
แหล่งรวมสาว AV 18+ <== BAN USER ถาวร เรียบร้อย

DJJome


bomload

อ้างถึงจาก: Synchronize ใน 29 มีนาคม 2011, 19:50:49

แล้วก็เอา $_y ไป สร้างคำสั่ง sql

$_s = 'select * from table where ' . implode(' and ', $_y);

 :wanwan017:

คำสั่งน่าจะใช้ OR นะครับ
รับทำเว็บไซต์

Synchronize

อ้างถึงจาก: bomload ใน 30 มีนาคม 2011, 18:44:11
อ้างถึงจาก: Synchronize ใน 29 มีนาคม 2011, 19:50:49

แล้วก็เอา $_y ไป สร้างคำสั่ง sql

$_s = 'select * from table where ' . implode(' and ', $_y);

 :wanwan017:

คำสั่งน่าจะใช้ OR นะครับ

ถ้า or การค้นหา จะผิดครับ มันจะได้ผลเยอะกว่าที่ต้องการ

ปกติ เวลาเรา ค้นหา แล้วเพิ่ม keyword เข้าไป เพื่อให้ ผลการค้นหามันน้อยลงใช่ไหม

ถ้า or ผลการค้นหามันจะ union กัน เช่น ค้น A B มันก็ จะโผล่มา ทั้ง ที่มี A อย่างเดียว และ B อย่างเดียวด้วย
ถ้า and ผลการค้นหามันจะ intersect กัน  เช่น ค้น A B มันก็ จะโผล่มา เฉพาะทั้ง A และ B

  :wanwan017:
เนื้อหาความรู้น่าสนใจ ใหม่ๆ
[direct=https://develop.un-no.com/w3/docs/clear-float-in-div]เทคนิคการแก้ไขปัญหาจากการ float ซ้อน float แล้ว clear[/direct]

[direct=https://service.un-no.com/unbbz]ทำเว็บได้ด้วยตัวเองฟรี ด้วยระบบเว็บสำเร็จรูป unbbz , เว็บธรรมดา , เว็บบอร์ด , เว็บขายของ ทำได้หมดเลย[/direct]