Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > PHP > PHP Forum > จะทำ Search โดยใช้คำค้นหาหลายคำยังไง หามาทั้งวันละ GOOGLE ไม่ช่วยอ่าไรเลย = =a



 

จะทำ Search โดยใช้คำค้นหาหลายคำยังไง หามาทั้งวันละ GOOGLE ไม่ช่วยอ่าไรเลย = =a

 



Topic : 062323



โพสกระทู้ ( 61 )
บทความ ( 0 )



สถานะออฟไลน์




ผมกำลังทำเว็บสมุนไพรอยู่ แต่ติดปัญหาเกี่ยวกับการค้นหาข้อมูล

คือเวลาค้นหาโดยหาจากสรรพคุณ จะใส่คำค้นหา ได้แค่คำเดียว เช่น ท้องอืด เป็นต้น

แต่สมุนไพรแต่ละตัวมีสรรพคุณเยอะมาก หากมีการใส่คำค้นหาหลายกัน มันจะหาไม่เจออ่ะ

ถ้าใส่แค่คำเดียวจะค้นหาเจอ ตามรูป

web2


ถ้าใส่ 2 คำ คือ "ท้องอืด จุกเสียด" จะขึ้นว่าไม่พบ ตามรูป

web3

ถ้าดูจากรูปแรก สรรพคุณของ กานพลู คือ

กานพลูมีฤทธิ์อุ่น เผ็ดร้อน กลิ่นหอมแรง จึงช่วยรักษาอาการท้องอืดเฟ้อ จุกเสียด อาหารไม่ย่อย ท้องเสีย,,,

มีทั้งคำว่า ท้องอืด กับ จุกเสียด แต่กับค้นหาไม่เจอ

Code ที่ใช้ค้นหา ของผมเป็นแบบนี้

Code (PHP)
<?php
$sql="select * from herb where Properties LIKE '%".$_GET["search"]."%' ";
$result = mysql_query($sql) or die ("Error Query [".$sql."]");
  while($rs=mysql_fetch_array($result))
     { 
?>
            <table width="820" border="0" align="center" cellpadding="0" cellspacing="0">
              <tr>
                <td width="8" rowspan="3" valign="top">&nbsp;</td>
                <td width="155" height="80" rowspan="3" class="text"><div align="center"><img src="../upload/<?=$imgH; ?>" alt="" width="154" height="94"></div></td>
                <td colspan="2" class="text">ชื่อสมุนไพร : <?php echo $rs["Hname"] ?></td>
              </tr>
              <tr>
                <td width="60" height="67" valign="top" class="text">สรรพคุณ :</td>
                <td width="597" valign="top" class="text"><?php echo substr(nl2br($rs['Properties']),0,200)."...";?></td>
              </tr>
              <tr>
                <td height="19" colspan="2" valign="top" class="text"><div align="right"><a href="M_herbdetail.php?id=<?=$rs[ID];?>" class="linktext">รายละเอียด</a></div></td>
              </tr>
              <tr>
                <td height="21" colspan="4">&nbsp;</td>
              </tr>
            </table>
            <div align="center">
            <span class="linktext"> <br>
<? } ?>


ผมเลยอยากถามว่า จะเขียน Code ยังไง เพื่อให้ค้นหาหลายๆคำได้ ผมต้องเขียน SQL ยังไงเพื่อให้ได้ผลการค้นหาแบบนั้นอ่ะครับ

รบกวนผู้รู้ช่วยยกตัวอย่าง Code หรือตัวอย่างที่พอจะให้ศึกษาต่อได้มาหน่อยนะครับ



Tag : PHP, MySQL







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2011-06-26 19:57:05 By : hotreplay View : 2421 Reply : 10
 

 

No. 1



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

คุณอาจจะต้องใช้ or เข้ามาค้นหา โดยแบ่งเป็นประโยค ๆ

หรือไม่ใน MYSQL Full-Text ก็ได้ครับ

Go to : SQL/MYSQL Full-Text Search






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-26 20:02:18 By : webmaster
 


 

No. 2



โพสกระทู้ ( 61 )
บทความ ( 0 )



สถานะออฟไลน์


อ่าครับ กำลังลองดูคือ ตอนนี้ ค้นหาแล้วไม่เจอข้อมูลเลย

SQL ผมใส่ไว้แบบนี้

Code (PHP)
$sql="SELECT * FROM herb WHERE MATCH (Properties) AGAINST ('$_GET[search]')";


เวลาค้นหาลองใช้คำว่า ท้องอืด ก็ไม่เจอข้อมูลอ่ะ

ลองเอาคำสั่งนิไปค้นหาในฐานข้อมูล sql ดูก็ไม่เจอเหมือนกัน ทำไรผิดหว่า

ก็ตั้ง FULL TEXT แล้วนิหว่า = =a

Code (PHP)
ALTER TABLE `herb` ADD FULLTEXT(`Properties`);


ผมทำอ่าไรผิดไปนะ มันถึงไม่ขึ้นไรเลย Error ก็ไม่มี = =a
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-26 20:44:16 By : hotreplay
 

 

No. 3



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

