2016-05-18 6 views
3

こんにちは私は私のページングを終了し、フィルターと$ _POSTを使ってデータを抽出するフィルタシステムに問題がありますが、2番目のページに行くと意味がわかります何もないと私はいくつかのデータが不足している場合、私はそれ以上のフィルタを持っている、私は場所(ロンドン)でフィルタリングすれば36の32を得るが、私は2番目のページに行くとき、彼の意味ウサギは私のコードとライブのページです:My website

トップコード:

$cat1 = ''; 
$perpage = 10; 

if(isset($_GET["catid"])){ 

    $p1 = ''; 
    $p2 = ''; 
    $catid = $_GET["catid"]; 
    $l1 = substr($catid,0,1); 
    $l2 = substr($catid,1,1); 
    $p1 = "CAT".$l1; 
    if(!empty($l2)){ 
     $p2 = "CAT".$l1."-".$l2; 
     $p3 = $p2; 
    } 
    $cat1 = @$lang[$p1]; 
    $cat2 = @$lang[$p2]; 
} 

$postid = ''; 
$userid = ''; 
$pricemin = ''; 
$pricemax = ''; 
$location = ''; 

if(isset($_POST["filter"])){ 

$pricemin = $_POST["min"]; 
$pricemax = $_POST["max"]; 
$location = $_POST["location"]; 
} 

///////////////////////////////////////PAGINATION ////////////////// 

        if(empty($p1) && empty($p2)){ 
         $sql = "SELECT * FROM posts p JOIN images i ON p.id = i.postid WHERE p.id > 0 "; 

         if(!empty($location)){ 
          $sql .= "AND location='$location'"; 
         } 
         if(!empty($pricemin)){ 
          $sql .= "AND price>='$pricemin' "; 
         } 
         if(!empty($pricemax)){ 

          $sql .= "AND price<='$pricemax' "; 
         } 
        } else if(!empty($p2)){ 
         $sql = "SELECT * FROM posts p JOIN images i ON p.id = i.postid WHERE catid='$p2' "; 
         if(!empty($location)){ 
          $sql .= "AND location='$location'"; 
         } 
         if(!empty($pricemin)){ 
          $sql .= "AND price>='$pricemin' "; 
         } 
         if(!empty($pricemax)){ 
          $sql .= "AND price<='$pricemax' "; 
         } 
        } else { 
         $sql = "SELECT * FROM posts p JOIN images i ON p.id = i.postid WHERE p.catid LIKE '$p1%' "; 
         if(!empty($location)){ 
          $sql .= "AND location='$location'"; 
         } 
         if(!empty($pricemin)){ 
          $sql .= "AND price>='$pricemin' "; 
         } 
         if(!empty($pricemax)){ 
          $sql .= "AND price<='$pricemax' "; 
         } 
        } 
        $res = mysqli_query($connect,$sql); 
        $rows = mysqli_num_rows($res); 
        $last = ceil($rows/$perpage); 

        if($last < 1){ 
         $last = 1; 
        } 

        $pagenum = 1; 

        if(isset($_GET["pn"])){ 
         $pagenum = preg_replace("#[^0-9]#", "", $_GET["pn"]); 
        } 

        if($pagenum < 1){ 
         $pagenum = 1; 
        } else if($pagenum > $last){ 
         $pagenum = $last; 
        } 
        $limit = 'LIMIT ' .($pagenum - 1) * $perpage.',' .$perpage; 



    $paginationCtrls = ''; 

if($last != 1){ 

    if ($pagenum > 1) { 
     $previous = $pagenum - 1; 
     $paginationCtrls .= '<a href="cat.php?catid='.$catid.'&pn='.$previous.'">Previous</a> &nbsp; &nbsp; '; 

     for($i = $pagenum-4; $i < $pagenum; $i++){ 
      if($i > 0){ 
       $paginationCtrls .= '<a href="cat.php?catid='.$catid.'&pn='.$i.'">'.$i.'</a> &nbsp; '; 
      } 
     } 
    } 

    $paginationCtrls .= ''.$pagenum.' &nbsp; '; 
    for($i = $pagenum+1; $i <= $last; $i++){ 
     $paginationCtrls .= '<a href="cat.php?catid='.$catid.'&pn='.$i.'">'.$i.'</a> &nbsp; '; 
     if($i >= $pagenum+4){ 
      break; 
     } 
    } 

    if ($pagenum != $last) { 
     $next = $pagenum + 1; 
     $paginationCtrls .= ' &nbsp; &nbsp; <a href="cat.php?catid='.$catid.'&pn='.$next.'">Next</a> '; 
    } 
} 

?> 

とMySQLのクエリでメインのhtmlコード:

