Foros del Web » Programando para Internet » PHP »

dividir texto en varios textos y hacer páginas de navegacion

Estas en el tema de dividir texto en varios textos y hacer páginas de navegacion en el foro de PHP en Foros del Web. Hola buenas, resulta que tengo un campo texto en una base de datos y puede ser bastante extenso lo que ocasionaría una ruptura de diseño ...
  #1 (permalink)  
Antiguo 12/02/2005, 20:03
 
Fecha de Ingreso: abril-2004
Mensajes: 310
Antigüedad: 20 años
Puntos: 0
dividir texto en varios textos y hacer páginas de navegacion

Hola buenas, resulta que tengo un campo texto en una base de datos y puede ser bastante extenso lo que ocasionaría una ruptura de diseño de mi web, por lo que me gustaría hacer una especie de modificación para mostrar sólo los 1500 primeros caracteres y los demás guardarlos en algún sitio. Que salga además una especie de paginación abajo del cuadro de texto para ir a los siguientes 1500 caracteres una vez leidos los primeros, y así hasta el último caracter...

Cómo puedo hacer esto en una página??


graciassss
  #2 (permalink)  
Antiguo 12/02/2005, 22:44
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
Contar caracteres no es buena idea porque se te pueden quedar palabras cortadas entre página y página.
También puedes hacer un wordwrap() pero la idea es tampoco cortar párrafos.

Por eso te doy dos opciones que son más razonables y te dan más control:
En ambas tú vas a definir el lugar donde se cortan las páginas.

La primera:
En tu BD tienes una tabla "articulo" que tiene los aspectos comunes a todas las páginas del mismo artículo: (id, titulo, autor, fecha, etc). Pero no el texto.
En otra tabla "pagina" pones el contenido de cada página:(id_articulo, pagina, texto)

De esa manera puedes acceder directamente a una página determinada de un artículo detereminado.

------------------------------------------------------------

La segunda:(sólo referencial... mejor utiliza la primera)
Incluye una marca en el lugar en el que termina una página. Por ejemplo:
Código PHP:
// Supongamos que $texto es lo que está guardado en tu BD.
// Debería guardarlo algo así:
$texto "bla, bla, bla, bla
bla, bla, bla.
<!-- cortar aqui >
bla, bla, bla
bla, bla, bla
<!-- cortar aqui >
bla, bla."
;
De esa manera puedes hacer un:
$array_paginas explode('<!-- cortar aqui >'$texto);

// Y ya tendrás en ese array una página en cada posición
// Puedes generar enlaces como en cualquier paginación para ese array. 
Saludos
  #3 (permalink)  
Antiguo 13/02/2005, 06:58
 
Fecha de Ingreso: abril-2004
Mensajes: 310
Antigüedad: 20 años
Puntos: 0
vale me quedo con la solución de la tabla con columna para páginas. Pero veamos, los datos se introducen desde un formulario con un sólo campo texto que no tiene límite de texto, así que puede darse un texto de 1000 caracteres o uno de 5000. El tema seguirá siendo la división de esa variable pasada por el formulario.

¿Cómo la divido en páginas (variables) de más o menos 1500 caracteres? Efectívamente lo suyo es que no entrecorte ninguna palabra, que corte en un espacio en blanco y que añada a las n-1 variables unos puntos suspensivos al final. Luego creo que ya me apaño :P
  #4 (permalink)  
Antiguo 13/02/2005, 14:52
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
En ese caso puedes hacer una combinación de ambas cosas.
Que el autor ingrese todo el texto en el textarea y agregue la línea ("<!-- cortar aqui >") donde él quiera cortar las páginas.
Cuendo envíe el formulario, el script hará el explode() que te mencioné y guardará las páginas separadas en la BD.... y listo!... ya estás en el primer caso.

Saludos
  #5 (permalink)  
Antiguo 14/02/2005, 14:23
 
Fecha de Ingreso: abril-2004
Mensajes: 310
Antigüedad: 20 años
Puntos: 0
mmm preferiría alguna solución automatizada, en plan contar caracteres, dividir texto en varios trozos... pero cerciorándome que no corto palabras, o sea que el corte se realiza en un espacio en blanco. Sería buscar el primer espacio en blanco después de los 1500 primeros caracteres, para cortar por ahí, y con el resto lo mismo, hasta quedarse con menos de 1500 caracteres...
  #6 (permalink)  
Antiguo 14/02/2005, 14:46
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
Esa es una buena idea sólo para presentar una especie de introducción con un enlace "leer más", pero no para dividir en páginas, porque es preferible que las páginas se dividan en finales de párrafo y no en un espacio en blanco.

Para hacer lo que quieres puedes utilizar la función wordwrap() o una similar.
http://www.php.net/wordwrap

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




La zona horaria es GMT -6. Ahora son las 10:12.