Foros del Web » Programando para Internet » PHP »

Dividir en paginas texto de un campo

Estas en el tema de Dividir en paginas texto de un campo en el foro de PHP en Foros del Web. Hola, por favor estaría muy agradecido si alguien me pudiera tirar un cable en lo que estoy intentando hacer, porque como que estoy mareado y ...
  #1 (permalink)  
Antiguo 03/05/2005, 09:49
Avatar de webosiris
Moderador egiptólogo
 
Fecha de Ingreso: febrero-2002
Ubicación: Luxor, Egipto
Mensajes: 10.727
Antigüedad: 15 años, 9 meses
Puntos: 997
Dividir en paginas texto de un campo

Hola, por favor estaría muy agradecido si alguien me pudiera tirar un cable en lo que estoy intentando hacer, porque como que estoy mareado y no se pa' donde agarrar...

Lo que busco es una manera de hacer lo que hace el módulo "Content" del phpNuke, osea: tengo un texto de un artículo en un solo campo, y quiero que si en ese texto aparece "<!--pagebreak-->" me genere otra página, y me poga Anterior|1|2|3|Siguiente, etc. dependiendo de cuantos <!--pagebreak--> tenga (si no hay ninguno, que me muestre todo el texto en una única pag.)

Estuve viendo el código del módulo "Content", pero no lo termino de entender...

¿alguna idea o ejemplo? Es que busqué por internet pero ni pio de lo que necesito...

__________________
Pasamos tus PSD a HTML

Pobre del que lo sabe todo, porque no tiene nada más que aprender ni razón para vivir. -
  #2 (permalink)  
Antiguo 03/05/2005, 12:25
Avatar de mamon  
Fecha de Ingreso: enero-2002
Ubicación: Lima
Mensajes: 1.302
Antigüedad: 15 años, 11 meses
Puntos: 3
No sé de PHPNuke.... pero lo que quieres es mostrar info de una base de datos en varias páginas? osea al final es el mismo archivo pero que aparezca como Anterior 1 2 3 4 Siguiente

Eso es lo que quieres?
__________________
Yo si sé lo que es trabajar duro, porque lo he visto.
  #3 (permalink)  
Antiguo 03/05/2005, 14:56
Avatar de webosiris
Moderador egiptólogo
 
Fecha de Ingreso: febrero-2002
Ubicación: Luxor, Egipto
Mensajes: 10.727
Antigüedad: 15 años, 9 meses
Puntos: 997
Si... + o -...
en una base de datos tengo la tabla artículos, cuyos campos son id, titulo y texto. Lo que yo quiero es si hago un SELECT * FROM articulos WHERE id=1, y el campo texto seleccionado es "Este es un artículo <!--pagebreak--> de prueba" se muestre:
PAGINA 1
Titulo del artículo
"Este es un artículo"
1|2| Siguiente

PÁGINA 2
Titulo del artículo
"de prueba"
Anterior |1|2|

PD: la tabla que puse como ejemplo esta abreviada, pero creo que se entiende el efecto que quiero dar...

y gracias
__________________
Pasamos tus PSD a HTML

Pobre del que lo sabe todo, porque no tiene nada más que aprender ni razón para vivir. -
  #4 (permalink)  
Antiguo 03/05/2005, 21:34
Avatar de mamon  
Fecha de Ingreso: enero-2002
Ubicación: Lima
Mensajes: 1.302
Antigüedad: 15 años, 11 meses
Puntos: 3
mira si usas el MySQL te va a ser muy fácil hacer eso.. el MySQL tiene para poner límites... x ejemplo quieres mostrar solo dos registros de lo que estás buscando es asi:

SELECT * FROM articulos WHERE id=1 limit 0,2
después de limit pones desde donde quieres empezar (se empieza desde cero para tener el primer registro).. y después del coma la cantidad de registros
entonces cómo puedes hacer esta gracia? asi:

