Filtrare cu paginare

Secţiune dedicată începatorilor.

Moderatori: Moderatori, Start Moderator

madXimus
New Member
Mesaje: 1
Membru din: Vin Mai 04, 2018 2:05 pm

Filtrare cu paginare

Mesajde madXimus » Mar Mai 08, 2018 4:11 pm

Salutare!

Sunt un (foarte) incepator si de curand am inceput scrierea unui cod simplu PHP care sa introduca si sa scoata niste date intr-o BD MySql. Cu ajutorul domnului Google si a fratelui Youtube, in prezent, pot introduce si afisa continutul in/ din BD prin intermediul unui form care ma ajuta si sa filtrez continutul afisat. Problema mea este generata de posibilitatea existentei, la un moment dat, al unui volum foarte mare de inregistrari, afisate simultan in pagina. Din acest motiv, sunt in cautarea unei solutii pentru afisarea inregistrarilor pe mai multe pagini astfel incat codul sa fie in continuare functional corect.

Momentan m-am impotmolit de cateva zile, codul afiseaza corect doar prima pagina, urmatoarele fiind goale. Multumesc anticipat!

Cod: Selectaţi tot

<!DOCTYPE html>
<html>
   <head>
      <meta charset="ISO-8859-1">
          <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
      <title>Insert title here</title>
      <link href="search.css" rel="stylesheet">
   </head>

<body>
   <?php include "conectare2.php";?>
<!-- Filtre stanga Start -->

   <div class="Top">Top Content</div>
   
   <div class="Container">
        <div class="Left">
         <label><b>Cautare Masina:</b></label>
         <form id="cautare1" action="cautare_auto.php" method="post">
            <input type="text" name="auto_numar" value="" placeholder="Introdu numar auto" size="28">
            <input type="submit" name="cauta" value="cauta">
         </form>
         
         <label> <font size="5"><b>Cautare Avansata:</b></font></label>
         <form id="cautare" action="cautare_auto.php" method="post">
            <label><b>Perioada:</b></label><br>
            <input type="checkbox" name="data1" value="7">Ultimele 7 zile<br>
            <input type="checkbox" name="data2" value="30"  onchange="document.getElementById('submit').submit()">Ultima luna<br>
            <input type="checkbox" name="data3" value="90"  onchange="document.getElementById('submit').submit()">Ultimele 3 luni<br>
            <input type="checkbox" name="data4" value="120"  onchange="document.getElementById('submit').submit()">Ultimele 6 luni<br>
            <input type="checkbox" name="data5" value="360"  onchange="document.getElementById('submit').submit()">Ultimele 12 luni<br><br>

<!-- Container CLIENT inchis/ deschis -->
            <div class="container">
               <div class="panel-group">
                  <div class="panel panel-default">
                     <div class="panel-heading">
                        <h4 class="panel-title">
                        <a data-toggle="collapse" href="#collapse1">▼ <label><b>Client:</b></label></a>
                        </h4>
                     </div>
                     <div id="collapse1" class="panel-collapse collapse">
                        <div class="panel-body">
                           <input type="checkbox" name="auto_client[]" value="Client1">Client1<br>
                           <input type="checkbox" name="auto_client[]" value="Client2">Client2<br>
                           <input type="checkbox" name="auto_client[]" value="Client3">Client3<br>
                           <input type="checkbox" name="auto_client[]" value="Client4">Client4<br>
                        </div>
                     </div>
                  </div>
               </div>
            </div>
            
<!-- End container -->

<!-- Container Rezolutie inchis/ deschis -->
            <div class="container">
               <div class="panel-group">
                  <div class="panel panel-default">
                     <div class="panel-heading">
                        <h4 class="panel-title">
                        <a data-toggle="collapse" href="#collapse5">▼ <label><b>Stare:</b></label></a>
                        </h4>
                     </div>
                     <div id="collapse5" class="panel-collapse collapse">
                        <div class="panel-body">
                           <input type="checkbox" name="auto_stare[]" value="Stare1">Stare1<br>
                           <input type="checkbox" name="auto_stare[]" value="Stare2">Stare2<br>
                           <input type="checkbox" name="auto_stare[]" value="Stare3">Stare3
                        </div>
                     </div>
                  </div>
               </div>
            </div>
<!-- End container -->

<!-- Container CAUZA inchis/ deschis -->
            <div class="container">
               <div class="panel-group">
                  <div class="panel panel-default">
                     <div class="panel-heading">
                        <h4 class="panel-title">
                        <a data-toggle="collapse" href="#collapse6">▼ <label><b>Cauza:</b></label></a>
                        </h4>
                     </div>
                     <div id="collapse6" class="panel-collapse collapse">
                        <div class="panel-body">
                           <input type="checkbox" name="auto_cauza[]" value="Cauza1">Cauza1<br>
                           <input type="checkbox" name="auto_cauza[]" value="Cauza2">Cauza2<br>
                           <input type="checkbox" name="auto_cauza[]" value="Cauza3">Cauza3<br>
                           <input type="checkbox" name="auto_cauza[]" value="Cauza4">Cauza4<br>
                           <input type="checkbox" name="auto_cauza[]" value="Cauza5">Cauza5
                        </div>
                     </div>
                  </div>
               </div>
            </div>
<!-- End container -->

<!-- Container STATUS inchis/ deschis -->
            <div class="container">
               <div class="panel-group">
                  <div class="panel panel-default">
                     <div class="panel-heading">
                        <h4 class="panel-title">
                        <a data-toggle="collapse" href="#collapse2">▼ <label><b>Status:</b></label></a>
                        </h4>
                     </div>
                     <div id="collapse2" class="panel-collapse collapse">
                        <div class="panel-body">
                           <input type="checkbox" name="auto_status[]" value="Status1">Status1<br>
                           <input type="checkbox" name="auto_status[]" value="Status2">Status2<br>
                           <input type="checkbox" name="auto_status[]" value="Status3">Status3
                        </div>
                     </div>
                  </div>
               </div>
            </div>
<!-- End container -->

         
            <input type="submit" name="submit" value="submit">
         </form>

      </div>
<!-- Filtre stanga END -->

       
       
       
<!-- Continut dreapta Start -->
        <div class="Right">
   <br>
      
