|
Un buscador para nuestra base
de datos
Vamos a ver una aplicación, un ejemplo, de todo lo visto hasta ahora.
Escribiremos un script que sirva para buscar una determinada cadena (que
recibiremos de un formulario, y la almacenamos en la variable $buscar),
dentro de nuestra base de datos, concretamente dentro del campo
"nombre".
En primer lugar escribiremos el texto HTML de la página web que nos
servirá como formulario de entrada, la llamaremos formulario.html.
Formulario entrada
<html>
<body>
<form method = "POST" action = "http://mysevidor/php/buscador.php3">
<strong>Palabra clave:</strong>
<input
type="text" name="buscar" size="20"><br><br>
<input type="submit" value="Buscar">
</form>
</body>
</html>
El siguiente script de busqueda lo llamaremos buscador.php3, y será el
encargado de hacer la búsqueda en la BD, y devolver por pantalla los
registros encontrados.
Script búsqueda
<html>
<body>
<?php
if (!isset($buscar)){
echo "Debe especificar una cadena a
buscar";
echo "<p>Debe
especificar una cadena a buscar</p> \n";
echo "<p><a href=buscador_bd.html>Volver</p>
\n";
echo "</html></body> \n";
exit;
}
$link = mysql_connect("localhost", "nobody");
mysql_select_db("mydb", $link);
$sql = "SELECT * FROM agenda WHERE nombre LIKE
'%$buscar%' ORDER BY nombre";
$result = mysql_query($sql, $link);
if ($row = mysql_fetch_array($result)){
echo "<table border = '1'> \n";
//Mostramos los nombres de las tablas
echo "<tr> \n";
mysql_field_seek($result,0);
while ($field =
mysql_fetch_field($result)){
echo "<td><b>$field->name</b></td> \n";
}
echo "</tr> \n";
do {
echo "<tr> \n";
echo "<td>".$row["id"]."</td>
\n";
echo "<td>".$row["nombre"]."</td>
\n";
echo "<td>".$row["direccion"]."</td>
\n";
echo "<td>".$row["telefono"]."</td>
\n";
echo "<td><a
href='mailto:".$row["email"]."'>".
$row["email"]."</a></td>
\n";
echo "</tr> \n";
} while ($row = mysql_fetch_array($result));
echo "<p><a
href=buscador_bd.html>Volver</p> \n";
echo "</table> \n";
} else {
echo "<p>¡No se ha encontrado ningún registro!</p>\n";
echo "<p><a
href=buscador_bd.html>Volver</p> \n";
}
?>
</body>
</html>
Lo primero que comprobamos es que el contenido de la variable $buscar que
recibimos del la página web formulario.html no es una cadena vacia, y esto
lo hacemos con la función isset() que devuelve
'falso' si la variable que
recibe está vacia. A la función le anteponemos el signo admiración (!)
que es equivalente a un NOT, para convertirlo en
'verdadero' en caso de
que la variable esté vacia, y en es caso terminamos la ejecución del
script con exit.
Lo más importante de este script, es sin duda la sentencia SQL que le
enviamos al servidor MySQL, y más concretamente la condición que le
imponemos, WHERE nombre LIKE '%$buscar%'. Con la sentencia LIKE buscamos
cualquier ocurrencia de la cadena contenida en $buscar, mientras que con
los signos de porcentaje (%) indicamos el lugar de la coincidencia, por
ejemplo, si hubiesemos puesto nombre LIKE '%$buscar', buscariamos
cualquier ocurrencia al final del campo"nombre", mientras que si
hubiesemos puesto nombre LIKE '$buscar%', buscariamos cualquier ocurrencia
al principio del campo "nombre".
Las últimas novedade que hemos incorporado, son las funciónes
mysql_fetch_field(), con el que obtenemos información acerca de las
caracteríticas de cada campo, como su nombre, tipo, longitud, nombre de la
tabla que los contiene, etc. Pero para ejecutar la función anterior
debemos colocar el puntero en el primer campo, y eso lo logramos con la
función mysql_field_seek(), la cál
mueve el puntero interno a la posición indicada.
|