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 > สอบถามวิธีทำปุ่มค้นหาในเว็บบอร์ดโดยที่ค้นหาทั้งชื่อ+เนื้อความกระทู้และโพสต์ที่มาตอบนะครับ



 

สอบถามวิธีทำปุ่มค้นหาในเว็บบอร์ดโดยที่ค้นหาทั้งชื่อ+เนื้อความกระทู้และโพสต์ที่มาตอบนะครับ

 



Topic : 136820



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



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




เนื่องด้วยผมได้นำ ตัวอย่างการสร้าง Webboard ด้วย PHP + MySQLi และ Bootstrap.html ไปใช้งานเป็นที่เรียบร้อยแล้วครับ

ทีนี้อยากสอบถามว่าถ้าจะเพิ่มกล่อง+ปุ่มค้นหาต้องไปแก้ที่ไฟล์ไหนอย่างไรโดยให้สามารถค้นจากทั้งตาราง topic-title , topic-description และตาราง comment-description ด้วยนะครับ

หน้าเว็บบอร์ด

ลิ้งเทเบิ้ล



Tag : PHP, MySQL







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2022-09-20 13:30:36 By : minimono View : 417 Reply : 18
 

 

No. 1



โพสกระทู้ ( 1,994 )
บทความ ( 10 )



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

แบบฟอร์มแก้ที่

inc/index.inc.php


ส่วนของ Query แก้ไขที่

index.php






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-09-20 14:54:11 By : {Cyberman}
 


 
แก้ที่ไฟล์ template ไฟล์ไหนก็ได้แล้วแต่ชอบให้แสดงตรงส่วนไหนของ page (แม้แต่สร้างไฟล์ใหม่ขึ้นมายังได้)
แนะนำแก้ที่ inc/main.inc.php เพราะเป็น templete หลัก
ส่วนฝั่ง server จะเขียนรับแบบ post หรือ ajax ก็ตามสะดวก
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-09-20 14:57:38 By : 009
 

 

No. 3



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



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


เอาปุ่มค้นหาไปใส่ใน inc/index.inc.php เรียบร้อยครับ แล้วต้องแก้Query

Code (PHP)
<?php
	ini_set('display_errors', 1);
	error_reporting(~0);

	$strKeyword = null;

	if(isset($_POST["txtKeyword"]))
	{
		$strKeyword = $_POST["txtKeyword"];
	}
	if(isset($_GET["txtKeyword"]))
	{
		$strKeyword = $_GET["txtKeyword"];
	}
?>
<form name="frmSearch" method="post" action="<?php echo $_SERVER['SCRIPT_NAME'];?>">
  <table border="1" align="center" style="width: 99%; max-width: 600px;">
    <tr style="text-align: center;">
      <th>ค้นหาภายใน
        <input name="txtKeyword" type="text" id="txtKeyword" style="width: 300px;" value="<?php echo $strKeyword;?>">
      <input type="submit" value="Search">
        </th>
      </tr>
  </table>
</form>



แล้วต้องแก้ Query ใน index.php ให้เป็นยังไงครับ

Code (PHP)
<?php


require 'inc/mysqli.inc.php';

$PAGE = empty($_GET['page'])
  ? 1
  : (int)$_GET['page'];

$ITEMS_PER_PAGE = 50;
$Max_PAGE = 9;

$START_OFFSET = ($PAGE - 1) * $ITEMS_PER_PAGE;

$result = $mysqli->query(
  "
  SELECT
    `id`,
    `title`,
    `created`,
    `name`,
    `num_views`,
    `num_comments`,
    `last_commented`
  FROM `topic`
  ORDER BY `last_commented` DESC
  LIMIT {$START_OFFSET}, {$ITEMS_PER_PAGE}
  "
);

$ITEMS = array();
while ($item = $result->fetch_assoc()) {
  $ITEMS[] = $item;
}
$result->free();

$result = $mysqli->query('SELECT COUNT(*) FROM `topic`');
$FOUND_ROWS = current($result->fetch_row());
$result->free();

$NUM_PAGES = ceil($FOUND_ROWS / $ITEMS_PER_PAGE);
$PAGE_TEMPLATE = 'inc/index.inc.php';