<?php
// Filter query.
    $sql= "SELECT data, auto_client, auto_numar, auto_status, auto_stare, auto_cauza FROM autos where data like '2018%'";

            if (isset($_GET['pageno'])) {
            $pageno = $_GET['pageno'];
            echo "numarul paginii: ";
            echo $pageno;
         } else {
            $pageno = 1;
            echo "numarul paginii: ";
            echo $pageno;
         }   
         $no_of_records_per_page =2;
         $offset = ($pageno-1) * $no_of_records_per_page;
         $total_pages_sql = "SELECT COUNT(*) FROM autos where 1=1";
         
   if (isset($_POST["submit"])) {
      
         $date = date('Y-m-d H:i:s');
         
            if(isset($_POST['data1']) && $_POST['data1']!="") {
               $data1 = $_POST['data1'];
               $sql.=" AND data >= DATE(NOW()) + INTERVAL - $data1 DAY AND data <= DATE(NOW()) + INTERVAL 0 DAY";
            }
   
            if(isset($_POST['data2']) && $_POST['data2']!="") {
               $data2 = $_POST['data2'];
               $sql.=" AND data >= DATE(NOW()) + INTERVAL - $data2 DAY AND data <= DATE(NOW()) + INTERVAL 0 DAY";
            }
   
            if(isset($_POST['data3']) && $_POST['data3']!="") {
               $data3 = $_POST['data3'];
               $sql.=" AND data >= DATE(NOW()) + INTERVAL - $data3 DAY AND data <= DATE(NOW()) + INTERVAL 0 DAY";
            }

            if(isset($_POST['data4']) && $_POST['data4']!="") {
               $data4 = $_POST['data4'];
               $sql.=" AND data >= DATE(NOW()) + INTERVAL - $data4 DAY AND data <= DATE(NOW()) + INTERVAL 0 DAY";
            }
   
            if(isset($_POST['data5']) && $_POST['data5']!="") {
               $data5 = $_POST['data5'];
               $sql.=" AND data >= DATE(NOW()) + INTERVAL - $data5 DAY AND data <= DATE(NOW()) + INTERVAL 0 DAY";
            }
      
            if(isset($_POST['auto_client']) && $_POST['auto_client']!="") {
               $auto_client = $_POST['auto_client'];
               $sql.=" AND auto_client IN ('".implode("','",$auto_client)."')";
               $total_pages_sql.=" AND auto_client IN ('".implode("','",$auto_client)."')";
            }
   
            if(isset($_POST['auto_status']) && $_POST['auto_status']!="") {
               $auto_status = $_POST['auto_status'];
               $sql.=" AND auto_status IN ('".implode("','",$auto_status)."')";
               $total_pages_sql.=" AND auto_status IN ('".implode("','",$auto_status)."')";
            }
   
            
            if(isset($_POST['auto_stare']) && $_POST['auto_stare']!="") {
               $auto_stare = $_POST['auto_stare'];
               $sql.=" AND auto_stare IN ('".implode("','",$auto_stare)."')";
            }
   
            if(isset($_POST['auto_cauza']) && $_POST['auto_cauza']!="") {
               $auto_cauza = $_POST['auto_cauza'];
               $sql.=" AND auto_cauza IN ('".implode("','",$auto_cauza)."')";
            }


         $res_data = mysqli_query($conn,$total_pages_sql);
         $total_rows = mysqli_fetch_array($res_data)[0];
         $total_pages = ceil($total_rows / $no_of_records_per_page);
         echo "<br>";
         echo "numar inregistrari in BD:";
         print_r($total_rows);
         echo "<br>";
         echo "offset:";
         print_r($offset);
         echo "<br>";
         echo " nr pagini:";
         print_r($total_pages);
         $sql.=" LIMIT $offset, $no_of_records_per_page";

   
         print_r($sql);
         echo "<br>";
         if($result = mysqli_query($conn, $sql)){
            if(mysqli_num_rows($result) > 0){
               echo "<table border=1>";
                  echo "<tr>";
                     echo "<th>Data, Ora</th>";
                     echo "<th>Numar</th>";
                     echo "<th>Client</th>";
                     echo "<th>Stare</th>";
                     echo "<th>Info</th>";
                     echo "<th>Status</th>";
                  echo "</tr>";
               while($row = mysqli_fetch_array($result)){
                  echo "<tr>";
                     echo "<td>" . $row['data'] . "</td>";
                     echo "<td>" . $row['auto_numar'] . "</td>";
                     echo "<td>" . $row['auto_client'] . "</td>";
                     echo "<td>" . $row['auto_stare'] . "</td>";
                     echo "<td>" . $row['auto_cauza'] . "</td>";
                     echo "<td>" . $row['auto_status'] . "</td>";
                  echo "</tr>";
               }
               echo "</table>";
                                      
                                 for($i=1;$i<=$total_pages;$i++) {
                            echo "<a href=cautare_auto.php?pageno=".$i.">".$i."</a>";
                        }
               // Free result set
               mysqli_free_result($result);
            } else{
               echo "No records matching your query were found.";
            }
         } else{
            echo "ERROR: Could not able to execute $sql. " . mysqli_error($conn);
         }
      
// Close connection
mysqli_close($conn);

   }   

?>
 </div>
<!-- Filtre dreapta END -->
    </div>


</body>
</html>



Înapoi la “PHP Incepători”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 25 vizitatori