Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

160
Vistas
Cómo agregar más filtros y buscapersonas usando Ajax

Tengo la siguiente estructura ajax que me permite mostrar 10, 25, 50 y 100 registros

 $(function() { $(document).on('click', '.pagination li a', function(evt) { evt.preventDefault(); url = $(this).attr('data-target'); ajaxLoad(url); }); $('#amount_show').change(function(evt) { evt.preventDefault(); ajaxLoad('pagination.php'); }); ajaxLoad('pagination.php'); function ajaxLoad(url) { query_params = { amount_show: $('#amount_show').val() }; $('.data-pagination').html('<div class="loading">Loading...</div>'); $.ajax({ type: "GET", url: url, data: $.param(query_params), success: function(data) { $('.data-pagination').fadeOut('1000', function() { $(this).html(data) }).fadeIn('1000'); } }); } });

De acuerdo a lo que seleccioné de la siguiente estructura HTML, ajax, me trae los resultados enviados correctamente.

 <select id="amount_show" name="amount_show"> <option value="10" selected>10</option> <option value="25" >25</option> <option value="50" >50</option> <option value="100">100</option> </select>

Pero sigo sin entender cómo puedo agregar más filtros a mi localizador, por ejemplo tipo de cliente, tipo de usuario o motor de búsqueda.

O busque filtro por fecha, quiero agregar tantos filtros a mi paginación, pero para esto necesito un pequeño empujón de cómo proceder.

Este es mi código PHP, ¿puedes explicarme cómo puedo agregar más filtros al buscapersonas?

 <?php $strs = ''; $pagination_page = 'pagination.php'; $defaul_records = 10; if (isset($_GET['page'])) { $page = $_GET['page'] ? : ''; } else { $page = 1; } if (isset($_GET['amount_show'])) { $records_by_page = $_GET['amount_show']; } else { $records_by_page = $defaul_records; } $localization_sql = ($page - 1) * $records_by_page; $stmtPD = $con->prepare("SELECT idCliente, nomCliente FROM cliente ORDER BY idCliente DESC LIMIT $localization_sql, $records_by_page"); $stmtPD->execute(); $stmtPD->store_result(); if ($stmtPD->num_rows > 0): ob_start(); $strs .= '<table id="data-table" class="table bootgrid-table"> <thead> <tr> <th>ID</th> <th>CLIENTE</th> <th>ACCIÓN</th> </tr> </thead> <tbody>'; $stmtPD->bind_result( $idCliente, $nomCliente ); while ($stmtPD->fetch()) { $strs .= '<tr> <td>'.$idCliente.'</td> <td>'.$nomCliente.'</td> <td> <span class="view_data" id="'.$idCliente.'">Ver</span> <span class="edit_data" id="'.$idCliente.'">Editar</span> </td> </tr>'; } $stmtPD->close(); $strs .= '</tbody></table><div class="pagination"><ul class="pagination">'; $stmtPD = $con->prepare("SELECT * FROM cliente"); $stmtPD->execute(); $stmtPD->store_result(); $BD_records = $stmtPD->num_rows; $stmtPD->close(); $con->close(); $total_page = ceil($BD_records / $records_by_page); $prev = $page - 1; $next = $page + 1; if ($prev > 0) { $strs .= "<li><a data-target='" . $pagination_page . "?page=1'><i class='icon-angle-double-arrow'></i></a></li>"; $strs .= "<li><a data-target='" . $pagination_page . "?page=$prev'><i class='icon-angle-left'></i></a></li>"; } for ($i = 1;$i <= $total_page;$i++) { if ($page == $i) { $strs .= "<li><a class='page-link active' >" . $page . "</a></li>"; } else { $strs .= "<li><a class='page-link' data-target='" . $pagination_page . "?page=$i'>$i</a></li>"; } } if ($page < $total_page) { $strs .= "<li><a class='page-link' data-target='" . $pagination_page . "?page=$next'><i class='icon-angle-right'></i></a></li>"; $strs .= "<li><a class='page-link' data-target='" . $pagination_page . "?page=$total_page'><i class='icon-angle-double-right'></i></a></li>"; } $strs .= '</ul></div>'; echo $strs; else: $stmtPD->close(); echo "no records.."; endif; ?>

Ejemplo de los datos de mi tabla:

 idCliente nomCliente typeCliente dateCliente 1 Google VIP 2021-03-30 22:00:58.277400 2 StackOverflow PRIME 2021-03-30 21:00:58.277400
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Supongo que pagination.php tiene un código para conectarse a la base de datos, construir una declaración SELECT para obtener las filas deseadas y luego devolverlas a la interfaz.

Veo ?page=<<number>> , pero nada (todavía) sobre el tamaño de la página, ni sobre el filtrado.

Sugiera construir esto dentro del JS y enviarlo:

 pagination.php?page=3&page_size=25&color=green&size=big

Luego, dentro de PHP, use $_GET para ver qué argumentos se enviaron y reaccione a cualquier parámetro que se pase (¡y ! empty() ).

Luego construya la consulta deseada, algo como:

 SELECT ... FROM ... WHERE color = 'green' AND size = 'big' ORDER BY ... LIMIT 50, 25

Haz eso; obtener los resultados; json_encode() ellos; y responder a la consulta AJAX.

Luego, dentro del JS, necesita una devolución de llamada para recibir ese resultado y presentárselo al usuario.

Es posible que esté mejor con XHR en lugar de AJAX, ya que realmente no necesita la parte "Asíncrona" de AJAX.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda