Listado completo de tutoriales

Temario del Tutorial44 - Carga de una fecha en una tabla de MySQL


Agregar a la tabla alumnos un campo llamado "fechanac" que es de tipo "date", es decir que permite almacenar una fecha. "fechanac" almacenará la fecha de nacimiento del alumno.

Veremos cual es la estructura que debemos darle a la fecha para que el MySql la tome como válida.

Haremos el alta de la tabla alumnos que habíamos visto anteriormente añadiéndole la carga de la fecha de nacimiento.

El primer formulario, prácticamente ya visto, es:

pagina1.php

<html>

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

<body>
  <form action="pagina2.php" method="post">
    Ingrese nombre:
    <input type="text" name="nombre"><br>
    Ingrese mail:
    <input type="text" name="mail"><br>
    Ingrese la fecha de nacimiento (dd/mm/aaaa):
    <input type="text" name="dia" size="2">
    <input type="text" name="mes" size="2">
    <input type="text" name="anio" size="4">
    <br>
    Seleccione el curso:
    <select name="codigocurso">
      <?php
      $conexion = mysqli_connect("localhost", "root", "", "base1") or
        die("Problemas con la conexión");

      $registros = mysqli_query($conexion, "select codigo,nombrecurso from cursos") or
        die("Problemas en el select:" . mysqli_error($conexion));
      while ($reg = mysqli_fetch_array($registros)) {
        echo "<option value=\"$reg[codigo]\">$reg[nombrecurso]</option>";
      }
      ?>
    </select>
    <br>
    <input type="submit" value="Registrar">
  </form>
</body>

</html>

Lo único que podemos decir, es que agregamos tres controles de tipo "text" para el ingreso independiente del día, el mes y el año.

El segundo formulario, y más importante, es el alta propiamente dicha en la tabla alumnos:

<html>

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

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

  $fechanacimiento = $_REQUEST['anio'] . "-" . $_REQUEST['mes'] . "-" . $_REQUEST['dia'];
  mysqli_query($conexion, "insert into alumnos(nombre,mail,codigocurso,fechanac) values 
           ('$_REQUEST[nombre]','$_REQUEST[mail]',
            $_REQUEST[codigocurso],'$fechanacimiento')") or
    die("Problemas en el select" . mysqli_error($conexion));
  mysqli_close($conexion);
  echo "El alumno fue dado de alta.";
  ?>
  <br>
  <a href="pagina3.php">ver listado de alumnos</a>
</body>

</html>

Lo primero que hacemos es generar una string que contenga el año-mes-día, en ese orden y utilizando como separador el carácter "-":

  $fechanacimiento = $_REQUEST['anio'] . "-" . $_REQUEST['mes'] . "-" . $_REQUEST['dia'];

Tenemos ahora en la variable $fechanacimiento el valor de la fecha ingresada por teclado con el formato que requiere el MySql, procedemos ahora a plantear el comando insert con todos los datos ingresados en el formulario:

  mysqli_query($conexion, "insert into alumnos(nombre,mail,codigocurso,fechanac) values 
           ('$_REQUEST[nombre]','$_REQUEST[mail]',
            $_REQUEST[codigocurso],'$fechanacimiento')") or
    die("Problemas en el select" . mysqli_error($conexion));

Por último, dispusimos un hipervínculo a una tercera página donde mostramos el contenido de la tabla alumnos, aquí podremos controlar los datos ingresados.

No hemos validado la fecha ingresada, tarea obligatoria cuando implementemos un sitio real.

El último archivo contiene la página que imprime el contenido de la tabla alumnos, con el campo fechanac inclusive:

<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 alu.codigo as codigo,nombre,mail,codigocurso,fechanac, 
               nombrecurso from alumnos as alu
               inner join cursos as cur on cur.codigo=alu.codigocurso") or
    die("Problemas en el select:" . mysqli_error($conexion));
  while ($reg = mysqli_fetch_array($registros)) {
    echo "Codigo:" . $reg['codigo'] . "<br>";
    echo "Nombre:" . $reg['nombre'] . "<br>";
    echo "Mail:" . $reg['mail'] . "<br>";
    echo "Fecha de Nacimiento:" . $reg['fechanac'] . "<br>";
    echo "Curso:" . $reg['nombrecurso'] . "<br>";
    echo "<hr>";
  }
  mysqli_close($conexion);
  ?>
</body>

</html>


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


pagina3.php

Problema propuesto.

Confeccionar un programa que permita efectuar el alta en la tabla alumnos. Para el ingreso de la fecha de nacimiento del alumno, disponer 3 controles de tipo "select" (en el día disponer valores entre 1 y 31, en el mes valores comprendidos entre 1 y 12 y por último en el año disponer valores comprendidos entre 1900 y 2020)

Validar la fecha en la página que se efectúa el insert propiamente dicho.
Recomendación: Plantear una estructura repetitiva de PHP para la creación del control "select" donde se selecciona el año de nacimiento.

Solución
pagina1.php

Ejecutar ejemplo
pagina2.php

Retornar