<?php
//primero recoges en qué página estás:
$pag = (!isset($_GET['pag'])) ? 1: $_GET['pag'];
$pag = $pag - 1;
if ($pag < 0){
$pag = 0;
}
$mostrar = 2; //aquí pones cuantos registros quieres mostrar x cada página

//ahora necesitamos saber cuantos registros hay:

$str = "SELECT count(*) FROM articulos WHERE id=1"

$contador = mysql_query($str, $conn);
$cont=mysql_fetch_array($contador);

$total = $cont["numero"];

$cant_paginas = ceil($total/$cuenta);

if ($pag >= $cant_paginas){
$pag = $cant_paginas - 1;
}

$strSQL = "SELECT * FROM articulos WHERE id=1 limit ".$pag*$mostrar.", ".$mostrar;
?>

Ahora para poner los links para que se pasee:

<?php
if ($cant_paginas > 1) {
$pag = $pag + 1;

if ($pag > 1) { ?>
<a class="mas" href="catalogo.php?pag=<?php echo($pag - 1); ?>">
<?php if($idioma == 0){ ?>
Anterior
<?php }else{ ?>
Back
<?php } ?>
</a>
<?php
}
for($i=1;$i<$cant_paginas+1;$i++){
if ($i == $pag){
echo("<font color=#666666 size=1 face=verdana>".$i."</font>&nbsp;");
}else{
?>
<a class="mas" href="catalogo.php?pag=<?php echo($i); ?>"><?php echo($i); ?></a>
<?php
}
}
if ($pag < $cant_paginas){
?>
<a class="mas" href="catalogo.php?pag=<?php echo($pag + 1); ?>">
<?php if($idioma == 0){ ?>
Siguiente
<?php }else{ ?>
Next
<?php } ?>
</a>
<?php
}
}
?>

No lo he revisado.. espero te sirva.. me avisas, no sé si ésta es la mejor forma.. como te digo.. no conozco mucho de PHP pero sé la lógica xq sé ASP y soy desarrollador
__________________
Yo si sé lo que es trabajar duro, porque lo he visto.
  #5 (permalink)  
Antiguo 04/05/2005, 04:10
Avatar de webosiris
Moderador egiptólogo
 
Fecha de Ingreso: febrero-2002
Ubicación: Luxor, Egipto
Mensajes: 10.727
Antigüedad: 15 años, 9 meses
Puntos: 997
.. no me entendiste, pero gracias = por la molestia... en mi ejemplo del mensaje anterior, id es un valor único para cada registro por lo que con el select que hice, tengo UNA ÚNICA FILA seleccionada... espero que ahora si se entienda
Cualquier duda pregunten...

PD: algo que no dije, sería usando php y mysql.

__________________
Pasamos tus PSD a HTML

Pobre del que lo sabe todo, porque no tiene nada más que aprender ni razón para vivir. -
  #6 (permalink)  
Antiguo 04/05/2005, 19:35
Avatar de mamon  
Fecha de Ingreso: enero-2002
Ubicación: Lima
Mensajes: 1.302
Antigüedad: 15 años, 11 meses
Puntos: 3
si es uno solo... tons para qué la paginación? si solo hay un registro
__________________
Yo si sé lo que es trabajar duro, porque lo he visto.
  #7 (permalink)  
Antiguo 04/05/2005, 20:01
Avatar de webosiris
Moderador egiptólogo
 
Fecha de Ingreso: febrero-2002
Ubicación: Luxor, Egipto
Mensajes: 10.727
Antigüedad: 15 años, 9 meses
Puntos: 997
Cita:
Iniciado por mamon
si es uno solo... tons para qué la paginación? si solo hay un registro
Porque hay algunos artículos que son muuuuuy largos y mostrarlo todo junto en una única pag. cansa
¿Alguna idea?...
__________________
Pasamos tus PSD a HTML

Pobre del que lo sabe todo, porque no tiene nada más que aprender ni razón para vivir. -
  #8 (permalink)  
