ช่วยดูเกี่ยวกับการค้นหารายชือชื่อ ในกรณีที่ ชื่อ-นามสกุล อยู่กันคนละฟิลให้หน่อยครับ

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา ช่วยดูเกี่ยวกับการค้นหารายชือชื่อ ในกรณีที่ ชื่อ-นามสกุล อยู่กันคนละฟิลให้หน่อยครับ

ช่วยดูเกี่ยวกับการค้นหารายชือชื่อ ในกรณีที่ ชื่อ-นามสกุล อยู่กันคนละฟิลให้หน่อยครับ
จาก code ข้างต้น จะเป็นการค้นหาเเบบอย่างใด อย่างหนึ่ง ซึ่งผมอยากได้รูปแบบที่ ถ้าต้องการจะเขียนทั้ง ในส่วนของ ชื่อ-นามสกุล อยู่ในช่องเดียวกัน ต้องทำยังไงครับ
 <?php
$sqli = "SELECT * FROM customer";

if ($_GET["Search_cus"] != "") {
 $sqli .= " WHERE cus_name  like '%" . $_GET["Search_cus"] . "%' or cus_surname like '%" . $_GET["Search_cus"] . "%'";
                            }

$sqli .= " order by cus_id Asc Limit  $start,$row   ";

 $result = mysqli_query($con, $sqli);
 $totalRows_prd = mysqli_num_rows($result);
 if ($totalRows_prd > 0) {
 while ($cus = mysqli_fetch_assoc($result)) { // ให้มีการวนลูปเพื่อให้ได้ตัวเเปร $cus ขึ้นมาว่ามีข้อมูลอะไรบ้าง
                                    ?>

 <tbody align='center'>
 <tr> 
 <td> <?php echo $cus['cus_id']; ?></td>

 <td><?php echo $cus['cus_perfix']; ?>&nbsp;<?php echo $cus['cus_name']; ?>&nbsp;<?php echo $cus['cus_surname']; ?></td>

 <td><?php echo $cus['cus_email']; ?></td>

 <td><?php echo $cus['cus_number']; ?></td>

  <td><?php echo $cus['cus_address']; ?></td>

<td><?php echo $cus['cus_district']; ?></td>

 <td><?php echo $cus['cus_prefecture']; ?></td>
<td><?php echo $cus['cus_province']; ?></td>
  <td><?php echo $cus['cus_zip_code']; ?></td>

                                        </tr>
                                    </tbody>
                                    <?php
                                }
                            } else {
                                ?>
                                <h4 align='center'>
                                    <script>alert('ไม่มีรายชื่อลูกค้าที่ต้องการ');window.location = 'Manage_Cus.php';</script>;

                                </h4>
                                <?php
                            }
                            ?> 


New Love 03-04-2019 21:30:24

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1
ถ้าแนวทางคือ มีช่องค้นหาเดียว แต่ค้นได้ทั้งชื่อและนามสกุล 
เงื่อนไขที่เป็นไปได้ คือแปลงคำค้นที่ส่งมาจากช่องเดียวให้เป็น array แล้วใช้การวนลูปสร้างคำส่ัง sql
การแปลงค่าเป็น array จะต้องมีตัวแบ่ง เช่น อาจจะเป็นช่องว่าง กรณีพิมพ์และเว้นวรรค 
ถ้าพิมพ์ $a = "ดวงใจ"; กับพิมพ์ $a = "ดวง ใจ";
ใช้คำสั่ง explode(" ",$a);
แบบแรกจะได้ array เดียวคือคำว่า ดวงใจ แบบที่สองจะได้สองคำคือว่า ดวง และ ใจ
ตัวอย่าง เราสามารถรวมฟิลด์ ชื่อกับ นามสกุลเป็นข้อความเดียวโดยใช้ CONCAT() แล้ว ใช้คำสั่ง LOCATE() หาคำในข้อความที่รวมแล้ว

if(isset($_GET['Search_cus']) && $_GET['Search_cus']!=""){
	$_dataSearch = trim($_GET['Search_cus']);
	$arr_kw = explode(" ",$_dataSearch);
	if($arr_kw){
		$sqli .= " WHERE ";
		foreach($arr_kw as $k=>$v){
			$v = trim($v);
			$sqli .= "LOCATE('$v',CONCAT(cus_name,cus_surname))>0 ";
			if($k==0 && count($arr_kw)>1){
				$sqli .= " OR ";
			}
		}
	}	
}


หรือจะใช้รูปแบบเดิมก็ได้

if(isset($_GET['Search_cus']) && $_GET['Search_cus']!=""){
	$_dataSearch = trim($_GET['Search_cus']);
	$arr_kw = explode(" ",$_dataSearch);
	if($arr_kw){
		$sqli .= " WHERE ";
		foreach($arr_kw as $k=>$v){
			$v = trim($v);
			$sqli .= " cus_name LIKE '%".$v."%' OR cus_surname LIKE '%".$v."%'  ";
			if($k==0 && count($arr_kw)>1){
				$sqli .= " OR ";
			}
		}
	}	
}


ninenik 04-04-2019
 ความคิดเห็นที่ 2
ขอบคุณมากๆครับ


New Love 04-04-2019 09:47






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