2

いくつかのチュートリアルから簡単でシンプルなページネーションを実行しようとしてこの問題に直面しましたが、どうやらそれが本来あるべき方法で機能していないようです..よくコメントアウトされたコードを投稿して、私が直面している問題をプレビューさせてください:-

まず第一に、次のコードを持つ FAQ_content という名前のファイルがあります: -

    <?php 
include ('config/setup.php'); //database connection file!
##Database Retrieval Query: -
    ##FAQ_Retrieval_Query: -
        ##Pagination Logic
        //This Query is Only to get the number of rows.. we'll use a second part downstairs.
        $FAQ_query="SELECT * FROM FAQ_content ORDER BY id ASC ";
        $data1 = mysql_query($FAQ_query);
        $nr = mysql_num_rows($data1); // counts the number of entries within the database table.
        if (isset ($_GET['pn']))
            {
                $pn=preg_replace('#[^0-9]#i','',$_GET['pn']); //filters everything but numbers for security 
            }else {// if the URL variable has no $pn then it will be set to 1.
                $pn=1;
            }
        $itemsPerPage= 5; //How many items do we wanna view per page?
        $lastPage = ceil($nr/$itemsPerPage); //number of entries in the database divided by the number we wanna show per page.
        if ($pn <1) { 
                // if the pagenumber is less than 1, then it'll be forced to one,
                //and if it's larger than last page, it'll be forced to last page.
                $pn=1;}
                else if ($pn>$lastPage){
                    $pn = $lastPage;
                    }
        //Creating the Numbers to click between next and back buttons..
        $centerPages = ""; //just initiating the variable.
        $sub1 =  $pn - 1;
        $sub2 = $pn - 2;
        $add1 = $pn + 1;
        $add2 = $pn + 2;
        if ($pn == 1)
        {
            $centerPages .= '&nbsp; <span class="pagNumActive">'.$pn.'</span>&nbsp;';
            $centerPages .= '&nbsp; <a href="' .$_SERVER['PHP_SELF'].'?pn='.$add1.'">'.$add1.'</a> &nbsp;';
        }else if ($pn == $lastPage) 
        {
            $centerPages .= '&nbsp; <a href="' .$_SERVER['PHP_SELF'].'?pn='.$sub1.'">'.$sub1.'</a> &nbsp;';
            $centerPages .= '&nbsp; <span class="pagNumActive">'.$pn.'</span>&nbsp;';
        }else if ($pn > 2 && $pn < ($lastPage-1)) {
            $centerPages .= '&nbsp; <a href="' .$_SERVER['PHP_SELF'].'?pn='.$sub2.'">'.$sub2.'</a> &nbsp;';
            $centerPages .= '&nbsp; <a href="' .$_SERVER['PHP_SELF'].'?pn='.$sub1.'">'.$sub1.'</a> &nbsp;';
            $centerPages .= '&nbsp; <span class="pagNumActive">'.$pn.'</span>&nbsp;';
            $centerPages .= '&nbsp; <a href="' .$_SERVER['PHP_SELF'].'?pn='.$add1.'">'.$add1.'</a> &nbsp;';
            $centerPages .= '&nbsp; <a href="' .$_SERVER['PHP_SELF'].'?pn='.$add2.'">'.$add2.'</a> &nbsp;';
        }else if ($pn >1 && $pn < $lastPage) {
            $centerPages .= '&nbsp; <a href="' .$_SERVER['PHP_SELF'].'?pn='.$sub1.'">'.$sub1.'</a> &nbsp;';
            $centerPages .= '&nbsp; <span class="pagNumActive">'.$pn.'</span>&nbsp;';
            $centerPages .= '&nbsp; <a href="' .$_SERVER['PHP_SELF'].'?pn='.$add1.'">'.$add1.'</a> &nbsp;';
        }
        //Setting the limit range for the number of data retrieved and the items per page.
        $limit = 'LIMIT ' .($pn - 1) * $itemsPerPage .',' .$itemsPerPage;   
        $FAQ_query2=mysql_query("SELECT * FROM FAQ_content ORDER BY id ASC $limit " , $dbc) or die(mysql_error());
        ##Pagination Logic End-- :(
        ##Pagination Display Options : -
        $paginationDisplay = "";// just initialising..
        //This condition runs only if the last page is not equal to 1, if it is equal to 1, then we don't require links.
        if ($lastPage != "1") {
            //showing the user what page he is on, and what number of pages are there..
            $paginationDisplay .= 'Page <strong>' .$pn. '</strong> of' .$lastPage. '<img src="images/clearimage.png" width="48px" height="1px" alt="Spacer"/>'; 
                //if we're not on page 1 we can place a back button ^_^
                if ($pn != 1) {
                    $previous = $pn - 1;
                    $paginationDisplay .= '&nbsp; <a href="'.$_SERVER['PHP_SELF'].'?pn='.$previous.'"> Back </a>';  
                }
                //Lay in the clickable numbers display here between the back and next links ^_^.
                $paginationDisplay .='<span class="paginationNumbers">'.$centerPages.'</span>';
                //If we're not on the very last page, a next button is placed :-
                if ($pn != $lastPage) {
                    $nextPage = $pn +1;
                    $paginationDisplay .= '&nbsp; <a href="'.$_SERVER['PHP_SELF'].'?pn='.$nextPage.'"> Next </a>';  
                }
        }       
