Author Topic: Cac bac sua dum em doan code tim kiem nay voi?  (Read 5082 times)

Jordan

  • PHP Intermediate
  • *
  • Posts: 102
    • View Profile
    • Email
Cac bac sua dum em doan code tim kiem nay voi?
« on: September 21, 2008, 07:27:48 PM »
Doan code tim kiem nay ket hop voi code phan trang copy cua Kusanagi. Khi em nhap vao khung tim kiem tu "php", thi no khai bao tim thay 8 san pham va phan thanh 2 trang, nhung khi click vao trang thu 2 thi no lai khai bao la tim thay 13 san pham va phan thanh 3 trang ???  :( . Cac bac xem dum coi sai cho nao. Thanks. Botay.com  :D

Code phan trang cua Kus:
Code: [Select]
/* FUNCTION PHAN TRANG */
function page_div($link, $offset, $numofpages, $page) {
$numofpages = ceil ( $numofpages );
$pagesstart = ceil ( $page - $offset );
$pagesend = ceil ( $page + $offset );
if ($page != "1" && ceil ( $numofpages ) != "0") {
echo str_replace ( '%d_pg', ceil ( $page - 1 ), "<a href=" . $link . "><b><<</b></a>&nbsp;" );
}
for($i = 1; $i <= $numofpages; $i ++) {
if ($pagesstart <= $i && $pagesend >= $i) {
if ($i == $page) {
echo "<b>[$i]</b>&nbsp;";
} else {
echo str_replace ( '%d_pg', "$i", '<a href="' . $link . '"><b>' . $i . '</b></a>&nbsp; ' );
}
}
}
if (ceil ( $numofpages ) == "0") {
echo "[$i]";
}
if ($page != ceil ( $numofpages ) && ceil ( $numofpages ) != "0") {
echo str_replace ( '%d_pg', ceil ( $page + 1 ), '<a href="' . $link . '"><b>>></b></a>' );
}
}

Con day la doan code trang search_result:
Code: [Select]
<?php
$p_now 
intval($_GET ['p']);
$total mysql_result mysql_query "SELECT COUNT(*) FROM product WHERE product_name like '%".$HTTP_POST_VARS['txtSearch']."%'" ), );
$numofpages $total $pp;
if (
$p_now<=0) {
$page 1;
} else {
if($p_now <= ceil($numofpages))
$page $p_now;
else
$page 1;
}

$limitvalue $page $pp - ($pp);
$query "SELECT * FROM product WHERE product_name like '%".$HTTP_POST_VARS['txtSearch']."%' ORDER BY product_id ASC LIMIT $limitvalue$pp ";
$result mysql_query $query );
$a 0;
echo 
"<table>
        <tr>"
;
while (
$row mysql_fetch_array ($resultMYSQL_ASSOC)) 
   {
$a ++;
    echo 
"<td width='50%' onMouseOver=\"bgColor='#F0FEFF'\" onmouseout=\"bgColor='#FFFFFF'\">
        <table class='product-content'>
   <tr>
     <td width='30%' rowspan='6'>
    <a href='product_detail.php?pid=
{$row['product_id']}'><img src='upload/image/thumb/{$row['thumb']}' border='0' alt=''/></a>
 </td>
                 <td width='70%' height='20%'>"
;
 if (strlen($row['product_name']) >= 40)
  {
   echo "<a href='product_detail.php?pid={$row['product_id']}'>".excerpt($row['product_name'],40)."</a>";
  } else {
   echo "<a href='product_detail.php?pid={$row['product_id']}'>{$row['product_name']}</a>";
        }
 echo "</td>
               </tr>
   <tr>
     <td height='16%'><b><em>ISBN: </em></b>
{$row['product_id']}</td>
   </tr>
               <tr>
                 <td height='16%'>"
;
 if (strlen($row['author']) >= 18)
   {
     echo "<b><em>Author: </em></b>".excerpt($row['author'],18);
   } else {
     echo "<b><em>Author: </em></b>{$row['author']}";
      }
  echo "</td>
               </tr>
               <tr>
                 <td height='16%'><b><em>Page: </em></b>
{$row['page']}</td>
               </tr>
               <tr>
                 <td height='16%'><b><em>Price: </em></b><font color='#FF0000'>\$
{$row['price']}</font></td>
               </tr>
               <tr>
                 <td height='16%'><a href='add_cart.php?pid=
{$row['product_id']}'><img src='image/add.gif' border='0'/></a></td>
   </tr>
</table>
         </td>"
;
$entries_per_row 2;
if ($a $entries_per_row == 0
     {
   echo "</tr><tr>";
     }
   }
echo 
"</tr></table>";
if (
$total <= 0
   {
     echo 
"<div align=\"center\">Sorry! No product for your search.</div>";
   } else {
   echo 
"<div align=\"center\">";
page_div "?p=%d_pg""6"ceil $numofpages ), $page );
echo 
"</div>";
}
?>

<br>
<div align="center"> Found <b><font color="#04D0DB">
  <?=$total?>
  </font></b> product(s). </div>
Cai kho bo cai ngu...