require 'inc/main.inc.php';



ประวัติการแก้ไข
2022-09-20 16:21:26
2022-09-20 16:21:31
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-09-20 16:18:42 By : minimono
 


 

No. 4



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



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


ตอบความคิดเห็นที่ : 1 เขียนโดย : {Cyberman} เมื่อวันที่ 2022-09-20 14:54:11
รายละเอียดของการตอบ ::
... ใส่ความคิดเห็นตรงนี้.......


ลองแก้ $mysqli->query ไฟล์ index.php หน้าเว็บขึ้น
Notice: Undefined index: txtKeyword in C:\xampp\htdocs\XTi02\index.php on line 17
Code (PHP)
<?php


require 'inc/mysqli.inc.php';

$PAGE = empty($_GET['page'])
  ? 1
  : (int)$_GET['page'];

$ITEMS_PER_PAGE = 50;
$Max_PAGE = 9;

$START_OFFSET = ($PAGE - 1) * $ITEMS_PER_PAGE;

$result = $mysqli->query(
  "
  SELECT * FROM `topic` WHERE title LIKE '%".$_GET["txtKeyword"]."%'
  ORDER BY `last_commented` DESC
  LIMIT {$START_OFFSET}, {$ITEMS_PER_PAGE}
  "
);

$ITEMS = array();
while ($item = $result->fetch_assoc()) {
  $ITEMS[] = $item;
}
$result->free();

$result = $mysqli->query('SELECT COUNT(*) FROM `topic`');
$FOUND_ROWS = current($result->fetch_row());
$result->free();

$NUM_PAGES = ceil($FOUND_ROWS / $ITEMS_PER_PAGE);
$PAGE_TEMPLATE = 'inc/index.inc.php';

require 'inc/main.inc.php';


มือใหม่มาแก้เว็บขอคำแนะนำด้วยครับ


ประวัติการแก้ไข
2022-09-20 17:48:50
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-09-20 17:46:31 By : minimono
 


 
คุณใช้ $_SERVER['SCRIPT_NAME'] ใน form action ก็ต้องทำ server-side ที่ไฟล์เดิม

ลองอ่านรายลพเอียดของ $_SERVER (เลื่อนดูตรง SCRIPT_NAME)
https://www.php.net/manual/en/reserved.variables.server.php



แนะนำศึกษาพื้นฐานก่อน ดู Form Handling
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-09-20 17:50:26 By : 009
 


 

No. 6



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



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


ตอบความคิดเห็นที่ : 5 เขียนโดย : 009 เมื่อวันที่ 2022-09-20 17:50:26
รายละเอียดของการตอบ ::
ผมทำกล่องค้นหาไม่เป็นเลยจึงไปก็อบจากที่อื่นมาทดลองขออภัยด้วยครับ


ดังนั้นขอกลับไปที่คำถามตั้งต้นคือทำปุ่มค้นหายังไงให้ค้นจากทั้งตาราง topic-title , topic-description และตาราง comment-description ครับ

ปล. เพื่อใครไม่อยากทำไฟล์ทั้งหมด thaicreate.com สามารถวางลิ้งไฟล์ที่ผมทำใว้ก่อนแล้วได้หรือไม่ครับ
ปล.2 กำลังหาฟรีโฮสใว้ให้ท่านๆเข้าไปแก้ไขกันได้เลย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-09-20 19:09:21 By : minimono
 


 

No. 7



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



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


http://webboard.epizy.com/01/
http://webboard.epizy.com/02/
http://webboard.epizy.com/03/

FTP hostname: ftpupload.net
FTP username: epiz_32629631
FTP pass: XnZD4i3dOrTj13
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-09-21 10:58:10 By : minimono
 


 
ตอบความคิดเห็นที่ : 6 เขียนโดย : minimono เมื่อวันที่ 2022-09-20 19:09:21
รายละเอียดของการตอบ ::
ผมมีคำถาม
1. จุดประสงค์หลักในการนำไปใช้งาน เช่น ศึกษา programming, project จบ ฯลฯ ?
2. สิ่งคาดหวังสูงสุดจากการตั้งคำถามนี้คืออะไร?

