Duda con PHP y mySQL

Muy buenas:
Estoy haciendo una pequeña web de apuntes de derecho y tengo una pequeña duda. Veamos. Hay muchos de estos apuntes que ya los despliego por pantalla (están en una base de datos mySQL) y son bastante extensos por lo que para mostrarlos seguidos de cabo a rabo son algo molestos para el usuario, ya que el scroll a realizar es bastante grande. Mi idea sería hacer una paginación de ese registro que contiene los datos, apareciendo por páginas, y abajo de todo un enlace a la siguiente página (si estás en la página 1, pues el enlace sería página 2 de 5 en total). Creo haberme explicado bien. ¿Cómo podría hacer esto?. Hay una función que es exactamente lo que quiero, se llama <!--pagebreak--> de PHPNuke, estuve intentando a ver si podía sacarla para emplearla en mi futura web, pero no sé como.
Espero que puedas ayudarme, Gracias.
2

2 Respuestas

591.125 pts. Licenciado en Informática
En si la función no se llama <! --pagebreak-->. Lo de <!--Pagebreak--> es lo que debes insertar en el código de tus apuntes, ahí le estarás indicando donde quieres el corte entre páginas.
Utiliza el siguiente código, el cual te separará por páginas, te pondrá siguiente y anterior, etc...:
$contentpages = explode( "<!--pagebreak-->", $thetext );
$pageno = count($contentpages);
if ( $page=="" || $page < 1 )
$page = 1;
if ( $page > $pageno )
$page = $pageno;
$arrayelement = (int)$page;
$arrayelement --;
if ($pageno > 1) {
$thetextNew .= "Page: $page/$pageno<br>";
}
$thetextNew .= "<p align="justify">$contentpages[$arrayelement]</p>";
if($page >= $pageno) {
$next_page = "";
} else {
$next_pagenumber = $page + 1;
if ($page != 1) {
$next_page .= "- ";
}
$next_page .= "<a href="modules.php?name=News&file=article&sid=$sid&page=$next_pagenumber">"._NEXT." ($next_pagenumber/$pageno)</a> <a href="modules.php?name=News&file=article&sid=$sid&page=$next_pagenumber"><img src="images/download/right.gif" border="0" alt=""._NEXT.""></a>";
}
if ($page == $pageno) {
$thetextNew .= "<br><p align="justify">".nl2br($mypage[page_footer])."</p><br><br>";
}
if($page <= 1) {
$previous_page = "";
} else {
$previous_pagenumber = $page - 1;
$previous_page = "<a href="modules.php?name=News&file=article&sid=$sid&page=$previous_pagenumber"><img src="images/download/left.gif" border="0" alt=""._PREVIOUS.""></a> <a href="modules.php?name=News&file=article&sid=$sid&page=$previous_pagenumber">"._PREVIOUS." ($previous_pagenumber/$pageno)</a>";
}
$thetextNew .= "<br><br><br><center>$previous_page $next_page</center><br><br>";
$thetext = $thetextNew;
Hola de nuevo... estuve probando el código que me pasaste una vez lo modifiqué para mi página, pero al llegar a una línea (te la marco abajo) me da un error el parseador... a ver si me puedes ayudar. Te paso todo el código después de mi cambios (solo cambié los enlaces).
**************************************
//Aquí para no cambiar la variable de la función explode, pues le di ese nombre que es la variable en la que meto los datos de la base
$thetext = $row_rsVerArticulo['Contenido'];
$contentpages = explode( "<!--pagebreak-->", $thetext );
$pageno = count($contentpages);
if ( $page=="" || $page < 1 )
$page = 1;
if ( $page > $pageno )
$page = $pageno;
$arrayelement = (int)$page;
$arrayelement --;
if ($pageno > 1) {
$thetextNew .= "Page: $page/$pageno<br>";
}
$thetextNew .= "<p>$contentpages[$arrayelement]</p>";
if($page >= $pageno) {
$next_page = "";
} else {
$next_pagenumber = $page + 1;
if ($page != 1) {
$next_page .= "- ";
}
//Este es mi enlace: verarticulo.php?ArtId=%row_rsVerArticulo['ArtId'] y luego se le mete lo de la página &page...El error es en esta línea:
$next_page .= "<a href="verarticulo.php?ArtId=$row_rsVerArticulo['ArtId']&page=$next_pagenumber">"._NEXT."($next_pagenumber/$pageno)""</a>" "<a href="verarticulo.php?ArtId=$row_rsVerArticulo['ArtId']&page=$next_pagenumber">""<img src="images/download/right.gif" border="0" alt=""._NEXT.""></a>Siguiente</a>";
}
if ($page == $pageno) {
$thetextNew .= "<br><p align="justify">".nl2br($mypage[page_footer])."</p><br><br>";
}
if($page <= 1) {
$previous_page = "";
} else {
$previous_pagenumber = $page - 1;
$previous_page = "<a href="verarticulo.php?ArtId=$row_rsVerArticulo['ArtId']&page=$previous_pagenumber"><img src="images/download/left.gif" border="0" alt=""._PREVIOUS.""></a> <a href="verarticulo.php?IdArt=$row_rsVerArticulo['IdArt']&page=$previous_pagenumber">"._PREVIOUS." ($previous_pagenumber/$pageno)</a>";
}
$thetextNew .= "<br><br><br><center>$previous_page $next_page</center><br><br>";
$thetext = $thetextNew;
-**********************************
? En donde he metido la pata!?
Muchas gracias de nuevo.
Vigila el tema de las comillas en esa línea y las 4 siguientes. Para ver donde falla, ves construyendo la linea de código poco a poco hasta que falle, y así podrás ver si las comillas dobles que has puesto son correctas.
Suerte!
1.250 pts. Experto en base de datos
Sin el pagebreak también se puede hacer.
Para poder dividir el contenido de una tabla en diferentes páginas a tu gusto, la solución es: haber creado un campo que te lleve un control de registros que llevas, o sea un autonumérico.
Después es solo adaptar el código php, de cuantos registros por página quieres. Me explico una página 20 registros, un enlace a otra que enseñe los 20 siguientes i así hasta el final.
Hola, gracias por tu respuesta pronta. Pero creo que no me has entendido lo que te preguntaba. No quiero hacer una paginación de registros, sino que un registro en cuestión se pagine en varias páginas para que no quede tan largo. Un ejemplo.
El registro de la tabla de ejemplo es:
Id 1
Titulo "Derechos del hombre"
Contenido "Este es el contenido"
El campo contenido es bastante extenso, y en vez de que se muestre todo a la vez quiero que se muestre en trozos, es decir, no todo a la vez... si no por partes y poder acceder al siguiente trozo de texto.
Todo para que el usuario no tenga que hacer tanto scroll para ver el texto.
Espero haberme explicado bien. Gracias de nuevo.
Solo te puedo decir que la función que utilizan en el php nuke, es una función hecha por los programadores del php Nuke.
Para poder pasar de página con php hay esta función:
SetAutoPageBreak(boolean auto [, double margin]).
Para saber como funciona mira esta pàgina, creo que es bastante clara.
http://www.thebook-demo.com/php/pdf/Docs/setautopagebreak.htm

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas