2011-01-14 11 views
0

私は自分のコードに問題があります(申し訳ありませんが、私はあなたに見せてもらった唯一の方法です、基本的にはテーブルからの選択ステートメントです)、ページリンクを表示しますが、ページの結果。基本的には1ページに1つの結果を設定しますが、結果はすべて表示されますが、上部には次のページに移動するリンクが表示されます。次のページは同じものを示しています。私はPHPの初心者ですので、どんな助けでも大歓迎です。PHPページネーションでの問題

ありがとうございます!

<?php 

      if (isset($_GET['page'])) $page = $_GET['page']; else $page = 1; 
      $max_results = 1; 
      $from = (($page * $max_results) - $max_results); 
      REQUIRE('config.php'); 
      $q = mysql_real_escape_string(ucfirst(trim($_REQUEST['q']))); 
      $result = mysql_query("SELECT * FROM gj WHERE name LIKE '%$q%' OR cat1 LIKE '%$q%' OR cat2 LIKE '%$q' OR cat3 LIKE '%$q' ORDER by name") or trigger_error(mysql_error()); 
      $rows = mysql_num_rows($result); 
      if($rows == 0){ 

      } 
      echo " <div id='title'>Search for &quot;$q&quot;<div class='righttitle'>$rows business";if($rows > 1){echo "es";}elseif($rows == "0"){echo "es";}echo" found"; 
      echo"<div id='pagenumbers'>"; 
      // (1) get the total number of results for your query 
      // modify this to match the total results for the main query 
      $total_results = mysql_result(mysql_query("SELECT COUNT(*) as Num FROM gj where name LIKE '%$q%' OR cat1 LIKE '%$q%' OR cat2 LIKE '%$q' OR cat3 LIKE '%$q'"),0); 

      // (2) Calculate total number of pages. Round up using ceil() 
      $total_pages = ceil($total_results/$max_results); 

      if($total_results > $max_results) 
      { 
       // (3) build Previous link 
       if($page > 1) 
       { 
       $prev = ($page - 1); 
       echo "<a href=\"".$_SERVER['PHP_SELF']."?q=$q&page=$prev\">&lt;&lt; Prev</a> "; 
       } 

       // (4) display page numbers 
       for($i = 1; $i <= $total_pages; $i++) 
       { 
       if($page == $i) 
       { 
        echo $i . " "; 
       } 
       else 
       { 
        echo "<a href=\"".$_SERVER['PHP_SELF']."?q=$q&page=$i\">$i</a> "; 
       } 
       } 

       // (5) build Next Link 
       if($page < $total_pages) 
       { 
        $next = ($page + 1); 
        echo "<a href=\"".$_SERVER['PHP_SELF']."?q=$q&page=$next\">Next &gt;&gt;</a>"; 
       } 
      } 

    echo"</div></div></div>"; 
     while($row = mysql_fetch_array($result)) 
     { 
     $id=$row['id']; 
     $name=$row['name']; 
     $phone=$row['phone']; 
     $website=$row['website']; 
     $city=$row['city']; 
     $address=$row['address1']; 
     $zipcode=$row['zipcode']; 
     $sponsored = $row['sponsored']; 
     $addressmap = preg_replace('/\s/', '+',$address); 
     $citymap = preg_replace('/\s/', '+',$city); 
     //Start While Loop 
     echo" 
     <div id='listing'> 
      <div id='mainlisting'>"; 
      echo" 
       <div class='name'> 
        <a href='./more.php?id=$id' class='";if($sponsored != 1){echo "red";}else{echo"sponsored";}echo"'>$name</a> <div class='right'>$phone</div> 
       </div> 
       <div class='other'> 
        $address, $city, CO $zipcode 
|<a target='_blank' href='http://maps.google.com/maps?  f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=$addressmap,+$city+CO&amp;&amp;&amp;ie=UTF8&amp;hq=&amp;hnear=$address,+$city,+Colorado+$zipcode&amp;safe=active&amp;&amp;&amp;t=h&amp;z=14&amp;iwloc=A&amp;output=embed' rel='lyteframe' class='";if($sponsored != 1){echo "red";}else{echo"sponsored";}echo"' title='$name' rev='width: 500px; height: 500px; scrolling: no;'> See Map</a><br/> 
        <a href='#' class='";if($sponsored != 1){echo "red";}else{echo"sponsored";}echo"'>";if($website != null){ echo "<a target='_blank' href='$website' class='";if($sponsored != 1){echo "red";}else{echo"sponsored";}echo"'>Website</a> |";}echo" <a href='#' class='";if($sponsored != 1){echo "red";}else{echo"sponsored";}echo"'>More Info</a> 
       </div> 
      </div> 
     </div><!--/LISTING-->"; 

     } 

