Foros del Web » Programando para Internet » PHP »

Paginar y crear links en php

Estas en el tema de Paginar y crear links en php en el foro de PHP en Foros del Web. Tengo una base de datos de noticias con noticias, y soy novato en php, como puedo paginar y mostrar las noticias o partes de ellas, ...
  #1 (permalink)  
Antiguo 04/07/2010, 01:31
Avatar de MarioAlejandroCR2  
Fecha de Ingreso: mayo-2010
Ubicación: Esparza - Puntarenas
Mensajes: 98
Antigüedad: 13 años, 11 meses
Puntos: 2
Pregunta Paginar y crear links en php

Tengo una base de datos de noticias con noticias, y soy novato en php, como puedo paginar y mostrar las noticias o partes de ellas, como hay en muchos sitios de noticias, que apenas muestarn un poco y ponen, "continuar leyendo" o algo similar, he visto algo de que a la un
Cita:
"select * from noticia (mi tabla) limit 1,10 (deseo mostrar 10 noticias por página)"
Pero no entiendo muy bien algunos tutoriales, y además no entiendo como hacer que el titulo sea un link y tome el campo idnoticia y lo cargue en otra página que ya tengo con el siguiente código:

Código HTML:
<?php 
      require_once('conexion.php'); 
      //Consulta los row_regis del usuario para la interfase
      mysql_select_db($Basedatos, $MiConexion);
      $AuxSql = "SELECT * FROM noticia WHERE idnoticia = '3'";
      $regis = mysql_query($AuxSql, $MiConexion) or die(mysql_error());
      $row_regis = mysql_fetch_assoc($regis);
?>

<head>
<link rel='stylesheet' type='text/css' href='estilo.css' />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title><?php echo $row_regis['titulo']?> - Tecnologías de Información | UTN Sede Pacífico</title>
</head>

<body>
<center><div><img src="media/img/banner.png" /></div>
<div style="width:950px;">
<ul class="menu blue">
    <li><a href="index.php" title="">Inicio</a></li>
    <li><a href="registro.php" title="">Carrera</a></li>
    <li><a href="registro.php" title="">Laboratorios</a></li>
    <li><a href="registro.php" title="">Profesores</a></li>
    <li><a href="registro.php" title="">Descargas</a></li>
    <li><a href="registro.php" title="">Galeria</a></li>
    <li><a href="registro.php" title="">Calendario</a></li>
    <li class="current"><a href="noticias.php" title="">Noticias</a></li>
</ul><img src="media/img/bannerbajo.png" /></div>
<p></p>
<div class="divcont">
<div class="divcontgral">
<table cellpadding="0" cellspacing="0">
<tr>
<td><img src="media/img/sup_gral.png" /></td>
</tr>
<tr>
<td><div class="divgral">
<center><div class="divnoti">
<b><h1><?php echo $row_regis['titulo']?></h1></b><hr color="#DDDDDD">
<?php echo $row_regis['contenido']?><br /><hr color="#DDDDDD">
<b>Autor:</b> <?php echo $row_regis['autor']?><br>
<b>Creado el:</b> <?php echo $row_regis['fecha']?> <b>a las</b> <?php echo $row_regis['hora']?><br>
<b>Categoría:</b> <?php echo $row_regis['tag']?><br><p></p>
</div></center>
</div></td>
</tr>
<tr>
<td><img src="media/img/baj_gral.png" /></td>
</tr>
<tr>
<td height="25px"></td>
</tr>
</table>
</div>
<div class="divsep"></div>
<div class="divlat">
<table cellpadding="0" cellspacing="0">
<tr><td><img src="media/img/sup_lat.png" /></td></tr>
<tr>
<td><div class="divsocial"><p></p>
<a href="http://www.facebook.com/home.php?#!/profile.php?id=100001259469833&v=wall" target="_new"><img style="border:none;" src="media/iconos/FaceBook.png" onMouseOver="this.src='media/iconos/Hover_FaceBook.png'" onMouseOut="this.src='media/iconos/FaceBook.png'"/></a>
<a href="https://twitter.com/UTNTIPACIFICOCR" target="_new"><img style="border:none;" src="media/iconos/twitter.png" onMouseOver="this.src='media/iconos/Hover_twitter.png'" onMouseOut="this.src= 'media/iconos/twitter.png'"/></a>
<img style="border:none;" src="media/iconos/feed.png" onMouseOver="this.src='media/iconos/Hover_feed.png'" onMouseOut="this.src= 'media/iconos/feed.png'"/>&nbsp;
<script src="http://widgets.twimg.com/j/2/widget.js"></script>
<script>
new TWTR.Widget({
  version: 2,
  type: 'profile',
  rpp: 4,
  interval: 6000,
  width: 230,
  height: 200,
  theme: {
    shell: {
      background: '#f0f0f0',
      color: '#777777'
    },
    tweets: {
      background: '#2e2e2e',
      color: '#f0f0f0',
      links: '#4aed05'
    }
  },
  features: {
    scrollbar: true,
    loop: false,
    live: true,
    hashtags: true,
    timestamp: true,
    avatars: false,
    behavior: 'all'
  }
}).render().setUser('UTNTIPACIFICOCR').start();
</script>

