A-AA+then

ช่วยผมดูเงื่อนไขโค๊ดแบ่งหน้าหน่อยครับผมเอาโค๊ดเขามา

2,170


ตอนแรกที่ยังไม่ได้ใส่โค๊ดแบ่งหน้า ก้แสดงผลได้ตามเงื่อนไขน่ะครับ แต่พอใสโค๊ดแบ่งหน้า เงื่อนไขผมไปไม่เป็นเลยครับ ขอความช่วยเหลือหน่อยน่ะครับ ช่วยผมดู เงื่อนไข  $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>&laquo;</strong></a> ";
        $output .= "<a href=\"?" . $send . "page=" . $navi_back . "\" target=\"" . $target . "\" class=\"" . $other_style . "\"><strong>&#8249;</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>&#8250;</strong></a> ";
        if(($page+1) < $total)
        $output .= "<a href=\"?" . $send . "page=" . $total . "\" target=\"" . $target . "\" class=\"" . $other_style . "\"><strong>&raquo;</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">

 ชื่อหอพัก :&nbsp;&nbsp;<font class="menumanage"><a href="show_detail_all.php?id=<?=$result[id_ads]?>"><?=$result[horpak_name]?></a>&nbsp;<img src="pic/new_05.gif" border="0">&nbsp;<?=$status?></font><br>
ราคา:&nbsp;&nbsp;<font class="menulink"><?=$result[min_price]?>-<?=$result[max_price]?></font><br>
 ประเภท:&nbsp;&nbsp;<font class="menudelete"><?=$result[horpak_type]?></font><br>
 
ที่อยู่:&nbsp;&nbsp; <font class="menumanage">&nbsp;เลขที่<?=$result[horpak_no]?>ถนน.<?=$result[horpak_road]?>&nbsp;เขต.<?=$horpak_zone?>&nbsp;ต.<?=$result[horpak_tumboon]?>&nbsp;อ.<?=$result[horpak_maung]?>&nbsp;จ.<?=$result[province]?>&nbsp;<?=$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?>">&nbsp;<img src="<?=$fur?>">&nbsp;<img src="<?=$ubc?>">&nbsp;<img src="<?=$tel?>">&nbsp;<img src="<?=$bath?>">&nbsp;<img src="<?=$internet?>">&nbsp;<img src="<?=$bts?>">&nbsp;<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(); 
?>

8 ความคิดเห็น

ตอนนี้แสดงข้อมูลได้แร้ะแบ่งหน้าก้ได้แร้ะ แต่ว่าข้อมูลที่แสดงนั้นถูกเลือกมาทั้งหมดเลย  ไม่ตรงตามเงื่อไขที่ได้ใส่ลงไปเลย ใครก้ได้ชี้แนะผมทีครับ
1

ก็อยากช่วยอยู่หรอก แต่ช่วยสรุปเป็นข้อมูลสั้นๆมานิดนึงดีมั้ย ดูโค้ดยาวๆแล้วตาลาย ไม่รู้จะเลือกรงไหนมาตอบถูก
2

ตั้งแต่รับค่าเลยน่ะครับท่านอาจารย์  แล้วไปเช็คค่าที่ $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){

3

อ่านะ...ค่อยอยังชัวหน่อย

การพิจารณา ใส่ AND หรือ OR ต้องจัดกลุ่มด้วยวงเล็บให้ถูกต้องด้วย

ยกตัวอย่าง 1 AND 1 OR 2 ตอบได้มั้ย ว่าผลลัพท์จะถูกหรือผิด

แต่ถ้าจัดกลุ่มให้ถูก (1 AND 1) OR 2 แบบนี้ก็จะหาผลลัพท์ได้
4

เหมือนจะได้แต่ก้ยังทะxxxๆอยู่อ่ะคับ ได้แบบไม่หมด
5

ตรวจสอบเงื่อนไขให้ดีครับ ถ้าจำเป็น ให้ทดสอบกับเงื่อนไขน้อยๆ ไปหาเงื่อนไขมากๆครับ การจัดลำดับ AND OR ผิด การ ใส่ วงเล็บผิด มีผลต่อการค้นหาอย่างมากครับ


อ้อ เงื่อนไขที่ไม่มีการกรอก  ก็ไม่ต้องใส่เข้าไปใน query นะครับ ไม่งั้นหากันงงเลย

ลอง echo เอา sql สุดท้ายก่อนนำไป query มาให้ดูหน่อยซิ
6

อันนี้ ในกรณี ตรวจสอบว่าค่าไม่เป็นค่าว่าง ต้องเลือกทุกตัว
 
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อย่างพร้อมๆ กัน แล้วผลที่ได้จะต้องเหมือนเงื่อนไขที่เลือกอ่ะคับ
7

ลองพิจารณา query ที่ต้องการเป็นคำพูด แล้วค่อยแปลง ออกมาเป็น sql ดูครับ

จากโค้ดด้านบนจะได้ว่า

horpak_type LIKE xxx หรือ ราคา.....

ในความเป็นจริง ถ้าเราจะค้นหา หอกพักที่ราคาใดราคาหนึ่ง เราน่าจะใช้คำว่า

ค้นหา หอพัก และ ราคา 1000 - 3000 มากกว่า ลองพิจารณาจากภาษาพูดนะ ดังนั้นเมือแปลงเป็น sql น่าจะได้ว่า

horpak_type LIKE xxx AND ราคา.....
8
^