Проблема с разбиением на страницы PHP - PullRequest
0 голосов
/ 15 января 2011

У меня проблема с моим кодом (извините, это много, но это единственный способ, который я знал, чтобы показать вам, это в основном просто оператор выбора из таблицы), который показывает ссылку на страницу, но не меняет результаты страницы.В основном я установил, например, 1 результат на страницу, но он показывает все результаты, но все равно показывает ссылку вверху, чтобы перейти на следующую страницу.Следующая страница просто показывает то же самое.Я новичок в 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-->";

        }

Майкл, я попробовал то, что ты сделал, но я мог сделать это неправильно ... Вотмой код перед оператором where

    <?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>";
              }
            }

echo "";

Ответы [ 3 ]

1 голос
/ 15 января 2011

Что вам нужно сделать, это добавить что-то вроде:

$ page = 1;

$ results_per_page = 10;

$ record_start = ($ page* $ results_per_page) - $ results_per_page;

$ result = mysql_query ("SELECT * FROM gj WHERE name LIKE"% $ q% "OR cat1 LIKE"% $ q% "OR cat2 LIKE"% $ q "ИЛИ cat3, КАК "% $ q", ЗАКАЗАТЬ по имени LIMIT $ record_start, $ results_per_page ") или trigger_error (mysql_error ());

1 голос
/ 15 января 2011

Проблема в том, что вы всегда выбираете один и тот же набор результатов, а затем просто выводите все его, независимо от того, какая страница в данный момент «активна». Если вы хотите разбить на страницы, вы, вероятно, захотите использовать что-то вроде предложения LIMIT в своем запросе SQL (например, LIMIT 20,10, чтобы вернуть 10 записей, начиная со смещения 20 (начиная с нуля, т.е. номер записи 21)).

0 голосов
/ 22 января 2014

http://www.apnacode.com/php/simple-php-pagination/

Проверьте вышеуказанную ссылку на код, может она вам поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...