Query database by parts

2

I'm looking for a way to make my database show up in parts. That is, first the first 10 rows, by pressing a button, make a query with the other 10, and so on until the end. I have searched the internet and I have only found the LIMIT claus, which allows me to show the first 10. But from there, how do I show you the 10 that follow?

    
asked by Facundo Curti 12.09.2016 в 01:08
source

2 answers

3

According to the documentation of MYSQL , you can pass two arguments to LIMIT where the first indicates the distance to the first record of your table and the second the number of records.

SELECT * FROM tbl LIMIT 5,10;  # Devuelve 10 registros a partir de la 6

In your particular case it would be:

SELECT * FROM tb1 LIMIT 10,10;
    
answered by 12.09.2016 / 01:20
source
0
  

Is not your question very clear? But I think you're trying to create a pagination of products or content?

Creating a page is more feasible much better. This way you can show 10 products and then show 10 more and so on until you reach the end of the database records.

//$registros nos entrega la cantidad de registros a mostrar.
$registros = 10;

//$contador como su nombre lo indica el contador.   
$contador = 1;

/**
 * Se inicia la paginación, si el valor de $pagina es 0 le asigna el valor 1 e $inicio entra con valor 0.
 * si no es la pagina 1 entonces $inicio sera igual al numero de pagina menos 1 multiplicado por la cantidad de registro
 */
if (!$pagina) { 
$inicio = 0; 
$pagina = 1; 
} else { 
$inicio = ($pagina - 1) * $registros; 
} 
?>
<!-- Se crea la tabla que mostrara los datos tabulados -->
<table>
    <caption>Registros</caption>
    <thead>
        <tr>
            <th>#</th>
            <th>Nombre</th>
            <th>Ciudad</th>
            <th>Pais</th>
            <th>Continente</th>
        </tr>
    </thead>        
    <tbody> 
        <?php
        /**
         * Se inicia la consulta donde seleccionamos todos los campos de la tabla personas, pero donde isActive = 1, esto lo hacemos para el manejo
         * de registros si están activos o no.
         */
        $resultados = mysqli_query($conn,"SELECT * FROM personas WHERE isActive = '1'");

        //Contamos la cantidad de filas entregadas por la consulta, de esta forma sabemos cuantos registros fueron retornados por la consulta.
        $total_registros = mysqli_num_rows($resultados); 

        //Generamos otra consulta la cual creara en si la paginación, ordenando y creando un límite en las consultas.
        $resultados = mysqli_query($conn,"SELECT * FROM personas WHERE isActive = '1' ORDER BY Nombre ASC LIMIT $inicio, $registros");  

        //Con ceil redondearemos el resultado total de las paginas 4.53213 = 5
        $total_paginas = ceil($total_registros / $registros);                   

        // Si tenemos un retorno en la variable $total_registro iniciamos el ciclo para mostrar los datos.
        if ($total_registros) {
            while ($personas = mysqli_fetch_array($resultados, MYSQLI_ASSOC)) {
            ?>      
                <!-- Muestra de Datos usando el comodin <?=$variable; ?> es lo mismo que <?php echo $variable; ?> -->
                <tr>
                    <td><?=$contador;?></td>    
                    <td><?=$personas["Nombre"];?></td>
                    <td><?=$personas["Ciudad"];?></td>
                    <td><?=$personas["Pais"];?></td>
                    <td><?=$personas["Continente"];?></td>
                </tr>       

                <?php           
                /**
                 * La variable $contador es la misma que iniciamos arriba con valor 1, en cada ciclo sumara 1 a este valor.
                 * $contador sirve para mostrar cuantos registros tenemos, es mas que nada una guía.
                 */
               $contador++;
            }       
         } else {
          echo "<font color='darkgray'>(sin resultados)</font>";
        }

        mysqli_free_result($resultados);    
        ?>
    </tbody>
</table>

<div>   
    <?php
    if ($total_registros) {
        /**
         * Acá activamos o desactivamos la opción "< Anterior", si estamos en la pagina 1 nos dará como resultado 0 por ende NO
         * activaremos el primer if y pasaremos al else en donde se desactiva la opción anterior. Pero si el resultado es mayor
         * a 0 se activara el href del link para poder retroceder.
         */
        if (($pagina - 1) > 0) {
            echo "<a href='paginacion.php?pagina=".($pagina-1)."'>< Anterior</a>";
        } else {
            echo "<a href='#'>< Anterior</a>";
        }

        // Generamos el ciclo para mostrar la cantidad de paginas que tenemos.
        for ($i = 1; $i <= $total_paginas; $i++) {
            if ($pagina == $i) {
                echo "<a href='#'>". $pagina ."</a>"; 
            } else {
                echo "<a href='paginacion.php?pagina=$i'>$i</a> "; 
            }   
        }

        /**
         * Igual que la opción primera de "< Anterior", pero acá para la opción "Siguiente >", si estamos en la ultima pagina no podremos
         * utilizar esta opción.
         */
        if (($pagina + 1)<=$total_paginas) {
            echo "<a href='paginacion.php?pagina=".($pagina+1)."'>Siguiente ></a>";
        } else {
            echo "<a href='#'>Siguiente ></a>";
        }        
    }
    ?>  
</div> 

<?php
    // Cerramos conexión con MySQLi.
    mysqli_close($conn);
?>
    
answered by 12.09.2016 в 02:02