{"id":441,"date":"2011-07-07T17:24:41","date_gmt":"2011-07-07T17:24:41","guid":{"rendered":"https:\/\/www.jose-aguilar.com\/blog\/?p=441"},"modified":"2019-05-23T11:06:17","modified_gmt":"2019-05-23T11:06:17","slug":"paginacion-resultados-con-php","status":"publish","type":"post","link":"https:\/\/www.jose-aguilar.com\/blog\/paginacion-resultados-con-php\/","title":{"rendered":"Paginaci\u00f3n de resultados con PHP"},"content":{"rendered":"<p>Cuando tenemos muchos registros y no queremos mostrar una lista de registro muy larga podemos usar <strong>paginaci\u00f3n<\/strong> para mostrar los resultados de la consulta en distintas p\u00e1ginas. La <strong>paginaci\u00f3n<\/strong> de resultados se puede conseguir con <strong>PHP<\/strong>.<\/p>\n<p>En muchas ocasiones, cuando se presentan en una p\u00e1gina web registros de una base de datos, se deber\u00edan mostrar demasiados registros como para colocarlos todos en una \u00fanica p\u00e1gina.<\/p>\n<p>En estas ocasiones se suele paginar los resultados, quiz\u00e1s cientos, en distintas p\u00e1ginas con conjuntos de registros mucho menos numerosos. Por ejemplo, podr\u00edamos presentar los resultados en p\u00e1ginas de 10 elementos o 20, dependiendo de nuestras intenciones y el tipo de datos que se est\u00e9n presentando. Este efecto lo has podido observar repetidas veces en los buscadores.<\/p>\n<p>Para realizar este tarea es posible trabajar con <strong>PHP<\/strong> y <strong>MySQLi<\/strong>.<\/p>\n<p>En el ejemplo en funcionamiento que hemos preparado para este tutorial mostramos el n\u00famero total de art\u00edculos o elementos.<\/p>\n<p>En cada p\u00e1gina se muestran 6 art\u00edculos ordenados por fecha de actualizaci\u00f3n en formato descendente. En todo momento mostramos el n\u00famero de p\u00e1gina que estamos viendo.<\/p>\n<p>Los enlaces de la <strong>paginaci\u00f3n<\/strong> se pueden poner arriba o abajo. En el ejemplo hemos decidido ponerlo despu\u00e9s de mostrar los art\u00edculos. Justo debajo se ve mejor y es m\u00e1s l\u00f3gico por temas de usabilidad pero tu puedes ponerlo donde m\u00e1s desees.<\/p>\n<h3>Conexi\u00f3n con la base de datos<\/h3>\n<p>Para implementar lo que estamos comentando lo primero que debemos hacer es conectar con la base de datos que vamos a tratar y ejecutar la primera consulta. Al principio del todo, en tu archivo <strong>PHP<\/strong>, antes de abrir cualquier etiqueta <strong>HTML<\/strong>, coloca el siguiente c\u00f3digo:<\/p>\n<div id=\"wpshdo_1\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_1\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_1\"><\/a><a id=\"wpshat_1\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_1\"  onClick=\"javascript:wpsh_toggleBlock(1)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_1\" onClick=\"javascript:wpsh_code(1)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_1\" onClick=\"javascript:wpsh_print(1)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_1\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"php\" style=\"font-family:monospace;\"><span class=\"kw2\">&lt;?php<\/span> \n<span class=\"kw1\">require<\/span><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'config.php'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"re0\">$result<\/span> <span class=\"sy0\">=<\/span> <span class=\"re0\">$connexion<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">query<\/span><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'SELECT COUNT(*) as total_products FROM product WHERE active = 1'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"re0\">$row<\/span> <span class=\"sy0\">=<\/span> <span class=\"re0\">$result<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">fetch_assoc<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"re0\">$num_total_rows<\/span> <span class=\"sy0\">=<\/span> <span class=\"re0\">$row<\/span><span class=\"br0\">[<\/span><span class=\"st_h\">'total_products'<\/span><span class=\"br0\">]<\/span><span class=\"sy0\">;<\/span>\n<span class=\"sy1\">?&gt;<\/span><\/pre><\/div><\/div>\n<p>En esta porci\u00f3n de c\u00f3digo que ser\u00e1 lo primero que se ejecute, estamos incluyendo un archivo <em>config.php<\/em>\u00a0que usamos para la configuraci\u00f3n y conexi\u00f3n con la base de datos. Este archivo contiene:<\/p>\n<div id=\"wpshdo_2\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_2\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_2\"><\/a><a id=\"wpshat_2\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_2\"  onClick=\"javascript:wpsh_toggleBlock(2)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_2\" onClick=\"javascript:wpsh_code(2)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_2\" onClick=\"javascript:wpsh_print(2)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_2\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"php\" style=\"font-family:monospace;\"><span class=\"kw2\">&lt;?php<\/span>\n<a href=\"http:\/\/www.php.net\/define\"><span class=\"kw3\">define<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'DB_SERVER'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'localhost'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<a href=\"http:\/\/www.php.net\/define\"><span class=\"kw3\">define<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'DB_SERVER_USERNAME'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'your_data_base_username'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<a href=\"http:\/\/www.php.net\/define\"><span class=\"kw3\">define<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'DB_SERVER_PASSWORD'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'your_data_base_password'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<a href=\"http:\/\/www.php.net\/define\"><span class=\"kw3\">define<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'DB_DATABASE'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'your_data_base_name'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<a href=\"http:\/\/www.php.net\/define\"><span class=\"kw3\">define<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'NUM_ITEMS_BY_PAGE'<\/span><span class=\"sy0\">,<\/span> 6<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n<span class=\"re0\">$connexion<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw2\">new<\/span> mysqli<span class=\"br0\">&#40;<\/span>DB_SERVER<span class=\"sy0\">,<\/span> DB_SERVER_USERNAME<span class=\"sy0\">,<\/span> DB_SERVER_PASSWORD<span class=\"sy0\">,<\/span> DB_DATABASE<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"sy1\">?&gt;<\/span><\/pre><\/div><\/div>\n<p>En \u00e9l tan solo definimos varias constantes para conectar con la base de datos y definimos el n\u00famero m\u00e1ximo de art\u00edculos por p\u00e1gina. En este caso deseamos que los elementos sean paginados de 6 en 6.<\/p>\n<p>Despu\u00e9s de conectar con la base de datos, hacemos una consulta a la tabla de productos en este caso para obtener el n\u00famero total de registros que depositamos en la variable $num_total_rows.<\/p>\n<h3>Paginaci\u00f3n<\/h3>\n<p>El c\u00f3digo m\u00e1s interesante debes colocarlo dentro del cuerpo de la p\u00e1gina, dentro de la etiqueta &lt;body&gt;:<\/p>\n<div id=\"wpshdo_3\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_3\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_3\"><\/a><a id=\"wpshat_3\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_3\"  onClick=\"javascript:wpsh_toggleBlock(3)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_3\" onClick=\"javascript:wpsh_code(3)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_3\" onClick=\"javascript:wpsh_print(3)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_3\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"php\" style=\"font-family:monospace;\"><span class=\"kw2\">&lt;?php<\/span>\n<span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re0\">$num_total_rows<\/span> <span class=\"sy0\">&gt;<\/span> 0<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n    <span class=\"re0\">$page<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw4\">false<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n    <span class=\"co1\">\/\/examino la pagina a mostrar y el inicio del registro a mostrar<\/span>\n    <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.php.net\/isset\"><span class=\"kw3\">isset<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"re0\">$_GET<\/span><span class=\"br0\">[<\/span><span class=\"st0\">&quot;page&quot;<\/span><span class=\"br0\">]<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n        <span class=\"re0\">$page<\/span> <span class=\"sy0\">=<\/span> <span class=\"re0\">$_GET<\/span><span class=\"br0\">[<\/span><span class=\"st0\">&quot;page&quot;<\/span><span class=\"br0\">]<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"br0\">&#125;<\/span>\n&nbsp;\n    <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"sy0\">!<\/span><span class=\"re0\">$page<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n        <span class=\"re0\">$start<\/span> <span class=\"sy0\">=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">;<\/span>\n        <span class=\"re0\">$page<\/span> <span class=\"sy0\">=<\/span> <span class=\"nu0\">1<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"br0\">&#125;<\/span> <span class=\"kw1\">else<\/span> <span class=\"br0\">&#123;<\/span>\n        <span class=\"re0\">$start<\/span> <span class=\"sy0\">=<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re0\">$page<\/span> <span class=\"sy0\">-<\/span> 1<span class=\"br0\">&#41;<\/span> <span class=\"sy0\">*<\/span> NUM_ITEMS_BY_PAGE<span class=\"sy0\">;<\/span>\n    <span class=\"br0\">&#125;<\/span>\n    <span class=\"co1\">\/\/calculo el total de paginas<\/span>\n    <span class=\"re0\">$total_pages<\/span> <span class=\"sy0\">=<\/span> <a href=\"http:\/\/www.php.net\/ceil\"><span class=\"kw3\">ceil<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"re0\">$num_total_rows<\/span> <span class=\"sy0\">\/<\/span> NUM_ITEMS_BY_PAGE<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n    <span class=\"co1\">\/\/pongo el numero de registros total, el tamano de pagina y la pagina que se muestra<\/span>\n    <span class=\"kw1\">echo<\/span> <span class=\"st_h\">'&lt;h3&gt;Numero de articulos: '<\/span><span class=\"sy0\">.<\/span><span class=\"re0\">$num_total_rows<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">'&lt;\/h3&gt;'<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">echo<\/span> <span class=\"st_h\">'&lt;h3&gt;En cada pagina se muestra '<\/span><span class=\"sy0\">.<\/span>NUM_ITEMS_BY_PAGE<span class=\"sy0\">.<\/span><span class=\"st_h\">' articulos ordenados por fecha en formato descendente.&lt;\/h3&gt;'<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">echo<\/span> <span class=\"st_h\">'&lt;h3&gt;Mostrando la pagina '<\/span><span class=\"sy0\">.<\/span><span class=\"re0\">$page<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">' de '<\/span> <span class=\"sy0\">.<\/span><span class=\"re0\">$total_pages<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">' paginas.&lt;\/h3&gt;'<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n    <span class=\"re0\">$result<\/span> <span class=\"sy0\">=<\/span> <span class=\"re0\">$connexion<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">query<\/span><span class=\"br0\">&#40;<\/span>\n        <span class=\"st_h\">'SELECT * FROM product p \n        LEFT JOIN product_lang pl ON (pl.id_product = p.id_product AND pl.id_lang = 1) \n        LEFT JOIN `image` i ON (i.id_product = p.id_product AND cover = 1) \n        WHERE active = 1 \n        ORDER BY date_upd DESC LIMIT '<\/span><span class=\"sy0\">.<\/span><span class=\"re0\">$start<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">', '<\/span><span class=\"sy0\">.<\/span>NUM_ITEMS_BY_PAGE\n    <span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re0\">$result<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">num_rows<\/span> <span class=\"sy0\">&gt;<\/span> 0<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n        <span class=\"kw1\">echo<\/span> <span class=\"st_h\">'&lt;ul class=&quot;row items&quot;&gt;'<\/span><span class=\"sy0\">;<\/span>\n        <span class=\"kw1\">while<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re0\">$row<\/span> <span class=\"sy0\">=<\/span> <span class=\"re0\">$result<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">fetch_assoc<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n            <span class=\"kw1\">echo<\/span> <span class=\"st_h\">'&lt;li class=&quot;col-lg-4&quot;&gt;'<\/span><span class=\"sy0\">;<\/span>\n            <span class=\"kw1\">echo<\/span> <span class=\"st_h\">'&lt;div class=&quot;item&quot;&gt;'<\/span><span class=\"sy0\">;<\/span>\n            <span class=\"kw1\">echo<\/span> <span class=\"st_h\">'&lt;h3&gt;'<\/span><span class=\"sy0\">.<\/span><span class=\"re0\">$row<\/span><span class=\"br0\">[<\/span><span class=\"st_h\">'name'<\/span><span class=\"br0\">]<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">'&lt;\/h3&gt;'<\/span><span class=\"sy0\">;<\/span>\n            <span class=\"sy0\">...<\/span>\n            <span class=\"kw1\">echo<\/span> <span class=\"st_h\">'&lt;\/div&gt;'<\/span><span class=\"sy0\">;<\/span>\n            <span class=\"kw1\">echo<\/span> <span class=\"st_h\">'&lt;\/li&gt;'<\/span><span class=\"sy0\">;<\/span>\n        <span class=\"br0\">&#125;<\/span>\n        <span class=\"kw1\">echo<\/span> <span class=\"st_h\">'&lt;\/ul&gt;'<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"br0\">&#125;<\/span>\n&nbsp;\n    <span class=\"kw1\">echo<\/span> <span class=\"st_h\">'&lt;nav&gt;'<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">echo<\/span> <span class=\"st_h\">'&lt;ul class=&quot;pagination&quot;&gt;'<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n    <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re0\">$total_pages<\/span> <span class=\"sy0\">&gt;<\/span> 1<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n        <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re0\">$page<\/span> <span class=\"sy0\">!=<\/span> 1<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n            <span class=\"kw1\">echo<\/span> <span class=\"st_h\">'&lt;li class=&quot;page-item&quot;&gt;&lt;a class=&quot;page-link&quot; href=&quot;index.php?page='<\/span><span class=\"sy0\">.<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$page<\/span><span class=\"sy0\">-<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">'&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&amp;laquo;&lt;\/span&gt;&lt;\/a&gt;&lt;\/li&gt;'<\/span><span class=\"sy0\">;<\/span>\n        <span class=\"br0\">&#125;<\/span>\n&nbsp;\n        <span class=\"kw1\">for<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re0\">$i<\/span><span class=\"sy0\">=<\/span><span class=\"nu0\">1<\/span><span class=\"sy0\">;<\/span><span class=\"re0\">$i<\/span><span class=\"sy0\">&lt;=<\/span><span class=\"re0\">$total_pages<\/span><span class=\"sy0\">;<\/span><span class=\"re0\">$i<\/span><span class=\"sy0\">++<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n            <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re0\">$page<\/span> <span class=\"sy0\">==<\/span> <span class=\"re0\">$i<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n                <span class=\"kw1\">echo<\/span> <span class=\"st_h\">'&lt;li class=&quot;page-item active&quot;&gt;&lt;a class=&quot;page-link&quot; href=&quot;#&quot;&gt;'<\/span><span class=\"sy0\">.<\/span><span class=\"re0\">$page<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">'&lt;\/a&gt;&lt;\/li&gt;'<\/span><span class=\"sy0\">;<\/span>\n            <span class=\"br0\">&#125;<\/span> <span class=\"kw1\">else<\/span> <span class=\"br0\">&#123;<\/span>\n                <span class=\"kw1\">echo<\/span> <span class=\"st_h\">'&lt;li class=&quot;page-item&quot;&gt;&lt;a class=&quot;page-link&quot; href=&quot;index.php?page='<\/span><span class=\"sy0\">.<\/span><span class=\"re0\">$i<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">'&quot;&gt;'<\/span><span class=\"sy0\">.<\/span><span class=\"re0\">$i<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">'&lt;\/a&gt;&lt;\/li&gt;'<\/span><span class=\"sy0\">;<\/span>\n            <span class=\"br0\">&#125;<\/span>\n        <span class=\"br0\">&#125;<\/span>\n&nbsp;\n        <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re0\">$page<\/span> <span class=\"sy0\">!=<\/span> <span class=\"re0\">$total_pages<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n            <span class=\"kw1\">echo<\/span> <span class=\"st_h\">'&lt;li class=&quot;page-item&quot;&gt;&lt;a class=&quot;page-link&quot; href=&quot;index.php?page='<\/span><span class=\"sy0\">.<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$page<\/span><span class=\"sy0\">+<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">'&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&amp;raquo;&lt;\/span&gt;&lt;\/a&gt;&lt;\/li&gt;'<\/span><span class=\"sy0\">;<\/span>\n        <span class=\"br0\">&#125;<\/span>\n    <span class=\"br0\">&#125;<\/span>\n    <span class=\"kw1\">echo<\/span> <span class=\"st_h\">'&lt;\/ul&gt;'<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">echo<\/span> <span class=\"st_h\">'&lt;\/nav&gt;'<\/span><span class=\"sy0\">;<\/span>\n<span class=\"br0\">&#125;<\/span>\n<span class=\"sy1\">?&gt;<\/span><\/pre><\/div><\/div>\n<p>Parece mucho c\u00f3digo y complicado pero si te paras a mirarlo un momento es bastante sencillo de entender.<\/p>\n<p>Lo primero que hacemos es establecer y calcular variables importantes para el proceso.<\/p>\n<ul>\n<li>$page -&gt; contiene el n\u00famero de p\u00e1gina actual. Puede ser falso si entramos por primera vez y estamos en la primera p\u00e1gina.<\/li>\n<li>$start -&gt; se calcula para obtener el l\u00edmite de la consulta y su valor depender\u00e1 de la p\u00e1gina en la que estemos.<\/li>\n<li>$total_pages -&gt; Contiene el total de p\u00e1ginas.<\/li>\n<li>NUM_ITEMS_BY_PAGE -&gt; Est\u00e1 en el archivo config.php definida y representa el n\u00famero de elementos por p\u00e1gina.<\/li>\n<\/ul>\n<p>El n\u00famero de registros totales, el n\u00famero de elementos por p\u00e1gina y la p\u00e1gina actual se muestran por pantalla.<\/p>\n<p>A continuaci\u00f3n realizamos la consulta donde sacamos todos los productos activos ordenados por fecha de actualizaci\u00f3n en formato descendente y limitado a 6 productos. Si hay datos, recorremos los resultados para mostrar la informaci\u00f3n que nos interese de los productos.<\/p>\n<p>Despu\u00e9s del bucle, solo queda agregar el c\u00f3digo de la <strong>paginaci\u00f3n<\/strong>, que no son m\u00e1s que enlaces din\u00e1micos.<\/p>\n<p>La maquetaci\u00f3n o dise\u00f1o de este ejemplo est\u00e1 basada en la tecnolog\u00eda <strong>Bootstrap 4<\/strong>.<\/p>\n<p style=\"text-align: center;\"><a class=\"btn btn-secondary\" href=\"https:\/\/www.jose-aguilar.com\/scripts\/php\/paginacion\/\" target=\"_blank\" rel=\"noopener noreferrer\"><i class=\"fa fa-eye\"><\/i> Ver demo<\/a> <a class=\"btn btn-primary\" href=\"https:\/\/www.jose-aguilar.com\/scripts\/php\/paginacion\/paginacion.zip\"><i class=\"fa fa-download\"><\/i> Descargar<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tutorial y c\u00f3digo de ejemplo que te permite agregar paginaci\u00f3n utilizando PHP, MySQLi y Bootstrap. C\u00f3digo sencillo y f\u00e1cil de entender.<\/p>\n","protected":false},"author":1,"featured_media":7311,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[18,3],"tags":[34],"class_list":["post-441","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mysql","category-php","tag-paginacion"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Paginaci\u00f3n de resultados con PHP - Jose Aguilar Blog<\/title>\n<meta name=\"description\" content=\"Tutorial y c\u00f3digo de ejemplo que te permite agregar paginaci\u00f3n utilizando PHP, MySQLi y Bootstrap. C\u00f3digo sencillo y f\u00e1cil de entender.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Paginaci\u00f3n de resultados con PHP - Jose Aguilar Blog\" \/>\n<meta property=\"og:description\" content=\"Tutorial y c\u00f3digo de ejemplo que te permite agregar paginaci\u00f3n utilizando PHP, MySQLi y Bootstrap. C\u00f3digo sencillo y f\u00e1cil de entender.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.jose-aguilar.com\/blog\/paginacion-resultados-con-php\/\" \/>\n<meta property=\"og:site_name\" content=\"Jose Aguilar Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/joseaguilarblog\" \/>\n<meta property=\"article:published_time\" content=\"2011-07-07T17:24:41+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-05-23T11:06:17+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2011\/07\/paginacion-resultados-con-php.png\" \/>\n\t<meta property=\"og:image:width\" content=\"250\" \/>\n\t<meta property=\"og:image:height\" content=\"250\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Jose Aguilar\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@JoseAguilarBlog\" \/>\n<meta name=\"twitter:site\" content=\"@JoseAguilarBlog\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jose Aguilar\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/paginacion-resultados-con-php\/\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/paginacion-resultados-con-php\/\",\"name\":\"Paginaci\u00f3n de resultados con PHP - Jose Aguilar Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/paginacion-resultados-con-php\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/paginacion-resultados-con-php\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2011\/07\/paginacion-resultados-con-php.png\",\"datePublished\":\"2011-07-07T17:24:41+00:00\",\"dateModified\":\"2019-05-23T11:06:17+00:00\",\"author\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\"},\"description\":\"Tutorial y c\u00f3digo de ejemplo que te permite agregar paginaci\u00f3n utilizando PHP, MySQLi y Bootstrap. C\u00f3digo sencillo y f\u00e1cil de entender.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/paginacion-resultados-con-php\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.jose-aguilar.com\/blog\/paginacion-resultados-con-php\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/paginacion-resultados-con-php\/#primaryimage\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2011\/07\/paginacion-resultados-con-php.png\",\"contentUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2011\/07\/paginacion-resultados-con-php.png\",\"width\":250,\"height\":250},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/paginacion-resultados-con-php\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/www.jose-aguilar.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Paginaci\u00f3n de resultados con PHP\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/\",\"name\":\"Jose Aguilar Blog\",\"description\":\"Desarrollo Web con PrestaShop, WordPress, PHP, jQuery y Ajax\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.jose-aguilar.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\",\"name\":\"Jose Aguilar\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g\",\"caption\":\"Jose Aguilar\"},\"description\":\"Director ejecutivo y tecnol\u00f3gico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.\",\"sameAs\":[\"https:\/\/plus.google.com\/114357189801512615537\"],\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/author\/josea902\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Paginaci\u00f3n de resultados con PHP - Jose Aguilar Blog","description":"Tutorial y c\u00f3digo de ejemplo que te permite agregar paginaci\u00f3n utilizando PHP, MySQLi y Bootstrap. C\u00f3digo sencillo y f\u00e1cil de entender.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"es_ES","og_type":"article","og_title":"Paginaci\u00f3n de resultados con PHP - Jose Aguilar Blog","og_description":"Tutorial y c\u00f3digo de ejemplo que te permite agregar paginaci\u00f3n utilizando PHP, MySQLi y Bootstrap. C\u00f3digo sencillo y f\u00e1cil de entender.","og_url":"https:\/\/www.jose-aguilar.com\/blog\/paginacion-resultados-con-php\/","og_site_name":"Jose Aguilar Blog","article_publisher":"https:\/\/www.facebook.com\/joseaguilarblog","article_published_time":"2011-07-07T17:24:41+00:00","article_modified_time":"2019-05-23T11:06:17+00:00","og_image":[{"width":250,"height":250,"url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2011\/07\/paginacion-resultados-con-php.png","type":"image\/png"}],"author":"Jose Aguilar","twitter_card":"summary_large_image","twitter_creator":"@JoseAguilarBlog","twitter_site":"@JoseAguilarBlog","twitter_misc":{"Escrito por":"Jose Aguilar","Tiempo de lectura":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.jose-aguilar.com\/blog\/paginacion-resultados-con-php\/","url":"https:\/\/www.jose-aguilar.com\/blog\/paginacion-resultados-con-php\/","name":"Paginaci\u00f3n de resultados con PHP - Jose Aguilar Blog","isPartOf":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/paginacion-resultados-con-php\/#primaryimage"},"image":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/paginacion-resultados-con-php\/#primaryimage"},"thumbnailUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2011\/07\/paginacion-resultados-con-php.png","datePublished":"2011-07-07T17:24:41+00:00","dateModified":"2019-05-23T11:06:17+00:00","author":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11"},"description":"Tutorial y c\u00f3digo de ejemplo que te permite agregar paginaci\u00f3n utilizando PHP, MySQLi y Bootstrap. C\u00f3digo sencillo y f\u00e1cil de entender.","breadcrumb":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/paginacion-resultados-con-php\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.jose-aguilar.com\/blog\/paginacion-resultados-con-php\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/paginacion-resultados-con-php\/#primaryimage","url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2011\/07\/paginacion-resultados-con-php.png","contentUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2011\/07\/paginacion-resultados-con-php.png","width":250,"height":250},{"@type":"BreadcrumbList","@id":"https:\/\/www.jose-aguilar.com\/blog\/paginacion-resultados-con-php\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.jose-aguilar.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Paginaci\u00f3n de resultados con PHP"}]},{"@type":"WebSite","@id":"https:\/\/www.jose-aguilar.com\/blog\/#website","url":"https:\/\/www.jose-aguilar.com\/blog\/","name":"Jose Aguilar Blog","description":"Desarrollo Web con PrestaShop, WordPress, PHP, jQuery y Ajax","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.jose-aguilar.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11","name":"Jose Aguilar","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g","caption":"Jose Aguilar"},"description":"Director ejecutivo y tecnol\u00f3gico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.","sameAs":["https:\/\/plus.google.com\/114357189801512615537"],"url":"https:\/\/www.jose-aguilar.com\/blog\/author\/josea902\/"}]}},"_links":{"self":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/441","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/comments?post=441"}],"version-history":[{"count":0,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/441\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media\/7311"}],"wp:attachment":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media?parent=441"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/categories?post=441"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/tags?post=441"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}