</div></td></tr>
<td><img src="media/img/baj_lat.png" /></td>
</table>
</div>
</div>
</center>
</body>
</html> 
De antemano, gracias, si pudierna enviarme un tutorial que me pueda servir, o algunas ideas o soluciones para novatos (por ahora espero)
  #2 (permalink)  
Antiguo 04/07/2010, 02:06
Avatar de kalebra  
Fecha de Ingreso: mayo-2010
Ubicación: Marbella
Mensajes: 44
Antigüedad: 13 años, 11 meses
Puntos: 5
Respuesta: Paginar y crear links en php

Buenas para paginar yo utilizo la siguiente clase:

paginacion.php
Código PHP:
<?php
class paginacion
{    
    private 
$page//Pagina actual
    
private $from//Numero de registro desde donde iniciar la busqueda
    
private $quantity//Catidad de registros por página
    
private $totalRows//Total de registros a paginar
    
private $numPages//Numero total de paginas
    
private $puri//Parte de la uri a agregar a la url inicial
    
private $url//Url de la página que se desea hacer la paginación
    
private $classLink;
    
    
    public function 
__construct($quantity$page) {
            
// ------------------------------------------------------------------------------------- Validamos la entrada de datos
        
settype($page"integer");
        
settype($quantity"integer");
        
$this->page = ($page 0) ? $page 0;
        
$this->quantity = ($quantity 0) ? $quantity 0;
        
$this->from $page $quantity;
        
    }
    
    public function 
getFrom()
    {
        return 
$this->from;
    }
    
    public function 
generaPaginacion($totalRows$back$next$url$class "")
    {
        
settype($totalRows"integer");
        
$this->totalRows $totalRows;
        
        
$this->lassLink $class;
        
        
$url=preg_replace('[\&*\&]''&'$url);    //Quita las && = & repetidas
        
$url=preg_replace('[\?\&]''?',$url);    //Quita     ?& = ?
        
        
$this->url $url;
        
$this->numPages ceil($totalRows/$this->quantity);
        
        if (
$this->page 0) {
            
$this->puri $this->page 1;
            echo 
"<a href=\"$this->url&page=$this->puri\">$back</a>";
        }
        
        if (
$this->numPages 1) {
            for (
$i 0$i $this->numPages$i++) {
                if (
$i == $this->page) {
                    echo 
"<span class=\"actualPage\">$i</span>";
                }
                elseif (
$i == $this->page || $i == $this->page || $i == $this->page 1
                
|| $i == $this->page || $i == || $i == ($this->numPages 1)) {
                                        
// ------------------------------------------------------------------------------------- $page + 1, $page +2 son los numeros que se desea ver por delante del actual
// ------------------------------------------------------------------------------------- $page -1, $page -2 son los numeros (Links) a ver por detras del actual
// ------------------------------------------------------------------------------------- Esto se puede modificar como se desee
                    
echo " <a class=\"$class\" href=\"$this->url&page=$i\">$i</a> ";
                }
                elseif (
$i == $this->page 3) {
                    echo 
"<span>...</span>";
                }
                elseif (
$i == $this->page 3) {
                    echo 
"<span>...</span>";
                }
            }
        }
        
        if (
$this->page $this->numPages 1) {
            
$this->puri $this->page 1;
            echo 
"<a href=\"$this->url&page=$this->puri\">$next</a>";
        }
    }
    
}
?>
Y para mostrar los resultados utilizo:
Código PHP:
<?php
    
// ---------------------------------------------------------------------------------- Incluimos el Archivo de Conexion a MYSQL.     
    
include("./includes/conexion.php");
    
// ---------------------------------------------------------------------------------- Incluimos el Archivo de Paginacion.    
    
require("./class/paginacion.php");
    
    
$query "SELECT * FROM servalq";
    
$rsT =  mysql_query($query$link);
    
$total mysql_num_rows($rsT);
    
    
$pg $_GET['page'];
    
// ---------------------------------------------------------------------------------- Cantidad de registros que se desea mostrar por pagina.    
    
$cantidad 4;
    
$paginacion = new paginacion($cantidad$pg);
    
$desde $paginacion->getFrom();

// ---------------------------------------------------------------------------------- Seleccionamos todo de la tabla deseada.
    
$query "SELECT * FROM servalq WHERE 1 LIMIT $desde, $cantidad";
    
$rs mysql_query($query$link);
    
?>
<center>
<div class="paginacion">
<?php

// ---------------------------------------------------------------------------------- URL de la pagina que se utilizara para la Paginacion.
    
$url "rent.php?";
    
    
$classCss "numPages";
    
// ---------------------------------------------------------------------------------- Botones Anterior y Siguiente con imagenes JPG.    
    
$back "<img id=\"cbi_cbindex_10\" src=\"images/anterior.png\" name=\"anterior\" width=\"29\" height=\"26\" style=\"vertical-align: bottom;\" border=\"0\" alt=\"Anterior\" title=\"Anterior\" />";
    
$next "<img id=\"cbi_cbindex_11\" src=\"images/siguiente.png\" name=\"siguiente\" width=\"29\" height=\"26\" style=\"vertical-align: bottom;\" border=\"0\" alt=\"Siguiente\" title=\"Siguiente\" />";
    
    
$paginacion->generaPaginacion($total$back$next$url$classCss);
?></center>    
    <br/>
<?php
    
