Ver Mensaje Individual
  #9 (permalink)  
Antiguo 28/08/2016, 14:40
Avatar de manyblue
manyblue
 
Fecha de Ingreso: marzo-2008
Mensajes: 329
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Aprendiendo PDO, problema php y dreamweaber cc

Al final me ha quedado así:
Para hacer una paginación sencilla con html, php y mysql PDO, a mi me ha quedado así:

index.php
Código PHP:
<?php

try{
    
$conexion = new PDO('mysql:host=localhost;dbname=curso_php_mysql''root''');    
}catch(
PDOException $e){
    echo 
"Error: " $e->getMessage();
    die();
}

// Esto es lo mismo que hacer un 'if' 'else' -- si 'no se pone if si no la condicion' entonces '?' si no ':'
$pagina = isset($_GET['pagina']) ? (int)$_GET['pagina'] : ;

// Post por cada pagina
$PostPorPagina 5;

$inicio = ($pagina 1) ? ($pagina $PostPorPagina $PostPorPagina) : 0;

// SQL_CALC_FOUND_ROWS nos calcula cuantas filas hay en la tabla
$articulos $conexion->prepare("SELECT SQL_CALC_FOUND_ROWS * FROM articulos LIMIT $inicio, $PostPorPagina");

// Ejecutamos la consulta
$articulos->execute();
$articulos $articulos->fetchAll();

// Ver si hay articulos para una $pagina, si no reenviar al index.php
if(!$articulos){
    
header('location: index.php');
}

// Calculamos el numero total de articulos
$TotalArticulos $conexion->query('SELECT FOUND_ROWS() as total');
$TotalArticulos $TotalArticulos->fetch();
$TotalArticulos $TotalArticulos['total'];

// Redondeamos al alza o valor superior con ceil()
$NumeroPaginas ceil($TotalArticulos $PostPorPagina);


require(
'index.view.php');

// Cerramos la conexion a la base de datos si no vamos a trabajar más con ellla
$articulos null;
$conexion null;

?>
index.view.php

Código PHP:
<!doctype html>
<html lang="es">

<head>
<meta charset="utf-8">
<title>Paginacion</title>
<link href="https://fonts.googleapis.com/css?family=Oswald" rel="stylesheet" type="text/css">
<link href="styles.css" rel="stylesheet" type="text/css">
</head>

<body>
    <div class="contenedor">
        <h1>Artículos</h1>
        <section class="articulos">
             <ul>
                 <?php foreach($articulos as $fila): ?>
                    <li><?php echo $fila['id'] . '.- ' $fila['articulo'?></li>
                 <?php endforeach; ?>
             </ul>
        </section>
        
        <section class="paginacion">
             <ul>
                 <!-- Establecemos cuando el boton anterior esta desabilitado -->
                 <?php if($pagina == 1): ?>
                   <li class="desable">&laquo;</li>
                 <?php else: ?>
                   <li><a href="?pagina=<?php echo $pagina 1 ?>">&laquo;</a></li>
                 <?php endif; ?>
                  
                 <!-- Ejecutamos un ciclo para mostrar las paginas -->  
                 <?php
                   
for ($i 1$i <= $NumeroPaginas$i++){
                       
                       if(
$pagina == $i){
                          echo 
"<li class='active'><a href='?pagina=$i'>$i</a></li>"
                       }else{
                           echo 
"<li><a href='?pagina=$i'>$i</a></li>"
                       }  
                   }
                 
?>
                 
                 <!-- Establecemos cuando el boton siguiente esta desabilitado -->
                 <?php if($pagina == $NumeroPaginas): ?>
                   <li class="desable">&raquo;</li>
                 <?php else: ?>
                   <li><a href="?pagina=<?php echo $pagina 1 ?>">&raquo;</a></li>
                 <?php endif; ?>
             </ul>
        </section>
    </div>
</body>

</html>
styles.css
Código CSS:
Ver original
  1. @charset "utf-8";
  2. /* CSS Document */
  3.  
  4. * {
  5.    margin: 0;
  6.    padding: 0;
  7.    -webkit-box-sizing: border-box;
  8.    -moz-box-sizing: borde-box;
  9.    box-sizing: border-box;
  10. }
  11.  
  12. body {
  13.     background: #e9e9e9;
  14.     color: #2e2e2e;
  15.     font-family: Arial, Helvetica, sans-serif;
  16. }
  17.  
  18. h1 {
  19.     margin: 20px 0;
  20.     text-align: center;
  21.     font-family: "Oswald", Arial, helvetica, sans-serif;
  22.     color: #ce7f08;
  23.     font-weight: normal;
  24. }
  25.  
  26. .contenedor {
  27.     width: 90%;
  28.     max-width: 1000px;
  29.     margin: auto;
  30. }
  31.  
  32. .contenedor .articulos{
  33.     margin-bottom: 20px;
  34. }
  35.  
  36. .contenedor .articulos ul {
  37.     list-style: none;
  38. }
  39.  
  40. .contenedor .articulos ul li {
  41.     padding: 10px 10px;
  42.     border-bottom: 1px solid #c8c8c8;
  43. }
  44.  
  45. .paginacion ul {
  46.     list-style: none;
  47. }
  48.  
  49. .paginacion ul li {
  50.     display: inline-block;
  51.     margin-right: 10px;
  52. }
  53.  
  54. .paginacion ul .active a {
  55.     background: #ce7f08;
  56. }
  57.  
  58. .paginacion ul .desable {
  59.     background: #c8c8c8;
  60.     display: inline-block;
  61.     font-family: "Oswald", Arial, helvetica, sans-serif;
  62.     padding: 15px 25px;
  63.     cursor: not-allowed;
  64.     color: #fff;
  65.     text-decoration: none;
  66. }
  67.  
  68. .paginacion ul li a {
  69.     display: inline-block;
  70.     font-family: "Oswald", Arial, helvetica, sans-serif;
  71.     padding: 15px 25px;
  72.     background: #424242;
  73.     color: #fff;
  74.     text-decoration: none;
  75. }
  76.  
  77. .paginacion ul li a:hover {
  78.     text-decoration: none;
  79.     background: #3299bb;
  80. }
xerifandtomas, gracias por tu ayuda.
Saludos

Última edición por manyblue; 28/08/2016 a las 14:47