viernes, 12 de agosto de 2016

Buscador simple en PHP

En este artículo veremos como crear un buscador con PHP y MySQL que servirá para cualquier tabla MySQL de nuestra base de datos y que podrá ser mostrado facilmente en nuestro sitio web.
El script consta de tres partes. La configuración, el formulario y el proceso del formulario. La primera parte, la más sencilla de todas, es donde tendrás que poner los datos de tu base de datos y la tabla donde quieres que el buscador realice las búsquedas. No tiene pérdida. Al final de la configuración realizamos la conexión a la base de datos ya que la usaremos cada vez que se acceda al buscador.
En la segunda parte se trata la creación del formulario. Como no conocemos los campos de la tabla tenemos que generar ese camop del formulario dinámicamente. Para ello utilizamos la sentencia “SHOW FIELDS FROM table” que nos devuelve información de todos los campos que hay en la tabla. De esta forma conseguimos que nos liste todos los campos de la tabla que hayamos escogido al configurar, en el formulario.
En la tercera parte, que solo se ejecuta si se ha enviado el formulario, se realiza la búsqueda con los datos obtenidos. Para ello utilizamos una sentencia de SQL de este tipo: “SELECT * from tabla WHERE campo LIKE ‘%valor%’” la cual nos devuelve todas las filas donde haya encontrado algo que contenga el valor en el campo seleccionado. Finalmente mostramos los resultados obtenidos utilizando un bucle para recorrer todos los campos de la tabla.
Configurar y subir, así de facil 
Archivo: buscador_generico.php
<?
// Buscador para tablas MySQL escrito en PHP. Por Alex para www.webtaller.com
// Creado el 13-10-2003
////////////////////////////
// Configuración
///////////////////////////
//modifica estas variables según tu servidor de MySQL
$bd_servidor = “localhost”;
$bd_usuario = “pepito”;
$bd_contrasenya = “grillo”;
$bd_bdname = “mybd”;
$bd_tabla = “unatabla”; // Tabla donde se harán las búsquedas
// Conexión y selección de la base de datos
$link = mysql_connect($bd_servidor,$bd_usuario,$bd_contrasenya);
mysql_select_db($bd_bdname,$link);
////////////////////////////
// Formulario
///////////////////////////
?>
<center>
<p><h2>Introduce las palabras para la búsqueda</h2></p>
<p><form name=”buscador” method=”post” action=”buscador_generico.php”><br>
Buscar en:
<select name=”campo”>
<?php
//Con este query obtendremos los campos por los cuales el usuario puede buscar
$result = mysql_query(“SHOW FIELDS FROM `$bd_tabla`”,$link);
while($row = mysql_fetch_row($result)) {
// en $row[0] tenemos el nombre del campo
// de esta manera no necesitamos conocer el nombre de los campos
// por lo que cualquier tabla nos valdrá
?>
<option value=”<?php echo $row[0]; ?>”><?php echo $row[0]; ?></option>
<?php
}
?>
</select>
Palabra(s): <input type=”text” name=”palabra”><br>
<input type=”submit” value=”Enviar” name=”enviar”>
</form></p>
</center>
<?
////////////////////////////
// Proceso del Formulario
///////////////////////////
if(isset($_POST[‘enviar’])) {
// Solo se ejecuta si se ha enviado el formulario
$query = “SELECT * from $bd_tabla WHERE `{$_POST[‘campo’]}` LIKE ‘%{$_POST[‘palabra’]}%’”;
$result = mysql_query($query,$link);
$found = false; // Si el query ha devuelto algo pondrá a true esta variable
while ($row = mysql_fetch_array($result)) {
$found = true;
echo “<p>”;
foreach($row as $nombre_campo => $valor_campo) {
// Tenemos que mostrar todos los campos de las filas donde se haya
// encontrado la búsqueda.
if(is_int($nombre_campo)) {
continue; //Cuando hacemos mysql_fetch_array, php genera un array
// con todos los valores guardados dos veces, uno con
// índice numérico y otro con índice el nombre del campo.
// Solo nos interesa el del nombre del campo.
}
echo “<b>”.$nombre_campo.”</b> : “.$valor_campo.”<br>”;
}
echo “</p>”;
}
if(!$found) {
echo “No se encontró la palabra introducida”;
}
}
?>

Sobre el Autor

hocielo

Autor & Editor

SI SABES BUSCAR EN INTERNET ENCUENTRAS. UNA PALABRA CLAVE DETERMINA TU BUSQUEDA

Publicar un comentario

 
CodigoGuaro © 2016 - Designed by Templateism.com Rediseñado CreativosMontero