entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

sistema de paginacion defectuoso

hola muy buenas a todos, entonces tengo en mi index un formulario dinamico con un menu desplegable con varias opciones y en base a la opcion seleccionada muestra otro menu dropdown, bueno el caso es que siguiendo determinadas opciones se llega a un punto de buscar un texto y elegir entre varias opciones de checkbox, funciona como un motor de busqueda para que me puedan entender mejor. bueno el caso, el form hace el envio con post, estos datos los recupero en el mismo fichero index, y luego los guardo en una variable, luego teniendo en cuenta estas variables, defino otra funcion y dentro llamo a mis variables con global variables, luego ahi en esa funcion defino otra funcion o subfuncion y como parametros le meto mis variables que previamente habia globalizado.

esta subfuncion llamada pager lo que hace es contar los resultados producidos de la busqueda y en base a la cantidad hacer algo, la funcion principal es dividir los resultados por paginas, tramite un bucle for creo las paginas enumeradas y a cada numero de pagina se les identifica por medio de get.

el problema es el siguiente, si alguien por primera vez efectua una busqueda que por ejemplo conlleva 100 resultados, la primera vez me devuelve los primeros 5 resultados y luego me muestra una barra con numeros corresponidentes al numero de paginas, visto que cada pagina lleva un enlaze get de la misma pagina index, cuando yo quiera avanzar de pagina deberia mostrarme los siguientes 5 resultados pero por algun error no me muestra nada, me devuelve solo el formulario, y a pesar que en la url ya me indica que me encuentro en tal pagina, aunque
espero que me puedan entender, les adjunto un link que conlleva el codigo fuente
https://hastebin.com/equyupubov.xml?fbclid=IwAR1b14m-afHXkiAJvE_kBUP5Wh2XXJXf0HVIob-Tks0wracrFuvgnLE0m-w


<?php
// ./INDEX.PHP
session_start(); include("./head.php"); include("./body/homepage.php");
if(isset($_POST)){
  $techs = [];
  if(isset($_POST['titlevideo'])){
    $tv = $_POST['titlevideo'];
  }
  foreach($_POST as $checkbox => $val ){
    if($val == "on"){
      $techs[] = $checkbox;
    }
  }
  $techs = implode(",", $techs);
  $_SESSION['techs'] = $techs;
  $_SESSION['tv'] = $tv;
  include("procesor2.php");
}
elseif(isset($_GET)){
echo "get";
$techs = $_SESSION['techs'];
$tv = $_SESSION['tv'];
include("procesor2.php");
}

?>

<?php
// ./procesor2.php
include("conn.php");
$table = 'videos';

function getdata(){
    global $table;
    global $conex;
    global $data;
    global $tv;
    global $techs;
    //global $iframe;
    $sql = "SELECT * FROM $table WHERE title LIKE '%$tv%' AND technologies='$techs'";
    //$recordsTotal = mysqli_num_rows(mysqli_query($conex, $sql)); 

    include("pager.php"); //function pager($conex, $table, $sql, $tv, $techs)
    pager($conex, $table, $sql, $tv, $techs);

    //print($recordsTotal); //26

}
getdata();

?>

<?php

