 |
สอบถามเรื่อง auto complete หน่อยครับ สวัสดีครับผมมีเรื่องรบกวนเพื่อนๆ พี่ๆ นิดหน่อยครับพอดี |
|
 |
|
|
 |
 |
|
สวัสดีครับ
ผมมีเรื่องรบกวนเพื่อนๆ พี่ๆ นิดหน่อยครับ
พอดี ผมใช้ code auto completion
Ninenik
คือ ก็สามารถดึงข้อมูลมาโชว์ได้ปกตินะครับ ในตัว suggestion น่ะครับ
แต่ผม อยากจะทราบว่า
ถ้าเรา จะค้นหาในหลายๆ field อ่ะครับ
เช่นในโค้ด นี้ ผมค้นหา แค่
Code
$sql=mysql_query("SELECT * FROM tb_material WHERE locate('$q',m_mid)>0 LIMIT 20");
คือผมอยากจะให้ค้นหา ไม่เฉพาะจากรหัส เช่น พิมพ์ ชื่อ เข้าไป ก็ดึงข้อมูลจาก ชื่อ มาค้นหาด้วยอ่ะครับ
ผมต้องกำหนด ในไฟล์ getdata.php ยังไงครับ
Code getdata.php
<?php
// เชื่อมต่อฐานข้อมูล
$link=mysql_connect("localhost","root","123456") or die("error".mysql_error());
mysql_select_db("database_name",$link);
mysql_query("set character set utf8");
$q = $_GET["q"];
$pagesize = 50; // จำนวนรายการที่ต้องการแสดง
$table_db="article"; // ตารางที่ต้องการค้นหา
$find_field="arti_topic"; // ฟิลที่ต้องการค้นหา
$sql = "select * from $table_db where locate('$q', $find_field) > 0 order by locate('$q', $find_field), $find_field limit $pagesize";
$results = mysql_query($sql);
while ($row = mysql_fetch_array( $results )) {
$id = $row["arti_id"]; // ฟิลที่ต้องการส่งค่ากลับ
$name = ucwords( strtolower( $row["arti_topic"] ) ); // ฟิลที่ต้องการแสดงค่า
// ป้องกันเครื่องหมาย '
$name = str_replace("'", "'", $name);
// กำหนดตัวหนาให้กับคำที่มีการพิมพ์
$display_name = preg_replace("/(" . $q . ")/i", "<b>$1</b>", $name);
echo "<li onselect=\"this.setText('$name').setValue('$id');\">$display_name</li>";
}
mysql_close();
?>
เพราะผมลองใส่ or locate('$q',m_name)>0 ไปแบบนี้แล้ว แต่ก็ไม่รู้ต้องกำหนดในส่วนของ while ยังไง อ่ะครับ
รบกวนแนะนำ ผมหน่อยนะครับ
ขอบคุณมากๆ ครับ
Tag : - - - -
|
|
 |
 |
 |
 |
Date :
2010-06-29 20:41:33 |
By :
yomaster |
View :
1536 |
Reply :
10 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ผมทำได้แล้วครับ
ให้มันแสดงทุกอันไปเลยครับ (กำปั้นทุบดินมากๆ ครับ) - -"
ใส่ locate() ตัวอื่นๆ
และใน while ก็ โชว์ ข้อมูลให้หมดเลยครับ - -"
|
 |
 |
 |
 |
Date :
2010-06-29 21:23:25 |
By :
yomaster |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เอ่อ
ผมพบปัญหาครับ
echo "<li onselect=\"this.setText('$name').setValue('$id');\">$display_name</li>";
ตรงส่วนนี้อ่ะครับ
มันจะดึงค่าเดียวมาตลอดอ่ะครับ
ลองใส่เงื่อนไข ไป ก็ ไม่แสดงข้อมูลอะไรออกมาเลยอ่ะครับ
รบกวนช่วยผมหน่อยครับ
โค้ด getdata ผมนะครับ
getdata.php
<?php
require_once("config.php");
$q=$_GET["q"];
$sql=mysql_query("SELECT * FROM tb_material WHERE locate('$q',m_mid)>0 OR locate('$q',m_name)>0 OR locate('$q',m_brand)>0 LIMIT 20");
while($row=mysql_fetch_array($sql)){
$id=$row['m_id'];
$mid=ucwords(strtolower($row['m_mid']));
//if($q=="$mid"){
$mid=str_replace("'","'",$mid);
$displayMID=preg_replace("/(".$q.")/i","<b>$1</b>",$mid);
//$setT="$mid";
//}
$name=ucwords(strtolower($row['m_name']));
//if($q=="$name"){
$name=str_replace("'","'",$name);
$displayName=preg_replace("/(".$q.")/i","<b>$1</b>",$name);
//$setT="$name";
//}
$brand=ucwords(strtolower($row['m_brand']));
//if($q=="$brand"){
$brand=str_replace("'","'",$brand);
$displayBrand=preg_replace("/(".$q.")/i","<b>$1</b>",$brand);
//$setT="$brand";
//}
echo "<li onselect=\"this.setText('$setT').setValue('$setT');\">รหัส : $displayMID - ชื่อสินค้า : $displayName - ยี่ห้อ : $displayBrand</li>";
}
mysql_close($c);
?>
|
 |
 |
 |
 |
Date :
2010-06-29 21:40:52 |
By :
yomaster |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ช่วยกระผมหน่อยค้าบบบ T_T
|
 |
 |
 |
 |
Date :
2010-06-29 23:53:45 |
By :
yomaster |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
T_T
ไม่มีเลยเหรอครับ
|
 |
 |
 |
 |
Date :
2010-06-30 08:27:36 |
By :
yomaster |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (PHP)
$sql=mysql_query("SELECT CONCAT(ฟิวที่ต้องการหา1, ฟิวที่ต้องการหา2, ฟิวที่ต้องการหา3) AS ฟิวรวมนะ, mid,name,brand FROM tb_material WHERE ฟิวรวมนะ LIKE '%$q%' LIMIT 20");
concept คือมัดรวมก่อนแล้วค้นหา ส่วนตัวแสดง ส่วน field ที่แสดง tag li ก็ แสดงตามปกติ mid,name,brand
พอจะได้ไอเดียไหมครับ
ไม่เจอกันนาน สวัสดีครับคุณ YoYo 
|
 |
 |
 |
 |
Date :
2010-06-30 10:34:30 |
By :
peterxp |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณ คุณ PeterXP มากๆ ครับ
ได้ไอเดีย แต่ไปต่อไม่ได้ ซะงั้น - -"
ผมทำแบบนี้อ่ะครับ
Code (PHP)
$sql=@mysql_query("SELECT CONCAT(m_mid,m_name,m_brand) AS all_field,mid,name,brand FROM tb_material WHERE all_field LIKE '%$q%' LIMIT 20");
while($row=@mysql_fetch_array($sql)){
แล้วตรงแสดงข้อมูลล่ะครับ ผมทำแบบนี้
Code (PHP)
$text=ucwords(strtolower($row['all_field']));
$text=str_replace("'","'",$text);
$display=preg_replace("/(".$q.")/i","<b>$1</b>",$text);
echo "<li onselect=\"this.setText('$display').setValue('$display');\">$display</li>";
}
ปรากฏว่า ไม่แสดงข้อความใดๆ ทั้งสิ้นครับ - -"
ด้วยความสัตย์จริง
รบกวนคุณ peterXP อีกสักครั้งครับ (หรือจะท่านอื่นๆ ก็ได้ครับ) T_T
ปล. ร่ำรวยไปแล้วใช่ไหมครับ คุณ peterXP ฮ่าๆ
|
 |
 |
 |
 |
Date :
2010-06-30 20:57:58 |
By :
yomaster |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ผมว่า php น่าจะถูกแล้ว
เหลือแต่ พวก preg_replace พวกนี้ครับ
Code (PHP)
$text=ucwords(strtolower($row['all_field']));
$text=str_replace("'","'",$text);
$display=preg_replace("/(".$q.")/i","<b>$1</b>",$text);
echo "<li onselect=\"this.setText('$display').setValue('$display');\">$display</li>";
}
น่าจะติดเครื่องหมายไรสักอยากใน text $display ผมเดาเอานะ
ลอง echo ทีส่วนๆ ดูสิครับ ใช้ firebug ช่วยหาก็ดีนะครับ
ปัญหาที่อาจตามมา ตอน submit
-ถ้าค้นหาแบบหลายคำ ต้อง ต่อ string ยังไงให้ query ออกมาได้ /search.php?val1=x&va2=y&var3=z
พี่ๆท่านอื่น ช่วยหน่อยครับ
|
 |
 |
 |
 |
Date :
2010-07-01 11:13:34 |
By :
peterxp |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
น่าจะช่วยได้
http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/
|
 |
 |
 |
 |
Date :
2010-07-02 10:13:30 |
By :
peterxp |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบพระคุณมากๆ ครับ ^-^
|
 |
 |
 |
 |
Date :
2010-07-05 08:10:01 |
By :
yomaster |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
พี่ๆค่ะ แล้วถ้า ต้องการให้ autocomplete แสดงผลจากสองฟิลด์ แต่ฟิลด์หนึ่งเป็นภาษาไทย อีกฟิลด์เป็นภาษาอังกฤษ
ประมาณว่า จะให้ค้นหาคำศัพท์ แล้วให้ suggest แสดงผลตามที่ค้นหา
ตอนนี้ทำให้ข้อมูลโชว์ ได้แล้ว แต่ได้แต่ภาษาเดียว รบกวนด้วยน่ะค่ะ
|
 |
 |
 |
 |
Date :
2011-06-21 13:54:27 |
By :
nickname |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|