ลืมบอก่อนครับ ว่า FullText ไม่ Support ภาษาไทยครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-26 21:04:50 By : webmaster
 


 

No. 4



โพสกระทู้ ( 61 )
บทความ ( 0 )



สถานะออฟไลน์


กำ แล้วมีวิธีอื่น แนะนำอีกไหมอ่าครับ
เห็นอันแรกบอกใช้ or ก็ได้

รบกวนขอตัวอย่าง SQL นิดนึงได้ไหมอ่าครับ
ไม่รู้จะแบ่งประโยคให้มันไปค้นหายังไง เพราะมันอยู่ใน TEXTFIELD เดียวกัน


ประวัติการแก้ไข
2011-06-26 21:09:38
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-26 21:08:49 By : hotreplay
 


 

No. 5



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

คุณจะต้องแยก string ออกมาเป็นชุด ๆ ก่อนน่ะครับ จากนั้นก็ or แต่ล่ะชุดครับ

Go to : PHP explode()
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-26 21:11:34 By : webmaster
 


 

No. 6



โพสกระทู้ ( 61 )
บทความ ( 0 )



สถานะออฟไลน์


อ่าครับ เดียวจะลองดูนะครับ ถ้าไม่เข้าใจหรือไม่ได้อ่าไรนะมา โพสถามอีกนะครับ

ยังไงก็ขอบคุณ คุณ mr.win มากๆเลยครับ ^^ นั่งหามาทั้งวันจนปวดตาปวดหัวจะแย่ละ ^^
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-26 21:19:50 By : hotreplay
 


 

No. 7



โพสกระทู้ ( 599 )
บทความ ( 0 )



สถานะออฟไลน์
Twitter Facebook

ถ้ากรอกมาสองคำ คุณก็ใช้ ฟั่งก์ชั่นที่แยกคำออกมาก่อนครับ explode(' ',$string); แล้วเอาแต่ละตัวมาวนต่อในคำสั่งที่จะ query
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-26 21:31:36 By : oxygenyoyo
 


 

No. 8



โพสกระทู้ ( 61 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 7 เขียนโดย : oxygenyoyo เมื่อวันที่ 2011-06-26 21:31:36
รายละเอียดของการตอบ ::
ขอบคุณครับ ก่าจะทำให้มันวนลูบได้ นั่งงงอยู่นานเลย งุงุ มั่วไปมั่วมา code ถึงจะแปลกๆหน่อย แต่ก็ได้ผลออกมาตามที่ต้องการ ข้างล่างนิ Code ที่มั่วมา ^^


Code (PHP)
if($_GET["select"]==1){
$sql2="select * from herb where Hname LIKE '".$_GET["search"]."' ";
}
if($_GET["select"]==2){
$text = $_GET["search"];
list($Stext[0], $Stext[1], $Stext[2], $Stext[3], $Stext[4], $Stext[5], $Stext[6], $Stext[7], $Stext[8], $Stext[9], $Stext[10]) = explode(" ", $text);
$Si=0;
while($Stext[$Si] !=""){
	if($Si <= 0){
		$sql2 = "select * from herb where Properties LIKE '%".$Stext[0]."%' ";
		$Si++;
		}
	if($Stext[$Si] !=""){
		$sql3 = "OR Properties LIKE '%".$Stext[$Si]."%' ";
		$Stext2[$Si]="$sql3";
		$sql2 = "$sql2"."$Stext2[$Si]";
		$Si++;
		}
}
}
if($_GET["select"]==3){
$sql2="select * from herb where Caution LIKE '%".$_GET["search"]."%' ";
}

$result2 = mysql_query($sql2) or die ("Error Query [".$sql2."]");

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-26 23:10:25 By : hotreplay
 


 

No. 9



โพสกระทู้ ( 147 )
บทความ ( 0 )



สถานะออฟไลน์


Code (PHP)
if($_GET["select"]==1){
$sql2="select * from herb where Hname LIKE '".$_GET["search"]."' ";
}
if($_GET["select"]==2){
$text = $_GET["search"];
$Stext = explode(" ", $text);//แบบนี้ได้เยอะกว่าที่คุณกำหนดนะครับและได้พอดีกับข้อมูล

foreach($Stext As $val){
	if(empty($sql2)){
		$sql2 = "select * from herb where Properties LIKE '%".$val."%' ";
	}else{
		$sql2 .= "OR Properties LIKE '%".$val."%' ";
	}
}
}
if($_GET["select"]==3){
$sql2="select * from herb where Caution LIKE '%".$_GET["search"]."%' ";
}

$result2 = mysql_query($sql2) or die ("Error Query [".$sql2."]");



ประวัติการแก้ไข
2011-06-27 03:14:22
2011-06-27 03:24:01
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-27 03:11:44 By : phajvaj
 


 

No. 10



โพสกระทู้ ( 61 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณครับ คุณ sAcIw ที่แกล้งให้ = =a สั้นๆ ได้ใจความกว่าของผมเยอะเลย อิอิ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-27 12:55:39 By : hotreplay
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : จะทำ Search โดยใช้คำค้นหาหลายคำยังไง หามาทั้งวันละ GOOGLE ไม่ช่วยอ่าไรเลย = =a
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 03
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่