ha_bogay

  • PHP Intermediate
  • *
  • Posts: 30
  • http://botsanday.com
    • Yahoo Instant Messenger - botsanday
    • View Profile
    • My shop
Re: Cac bac sua dum em doan code tim kiem nay voi?
« Reply #1 on: September 21, 2008, 10:03:26 PM »
Vấn đề nằm ở chỗ click vào trang 2 thì script không tìm kiếm chuỗi "php" nữa .
Muốn khắc phục thì bạn truyền ngược lại chuỗi cần tìm kiếm qua link sang trang 2 .
Cái này là lỗi rất sơ đẳng . Bạn không fix được thì bó tay .
http://botsanday.com
* Bột sắn dây Bà Hằng nguyên chất – số 6 ngõ An Trạch 2 – Đoàn Thị Điểm – phường Quốc Tử Giám - quận Đống Đa - Hà Nội
* Sdt: 04.3.7320.657 - DĐ: 090.210.6569
* Nick YM: botsanday

Jordan

  • PHP Intermediate
  • *
  • Posts: 102
    • View Profile
    • Email
Re: Cac bac sua dum em doan code tim kiem nay voi?
« Reply #2 on: September 22, 2008, 08:29:58 AM »
Code: [Select]
Cái này là lỗi rất sơ đẳng . Bạn không fix được thì bó tay .
Ban oi, minh moi hoc php thoi, van de nay neu minh giai quyet duoc thi dau can post bai len hoi lam gi cho met.
Cai kho bo cai ngu...

kusanagi

  • PHP Intermediate
  • *
  • Posts: 152
    • Yahoo Instant Messenger - kus.loveniz
    • View Profile
    • KusanagiVN
    • Email
Re: Cac bac sua dum em doan code tim kiem nay voi?
« Reply #3 on: September 22, 2008, 08:56:30 AM »
Phải giữ lại các tham số trên URL mới phân trang được bạn à
VD:
search.php?keyword=php => Tìm tất cả các kq có từ khóa php
search.php?keyword=php&page=1 => Tìm tất cả các kq có từ khóa php trong page 1
search.php?page=2 => Lỗi vì ko biết từ khóa để tìm

Như vậy bạn nghĩ cách nào đó để truyền cái keyword mỗi khi sang 1 trang mới là được

VD như vầy:
page_div ( "?p=%d_pg&keyword=$keyword", "6", ceil ( $numofpages ), $page );
Châm ngôn :
Ngu lâu dốt bền khó đào tạo :D
Tài lanh + Dốt nát = Báo đời ;D

doangia

  • Administrator
  • PHP Intermediate
  • *****
  • Posts: 1099
  • Hữu Tâm Ắt Thành Tựu
    • View Profile
    • Doan Gia
    • Email
Re: Cac bac sua dum em doan code tim kiem nay voi?
« Reply #4 on: September 22, 2008, 02:29:09 PM »
1 vài góp ý nho nhỏ :
Đừng viết như thế này
Code: [Select]
$total = mysql_result ( mysql_query ( "SELECT COUNT(*) FROM product WHERE product_name like '%".$HTTP_POST_VARS['txtSearch']."%'" ), 0 );

Nên làm như sau
Code: [Select]
$keyword = $HTTP_POST_VARS['txtSearch'];
// xử lý keyword trước khi đưa vào query như trim , addslashes, mysql_real_escape_string
$total = mysql_result ( mysql_query ( "SELECT COUNT(*) FROM product WHERE product_name like '%".$keyword."%'" ), 0 );

Và việc truyền keyword cho trang sau ... sẽ đơn giản hơn
Cần Thơ Gạo Trắng Nước Trong
Đến Chơi Mang Dép Chân Không Đi Về ...

ha_bogay

  • PHP Intermediate
  • *
  • Posts: 30
  • http://botsanday.com
    • Yahoo Instant Messenger - botsanday
    • View Profile
    • My shop
Re: Cac bac sua dum em doan code tim kiem nay voi?
« Reply #5 on: September 22, 2008, 04:00:36 PM »
Code: [Select]
Cái này là lỗi rất sơ đẳng . Bạn không fix được thì bó tay .
Ban oi, minh moi hoc php thoi, van de nay neu minh giai quyet duoc thi dau can post bai len hoi lam gi cho met.
Ý tôi là với từng này gợi ý . Chỉ được ra chỗ sai thì tự bạn phải Fix được .
Nếu có nguyên nhân rõ rang mà không fix được những lỗi đơn giản này thì tốt hơn là bạn chọn một nghề khác .
http://botsanday.com
* Bột sắn dây Bà Hằng nguyên chất – số 6 ngõ An Trạch 2 – Đoàn Thị Điểm – phường Quốc Tử Giám - quận Đống Đa - Hà Nội
* Sdt: 04.3.7320.657 - DĐ: 090.210.6569
* Nick YM: botsanday

Jordan

  • PHP Intermediate
  • *
  • Posts: 102
    • View Profile
    • Email
Re: Cac bac sua dum em doan code tim kiem nay voi?
« Reply #6 on: September 22, 2008, 05:26:55 PM »
Ok. Cam on cac bac.
Cai kho bo cai ngu...