Foros del Web » Programando para Internet » PHP »

Mostrar un número máximo de entradas MySQL

Estas en el tema de Mostrar un número máximo de entradas MySQL en el foro de PHP en Foros del Web. Hola a todos, estoy haciendo una web donde se podrán editar y borrar contenidos de una tabla de una base de datos. En esta web, ...
  #1 (permalink)  
Antiguo 11/11/2015, 08:14
 
Fecha de Ingreso: noviembre-2015
Ubicación: Valencia
Mensajes: 20
Antigüedad: 9 años
Puntos: 0
Información Mostrar un número máximo de entradas MySQL

Hola a todos, estoy haciendo una web donde se podrán editar y borrar contenidos de una tabla de una base de datos.
En esta web, debe aparecer en varios divs idénticos (tantos como registros hay en la base de datos) el "Titulo" y la "Descripción" de cada registro. Cada div además, tendrá dos botones, uno para modificar (que llevará a otra página con un formulario para editar) y otro para eliminar ese registro.

Por otra parte, no quiero que se muestren todos de golpe, ya que si hubiera 500 registros, sería demasiados. He pensado cargarlos de 5 en 5, de manera que, la primera vez que se accede a la página se cargan 5 y después, si se necesita mostrar más se irá pulsando un botón en la parte inferior de la pantalla que mostrará 5 más cada vez que sea pulsado.

Por si no queda claro, lo que quiero hacer se asemeja mucho al funcionamiento de Twitter, en los TimeLines aparecen X tweets, y cuando desplazan hacia abajo y ya no hay ninguno más cargado, se cargan más automáticamente, pues lo que yo quiero hacer es igual, pero sin que sea automáticamente, sería pulsando un botón.

He creado un código en PHP que hace lo de mostrar los 5 (controlando si hay 0, menos de 5 o más), y solo en el caso de que haya más de 5 registros en la BBDD aparecerá a un botón que llamaré a una función, mostrar5(). El código funciona actualmente bien para cuando sólo necesito pulsar el botón una vez, el problema es cuando hay más de 10 registros en la BBDD, que debería pulsar más de una vez para mostrarlos.
Me da la sensación, que falla porque al pulsar el botón se "recarga" toda la página y vuelve a empezar de 0. Así que no se si se podrá resolver con PHP o tendré que usar otra cosa. Me gustaría que me guiaseis.


Código PHP:
<?php

include_once('conexion.php');
include_once(
"security.php");




$con=conect(); 

$cuenta mysqli_query($con"SELECT ID FROM contenido");
$total mysqli_num_rows($cuenta);




$contador=0;
function 
mostrar5()
{
    global 
$total;
    global 
$contador;
    
 
$restant=$total-$contador;

  if(
$restant>5){
     for(
$i=1$i<=5$i++){
?>
<div id="registro">
<div id="contenido">
</div>

<div id="editar">
</div>

<div id="eliminar">
</div>
</div>         

<?php
            $contador
++;
            echo 
"Restant es $restant";
     }
     }
 else if(
$restant<=5){
     echo 
"El resto es $restant";
     for(
$i=1$i<=$restant$i++){
         
?>
<div id="registro">
<div id="contenido">
</div>

<div id="editar">
</div>

<div id="eliminar">
</div>
</div>         

<?php
            $contador
++;
     }
 }
}

?>
<!doctype html>
<link href="editar.css" rel="stylesheet" type="text/css">
<html>
<head>
<meta charset="utf-8">
<title>Editar Contenido</title>
</head>

<body>
<h1>EDITAR CONTENIDO</h1>


<?php

if($total==0){
?>
<h1>Ningún contenido a editar. Por favor, crea un contenido primero <a href="nuevo2.php">aquí</a><h1>

<?php
}
if(
$total<=5){
for (
$i 1$i <= $total$i++) {


?>
<div id="registro">
<div id="contenido">
</div>

<div id="editar">
</div>

<div id="eliminar">
</div>
</div>
<?php
}
}
if(
$total>5){
    for(
$i=1$i<=5$i++){
?>
<div id="registro">
<div id="contenido">
</div>

<div id="editar">
</div>

<div id="eliminar">
</div>
</div>

<?php
    $contador
++;
    }
?>
<?php    
    
    
if(isset($_POST['hola'])){
           
mostrar5();
}
}
?>
<form action="" method="post">
   <input type="submit" value="boton" name="hola" />
</form>

</body>
</html>


Por último, no sé cómo acceder a los contenidos de la base de datos para mostrar el contenido dentro de cada div. Deberían colocarse ordenados, empezando por el último insertado, pero no sé cómo seleccionarlos "en orden" ya que el ID no siempre está ordenado, así que no puedo usarlo para hacer el SELECT. Espero haberme explicado.

Sin más, pediros disculpas por la extensión de mi tema,
y agradecer desde ya cualquier ayuda prestada.
  #2 (permalink)  
Antiguo 11/11/2015, 11:01
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Mostrar un número máximo de entradas MySQL

A ese concepto se le conoce como paginación, te sugiero buscar en el foro temas similares, ya hay soluciones y librerías, etc.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 11/11/2015, 11:02
Avatar de Chiiviito  
Fecha de Ingreso: octubre-2012
Mensajes: 64
Antigüedad: 12 años
Puntos: 0
Respuesta: Mostrar un número máximo de entradas MySQL

Hola mira por lo que llege a comprender te doy mi logica:

Ponele que vos tenes nose 50 registros, de los cuales solo quieres mostrar de 5 en 5, hasta ahi bien entonces al cargar la pagina haces un:
Código PHP:
Ver original
  1. SELECT * post ORDER BY fecha DESC LIMIT 0,5
de los primeros 5 registros ordenados por X campo (Para mi seria por fecha dependiendo de como este armada la tabla)

Ahora viene la parte "mas compleja": En este punto no te sirve utilizar unicamente PHP asi que tenes que tenes que usar AJAX, es simple:

Como ya cargaste los primeros 5 registros tenes que cargar 5 mas pero sin contar esos 5 primeros entonces mediante AJAX tenes que solicitar a la DB los proximos 5 asi que mandas una peticion asi mas o menos:
Código PHP:
Ver original
  1. SELECT * post ORDER BY fecha DESC LIMIT 5, 10

Fijate que cambia el LIMIT y esto lo guardas en una JSon de JS y mediante un innerHTML lo introducís en la pagina sin necesidad de recargar la pagina, ahora esto lo podes hacer unicamente con PHP pero al mandar las peticiones de los proximos 5 registros necesariamente tenes que actualizar la pagina he ir hasta abajo nuevamente.

Etiquetas: entradas, formulario, html, mysql, registro, select, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:07.