ช่วยผมดูเงื่อนไขโค๊ดแบ่งหน้าหน่อยครับผมเอาโค๊ดเขามา
ตอนแรกที่ยังไม่ได้ใส่โค๊ดแบ่งหน้า ก้แสดงผลได้ตามเงื่อนไขน่ะครับ แต่พอใสโค๊ดแบ่งหน้า เงื่อนไขผมไปไม่เป็นเลยครับ ขอความช่วยเหลือหน่อยน่ะครับ ช่วยผมดู เงื่อนไข $condition หน่อยครับ
<?
/*###########################################################################################################*/
function page_navi($page, $limit, $range, $count, $send=NULL, $current_style="navi_on", $other_style="navi_out", $target="_self"){
$output = "";
$total = ceil($count/$limit);
$navi_start = $page-$range;
$navi_end = $page+$range;
$send .= (!empty($send))? "&" : NULL;
if($navi_start <= 0) $navi_start = 1;
if($navi_end >= $total) $navi_end = $total;
if($page>1){
$navi_back = $page-1;
if($page > 2)
$output .= "<a href=\"?" . $send . "page=1\" target=\"" . $target . "\" class=\"" . $other_style . "\"><strong>«</strong></a> ";
$output .= "<a href=\"?" . $send . "page=" . $navi_back . "\" target=\"" . $target . "\" class=\"" . $other_style . "\"><strong>‹</strong></a> ";
}
for($i = $navi_start; $i <= $navi_end; $i++){
if($i == $page)
$output .= "<a href=\"?" . $send . "page=" . $i . "\" target=\"" . $target . "\" class=\"" . $current_style . "\"><strong><font color=\"" . $other_style . "\">$i</font></strong></a> ";
else
$output .= "<a href=\"?" . $send . "page=" . $i . "\" target=\"" . $target . "\" class=\"" . $other_style . "\">" . $i . "</a> ";
}
if($page < $total){
$navi_next = $page+1;
$output .= "<a href=\"?" . $send . "page=" . $navi_next . "\" target=\"" . $target . "\" class=\"" . $other_style . "\"><strong>›</strong></a> ";
if(($page+1) < $total)
$output .= "<a href=\"?" . $send . "page=" . $total . "\" target=\"" . $target . "\" class=\"" . $other_style . "\"><strong>»</strong></a>";
}
if($navi_start>$navi_end)
$output .= "<a href=\"?" . $send . "page=" . $page . "\" target=\"" . $target . "\" class=\"" . $other_style . "\"><strong>$page</strong></a> ";
return $output;
}
include 'connect.php';
mysql_query("SET NAMES UTF8");
/*mysql_connect("localhost", "root", "474230033") or die(mysql_error());
mysql_select_db("horpak") or die(mysql_error());
mysql_query("set character_set_results = utf8") or die(mysql_error());
mysql_query("set names utf8") or die(mysql_error()); */
$horpak_zone=$_REQUEST["horpak_zone"];
$type_zone=$_REQUEST["type_zone"];
$price_zone = array('','<2000','BETWEEN 2001 AND 2999','BETWEEN 3001 AND 3999','BETWEEN 4001 AND 4999','>5000');
$price = $price_zone[$_REQUEST[price_zone]];
$page = (isset($_REQUEST['page']))? intval($_REQUEST['page']) : 1;
$limit_end = 1;
$limit_start = ($page-1)*$limit_end;
$send = "";
if($horpak_zone != "" and $type_zone != "" and $price !=""){
$send = "horpak_zone=" . $horpak_zone . "&type_zone=" . $type_zone ."&price=" . $price;
$condition= " WHERE " . $horpak_zone . " LIKE '%" . $horpak_zone . "%'" AND ".$type_zone." LIKE '%" . $type_zone . "%'" OR ".$min_price $price." OR ".$max_price $price." OR ".$h_klang $price." " ;
}
print $sql = "SELECT * FROM ads". $condition;
$query_id = mysql_query($sql . " LIMIT " . $limit_start. "," . $limit_end );
$count = mysql_num_rows($query_id);
$total = mysql_num_rows(mysql_query($sql));
if($total > 0){
/*##########################################################################################################*/
/*$horpak_zone=$_POST[horpak_zone];
$type_zone=$_POST[type_zone];
$price_zone = array('','<2000','BETWEEN 2001 AND 2999','BETWEEN 3001 AND 3999','BETWEEN 4001 AND 4999','>5000');
$price = $price_zone[$_POST[price_zone]];
include 'connect.php';
mysql_query('SET NAMES UTF8');
$sql="SELECT *FROM `ads` WHERE `horpak_zone` = '$horpak_zone' AND `horpak_type` = '$type_zone' OR min_price $price OR max_price $price OR h_klang $price";
$res=mysql_db_query($dbname,$sql);
$check=mysql_num_rows($res);
if($check==0)
{
echo "<font class=\"menulink\"><center>ไม่พบข้อมูล</center>";
}
else
{*/
while($result=mysql_fetch_array($query_id))
{
$id=$result[id_ads];
$own_name=$result[own_name];
$own_tel=$result[own_tel];
$own_email=$result[own_email];
$min_price=$result[min_price];
$max_price=$result[max_price];
$horpak_name=$result[horpak_name];
$horpak_road=$result[horpak_road];
$horpak_tumboon=$result[horpak_tumboon];
$horpak_maung=$result[horpak_maung];
$horpak_zone=$result[horpak_zone];
$horpak_one=$result[horpak_one];
$province=$result[proviunce];
$univesity=$result[univesity];
$horpak_no=$reult[hopak_no];
$room_type=$result[room_type];
$horpak_type=$result[horpak_type];
$zip=$result[zip];
$air=$result[air];
$furniture=$result[furniture];
$horpak_website=$result[horpak_website];
$h_prakan=$result[h_prakan];
$h_klang=$result[h_klang];
$pic1=$result[pic1];
$internet=$result[internet];
$air=$result[air];
$furniture=$result[furniture];
$horpak_website=$result[horpak_website];
$h_prakan=$result[h_prakan];
$h_klang=$result[h_klang];
$pic1=$result[pic1];
$ubc=$result[ubc];
$tel=$result[tel];
$bath=$result[bath];
$internet=$result[internet];
$sak_pa=$result[sakpa];
$bts=$result[bts];
$mrt=$result[mrt];
$internet=$result[internet];
$status=$result[status];
if($status==1)
{
$status="1";
$status="ไม่ว่าง";
}
else
{
$status="0";
$status="<font class=menulink>ว่าง</font>";
}
?>
<br />
<table width="95%" border="0" align="center" cellpadding="5" cellspacing="2">
<tr valign="top">
ชื่อหอพัก : <font class="menumanage"><a href="show_detail_all.php?id=<?=$result[id_ads]?>"><?=$result[horpak_name]?></a> <img src="pic/new_05.gif" border="0"> <?=$status?></font><br>
ราคา: <font class="menulink"><?=$result[min_price]?>-<?=$result[max_price]?></font><br>
ประเภท: <font class="menudelete"><?=$result[horpak_type]?></font><br>
ที่อยู่: <font class="menumanage"> เลขที่<?=$result[horpak_no]?>ถนน.<?=$result[horpak_road]?> เขต.<?=$horpak_zone?> ต.<?=$result[horpak_tumboon]?> อ.<?=$result[horpak_maung]?> จ.<?=$result[province]?> <?=$result[zip]?></font><br><br>
<?
$atec="pic/air".$air.".gif";
$fur="pic/furniture".$furniture.".gif";
$ubc="pic/ubc".$ubc.".gif";
$tel="pic/tel".$tel.".gif";
$bath="pic/bath".$bath.".gif";
$internet="pic/internet".$internet.".gif";
$bts="pic/bts".$bts.".gif";
$mrt="pic/mrt".$mrt.".gif";
?>
<img src="<?=$atec?>"> <img src="<?=$fur?>"> <img src="<?=$ubc?>"> <img src="<?=$tel?>"> <img src="<?=$bath?>"> <img src="<?=$internet?>"> <img src="<?=$bts?>"> <img src="<?=$mrt?>"> <br>
<hr>
<td width="75%" >
</td>
</tr>
</table>
<?
} //}
echo "
<div style=\"float:left;\">Page : " . page_navi($page, $limit_end, 4, $total, $send) . " </div><div style=\"float:right;\">[" . ($limit_start+1) . "-" . ($limit_start+$count) . "] of <strong>" . $total . "</strong></div>";
}else{
echo "ไม่พบข้อมูล";
}
mysql_close();
?>
ตั้งแต่รับค่าเลยน่ะครับท่านอาจารย์ แล้วไปเช็คค่าที่ $send แล้ว $condition น่ะครับ แบบว่า ผมอยากให้มันแสดงเฉพาะ เงื่อนไขที่กำหนดอ่ะครับ ตอนนี้ที่มันแสดงไม่แสดงตามเงื่อนที่ผมกำหนดไว้เลยอ่ะคับ อาจารช่วยอธิบายให้ผมฟังหน่อย เกี่ยวกับเงื่อนไข การค้นหาที่มีหลายเงื่อนไข จะใช้ and ,or เนี่ยอ่ะคับผมยังงงๆอยู่เลย เวลาเลือกค้นอันเดียว หรือ 2 อันพร้อมกันเลย หรือว่า 3 อันพร้อมกันอ่ะคับ ผมไล่ไม่ถูกเลยครับ ช่วยกรูณาผมหน่อยน่ะคับ
$horpak_zone=$_REQUEST["horpak_zone"];
$type_zone=$_REQUEST["type_zone"];
$price_zone = array('','<2000','BETWEEN 2001 AND 2999','BETWEEN 3001 AND 3999','BETWEEN 4001 AND 4999','>5000');
$price = $price_zone[$_REQUEST[price_zone]];
$page = (isset($_REQUEST['page']))? intval($_REQUEST['page']) : 1;
$limit_end = 1;
$limit_start = ($page-1)*$limit_end;
$send = "";
if($horpak_zone != "" and $type_zone != "" and $price !=""){
$send = "horpak_zone=" . $horpak_zone . "&type_zone=" . $type_zone ."&price=" . $price;
$condition= " WHERE " . $horpak_zone . " LIKE '%" . $horpak_zone . "%'" AND ".$type_zone." LIKE '%" . $type_zone . "%'" OR ".$min_price $price." OR ".$max_price $price." OR ".$h_klang $price." " ;
}
print $sql = "SELECT * FROM ads". $condition;
$query_id = mysql_query($sql . " LIMIT " . $limit_start. "," . $limit_end );
$count = mysql_num_rows($query_id);
$total = mysql_num_rows(mysql_query($sql));
if($total > 0){
การพิจารณา ใส่ AND หรือ OR ต้องจัดกลุ่มด้วยวงเล็บให้ถูกต้องด้วย
ยกตัวอย่าง 1 AND 1 OR 2 ตอบได้มั้ย ว่าผลลัพท์จะถูกหรือผิด
แต่ถ้าจัดกลุ่มให้ถูก (1 AND 1) OR 2 แบบนี้ก็จะหาผลลัพท์ได้
อ้อ เงื่อนไขที่ไม่มีการกรอก ก็ไม่ต้องใส่เข้าไปใน query นะครับ ไม่งั้นหากันงงเลย
ลอง echo เอา sql สุดท้ายก่อนนำไป query มาให้ดูหน่อยซิ
if($prov_id !="" and $pro_type !="" and $price !="") {
$condition= " WHERE (`province` LIKE '$prov_id') AND (min_price $price) AND (max_price $price ) AND `horpak_type` LIKE '$pro_type'";
}
#################ก้จะได้ค่านี้ออกมาน่ะครับ ซึ่งตรงตามเงื่อนไข
SELECT * FROM ads WHERE (`province` LIKE 'กรุงเทพมหานคร') AND (min_price <2000) AND (max_price <2000 ) AND `horpak_type` LIKE 'แมนชั่น'
######################## แต่ else อันข้างล่างนี้ ผมจะเช็คว่า ถ้าไม่มีการเลือกเลย ก้จะให้แสดงข้อมูลทั้งหมด
else
{
$condition= " WHERE (`horpak_type` LIKE '$pro_type' ) OR (min_price $price OR max_price $price ) OR (`province` LIKE '$prov_id')";
}
แต่ถ้าเขาเลือกแค่บางอย่างหล่ะ คือจะให้ตรงตามเงื่อนไขเลยอ่ะครับ จะเลือกราคา ก้แสดงเฉพาะราคาที่เลือก เลือก ประเภทก้จะออกมาเฉพาะประเภทที่เลือก หรือเลือก แต่จังหวัด ข้อมูลก้ออกมาเฉพาะจังหวัดที่เลือก สามารถเลือกได้ 1 อย่าง หรือ 2อย่างพร้อมๆ กัน แล้วผลที่ได้จะต้องเหมือนเงื่อนไขที่เลือกอ่ะคับ
จากโค้ดด้านบนจะได้ว่า
horpak_type LIKE xxx หรือ ราคา.....
ในความเป็นจริง ถ้าเราจะค้นหา หอกพักที่ราคาใดราคาหนึ่ง เราน่าจะใช้คำว่า
ค้นหา หอพัก และ ราคา 1000 - 3000 มากกว่า ลองพิจารณาจากภาษาพูดนะ ดังนั้นเมือแปลงเป็น sql น่าจะได้ว่า
horpak_type LIKE xxx AND ราคา.....