Quote:
จบจ้าง รู้ค้น
1. ถ้าอยากทำให้จบๆ เสร็จๆ ไป แนะนำให้จ้าง เพราะคำถามนี้น้อยคนที่เป็นเทพ(Dev)
จะมีเวลาหรือยอมสละเวลางานของตัวเองมาทำให้ เว้นแต่เทพที่ทำหรือสนใจเรื่องนี้อยู่แล้ว
แต่ก็คงต้องรอนาน
(เรตปกติแก้บักจุดละ 500 เพื่มฟังก์ชันการทำงานจุดละ 1,500-3,000)

2. ถ้าอยากเรียนรู้ หาความรู้ให้ตนเอง ควรเริ่มต้นศึกษาตั้งแต่พื้นฐานก่อน เพราะ
programming คือวิธีคิด ไม่สามารถคัดลอกได้ และสอนกันตรงๆ ไม่ได้
แต่จะเป็นทักษะที่ได้มาจากการฝึกฝนเป็นประจำและเกิดจากการทำความเข้าใจของผู้เรียนเอง
คนอื่นทำได้แค่ให้คำแนะนำ
(ที่บอกว่าคัดลอกมานั้นคนที่เป็น Dev ส่วนใหญ่ดูก็รู้อยู่แล้ว)


3. ค้นหาข้อมูลเองด้วยภาษาอังกฤษเป็นหรือไม่
ถ้าเป็นก็เริ่มลงมือเลย
แต่ถ้า ไม่ ใช้พวก google translate ช่วยแปลคำอธิบาย (ห้ามแปลคำสั่ง)


ส่วนอันนี้ผมช่วยคนอื่นถาม

ตอบความคิดเห็นที่ : 7 เขียนโดย : minimono เมื่อวันที่ 2022-09-21 10:58:10
รายละเอียดของการตอบ ::
ทั้ง 3 ลิงค์ ต่างกันอย่างไร