マイケル、私はあなたがやったことを試みたが、私は間違ってそれを行っているかもしれません...ここに私のコードは「」どこ声明

<?php 
     $page = 1; $total_pages = 9; $record_start = ($page * $total_pages) - $total_pages; 
      REQUIRE('config.php'); 
      $q = mysql_real_escape_string(ucfirst(trim($_REQUEST['q']))); 
      $result = mysql_query("SELECT * FROM gj WHERE name LIKE '%$q%' OR cat1 LIKE '%$q%' OR cat2 LIKE '%$q' OR cat3 LIKE '%$q' ORDER by name LIMIT 0,9") or trigger_error(mysql_error()); 
      $rows = mysql_num_rows($result); 
      if($rows == 0){ 

      } 
      echo " <div id='title'>Search for &quot;$q&quot;<div class='righttitle'>$rows business";if($rows > 1){echo "es";}elseif($rows == "0"){echo "es";}echo" found"; 
      echo"<div id='pagenumbers'>"; 
      // (1) get the total number of results for your query 
      // modify this to match the total results for the main query 
      $total_results = mysql_result(mysql_query("SELECT COUNT(*) as Num FROM gj where name LIKE '%$q%' OR cat1 LIKE '%$q%' OR cat2 LIKE '%$q' OR cat3 LIKE '%$q '"),0); 

      // (2) Calculate total number of pages. Round up using ceil() 
      $alltotal_pages = ceil($total_results/$max_results); 

      if($total_results > $max_results) 
      { 
       // (3) build Previous link 
       if($page > 1) 
       { 
       $prev = ($page - 1); 
       echo "<a href=\"".$_SERVER['PHP_SELF']."?q=$q&page=$prev\">&lt;&lt; Prev</a> "; 
       } 

       // (4) display page numbers 
       for($i = 1; $i <= $alltotal_pages; $i++) 
       { 
       if($page == $i) 
       { 
        echo $i . " "; 
       } 
       else 
       { 
        echo "<a href=\"".$_SERVER['PHP_SELF']."?q=$q&page=$i\">$i</a> "; 
       } 
       } 

       // (5) build Next Link 
       if($page < $alltotal_pages) 
       { 
        $next = ($page + 1); 
        echo "<a href=\"".$_SERVER['PHP_SELF']."?q=$q&page=$next\">Next &gt;&gt;</a>"; 
       } 
      } 

エコーの前にあります。

+0

を助けるかもしれない、なぜ、あなたはこれを処理するクラスを作成してはいけません毎回ページが必要です。 – RobertPitt

+0

ありがとう@RobertPitt私はそれをします –

答えて

1

のようなものを追加することです:

$ページ= 1;

$ results_per_page = 10;

$ record_start =($ page * $ results_per_page) - $ results_per_page; '%の$ Qは%' OR CAT1 LIKE名LIKE '%の$ Qは%' OR '%の$のQ' OR CAT3 LIKE CAT2 LIKE 「%$ Q GJ FROM

$結果=するmysql_query( "SELECT * 'ORDER by LIMIT $ record_start、$ results_per_page ")または trigger_error(mysql_error());コードのために上記のリンク

+0

私はちょうど私の答えを編集...申し訳ありません、私は本当にPHPの初心者です...助けをありがとう。 –

+0

最初のクエリでLIMIT $ record_start、$ results_per_pageを忘れてしまったようです。 – Michael

+0

まだ問題がありますが、以前のようなエラーはありません。今は15行のうち9行しか表示していません。あなたがnextpageをクリックすると、リンクは機能しません。??? –

1

問題は、常に現在アクティブなページが何であっても、同じ結果セットをフェッチしてからすべてを出力するということです。ページを設定する場合は、SQLクエリにLIMIT句(たとえば、LIMIT 20,10)を使用して、オフセット20(ゼロから始まるレコード、つまりレコード番号21)から10レコードを返すことをお勧めします。あなたがする必要がどのような

+0

私はちょうどこれをしましたが、それは仕事をしませんでしたか?これは正しいですか????? $ result = mysql_query( "SELECT * FROM gJ WHERE 'LIKE'%$ q% 'OR cat1 LIKE'%$ q 'OR cat2 LIKE'%$ q 'OR cat3 LIKE'%$ q '名前順LIMIT 20、 10 ")またはtrigger_error(mysql_error()); –

+0

それはうまくいくはずです... – Michael

関連する問題