<div class="fp"> 
     <div class="filter"> 
      <b style="padding-left: 10px;">Filters:</b> 
      <form class="filterform" action="" method="post"><br> 
       Location: <br> 
       <input name="location" ><br> 
       Price Range:<br> 
       Min:<input type="text" name="min" size="5"> Max:<input type="text" name="max" size="5"><br><br> 
       <input class="submit-button" type="submit" name="filter" value="Filter"> 
      </form> 
     </div> 
     <div class="posts"> 
      <div id="adcat"><?php 
       if(!empty($cat2)){ 
        ?> 
        <a href="cat.php?catid=<?php echo $l1; ?>" ><?php echo $cat1." » "; ?></a><span><?php echo $cat2; ?></span> 
        <?php 
       } else { 
       echo "<font color='grey'>".$cat1."</font>"; 
       } 
         ?> 

      </div> 
      <div id="totalrez"> 
       <?php echo "Total: ".$rows; ?><br> 
       <?php echo "Page".$pagenum." of ".$last; ?> 
       </div> 
      <br><br> 
      <div id="detailformscat"> 
        <?php 
        if(empty($p1) && empty($p2)){ 
         $sql = "SELECT * FROM posts p JOIN images i ON p.id = i.postid WHERE p.id > 0 "; 

         if(!empty($location)){ 
          $sql .= "AND location='$location'"; 
         } 
         if(!empty($pricemin)){ 
          $sql .= "AND price>='$pricemin' "; 
         } 
         if(!empty($pricemax)){ 

          $sql .= "AND price<='$pricemax' "; 
         } 
         $sql .= "$limit"; 

        } else if(!empty($p2)){ 
         $sql = "SELECT * FROM posts p JOIN images i ON p.id = i.postid WHERE catid='$p2' "; 
         if(!empty($location)){ 
          $sql .= "AND location='$location'"; 
         } 
         if(!empty($pricemin)){ 
          $sql .= "AND price>='$pricemin' "; 
         } 
         if(!empty($pricemax)){ 
          $sql .= "AND price<='$pricemax' "; 
         } 

         $sql .= "$limit"; 
        } else { 
         $sql = "SELECT * FROM posts p JOIN images i ON p.id = i.postid WHERE p.catid LIKE '$p1%' "; 
         if(!empty($location)){ 
          $sql .= "AND location='$location'"; 
         } 
         if(!empty($pricemin)){ 
          $sql .= "AND price>='$pricemin' "; 
         } 
         if(!empty($pricemax)){ 
          $sql .= "AND price<='$pricemax' "; 
         } 

         $sql .= "$limit"; 
        } 
        $res = mysqli_query($connect,$sql); 
        $rows = mysqli_num_rows($res); 

        while ($row = mysqli_fetch_assoc($res)) { 
         $postid = $row["postid"]; 
         ?> 
         <div id="ads"> 
          <div id="adfavcat"> 
            <?php if(!isset($_SESSION["userid"])) { ?> 
            <a href="post.php?login=false" ><img src="image/+fav.png" width="40px" height="40px"></a> 
            <?php } else { 

              $userid = $_SESSION["userid"]; 
              $sql2 = "SELECT * FROM fav WHERE userid='$userid' AND postid='$postid' "; 
              $res2 = mysqli_query($connect,$sql2); 
              $rowcount = mysqli_num_rows($res2); 

              if ($rowcount > 0){ ?> 
               <a href="cat.php?catid=<?php echo $catid; ?>&delete&id=<?php echo $postid?>" ><img src="image/xfav.png" width="40px" height="40px"></a> 
              <?php 
              } else { ?> 
              <a href="cat.php?catid=<?php echo $catid; ?>&add&id=<?php echo $postid; ?>" ><img src="image/+fav.png" width="40px" height="40px"></a> 
              <?php } 
            } ?> 

          </div> 
          <div id="titlepic"> 
          <a href="review.php?id=<?php echo $postid; ?>"><?php echo $row["title"]; ?></a><br> 
          <a href="review.php?id=<?php echo $postid; ?>"><img src="<?php if(!empty($row["path1"])) { echo $row["path1"]; } else echo "image/noimage.png"; ?>" height="100px" width="150px"></a> 
          </div> 
          <div id="datescat"> 
           <b>Date Added:</b> <?php echo date('m/d/Y H:i', $row["dateadded"]); ?><br> 
           <b>Renew Date:</b> <?php if($row["renewdate"] > 0){ echo date('m/d/Y H:i', $row["renewdate"]); } ?><br> 
           <b>Location:</b> <?php echo $row["location"]; ?><br> 
           <b>Price:</b> <?php echo $row["price"]."&pound"; ?><br> 

          </div> 
         </div> 
         <hr width="100%"> 
         <?php 
        } 

       ?> 
       <div id="paginationctrl"><br> 
        <?php echo $paginationCtrls; ?> 
       </div> 
     </div> 
      </div> 
    </div> 

uは2ページ目を渡した場合、今$ _POSTがヌルに等しくなりますので、私はポストデータをキャッチし、uは再びPOSTメソッドまたは他の溶液でウサギを変更するまでそこに保つために、そのための可能な解決策を必要としますページ単位で

答えて

1

この場合は、$_POSTから$_GETに変更できます。これにより、問題が簡単に解決され、今後発生する可能性のある問題も解決します。私は、ページ設定を持つウェブサイトの大部分は、追跡がはるかに簡単であるため、URLに変数を使用していると思います。さらに、あなたは私的なデータを送信していないので、私は他の方法に切り替えない理由を見ません。 $_POST['page']のようなものを使用するオプションがあり、それに応じて他の行を取り出すことができます。