【问题标题】:Pagination records per page in select option选择选项中每页的分页记录
【发布时间】:2016-07-08 21:56:33
【问题描述】:

我正在创建一个动态表,并且我希望为每页记录有自定义选择选项。我在一个网站上查看,但它没有页面选择选项

我的想法是这样的:

我想将 $per_page 更改为 PHP 标记,但如果我使用 $_GET 和 $_POST.. 感谢您的帮助

<form method="GET">
 <select id="records" name="records"> 
            <option value="10">10</option>
                <option value="20">20</option>
            <option  value="30">30</option>
            <option  value="40">Mostra tutti</option>
            </select><li>
            <li><input type = "submit" class = button2 name = "btnsubmit"></li>
            </form>
 </ul></nav> 

<?php
$page_name="admin_list.php";
$per_page = 10 ;

      if ($result = $con->query("SELECT * FROM clienti  WHERE utenza =1  OR utenza =0 ORDER BY es_insegna_esercizio"))
      {

      if ($result->num_rows != 0)
      {
      $total_results = $result->num_rows;
      // ceil() returns the next highest integer value by rounding up value if necessary

      $total_pages = ceil($total_results / $per_page);

      // check if the 'page' variable is set in the URL (ex: view-paginated.php?page=1)
      if (isset($_GET['page']) && is_numeric($_GET['page']))
      {
      $show_page = $_GET['page'];

      // make sure the $show_page value is valid
      if ($show_page > 0 && $show_page <= $total_pages)
      {
      $start = ($show_page -1) * $per_page;
      $end = $start + $per_page;
      }
      else
      {
      // error - show first set of results
      $start = 0;
      $end = $per_page;
      }
      }
      else
      {
      // if page isn't set, show first set of results
      $start = 0;
      $end = $per_page;
      }

      echo "<table id='my_table' class='tables' name ='tablename'>";

          echo "

          <thead><tr>
                    <th></th>
                    <th>
                <input type = checkbox >
                    </th>
                    <th>Azienda</th>
                     <th>Utente</th>
                     <th>Cognome</th>

          </tr></thead>
              " ;

          // loop through results of database query, displaying them in the table
          for ($i = $start; $i < $end; $i++){
          // make sure that PHP doesn't try to show results that don't exist
          if ($i == $total_results) { break; }
          // find specific row
          $result->data_seek($i);
          $row = $result->fetch_row();
          // echo out the contents of each row into a table
          echo "<tr>";

              echo '<td><img src ="images/edit_icon.png"class = "autoResizeImage" onclick="JavaScript:newPopup(\'admin_edit.php?id='.$row['0'].'\')" /></td>';
              echo '<td><input type=checkbox name=chk[] class= chk-box value='.$row[0].'/></td>';
              echo '<td>' . $row[14] . '</td>';
              echo '<td>' . $row[2]. '</td>';
              echo '<td>' . $row[3] . '</td>';
              echo '<td>' . $row[4] . '</td>';

              echo "</tr>";
          }
          // close table>
          echo "</table></form>";  
      }
      else{
      echo "No results to display!";
      }
      }
      // error with the query
      else{
      echo "Error: " . $con->error;
      }
    echo "<p> 
 <b>View Page: </b>";
    for ($i = 1; $i <= $total_pages; $i++){
    if (isset($_GET['page']) && $_GET['page'] == $i){
    echo  $i;
    }
    else{
    echo "<a href='admin_list.php?page=$i'>$i</a> ";
    }
    }  

    echo "</p>";
    // close database connection
      $con->close();

?>
</form>

</div>

【问题讨论】:

    标签: php pagination


    【解决方案1】:

    您需要一个表单和一个 PHP 代码来获取提交的值。试试这段代码

    <form method="GET">
          <select name="records"> 
                <option value="1">1</option>
                <option value="2">2</option>
                <option value="3" selected>3</option>
                <option value="4">4</option>
          </select>
          <input type="submit" name="submit" value="Submit">
    </form>
    <?php
          $per_page = 30 ;
    
          if(isset($_GET['submit']) && !empty($_GET['records']) && preg_match("/^[0-9]+$/", $_GET['records'])) {
          /* Is the form submitted + is the records set + is the records an integer*/
                $per_page = $_GET['records'];
          }
    
          if($result = $con->query("SELECT * FROM clienti  WHERE utenza = 1 OR utenza = 0 ORDER BY es_insegna_esercizio")) {
                if($result->num_rows != 0) {
                      $total_results = $result->num_rows; // How many records do we have?
                      $total_pages = ceil($total_results / $per_page); // How many pages do we have?
    
                      if(!empty($_GET['page']) && preg_match("/^[0-9]+$/", $_GET['page']) && $_GET['page'] <= $total_pages) {
                      /* is the page set + is it an integer + is it <= of total pages*/
                            $show_page = $_GET['page'];
                            $start = ($show_page -1) * $per_page;
                            $end = $start + $per_page;
                      }  else {
                            $start = 0;
                            $end = $per_page;
                      }
                }
          }
    

    【讨论】:

    • 该选项有效,但如果我单击页码,结果将返回每行 30 个,谢谢
    • 我不太明白你在说什么。你能更好地解释你的问题吗?
    • 该选项有效并且行数现在发生变化,但是当我单击下一页例如 1 [2] 3 4 5. 行数返回到默认的每页值 30的选定值。谢谢
    • 好的,我已经更新了我的代码。现在只需将 $_GET['records'] 参数添加到页码链接。如果您不明白我的意思,只需使用 1 [2] 3 4 5 的代码更新您的问题
    • 我用视图页面更新了旧代码。非常感谢
    【解决方案2】:
     <select id="records" name="records"> 
            <option  value="10">10</option>
            <option  value="20">20</option>
            <option  selected value="30">30</option>
            <option  value="40">40</option>
            </select>
            <input type = "submit" name = "record">
    
     $per_page = 30 ;
    
     if(isset($_GET["records"]) && $_GET["records"] > 0)
     {
         $per_page = $_GET["records"] ;     
     }
    
    
      if ($result = $con->query("SELECT * FROM clienti  WHERE utenza =1 OR utenza =0 ORDER BY es_insegna_esercizio"))
      {
    
      if ($result->num_rows != 0)
      {
      $total_results = $result->num_rows;
      // ceil() returns the next highest integer value by rounding up value if necessary
    
      $total_pages = ceil($total_results / $per_page);
    
      // check if the 'page' variable is set in the URL (ex: view-paginated.php?page=1)
      if (isset($_GET['page']) && is_numeric($_GET['page']))
      {
      $show_page = $_GET['page'];
    
      // make sure the $show_page value is valid
      if ($show_page > 0 && $show_page <= $total_pages)
      {
      $start = ($show_page -1) * $per_page;
      $end = $start + $per_page;
      }
      else
      {
      // error - show first set of results
      $start = 0;
      $end = $per_page;
      }
      }
      else
      {
      // if page isn't set, show first set of results
      $start = 0;
      $end = $per_page;
    

    你只需要在元素中添加'name'属性。并为“记录”添加条件。请使用这个。您的问题将得到解决。

    另外,如果您使用 'POST' 方法,则在条件下使用 $_POST 方法。

    【讨论】:

    • 页数不变
    • 你能给我你的剧本吗?我的意思是你的代码带有
      标签
    • 表格>
    • form> 您需要更改提交按钮的“名称”属性。使用这个..另外,我修改了代码。请检查这个
    猜你喜欢
    • 2012-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-03
    相关资源
    最近更新 更多