Listado completo de tutoriales

Temario del Tutorial22 - Consulta (selección de registros de una tabla)


El proceso de consulta de datos de una tabla es similar al de listado, la diferencia es que se muestra sólo aquel o aquellos que cumplen la condición por la que buscamos.

Haremos un programa que nos permita consultar los datos de un alumno ingresando su mail para su búsqueda. Tengamos en cuenta que no puede haber dos alumnos con el mismo mail, por lo que la consulta nos puede arrojar uno o ningún registro.

Debemos codificar un formulario para el ingreso del mail a consultar:

pagina1.html

<html>

<head>
  <title>Problema</title>
</head>

<body>
  <form action="pagina2.php" method="post">
    Ingrese el mail del alumno a consultar:
    <input type="text" name="mail">
    <br>
    <input type="submit" value="buscar">
  </form>
</body>

</html>

Por otro lado tenemos el archivo "pagina2.php" que se encarga de buscar el mail ingresado en el formulario:

<html>

<head>
  <title>Problema</title>
</head>

<body>
  <?php
  $conexion = mysqli_connect("localhost", "root", "", "base1") or
    die("Problemas con la conexión");

  $registros = mysqli_query($conexion, "select codigo,nombre,codigocurso
                        from alumnos where mail='$_REQUEST[mail]'") or
    die("Problemas en el select:" . mysqli_error($conexion));

  if ($reg = mysqli_fetch_array($registros)) {
    echo "Nombre:" . $reg['nombre'] . "<br>";
    echo "Curso:";
    switch ($reg['codigocurso']) {
      case 1:
        echo "PHP";
        break;
      case 2:
        echo "ASP";
        break;
      case 3:
        echo "JSP";
        break;
    }
  } else {
    echo "No existe un alumno con ese mail.";
  }
  mysqli_close($conexion);
  ?>
</body>

</html>

Lo más importante se encuentra en el comando select:

  $registros = mysqli_query($conexion, "select codigo,nombre,codigocurso
                        from alumnos where mail='$_REQUEST[mail]'") or
    die("Problemas en el select:" . mysqli_error($conexion));

Acá es donde con la clausula where seleccionamos sólo el registro que cumple con la condición que el mail sea igual al que ingresamos.

Como sólo puede haber un registro que cumpla la condición, llamamos a la función mysqli_fetch_array en un if y no una estructura repetitiva como el listado:

  if ($reg = mysqli_fetch_array($registros)) {

En caso de retornar un vector asociativo la condición del if se verifica como verdadera y pasa a mostrar los datos, en caso de retornar false se ejecuta el else.



Problema resuelto.

Copiar el contenido de este cuadro de texto al VS Code y almacenarlo en la carpeta c:\xampp\htdocs con un nombre con extensión php.
luego abrir el navegador (Chrome, FireFox, IExplorer etc.) y en la barra de direcciones tipear:
http://localhost/pagina1.php (o el nombre del archivo que le dió)

pagina1.php

Ejecutar ejemplo

pagina2.php

Problema propuesto.

Confeccionar un programa que permita ingresar el nombre de un alumno en un formulario, luego mostrar los datos del mismo (tener en cuenta que puede haber más de un alumno con el mismo nombre)

Solución
pagina1.php

Ejecutar ejemplo
pagina2.php

Retornar