¿Cómo agregar un buscador(filtro) con php y mysql?

Quisiera agregar un buscador que me pueda filtrar los datos, que arroja mi consulta. Gracias

$sql="SELECT * FROM tabla";
$resultado=mysqli_query($conexion,$sql);

¿

?>
<! DOCTYPE html>

<body>
<br>
<div class="row table-responsive">
<table class="table table-striped table-bordered table-hover table-full-width" id="sample_1">
<thead>
<tr>
<th>Id</th>
<th>Nombre</th>
<th>Apellido</th>
<th>Acción</th>
<th>Tiempo</th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<?php while($row =$resultado->fetch_array(MYSQL_ASSOC)) { ?>
<tr>
<td><?php echo $row ['id'];?></td>
<td><?php echo $row ['firstname'];?></td>
<td><?php echo $row ['lastname'];?></td>
<td><?php echo $row ['action'];?></td>
<td><?php echo $row ['fecha'];?></td>
<td><a href="modificarse.php?id=<?php echo $row ['id'];?>"><img src="img/lapiz.png""></span></a></td>
<td><a href="eliminarse.php?id=<?php echo $row ['id'];?>"><img src="img/trash.jpg""></span></a></td>

1

1 Respuesta

2.650 pts.

Para crear un buscador con PHP HTML y SQL básicamente necesitas 2 cosas:

1. Formulario HTML con un campo de tipo texto para búsqueda y un botón de tipo submit. Ejemplo:

<form method="post" action="pagina-resultados.php">

<input type="text" name="texto_busqueda">

<input type="submit" name="enviar" value="buscar">

</form>

2. La segunda parte es una página en PHP que recoja el valor del texto escrito y filtre los resultados a través del WHERE de tu consulta:

$busqueda = $_GET['texto_busqueda'];

$sql = "SELECT * FROM tabla WHERE titulo LIKE '%$busqueda%'";

Esa es la base de cualquier buscador. A partir de ahí podrías añadir más campos al buscador o lo que quieras.

Como podría agregar  firstname LIKE '%$busqueda%' a esta consulta:

"SELECT mdl_logstore_standard_log.id, firstname, lastname, action , fecha FROM mdl_user INNER JOIN mdl_logstore_standard_log ON mdl_logstore_standard_log.userid = mdl_user.id WHERE mdl_logstore_standard_log.action = 'loggedin' OR mdl_logstore_standard_log.action = 'loggedout'";

SELECT mdl_logstore_standard_log.id, firstname, lastname, action , fecha FROM mdl_user INNER JOIN mdl_logstore_standard_log ON mdl_logstore_standard_log.userid = mdl_user.id WHERE ( mdl_logstore_standard_log.action = 'loggedin' OR mdl_logstore_standard_log.action = 'loggedout ) AND firstname LIKE '%busqueda%';

El problema es que cuando agrego esto AND mdl_user.firstname LIKE '%búsqueda%'"; no me arroja nada de información, ni cuando escribo algo en buscar, que tengo mal? Si me podrías decir favor, así tengo todo el código:


$tildes=$conexion->query("set name 'utf8'");
$busqueda = $_GET['texto_busqueda'];

$sql="SELECT mdl_logstore_standard_log.id, firstname, lastname, action , ip, fecha FROM mdl_user INNER JOIN mdl_logstore_standard_log ON mdl_logstore_standard_log.userid = mdl_user.id
WHERE (mdl_logstore_standard_log.action = 'loggedin' OR mdl_logstore_standard_log.action = 'loggedout') AND mdl_user.firstname LIKE '%busqueda%'";
$resultado=mysqli_query($conexion,$sql);

¿

?>
<! DOCTYPE html>

<body>
<form method="post" action="sesiones.php">

<input type="text" name="texto_busqueda">

<input type="submit" name="buscar" value="buscar">
</form>

<br>
<div class="row table-responsive">
<table class="table table-striped table-bordered table-hover table-full-width" id="sample_1">
<thead>
<tr>
<th>Id</th>
<th>Nombre</th>
<th>Apellido</th>
<th>Acción</th>
<th>Tiempo</th>
<th>Ip</th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<?php while($row =$resultado->fetch_array(MYSQL_ASSOC)) { ?>
<tr>
<td><?php echo $row ['id'];?></td>
<td><?php echo $row ['firstname'];?></td>
<td><?php echo $row ['lastname'];?></td>
<td><?php echo $row ['action'];?></td>
<td><?php echo $row ['fecha'];?></td>
<td><?php echo $row ['ip'];?></td>
<td><a href="modificarse.php?id=<?php echo $row ['id'];?>"><img src="img/lapiz.png""></span></a></td>
<td><a href="eliminarse.php?id=<?php echo $row ['id'];?>"><img src="img/trash.jpg""></span></a></td>

</tr>
<?php }?>
</tbody>
</table>
</div>

<script type="text/javascript" src="js/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="js/DT_bootstrap.js"></script>
<script src="js/table-data.js"></script>
<script>
jQuery(document).ready(function() {
Main.init();
TableData.init();
});
</script>

</body>
</html>
<?php

Deberías de poner la consulta así:

$sql="SELECT mdl_logstore_standard_log.id, firstname, lastname, action , ip, fecha FROM mdl_user INNER JOIN mdl_logstore_standard_log ON mdl_logstore_standard_log.userid = mdl_user.id
WHERE (mdl_logstore_standard_log.action = 'loggedin' OR mdl_logstore_standard_log.action = 'loggedout') AND mdl_user.firstname LIKE '%". $_POST['texto_busqueda'] ."%'";

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas