miércoles, 28 de marzo de 2012

Treceava Clase

Formulario de Búsqueda

En la doceava clase estudiamos como consultar datos en la tabla de datos, en esta lección aprenderemos como crear un formulario de búsqueda, siempre haciendo una consulta en la tabla, pero de forma más selectiva.

Como siempre el código PHP está de color rojo, el código HTML de color azúl y los comentarios de color verde.

Iniciamos PHP y evaluamos que el formulario no contenga datos, se deja abierto el if para mostrar el formulario que esta escrito en HTML.

<?
if(!$_POST) {
?>

Escribimos el código HTML para el formulario que tendrá dos campos una tipo select y otro tipo texto, ambos campos estarán estructurados en una tabla.

<table border="2" align="center" width="400">
<form action="<? $_POST ?>" method="post">
    <tr><td align="right">Tipo de Busqueda</td>
        <td><select name="tipo">
        <option value="Nombre">Nombre</option>
        <option value="Codigo">Codigo</option>
           </select></td></tr>
    <tr><td align="right">Termino de Busqueda</td>
        <td><input name="termino" type="text" size="40" maxlength="60">
        </td></tr>
    <tr><td>&nbsp;</td><td><input name="Buscar" type="submit" value="Buscar">
    </td></tr>
</form>
</table>

La siguiente porción de código es de PHP y corresponde al cierre de if y al inicio de else.

<?
} else {

Estas dos líneas de código asignan los valores de los datos capturados en el formulario a dos variables diferentes que usaremos para consultar en la tabla.

$tipo = $_POST['tipo'];
$termino = $_POST['termino'];

Validamos el formulario, es decir que verificamos que el usuario ingrese el término que desea buscar.  No se valida el campo tipo, porque es un campo tipo select y por ello siempre tendrá un dato aunque el usuario no lo modifique.

if(!$termino) {
    echo "Debes indicar un termino de busqueda";
    exit;
}

Conectamos con el servidor.

$db = mysql_connect("localhost", "root", "123456")
        or die ("No se pudo conectar con LOCALHOST");

Seleccionamos la base de datos.

mysql_select_db("colegiobac")
        or die ("No se puede abrir la base de datos COLEGIOBAC");

Realizamos la consulta.  En este caso vea que utilizamos WHERE para condicionar la búsqueda y esta a su vez utiliza la variable $tipo (que puede ser Nombre o bien Codigo, estos dos datos corresponden a los nombres de los campos en la tabla) la instrucción like unido al signo  % como carácter comodín cuya tarea es buscar los datos que contengan el termino de la búsqueda ($termino).

$consulta = "SELECT * FROM datos WHERE ".$tipo." like '%".$termino."%'";

Ejecutamos la consulta.

$resultado = mysql_query($consulta);

Guardamos en la variable $num_resul el número de registros encontrados.

$num_resul = mysql_num_rows($resultado);

Iniciamos el ciclo con el bucle for y este continuará mientras el contador ($i) sea menor o igual que el número de resultados ($num_resul).

for($i=1;$i<=$num_resul;$i++) {

La siguiente porción de código extrae los datos de la variable $resultado y los guarda en un array con el nombre $reg.
$registro = mysql_fetch_array($resultado);

Con el siguiente código mostramos el o los registros que resultan positivos en la consulta o búsqueda que realizamos.

    echo "No: ".$registro['IdNombre']."<br>";
    echo "<h1>Nombre: ".$registro['Nombre']."</h1>";
    echo "Edad: ".$registro['Edad']."<br>";
    echo "Codigo: ".$registro['Codigo']."<br>";
    echo "Sueldo: ".$registro['Sueldo']."<br>";
    echo "------------------------------------<br>";

Cerramos el ciclo for.

}

Cerramos el condicional if.

}

Cerramos PHP.
?>

Como en las clases anteriores les dejo el código completo sin comentarios para lo puedan probar y comenten sus resultados.

 <?
if(!$_POST) {
?>
<table border="2" align="center" width="400">
<form action="<? $_POST ?>" method="post">
    <tr><td align="right">Tipo de Busqueda</td>
        <td><select name="tipo">
        <option value="Nombre">Nombre</option>
        <option value="Codigo">Codigo</option>
           </select></td></tr>
    <tr><td align="right">Termino de Busqueda</td>
        <td><input name="termino" type="text" size="40" maxlength="60">
        </td></tr>
    <tr><td>&nbsp;</td><td><input name="Buscar" type="submit" value="Buscar">
    </td></tr>
</form>
</table>
<?
} else {

$tipo = $_POST['tipo'];
$termino = $_POST['termino'];

if(!$termino) {
    echo "Debes indicar un termino de busqueda";
    exit;
}

$db = mysql_connect("localhost", "root", "123456")
        or die ("No se pudo conectar con LOCALHOST");

mysql_select_db("colegiobac")
        or die ("No se puede abrir la base de datos COLEGIOBAC");

$consulta = "SELECT * FROM datos WHERE ".$tipo." like '%".$termino."%'";
$resultado = mysql_query($consulta);
$num_resul = mysql_num_rows($resultado);

for($i=1;$i<=$num_resul;$i++) {
$registro = mysql_fetch_array($resultado);
    echo "No: ".$registro['IdNombre']."<br>";
    echo "<h1>Nombre: ".$registro['Nombre']."</h1>";
    echo "Edad: ".$registro['Edad']."<br>";
    echo "Codigo: ".$registro['Codigo']."<br>";
    echo "Sueldo: ".$registro['Sueldo']."<br>";
    echo "------------------------------------<br>";
}
}
?>

1 comentario:

  1. Profe, perdone pero hay varias dudas de lo mismo porque ya tengo lleno los datos pero cambie todo porque en local host yo tengo de otra manera pero no me aparecen mis datos los que he guardado pero gracias porque ya entendí el ultimo ejercicio y ojala funcione pero si se puede realizar

    ResponderEliminar