while ($row mysql_fetch_assoc($rs)) {
?>

<!-- ---------------------------------------------------------------------------------- Tipo Estilo para el color del Precio. -->
<style type="text/css">
.Estilo1 {color: #FF0000}
.Estilo2 {}
</style>

<!-- ---------------------------------------------------------------------------------- Listado de la Paginacion. -->
<div style="border:#666666 solid 1px; background-color:#f4f3f3">
   <table width="760" height="100">
    <tr> 
     <td width="180">
      <div align="center"><a href='./rent-file.php?id=<?php echo $row["servalq_ID"];?>'><img src="./uploads/<?php echo $row["servalq_Image1"];?>" border="0"></a></div> </td>
     <td width="350"><div align="right"><b><?php echo $palabra->idioma[$_SESSION['idioma']][21]; ?>:</b> <?php echo $row['servalq_Ref']." </div><b>".$palabra->idioma[$_SESSION['idioma']][23].":</b> ".$row['servalq_Titulo']." <br/><b>".$palabra->idioma[$_SESSION['idioma']][24].":</b> ".$row['servalq_Localidad']." <br/><b>".$palabra->idioma[$_SESSION['idioma']][30].":</b> ".$row['servalq_Dormitorios']."<br/><b>".$palabra->idioma[$_SESSION['idioma']][31].":</b> ".$row['servalq_Banos']."  <br/>" ?>   </td>
     <td width="225">
      <div align="center"><?php echo "<b><span class=\"Estilo2\">".$palabra->idioma[$_SESSION['idioma']][22].": </span></b><span class=\"Estilo1\"><b>".$row['servalq_Pvp']; "</b></span>"?> Euros<?php echo "<a href='./rent-file.php?id=$row[servalq_ID]'><br/><img id=\"cbi_cbindex_6\" src=\"images/ver-ficha.png\" name=\"ebbcbindex_6\" width=\"70\" height=\"26\" style=\"vertical-align: bottom;\" border=\"0\" alt=\"Ver Ficha\" title=\"\" /></a>\n</div>"?></div></td>
    </tr>
   </table>
   </div><br/>
<?php
    
}
?>
Solo seria cuestion de adaptar o modificar lo que necesites.
Lo de acortar el texto nunca lo he necesitado asi que no se bien como hacerlo, pero imagino que sera facil adaptarlo, espero que te sirva.

Saludos
  #3 (permalink)  
Antiguo 04/07/2010, 03:59
Avatar de C2am  
Fecha de Ingreso: enero-2009
Ubicación: Rosario, Argentina
Mensajes: 2.005
Antigüedad: 15 años, 3 meses
Puntos: 306
Respuesta: Paginar y crear links en php

Hola
Para acortar el texto utilizo lo siguiente
Código PHP:
Ver original
  1. $ncaract= strlen($texto);
  2.  
  3. $long= 275; //cantidad de caracteres que voy a mostrar
  4.  
  5. //si el texto tiene menos caracteres imprimo todo
  6. if ($long > $ncaract )    { echo "$texto"; }
  7.  
  8.  
  9.  //si el texto tiene igual o más caracteres aplico la funcion cortarTexto
  10. //después aplico una función que me cierre todos los tag html
  11. // que al cortar puedan quedar abiertos.
  12.   if ($long <= $ncaract){echo cerrar_tags( cortarTexto($texto, $long, 0));}


La función cortarTexto - no recuerdo de donde la saque para mencionar al autor, disculpen.
Código PHP:
Ver original
  1. function cortarTexto($texto, $longitud, $parte = 1)
  2. {
  3.            
  4.     if ($parte < 1 || strpos($texto, ' ') === false)
  5.     {
  6.         $parte = 1;
  7.     }
  8.     elseif ($parte > (strlen(substr($texto, 0, strrpos($texto, ' '))) / $longitud))
  9.     {
  10.         $parte = strlen(substr($texto, 0, strrpos($texto, ' '))) / $longitud;
  11.     }
  12.      
  13.     $desplazamiento = ($parte - 1) * $longitud;
  14.      
  15.     if (!$desplazamiento || substr($texto, $desplazamiento - 1, 1) == ' ')
  16.     {
  17.         $pos1 = $desplazamiento;
  18.     }
  19.     else
  20.     {
  21.         $pos1 = strpos($texto, ' ', $desplazamiento) + 1;
  22.     }
  23.      
  24.     if ($longitud <= ($pos1 - $desplazamiento))
  25.     {
  26.         $desplazamiento = $pos1;
  27.     }
  28.      
  29.     if (substr($texto, $desplazamiento + $longitud - 1, 1) == ' ')
  30.     {
  31.       $pos2 = $desplazamiento + $longitud;
  32.     }
  33.     elseif(strpos($texto, ' ', $desplazamiento + $longitud) !== false)
  34.     {
  35.         $pos2 = strpos($texto, ' ', $desplazamiento + $longitud);
  36.     }
  37.     else
  38.     {
  39.         $pos2 = strlen($texto);
  40.     }
  41.      
  42.     return substr($texto, $pos1, $pos2 - $pos1);
  43. }
  44. ?>




En cuanto al paginador, el que uso y es de muy fácil aplicación es:

PHPPaging - Paginación de Resultados
Versión 2.1
Copyright (C) 2008 Marco A. Madueño Mejía ([email protected])
__________________
El mundo nada puede contra un hombre que canta en la miseria.
-- Ernesto Sábato--

Etiquetas: links, paginar
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 05:08.