2016-07-08 4 views
-1

Ich erstelle eine dynamische Tabelle und ich möchte benutzerdefinierte Auswahloption für die Datensätze pro Seite haben. Ich sehe auf einer Website, aber es muss nicht wählen Sie die Option für SeitenSeitenumbruch Datensätze pro Seite in Option

Meine Idee ist es wie folgt aus:

Ich möchte die $per_page zu einem PHP-Tag ändern, aber es gibt mir einen Fehler, wenn ich benutze $_GET und $_POST .. dank für die Hilfe

<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> 

Antwort

0

Sie müssen ein Formular und ein PHP-Code, der den übermittelten Wert erhalten wird. Versuchen Sie diesen Code aus

<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; 
        } 
      } 
     } 
+0

die Option funktioniert, aber wenn ich auf die Seitenzahlen klicke, gehen die Ergebnisse zurück auf 30 pro Zeile Dank – rcpd

+0

Ich verstehe nicht ganz, was Sie sagen. Können Sie Ihr Problem etwas besser erklären? – b0ne

+0

die Option funktioniert und die Anzahl der Zeilen ändert sich jetzt, aber wenn ich auf die nächste Seite klicke, zum Beispiel 1 [2] 3 4 5. Die Anzahl der Zeilen kehrt zum Wert von 30 statt des gewählten Wertes zurück. danke – rcpd

0
<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; 

Sie brauchen nur 'name' Attribut im Element hinzuzufügen. und Bedingung für "Aufzeichnungen" hinzufügen. Bitte benutzen Sie dieses. Dein Problem wird gelöst.

Wenn Sie die POST-Methode verwenden, verwenden Sie die $ _POST-Methode unter Bedingung.

+0

Dank aber es ist nicht :( – rcpd

+0

arbeiten, die Fehler, den Sie bekommen – Hardik

+0

die Anzahl der Seiten ändern tut – rcpd

Verwandte Themen