Antiguo 04/05/2005, 20:40
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Mira... hay por lo menos un par de formas de hacer eso:
Primera:
Guardas todo el contenido en un campo con esos tags <!--pagebreak--> donde quieres cortar las páginas.
Supongamos que ya leiste el contenido de ese campo: en $texto = $row['campo_texto'];
Código PHP:
// Guardamos en un array cada página en una posición:
$texto_paginas explode('<!--pagebreak-->'$texto);
// Total de páginas
$total_paginas count($texto_paginas);

// Si hemos pasado el número de página que queremos ver
// y la página existe.
if(isset($_GET['pagina']) && $_GET['pagina'] <= $total_paginas && $_GET['pagina'] > 0){
   
$pagina_actual $_GET['pagina'];
}else{
   
// Si no, vemos la primera página
   
$pagina_actual 1;
}

// mostramos la página solicitada.
echo $texto_paginas[$pagina_actual-1];

// Un enlace al anterior;
if($pagina_actual 1) echo "<a href='?pagina=".($pagina_actual-1)."'>anterior</a> | ";
if(
$pagina_actual $total_paginas) echo "<a href='?pagina=".($pagina_actual+1)."'>siguiente</a>"
Claro que tienes que considerar además que necesitas propagar otras variables para poder hacer tu consulta, por ejemplo el id de ese artículo.

Saludos
  #9 (permalink)  
Antiguo 04/05/2005, 20:49
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
La otra manera (más eficiente) es guardar la páginas directamente en la base de datos.
Tener una tabla especialmente para guardar el texto en páginas.

Una tabla artículo:
id_articulo, titulo, autor, fecha.

Otra tabla paginas
id_articulo, numero_pagina, texto_pagina.

Y así accedes directamente a la página que quieres ver.

Saludos
  #10 (permalink)  
Antiguo 05/05/2005, 21:40
Avatar de webosiris
Moderador egiptólogo
 
Fecha de Ingreso: febrero-2002
Ubicación: Luxor, Egipto
Mensajes: 10.727
Antigüedad: 15 años, 9 meses
Puntos: 997
¡¡ Sos Grande jpinedo !!
__________________
Pasamos tus PSD a HTML

Pobre del que lo sabe todo, porque no tiene nada más que aprender ni razón para vivir. -
  #11 (permalink)  
Antiguo 05/05/2005, 22:06
 
Fecha de Ingreso: agosto-2004
Mensajes: 95
Antigüedad: 13 años, 3 meses
Puntos: 2
Quedo de maravillas ...

Gracias jpinedo

  #12 (permalink)  
Antiguo 22/12/2005, 07:59
 
Fecha de Ingreso: diciembre-2005
Mensajes: 1
Antigüedad: 12 años
Puntos: 0
Soy novata y me gustaria que me explicaran como hacer lo que han descrito

Hola.

Soy novata en el php y aunque he leido con atencion varias veces lo que han explicado no se como hacerlo para que me funcione a mi.

El codigo que estoy utilizando para leer los articulos es el siguiente:

Código:
<?
include ('configuracion.php');
global $conexion;
conectar();
$sql="SELECT * FROM articulos WHERE id = '1'";
$result=mysql_query($sql,$conexion);
while($row=mysql_fetch_array($result)){
	$titulo=$row['titulo'];
	$articulo=$row['articulo'];

	echo "<div algin='left' class='titulo'>:: $titulo</div>";
	echo "<div algin='left' class='contenido'>$articulo</div>";
}
desconectar();
?>
¿Me podria ayudar alguien a adaptar lo aqui explicado a mi codigo?

Quedo agradecida y en espera de respuesta. ¿
  #13 (permalink)  
Antiguo 22/12/2005, 17:34
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Hola:

Si nos explicas lo que intentaste y qué resultados obtuviste (mensajes de error, sale todo en la misma página, al cambiar de pagina sigue en la primera... lo que sea que pueda aclararnos por qué no te funciona lo que intentas) podremos ayudarte mucho más fácil y rápidamente.

Saludos
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 17:01.