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,038

HOME > PHP > PHP Forum > ขอคำแนะนำเรื่อง Code การค้นหาข้อมูล ที่มีการรับค่าจากฟอร์มมาหลายค่า ทำให้มีเงื่อนไขเยอะมาก. . .อยากให้โค้ดสั้นลง



 

ขอคำแนะนำเรื่อง Code การค้นหาข้อมูล ที่มีการรับค่าจากฟอร์มมาหลายค่า ทำให้มีเงื่อนไขเยอะมาก. . .อยากให้โค้ดสั้นลง

 



Topic : 047418



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



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



อันนี้ Form
Form

Code
if($type==0 && $province==0 && $keyword==""){
$query = mysql_query("SELECT * FROM company WHERE showStat=1 ORDER BY dateShow DESC");
}
else
if($type!=0 && $province==0 && $keyword==""){
$query = mysql_query("SELECT * FROM company WHERE idType=$type AND showStat=1 ORDER BY dateShow DESC");
}
else
if($type==0 && $province!=0 && $keyword==""){
$query = mysql_query("SELECT * FROM company WHERE provinceID=$province AND showStat=1 ORDER BY dateShow DESC");
}
else
if($type==0 && $province==0 && $keyword!=""){
$query = mysql_query("SELECT * FROM company WHERE nameComp LIKE'%$keyword%' OR positionW LIKE'%$keyword%' AND showStat=1 ORDER BY dateShow DESC");
}
else
if($type!=0 && $province!=0 && $keyword==""){
$query = mysql_query("SELECT * FROM company WHERE idType=$type AND provinceID=$province AND showStat=1 ORDER BY dateShow DESC");
}
else
if($type!=0 && $province==0 && $keyword!=""){
$query = mysql_query("SELECT * FROM company WHERE idType=$type AND nameComp LIKE'%$keyword%' OR positionW LIKE'%$keyword%' AND showStat=1 ORDER BY dateShow DESC");
}
else
if($type==0 && $province!=0 && $keyword!=""){
$query = mysql_query("SELECT * FROM company WHERE provinceID=$province AND nameComp LIKE'%$keyword%' OR positionW LIKE'%$keyword%' AND showStat=1 ORDER BY dateShow DESC");
}
else{
$query = mysql_query("SELECT * FROM company WHERE provinceID=$province AND idType=$type AND nameComp LIKE'%$keyword%' OR positionW LIKE'%$keyword%' AND showStat=1 ORDER BY dateShow DESC");
}


ปัญหาจริงๆ แล้วคือ Code มันยาวมากอะครับ
คืออยากรู้ว่าพอจะมีวิธีที่จะเขียน Code สั้นกว่านี้ไหมอะครับ

ขอบคุณล่วงหน้าครับ



Tag : PHP, MySQL







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-08-21 00:35:29 By : ganginwpop View : 1444 Reply : 13
 

 

No. 1



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



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


ผมว่าน่าจะเปลี่ยนจาก แอนด์ เป็น ออร์ นะ && -> ||

ช่วยลดบรรทัดได้

Code (PHP)
if($type!=0 || $province!=0 || $keyword!=""){
$query = mysql_query("SELECT * FROM company WHERE provinceID=$province AND nameComp LIKE'%$keyword%' OR positionW LIKE'%$keyword%' AND showStat=1 ORDER BY dateShow DESC");
}
else{
$query = mysql_query("SELECT * FROM company WHERE provinceID=$province AND idType=$type AND nameComp LIKE'%$keyword%' OR positionW LIKE'%$keyword%' AND showStat=1 ORDER BY dateShow DESC");
}









ประวัติการแก้ไข
2010-08-21 00:49:16
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-08-21 00:47:42 By : 50121680
 


 

No. 2



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



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

ผลลัพธ์ ยังไม่ค่อยตรงแหะ

เดียวยังไงผมลองดูเรื่อยๆ ก่อนครับ

ขอบคุณมากครับ


ประวัติการแก้ไข
2010-08-21 00:56:07
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-08-21 00:55:13 By : ganginwpop
 

 

No. 3



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

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

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

เขียนเป็น function เอาครับ

ต.ย.

Code (PHP)
function select($table,$condition)
{
$sql = "select * from $table $condition";
$dbquery = mysql_query($sql);
$result= mysql_fetch_array($dbquery);
return $result;
}

เวลาเรียกใช็ก็

$rs=select("table_name","เงื่อนไข");
//แสดงผล
$rs[ฟิลด์1];
$rs[ฟิลด์2];
$rs[ฟิลด์3];
................
แล้วอีกอย่างตอน post ไปค้นหา ลองใช้ . เชื่อมต่อเงื่อนไขที่ post มาดูครับ เพราะหากมันอยู่ใน "...."มันก็เป็นรูปของ string ธรรมดา
 

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-08-21 00:56:00 By : Manussawin
 


 

No. 4



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



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


หรือแบบนี้ครับ แต่ลดน้อยลงนิดๆ

Code (PHP)
if ($type==0){
 if ($province==0){
  if ($keyword==""){
   $query = mysql_query("SELECT * FROM company WHERE showStat=1 ORDER BY dateShow DESC"); 
   }else{
   $query = mysql_query("SELECT * FROM company WHERE idType=$type AND showStat=1 ORDER BY dateShow DESC");
   }
 }else{
...
 }
}else{
...
}

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-08-21 01:00:25 By : 50121680
 


 

No. 5



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



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

ขอบคุณทั้ง 2 ท่านมากครับ

วิธีของคุณ emboy น่าสนใจทำใช้ได้ดี

แต่ยังไงก็ต้องใช้เงื่อนไข if จำนวนมหาศาลอยู่ดีใช่ไหมครับ
นี่ขนาดแค่ มี input แค่ 3 ตัว เอิ้กๆ

แล้วพอจะมีวิธีเขียนโค้ด แบบอื่นอีกไหมอะครับ

เพราะเท่าที่ผมคิดออกมันเป็นแนว เถือก!! เอา ไม่ค่อยน่าใช้เท่าไร >..<


ประวัติการแก้ไข
2010-08-21 01:11:09
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-08-21 01:04:03 By : ganginwpop
 


 

No. 6



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



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


เอาอย่างงี้ครับ
สมมติว่า ตัวเลือกที่เป็น ทุกประเภท ทุกจังหวัด ให้ไม่มีค่า (ว่าง)

แล้วให้ type มีค่าเป็น idType=001,idType=002 อะไรก็ว่าไปเรียงตามของคุณ

แล้วจังหวัดก้ประมาณนี้
provinceID=กรุงเทพ,provinceID=ยะลา ว่าไป

แล้วเวลาใช้ sql ก็ประมาณ SELECT * FROM company WHERE $_REQUEST[type] $_REQUEST[province] showStat=1 ORDER BY dateShow DESC
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-08-21 01:15:43 By : 50121680
 


 

No. 7



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



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

หลังจากนำเอาองค์ึความรู้ที่ได้รับ จากทั้ง 2 ท่านไปลองทำ . . . ได้ผลลัพธ์ หุหุึ

Code (PHP)
function select($table,$condition)
	{
		$sql = "select * from $table $condition showStat=1 ORDER BY dateShow DESC";
		$q = mysql_query($sql);
		return $q;
	}
function result(){
	$type = "idType=".$_POST['sType'];
	$province = "provinceID=".$_POST['sPro'];
	$keyword = "(nameComp LIKE'%".$_POST['sText']."%' OR positionW LIKE'%".$_POST['sText']."%')";
	if ($_POST['sType']==0){
		if ($_POST['sPro']==0){
			if ($_POST['sText']=="")
				$query = select("company","WHERE");
			else
				$query = select("company","WHERE $keyword AND");
		}
		else{
			if ($_POST['sText']!="")
				$query = select("company","WHERE $province AND $keyword AND");
			else
				$query = select("company","WHERE $province AND");
		}
	}
	else{
		if ($_POST['sPro']!=0){
			if ($_POST['sText']=="")
				$query = select("company","WHERE $type AND $province AND");
			else
				$query = select("company","WHERE $type AND $province AND $keyword AND");
		}
		else{
			if ($_POST['sText']!="")
				$query = select("company","WHERE $type AND $keyword AND");
			else
				$query = select("company","WHERE $type AND");
		}
}			 


ถือว่า น่าพอใจครับ . . . แต่ อันนี้แค่ input 3 ตัว ถ้า input เพิ่มเข้ามาอีก โอ้ววว ไม่อยากจะคิด

ยังไงก็ขอบคุณทุกท่านนะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-08-21 01:40:45 By : ganginwpop
 


 

No. 8



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

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

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

เจริญพร นะโยมนะ เอิกๆ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-08-21 01:46:16 By : Manussawin
 


 

No. 9



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



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

แต่มันน่าจะมีวิธีที่ดีกว่านี้นา ^^
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-08-21 01:57:17 By : ganginwpop
 


 

No. 10



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

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

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

Code (PHP)
<?
$strSQL = "SELECT * FROM table WHERE 1 ";

if($_POST["con1"] != "")
{
 $strSQL .= " (AND CON1 = '".$_POST["con1"]."') "
}

if($_POST["con2"] != "")
{
 $strSQL .= " (AND CON2 = '".$_POST["con2"]."') "
}
?>


เป็นตังอย่างการใส่เงื่อนไขน่ะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-08-21 07:21:00 By : webmaster
 


 

No. 11



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

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

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

พี่วิน นี่เจ้าสาวสวยจังเลยครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-08-21 12:48:22 By : Manussawin
 


 

No. 12



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



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

ตอบความคิดเห็นที่ : 10 เขียนโดย : webmaster เมื่อวันที่ 2010-08-21 07:21:00
Code (PHP)
<?
$strSQL = "SELECT * FROM table WHERE 1 ";

if($_POST["con1"] != "")
{
 $strSQL .= " (AND CON1 = '".$_POST["con1"]."') "
}

if($_POST["con2"] != "")
{
 $strSQL .= " (AND CON2 = '".$_POST["con2"]."') "
}
?>


เป็นตังอย่างการใส่เงื่อนไขน่ะครับ


เขียนแบบนี้ก็ได้แหะ

โลกนี้ช่างกว้างใหญ่นัก . . . ยอดฝีมือมีทั่วทั้งยุทธจักรมีเยอะเหลือเกิน ฮ่าๆ

ขอบคุณมากครับ


ประวัติการแก้ไข
2010-08-22 02:42:27
2010-08-22 02:43:14
2010-08-24 08:49:44
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-08-22 02:37:46 By : ganginwpop
 


 

No. 13



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



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

ได้ละครับ >..<


ประวัติการแก้ไข
2010-08-24 17:41:18
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-08-24 08:49:26 By : ganginwpop
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ขอคำแนะนำเรื่อง Code การค้นหาข้อมูล ที่มีการรับค่าจากฟอร์มมาหลายค่า ทำให้มีเงื่อนไขเยอะมาก. . .อยากให้โค้ดสั้นลง
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 05
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2025 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่