คำแนะนำเพิ่มเติม
1. ศึกษา HTML/JS/CSS (https://www.w3schools.com)
2. ศึกษา PHP จากเว็บข้อ 1 หรือที่ ThaiCreate(https://www.thaicreate.com/php.html)
และเช็ค syntax ที่ https://www.php.net
3. ศึกษา MySQL ตามเว็บข้อ 1 และศึกษา mysqli (https://www.thaicreate.com/php/php-mysql-mysqli.html) และตามเว็บข้อ 2
4. ศึกษาวิธีใช้คำค้น ในการค้นหาจาก search engine ถ้าหัวข้อใดตำราไทยมีน้อยหรือหาไม่เจอ ลองเปลี่ยนไปค้นด้วยภาษาอังกฤษ
5. ศึกษาเพิ่มเติมจาก youtube ทั้งไทยและเทศ ถ้าของต่างชาติอย่าไปกลัวว่าจะไม่รู้เรื่อง ทีแรกแค่ทำตามภาพให้ได้ผลลัพธ์ตามที่เขาสอน ส่วนใดไม่เข้าใจค่อยนำมาโพสต์ถาม

อย่า พยายามถามคำถามที่สั้นไม่ได้ใจความโดยไม่บอกเล่าที่มาที่ไปของโค้ด และพยายามหลีกเลี่ยงคำถามที่เยอะเกินไป ในลักษณะโยนงานให้คนอื่นทำโดยที่ตัวเองยังไม่ได้ใช้ความพยายามจนถึงที่สุด ไม่งั้นจะหาคนช่วยตอบยาก เพราะเว็บนี้จะเน้นการถามตอบเชิง programming เป็นหลัก...นานๆ ครั้งจะมีคนอุทิศตนมาทำแจก
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-09-21 15:39:28 By : 009
 


 

No. 9



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



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


ขอเล่าที่มาก่อนว่าผมอายุ39 จบปวช.อิเล็ค ทำงานลูกน้องร้านซ่อมเงินเดือน 8,000
อาจารย์เจ้าของเว็บบอร์ดแห่งหนึ่งท่านไปบวชเป็นพระสายธุดงค์ผมนับถือจึงรับมาช่วยดูแลโดยเพียงแค่เสียค่าเช่าโฮส+โดเมน ต้นฉบับเดิมใช้ ASP.net + mdb(microsoft access database) , MS SQL จึงเช่าโฮสที่เป็นวินโดว์เซิฟเวอร์แล้วเมื่อสิงหาคม 2565 ที่ผ่านมา siamwebhost และบริษัทในเครือทั้งหมดโดน Ransomware ทำให้ข้อมูลหายและไม่สามารถกู้กลับมาได้เลย ผมจึงคิดที่จะเปลี่ยนให้มัน้เป็น PHP + MySQL ทั้งหมด เพื่อที่ว่าจะได้ใช้โฮสที่เป็นลีนุกซ์ได้(หาเช่าได้ง่าย,ราคาถูกลงและคิดว่าโอกาสล่มอีกคงน้อยกว่า)
คำตอบ
1. จุดประสงค์หลักในการนำไปใช้งานคือแก้หน้าเว็บบอร์ดตามที่เล่าไปด้านบน
2. สิ่งคาดหวังสูงสุดจากการตั้งคำถามนี้คือให้มีปุ่มค้นหา(ทั้ง2เทเบิ้ล)แล้วแสดงผลในหน้าของตัวเอง
- ตอนนี้ได้ลองทำหน้าค้นหาแยกออกมาต่างหากโดยใช้วิธีจาก https://www.thaicreate.com/php/php-mysql-mysqli-search-paging.html // *ค้นหาได้เพียงเทเบิ้ลเดียวเลยยังไม่ได้ทำการจัดรูปแบบให้หน้าตามันเหมือนกันเพื่อเอาไปใช้งานจริง
3. พยายามใช้ google ค้นหาวิธีจากที่ต่างๆ เช่น https://www.mysqltutorial.org/mysql-inner-join.aspx ทำให้รู้แนวทางทำ INNER JOIN แต่มันแสดงแค่กระทู้ที่มีคนตอบและไม่ค้นหากระทู้ที่ไม่มีคนตอบ description is null
Code (PHP)
   $conn = mysqli_connect($serverName,$userName,$userPassword,$dbName);

	$sql = "SELECT * FROM chaiya_answer as T1 INNER JOIN chaiya_question as T2 ON T1.topic_id = T2.id
	WHERE T2.title LIKE '%".$strKeyword."%' OR T1.description LIKE '%".$strKeyword."%' OR T2.description LIKE '%".$strKeyword."%' GROUP BY T1.topic_id ";
	$query = mysqli_query($conn,$sql);

	$num_rows = mysqli_num_rows($query);



ส่วนทั้ง 3 ลิงค์ข้อมูลเหมือนกันหมดผมเอาไปใส่ใว้เพื่อใครแก้ชุดไหนยังมีอีกชุด
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-09-21 16:34:30 By : minimono
 


 
ตอบความคิดเห็นที่ : 9 เขียนโดย : minimono เมื่อวันที่ 2022-09-21 16:34:30
รายละเอียดของการตอบ ::
สำหรับ PHP ผมแนะนำ board/forum สำเร็จรูป สองตัวนี้ยัง active อยู่
https://www.simplemachines.org/
https://www.phpbb.com/



ลองดูครับ ไม่ได้แย่อย่างที่คิด (จริงๆ ต้องบอกว่า พัฒนามานานจนดีเยี่ยมเลยแหละ)

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-09-21 18:41:36 By : 009
 


 

No. 11



โพสกระทู้ ( 9,556 )
บทความ ( 2 )



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


ตอบความคิดเห็นที่ : 9 เขียนโดย : minimono เมื่อวันที่ 2022-09-21 16:34:30
รายละเอียดของการตอบ ::
ขอทราบเหตุผลในการใช้ group by ครับ


มันจะตัดเรคคอร์ด ที่เหมือนกันออก ก็ตรวจสอบดีว่า ใช้ไปเพื่ออะไร
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-09-21 18:52:09 By : Chaidhanan
 


 

No. 12



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



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


ตอบความคิดเห็นที่ : 10 เขียนโดย : 009 เมื่อวันที่ 2022-09-21 18:41:36
รายละเอียดของการตอบ ::
บอร์ดใหม่ผมใช้ SMF แล้วครับแต่อย่างที่กล่าวนำไปว่าเดิมใช้ ASP.net + mdb(microsoft access database) , MS SQL รวมกันมี 7000-8000 กระทู้จึงอยากเอาออกมาใว้ให้หาอ่านกัน





ตอบความคิดเห็นที่ : 11 เขียนโดย : Chaidhanan เมื่อวันที่ 2022-09-21 18:52:09
รายละเอียดของการตอบ ::
ตอนแรกไม่ใส่มันเกิดรายการซ้ำๆตามจำนวนคนตอบงงอยู่นานว่าเพราะอะไรเห็นผ่านตาว่ามี group by ... ต่อท้ายจึงเอามาลองใส่ดู=ตัดรายการที่ซ้ำออก=ดีใจ


ที่ยังติดตอนนี้คือมันแสดงแค่กระทู้ที่มีคนตอบ และไม่ค้นหากระทู้ที่ไม่มีคนตอบ และมันเป็นไฟล์หน้าเพจใหม่(ก็ไม่ติดอะไรหลอกแค่ไปหาวิธีให้เวลากดค้นหามันเปิดหน้าใหม่มาที่หน้านี้แล้วก็จัดหน้าเพจให้มันเหมือนกัน 5555)
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-09-21 19:43:58 By : minimono
 


 

No. 13



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



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


เคยลองใช้ RIGHT JOIN , LEFT JOIN = แสดงทุกกระทู้แม้คนตอบ 0 หรือ chaiya_answer.description NULL
แต่
- ใช้เวลาในการประมวลผลนานมากกว่าจะแสดงรายการออกมา
- ใช้คำสั่งค้นหาไม่ได้

Code (PHP)
	$sql = "SELECT * FROM chaiya_answer as T1 RIGHT JOIN chaiya_question as T2 ON T1.topic_id = T2.id
	WHERE T2.title LIKE '%".$strKeyword."%' OR T1.description LIKE '%".$strKeyword."%' OR T2.description LIKE '%".$strKeyword."%' GROUP BY T2.id ";

	$sql = "SELECT T1.id,title, T1.created,num_views,num_comments,last_commented FROM chaiya_question AS T1 LEFT JOIN chaiya_answer AS T2 ON T1.id = T2.topic_id
	WHERE T1.title LIKE '%".$strKeyword."%' OR T1.description LIKE '%".$strKeyword."%' OR T2.description LIKE '%".$strKeyword."%' GROUP BY T1.id ";


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-09-21 19:59:36 By : minimono
 


 

No. 14



โพสกระทู้ ( 9,556 )
บทความ ( 2 )



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


GROUP BY T1.topic_id


GROUP BY T2.topic_id



t1 มันเป็น detail
t2 tป็น topic หลัก
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-09-21 20:16:44 By : Chaidhanan
 


 

No. 15



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



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


พึ่งนึกแนวทางที่2ออก
นั่นคือในเรื่องของการทำปุ่มให้ค้นหาได้2ตารางโดยการใช้ INNER JOIN สามารถทำงานได้ดีแต่มันแสดงแค่กระทู้ที่มีคนตอบและไม่ค้นหากระทู้ที่ไม่มีคนตอบ **งั้นก็ไปทำให้มีคนตอบทุกกระทู้ซะซิ // ส่วนว่าจะตกแต่งหน้าตาหรือจับเอาไปรวมกันได้ค่อยว่าทีหลัง

Search2Table.php
Code (PHP)
<html>
<head>
<title>ThaiCreate.Com PHP & MySQL (mysqli)</title>
</head>
<body>
<?php
	ini_set('display_errors', 1);
	error_reporting(~0);

	$strKeyword = null;

	if(isset($_POST["txtKeyword"]))
	{
		$strKeyword = $_POST["txtKeyword"];
	}
	if(isset($_GET["txtKeyword"]))
	{
		$strKeyword = $_GET["txtKeyword"];
	}
?>
<form name="frmSearch" method="post" action="<?php echo $_SERVER['SCRIPT_NAME'];?>">
  <table width="599" border="1">
    <tr>
      <th>Keyword
      <input name="txtKeyword" type="text" id="txtKeyword" value="<?php echo $strKeyword;?>">
      <input type="submit" value="Search"></th>
    </tr>
  </table>
</form>
<?php
   $serverName = "localhost";
   $userName = "root";
   $userPassword = "";
   $dbName = "supap_php";

   $conn = mysqli_connect($serverName,$userName,$userPassword,$dbName);

	$sql = "SELECT T1.id,title, T1.created,num_views,num_comments,last_commented FROM chaiya_question AS T1 INNER JOIN chaiya_answer AS T2 ON T1.id = T2.topic_id
	WHERE (T1.title LIKE '%".$strKeyword."%' OR T1.description LIKE '%".$strKeyword."%' OR T2.description LIKE '%".$strKeyword."%') GROUP BY T1.id ";

	$query = mysqli_query($conn,$sql);

	$num_rows = mysqli_num_rows($query);

	$per_page = 50;   // Per Page
	$page  = 1;
	
	if(isset($_GET["Page"]))
	{
		$page = $_GET["Page"];
	}

	$prev_page = $page-1;
	$next_page = $page+1;

	$row_start = (($per_page*$page)-$per_page);
	if($num_rows<=$per_page)
	{
		$num_pages =1;
	}
	else if(($num_rows % $per_page)==0)
	{
		$num_pages =($num_rows/$per_page) ;
	}
	else
	{
		$num_pages =($num_rows/$per_page)+1;
		$num_pages = (int)$num_pages;
	}
	$row_end = $per_page * $page;
	if($row_end > $num_rows)
	{
		$row_end = $num_rows;
	}

	$sql .= " ORDER BY T1.last_commented DESC LIMIT $row_start ,$per_page ";
	$query = mysqli_query($conn,$sql);

?>
<table width="1200" border="1">
  <tr>
    <th width="91"> <div align="center">หมายเลข </div></th>
    <th width="600"> <div align="center">หัวข้อ </div></th>
    <th width="190"> <div align="center">โพสต์เมื่อ </div></th>
    <th width="50"> <div align="center">ดู </div></th>
    <th width="50"> <div align="center">ตอบ </div></th>
    <th width="190"> <div align="center">โพสต์ล่าสุด </div></th>
  </tr>
<?php
while($result=mysqli_fetch_array($query,MYSQLI_ASSOC))
{
?>
  <tr>
    <td><div align="center"><?php echo $result["id"];;?></div></td>
    <td><?php echo $result["title"];?></td>
    <td><?php echo $result["created"];?></td>
    <td><div align="center"><?php echo $result["num_views"];?></div></td>
    <td align="center"><?php echo $result["num_comments"];?></td>
    <td align="right"><?php echo $result["last_commented"];?></td>
  </tr>
<?php
}
?>
</table>
<br>
Total <?php echo $num_rows;?> Record : <?php echo $num_pages;?> Page :
<?php
if($prev_page)
{
	echo " <a href='$_SERVER[SCRIPT_NAME]?Page=$prev_page&txtKeyword=$strKeyword'><< Back</a> ";
}

for($i=1; $i<=$num_pages; $i++){
	if($i != $page)
	{
		echo "[ <a href='$_SERVER[SCRIPT_NAME]?Page=$i&txtKeyword=$strKeyword'>$i</a> ]";
	}
	else
	{
		echo "<b> $i </b>";
	}
}
if($page!=$num_pages)
{
	echo " <a href ='$_SERVER[SCRIPT_NAME]?Page=$next_page&txtKeyword=$strKeyword'>Next>></a> ";
}
$conn = null;
?>
</body>
</html>

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-09-22 09:42:26 By : minimono
 


 

No. 16



โพสกระทู้ ( 9,556 )
บทความ ( 2 )



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


การค้นหาโดยที่ไม่มีคนตอบ คือการค้นหาจาก topic(หัวข้อ) และ เนื้อหาของคำถาม ก็มีประโยชน์
แต่อยากให้แสดง ทั้งสองรายการ ต้อง group by จาก primary table ไม่ใช่ค้นหาจาก answer table

การ group by จาก table answer ถ้าไม่มีคนตอบ แล้วมันจะเอา อะไรมาแสดง
การ group by จาก table question คือไม่สนใจว่าจะมีคนตอบ หรือไม่

ที่นี้ คุณสมบัติของ mysql เมื่อทำการ group by
คือแสดงได้ทุก column โดยไม่สนใจ column ที่นำมา group by
แต่ที่นี้มันจะแสดงแค่ เรคคอร์ดที่ พบ โดยไม่ แสดง เรคคอร์ดอื่นๆ
ก็ต้องวิเคราะห์ความต้องการ ของเราวา่ต้องการแสดง อะไร

โดยการทำงานจริง เราต้องค้นหาจาก
1 ตาราง question
column topic (หัวข้อคำถาม)
column question detail (เนือหาคำถาม)
2 ตาราง answer
column answer detail (เนื้อหาคำตอบ)

เพื่อให้แสดง หัวข้อคำถาม หรือเนื้อหาคำถาม จาก ตาราง question ที่ค้นหาเจอ
และ ที่ค้นหาไม่เจอ แต่ มี คำตอบ ภายใต้คำถาม ที่ค้นหาได้
จำเป็นต้องใช้ left Join ไม่สามารถ ใช้ inner ่join ได้
เพื่อให้มีการแยก ตารางหลัก และ ตารางรอง ที่ต้องใช้ค้นหา
ถ้าใช้ inner join มันบังคับ answer table ต้องมี คำตอบ ถีง join ได้
Code (SQL)
SELECT T1.id,title, T1.created, num_views, num_comments, last_commented 
FROM chaiya_question AS T1 
left JOIN chaiya_answer AS T2 ON T1.id = T2.topic_id
WHERE  concat(T1.title,' ',T1.description, ' ', t2.description )  LIKE '%คำค้น%'
group by T1.id


ก็ลองศึกษาดูครับ อธิบายขนาดนี้แล้ว คงนำไปใช้งานได้นะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-09-22 10:26:24 By : Chaidhanan
 


 

No. 17



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



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


ผลการทดลองใช้ LEFT JOIN .....WHERE concat(T1.title,' ',T1.description, ' ', t2.description ) LIKE '%คำค้น%'
นั้นแสดงผลออกมาเหมือน INNER JOIN เพราะ t2.description มีค่าว่างไม่นำมารวม

ไปค้นพบวิธีใช้ concat_ws(T1.title,' ',T1.description, ' ', t2.description ) หรือ concat(T1.title,' ',T1.description, ' ', COALESCE(t2.description,' ') ) ทำให้แสดงผลครบหมด

แต่เมื่อสั่งค้นหาจะรอนานจนขึ้น Fatal error: Maximum execution time of 120 seconds exceeded
ไปค้นเจอกระทู้ https://www.thaicreate.com/php/forum/056392.html
แนะว่าให้ใส่ ini_set('max_execution_time', 300); //300 seconds = 5 minutes เพิ่มเข้าไป=แสดงผลการค้นหาได้แต่ต้องรอนานมาก
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-09-22 14:02:47 By : minimono
 


 

No. 18



โพสกระทู้ ( 9,556 )
บทความ ( 2 )



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


เป็นแค่ตัวอย่าง คนทำรู้ property ของแต่ละ field ก็ต้องปรับตามความเหมาะสม
concat(T1.title,' ',T1.description, ' ', coalesce(t2.description,'') )

กรณีต่างตาราง แยก คำสั่ง ก็น่าจะเร็วกว่า
Code (SQL)
SELECT T1.id,title, T1.created, num_views, num_comments, last_commented 
FROM chaiya_question AS T1 
left JOIN chaiya_answer AS T2 
     ON T1.id = T2.topic_id and t2.description LIKE '%คำค้น%'
WHERE  concat(T1.title,' ',T1.description)  LIKE '%คำค้น%' or count(T2.topic_id)>0
group by T1.id

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-09-23 10:19:14 By : Chaidhanan
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : สอบถามวิธีทำปุ่มค้นหาในเว็บบอร์ดโดยที่ค้นหาทั้งชื่อ+เนื้อความกระทู้และโพสต์ที่มาตอบนะครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 อัตราราคา คลิกที่นี่