// ./pager.php
function pager($conex, $table, $sql, $tv, $techs){

  $recordsTotal = mysqli_num_rows(mysqli_query($conex, $sql));
  $numeroResult = 5;
  $numeroPaginas = ceil($recordsTotal/$numeroResult); //var 17

  $pagsviews = 10;
  $index = 0;

  function getrecords($conex, $sql, $tv, $techs, $index){

    $result = mysqli_query($conex, $sql);
    while($regs = mysqli_fetch_assoc($result)){
      print($regs["titlevideo"])."<br>";
      print($regs["iframe"])."<br>";
    }
  }
//------------------------------------------------------
//<IF-1>
  if($recordsTotal >10){
// 3 subif

//-----------------------------------------------------------------
//<SUB-IF1>
//<!isset>
    if(!isset($_GET['page'])){
    $sql = "SELECT * FROM $table WHERE title LIKE '%$tv%' AND technologies='$techs' LIMIT 5 ";

    getrecords($conex, $sql, $tv, $techs, $index);

      if($numeroPaginas <= 10){
        print("<ul class='pagination'>");

        for($i=1; $i<=$numeroPaginas; $i++){
          print("<li><a href='index.php?page=$i'>".$i."</a></li>");
        }
        print("</ul><br>");

      }

      elseif($numeroPaginas>10) {

        # code...
        print("<ul class='pagination'>");

        for($i=1; $i<=10; $i++){
          print("<li><a href='index.php?page=$i'>".$i."</a></li>");
        }
        print("</ul><br>");

      }

    // ------------------------------------------------------------
    print("<script type='text/javascript'>
      ulpag = document.querySelector('.pagination');
      li = ulpag.childNodes;
      li[0].setAttribute('class', 'active');
      </script>");

  }
  //</SUB-IF1>
//--------------------------------------------------------------------------

//--------------------------------------------------------------
//</!isset>

    //<SUB-IF2>
    if(isset($_GET['page'])){
    echo $_GET['page']."<br>";
    echo $pagsviews;
//------------------------------------------------------------
      //<SUB-IF>
      //<page <10>
      if($_GET['page']<$pagsviews){
        $i = 1;
      }

      //</SUB-IF>
//-----------------------------------------------------------
      //<SUB-IF>
      //</page <10> $i=1

     //<page > 10>
//----------------------------------------------------------------

      if($_GET['page']>$pagsviews){

        $pagsviews = (string)$_GET['page'];
        $pagsviews = str_split($pagsviews);
        $pagsviews = (int)$pagsviews[1];

        $i = ($_GET['page'] - $pagsviews)-1;

        $pagsviews = $_GET['page'] + (10 - $pagsviews);

        //<SUB-IF>
        //<10 > numeropaginas>
        if($pagsviews>$numeroPaginas){

          $pagsviews = $numeroPaginas;
        }
        //</ 10 > numeropaginas> : 10 = numeropaginas
        //</SUB-IF>
      }

//--------------------------------------------------------------------------------
//</page > 10>

    //</SUB-IF>

      // SUB IF2

      // SUB IF2 SUB IF3
//--------------------------------------------------------------------------

     //<page % 10 == 0> 
      if($_GET['page'] % $pagsviews == 0){

        $i = $_GET['page']-1;
        $pagsviews = $_GET['page'] + $pagsviews;
//----------------------------------------------------------
        //<10 > numeropaginas>
        if($pagsviews>$numeroPaginas){
          $pagsviews = $numeroPaginas;
        }
        //</10> numeropaginas>
//--------------------------------------------------------------
      }
      //</page % 10 ==0>

      $page = $_GET['page'];
      $index = ($page * 5)-5;

      $sql = "SELECT * FROM $table WHERE title LIKE '%$tv%' AND technologies='$techs' LIMIT $index, 5 ";
      getrecords($conex, $sql, $tv, $techs, $index);   //END IF2 SUB IF3
//-------------------------------------------------------------------------------------
      print("<ul class='pagination'>");

      for($i; $i<=$pagsviews; $i++){
        print("<li><a href='index.php?page=$i'>".$i."</a></li>");
      }
      print("</ul><br>");
//----------------------------------------------------------------------
      print("<script type='text/javascript'>
        ulpag = document.querySelector('.pagination');
        li = ulpag.childNodes;
        for(var i=0; i<li.length; i++){
          console.log(i);
            if(li[i].children[0].innerText == $page){
                li[i].setAttribute('class', 'active');
            }
        }
        </script>");

//----------------------------------------------------------------------

    }
  }
  else {
    $sql = "SELECT * FROM $table WHERE title LIKE '%$tv%' AND technologies='$techs'  LIMIT $index, 5 ";

    $result = mysqli_query($conex, $sql);
    while($regs = mysqli_fetch_assoc($result)){
      print($regs["titlevideo"])."<br>";
      print($regs["iframe"])."<br>";

    }
  }
}
?>

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta