 |
| 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";
}
}
?>