?>

これは、表示方法をフォーマットするページネーション表示に加えて、すべてのページネーション規則とロジックを含む最初のファイルです..問題自体に移ります..

上記のファイルを、データを表示したいメイン ファイルに含めました (ヒント: 前のクエリのデータベースには 23 エントリがあり、numrows が 23 エントリを表示することをテストしました)。データベースには 23 のエントリがあり、id、title、text の 3 つのフィールドがあります。title はおそらくヘッダーであり、text は取得する各 FAQ の本文です。問題が発生する可能性のあるコードは次のとおりです。 -

            <div class="FAQWrapper">
            <?php 
                include ('content/FAQ-content.php');
                $output1='';
                $output2='';
                while ($row = mysql_fetch_array($FAQ_query2)) {
                    $title = $row['title'];
                    $text = $row['text'];
                    $output ='<div class="FAQInstance">
                    <div class="FAQHeader"><h2>'.$title.'</h2></div><div class="FAQDetails"><p>'.$text.'</p></div></div>';
                    //$output2 ='<div class="FAQDetails"><p>'.$text.'</p></div>';
                }
             ?>
        <!--FAQ Instance Start-->
            <?php echo $output; ?>
            <!--FAQ Header Start-->
            <!--FAQ Header Ends-->
            <!--FAQ Details Start-->
            <!--FAQ Details Ends-->
        <!--FAQ Instance Ends-->
        <!--Pagination Display Start-->
        <div style="margin-left:58px; margin-right:58px; padding:6px; background-color:#FFF; border:#999 1px solid; float:right;"><?php echo $paginationDisplay; ?></div>
        <!--Pagination Display Ends-->
    </div>
    <!-- FAQ Content Ends-->

私が得ている は:

私がやろうとしているのは、ページごとに5つのアイテムを表示することです..それらはdivに分割されます.FAQラッパーは、同じレベルに2つのネストされたdivを保持する大きなラッパーであり、ヘッダーdivと詳細div..ヘッダーがタイトルを取ります詳細はデータベース内のテキストを取得し、それをヘッダーに関連付けます..それが私がやりたいすべてです..

私はあなたの助けに本当に感謝しています..これまでに提供した大量の情報に加えて、何か情報が必要な場合はお知らせください.

4

2 に答える 2

-1

あなたはmysqliを使うことができます、コードは以下にあります

$conn=mysqli_connect("localhost","root","","ui");


$start=0;
$limit=5;

  $t=mysqli_query($conn,"select * from form_table");
  $total=mysqli_num_rows($t);



   if(isset($_GET['id']))
   {
        $id=$_GET['id'] ; 
                        $start=($id-1)*$limit;

                          }
            else
            {
        $id=1;
 }
    $page=ceil($total/$limit);

   $query=mysqli_query($conn,"select * from form_table limit $start,$limit");
 ?>
 <!DOCTYPE html>
<html>
<head>
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <link rel="stylesheet"                    href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script s        src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js">     </script>
 <script                      src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js">              </script>
  </head>         
 <body>

<div class="container">
 <h2>Table</h2>
    <table class="table table-bordered">
    <thead>
      <tr>
       <th>Id</th>
         <th>Name</th>
       <th>Gender</th>


<th>Hobbies</th>
<th>Course</th>
 </tr>
 </thead>
 <tbody>

 <?php
    while($ft=mysqli_fetch_array($query))
 {?>
 <tr>
 <td><?= $ft['0']?></td>
 <td><?= $ft['1']?></td>
 <td><?= $ft['2']?></td>
 <td><?= $ft['3']?></td>
 <td><?= $ft['4']?></td>
 </tr>
 <?php
 }

  ? >


    </tbody>
    </table>
    <ul class="pagination">
       <?php if($id > 1) {?> <li><a href="?id=<?php echo ($id-1) ?              >">Previous</a></li><?php }?>
     <?php
     for($i=1;$i <= $page;$i++){
    ?>
    <li><a href="?id=<?php echo $i ?>"><?php echo $i;?></a></li>
   <?php
   }
   ?>
 <?php if($id!=$page)

  {?> 
于 2017-04-10T12:05:09.833 に答える