FANDOM


Envío de datosEditar

Vamos a crear un formulario para enviar a otra página la información necesaria para dar de alta un nuevo género cinematográfico. El código es el siguiente:

<html>
<head>
  <title>Nuevo género</title>
</head>

<body>
<form name="frm_genero" method="get" action="">
  <strong>Nombre:</strong><br>
  <input type="text" name="nombre">
  <br>
  <strong>Descripción:</strong><br>
  <input type="text" name="descripcion">
  <br>
  <input type="submit" value="Guardar">
</form>
</body>
</html>

Recepción de datosEditar

La siguiente página se limita a recibir los datos enviados por la página de la sección anterior. Asegúrese de que el nombre con el que guarde esta página esté en el campo [u]action[/u] de la página anterior y de que ambas están en la misma carpeta:

<?php

$pParams = FALSE;

if(count($_GET) != 0){
  $pParams = $_GET;
}elseif(count($_POST) != 0){
  $pParams = $_POST;
}
if($pParams == FALSE){
  echo('No se ha pasado valor alguno.');
  exit();
}

echo('<table border="1">');
echo('<tr>');
echo('<th>Nombre</th><th>Valor</th>');
echo('</tr>');

foreach($pParams as $nombre => $valor){
  echo('<tr>');
  printf(
    "<td>%s</td><td>%s</td>",
    $nombre,$valor);
  echo('</tr>');
}

echo('</table>');

?>

Inserción de registrosEditar

Vamos a combinar las dos páginas de las secciones anteriores en una sola que, además, guarde esos valores en la tabla de géneros de la base de datos de películas que hemos creado:

<?php

$pParam = FALSE;

if(count($_GET) != 0){
  $pParam = $_GET;
}elseif(count($_POST) != 0){
  $pParam = $_POST;
}

if($pParam != FALSE){

  $sNombre = $pParam['nombre'];
  $sDescripcion = $pParam['descripcion'];

  if(
     ($sNombre == '') or 
     ($sDescripcion == '')
  ){

    $sMensaje =
      'El nombre y la descripción '.
      'del nuevo género no pueden '.
      'ser cadenas vacías.';
    echo($sMensaje);

  }else{

$sConsulta = <<<CONSULTA
INSERT INTO genero(
  nombre,
  descripcion
)VALUES(
  '$sNombre',
  '$sDescripcion'
)
CONSULTA;

    $videoteca = new mysqli(
      '','','','videoteca'
    );

    if ($videoteca == FALSE){
      echo('Error en la conexión.');
      exit();
    }

    $resultado = $videoteca->query(
      $sConsulta
    );

    if($resultado == FALSE){
      echo('Error en la consulta.');
      echo($videoteca->error);
      exit();
    }

    echo('Nuevo género añadido.<hr/>');

    $videoteca->close();

  }

}

?>

<html>
<head>
  <title>Nuevo género</title>
</head>

<body>
<form name="frm_genero" method="get">
  <strong>Nombre:</strong><br>
  <input type="text" name="nombre">
  <br/>
  <strong>Descripción:</strong><br>
  <input type="text" name="descripcion">
  <br/>
  <input type="submit" value="Guardar">
</form>
</body>
</html>

Control en el lado del clienteEditar

Para impedir que se intenten realizar inserciones en las que falten el nombre o de la descripción del género vamos a utilizar el siguiente JavaScript:

function comprobar_valores(){

  var frm = document.frm_genero;
  var sNombre = frm.nombre.value;
  var sDescripcion = frm.descripcion.value;

  if(sNombre == ''){
    alert('Falta el nombre.');
    frm.nombre.select();
    return(false);
  }

  if(sDescripcion == ''){
    alert('Falta la descripción.');
    frm.descripcion.select();
    return(false);
  }

  return(true);

}

Lo utilizaremos desde la página PHP así:

<html>
<head>
  <title>Nuevo género</title>
  <script 
    language="javascript"
    src="genero.js">
  <!--
  -->
  </script>
</head>

<body>
<form name="frm_genero" method="get">
  <strong>Nombre:</strong><br>
  <input type="text" name="nombre">
  <br/>
  <strong>Descripción:</strong><br>
  <input type="text" name="descripcion">
  <br/>
  <input
    type="submit"
    value="Guardar"
    onClick="return comprobar_valores()">
</form>
</body>
</html>

Enlaces interesantesEditar

Si quiere profundizar tanto en el funcionamiento de los formularios como en el uso de JavaScript puede que encuentre interesantes estos enlaces:

El contenido de la comunidad está disponible bajo CC-BY-SA a menos que se indique lo contrario.