paginar resultados con php y jquery ajax


/ Published in: PHP
Save to your folder(s)

paginar resultados con jquery y ajax, permite ingresar condiciones (where, like, =...)
solo se ingresa el nombre de los campos de la base de datos que se desean listar

ver opciones.


Copy this code and paste it in your HTML
  1. #Funcion para paginar resultados con condiciones
  2. #opciones:
  3. #$where = array(array(campo_bd => "campo_1", condicion => '=', dato => '1234'),array(campo_bd => "campo_2", condicion => 'LIKE', dato => '1234'));
  4. #$campos = array('campo_1','campo_2','campo_3','campo_4');
  5. #autor: Luis Jofre G.
  6. function paginarResultados($tabla,$where,$pagina,$porPagina,$btn_inicio,$btn_final,$numeros,$campos,$conn)
  7. {
  8. echo '<input type="hidden" id="paginaHidden" value="'.$pagina.'" />';
  9. $start = $pagina * $porPagina;
  10. if($pagina == 0){ $pagina = 1; }
  11.  
  12. #consulta obtener datos
  13. $query_pag_data = "SELECT * FROM ".$tabla."";
  14.  
  15. #si existen condiciones se concatenan
  16. if(count($where)>1)
  17. {
  18. $pasada = 0;
  19. foreach($where as $condiciones)
  20. {
  21. if($pasada == 0)
  22. {
  23. $query_pag_data .=" WHERE ".$condiciones["campo_bd"]." ".$condiciones["condicion"]." '".$condiciones["dato"]."'";
  24. }
  25. elseif(count($where) > 1 && $pasada == 1)
  26. {
  27. $query_pag_data .= " AND ".$condiciones["campo_bd"]." ".$condiciones["condicion"]." '".$condiciones["dato"]."'";
  28. }
  29.  
  30. $pasada = 1;
  31. }
  32. }
  33.  
  34. $query_pag_data .= " LIMIT $start, $porPagina";
  35. #echo "\n<br>".__FUNCTION__.": <pre>".$query_pag_data."</pre>".mysql_error($conn);
  36. $result_pag_data=mysql_query($query_pag_data,$conn)or die("Error en: ".__FUNCTION__." - Funcion obtener datos");
  37. $count_result=mysql_num_rows($result_pag_data);
  38.  
  39. #obtener total
  40. $query_pag_num = "SELECT COUNT(*) AS count FROM ".$tabla;
  41. #echo "\n<br>".__FUNCTION__.": <pre>".$query_pag_num."</pre>".mysql_error($conn);
  42. $result_pag_num=mysql_query($query_pag_num,$conn)or die("Error en: ".__FUNCTION__." - Funcion obtener cantidad total");
  43.  
  44. $row = mysql_fetch_array($result_pag_num);
  45. $count = $row['count'];
  46. $total = (ceil($count/$porPagina)-1);
  47.  
  48. #validaciones
  49. if($btn_inicio==true)
  50. {
  51. if($pagina>1)
  52. {
  53. $btn_inicio_html = "<li id='1'><<</li>";
  54. $btn_inicio_html .= "<li id='".($pagina-1)."'><</li>";
  55. }
  56. }
  57. if($btn_final==true)
  58. {
  59. if($total > 0 || $pagina != $total ){
  60. if($pagina<$total)
  61. {
  62. $btn_final_html = "<li id='".($pagina+1)."'>></li>";
  63. $btn_final_html .= "<li id='".($total)."'>>></li>";
  64. }
  65. }
  66. }
  67.  
  68. if($count_result > 0)
  69. {
  70. $listaPaginador = '<tr>
  71. <td colspan="5" class="listado_blanco"><b>Pagina <span id="Npagina">'.$pagina.'</span> de '.$total.'</b>
  72.  
  73. <table border="0" cellspacing="0">
  74. <tr>
  75. <td><div id="pagination" align="center">
  76. <ul>'.$btn_inicio_html.'</ul>
  77. </div>
  78. </td>
  79.  
  80. <td><select id="select_paginador">';
  81. for($i=1; $i<=$total; $i++)
  82. {
  83. if($total >= $i)
  84. {
  85. if($pagina == $i){ $selected = "selected='selected'"; }else{ $selected = ""; }
  86. $listaPaginador .= '<option '.$selected.' value="'.$i.'">'.$i.'</option>';
  87. }
  88. }
  89.  
  90. $listaPaginador .= '</select></td>
  91.  
  92. <td><div id="pagination" align="center">
  93. <ul>'.$btn_final_html.'</ul>
  94. </div>
  95. </td>
  96. </tr>
  97. </table>
  98.  
  99. </td>
  100. </tr>';
  101.  
  102.  
  103. $numero = $start+1;
  104. while ($row = mysql_fetch_array($result_pag_data))
  105. {
  106. $Tablapaginado .= '<tr class="listado_plomo">';
  107. if($numeros == true){
  108. $Tablapaginado .= '<td>'.$numero.'</td>';
  109. }
  110. foreach($campos as $campo){
  111. $Tablapaginado .= '<td>'.$row[$campo].'</td>';
  112. }
  113. $Tablapaginado .= '</tr>';
  114. $numero++;
  115. }
  116.  
  117. }
  118. else
  119. {
  120. $listaPaginador = "";
  121. $Tablapaginado = "<td colspan=".count($campos)." class='listado_plomo'>No se encontraron resultados</td>";
  122. }
  123.  
  124. return compact('Tablapaginado','listaPaginador');
  125. }
  126.  
  127.  
  128. #llamar funcion
  129. extract(paginarResultados("cliente",'',$page,15,true,true,true,$campos,$link_perfiles));
  130.  
  131. #armar tabla
  132. echo '<table border="1" cellspacing="0" valign="top" align="center" width="90%">';
  133. echo $listaPaginador;
  134. echo '<tr>
  135. <td colspan="5" class="titulo_negro" height="32" align="center"> Listado de Clientes</td>
  136. </tr>
  137. <tr class="titulo_negro">
  138. <td width="1%">N°</td>
  139. <td width="5%">Rut</td>
  140. <td width="30%">Nombre</td>
  141. <td width="35%">Dirección</td>
  142. <td width="20%">Giro</td>
  143. </tr>';
  144. echo $Tablapaginado;
  145. echo $listaPaginador;
  146. echo '</table>';
  147.  
  148. #jquery
  149. jQuery(document).ready(function ($) {
  150. function loading_show(){
  151. $('#loading').html("<img src='../images/loading.gif'/>").fadeIn('fast');
  152. }
  153.  
  154. function loading_hide(){
  155. $('#loading').html('');
  156. }
  157.  
  158. function loadData(page){
  159. loading_show();
  160. $.ajax({
  161. type: "POST",
  162. url: "datos.php",
  163. data: "page="+page,
  164. success: function(data){
  165. $("#resultadosClientes").ajaxComplete(function(event, request, settings){
  166. loading_hide();
  167. $("#resultadosClientes").html(data);
  168. });
  169. }
  170. });
  171. }
  172.  
  173. loadData(0); //cargar pagina primera vez
  174.  
  175. $('#pagination li').live('click',function(){
  176. var page = this.id;
  177. loadData(page);
  178. });
  179.  
  180. $('#select_paginador').live('change',function(){
  181. var page = this.value;
  182. loadData(page);
  183. $('#select_paginador option[value='+$("#paginaHidden").val()+']').attr('selected', true);
  184. });
  185. });

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.