Volver al índiceEjemplo de ejercicio 1 - Recogida y comprobación de datos

Algunos comentarios sobre la realización de ejercicios:


Estructura general de los ejercicios

La mayoría de ejercicios propuestos como ejercicios básicos constan de dos páginas:

Página html

La página html enlaza a una hoja de estilo CSS (que es común a todos los ejercicios).

Tanto la página html como la hoja de estilo se pueden copiar de los ejemplos incluidos en los enunciados (dado que este es un curso de PHP, no un curso de HTML /CSS).

El formulario incluye controles cuyo nombre debe estar relacionado con la información que se va a escribir en ellos.

Página php

La página php es el programa PHP que debe escribir el alumno.

En todos los primeros ejercicios propuestos en este curso, la página php siempre tiene que realizar las tareas:


En el caso de ejercicios más complejos, los ejercicios pueden constar de una página html y varias páginas php o constar únicamente de páginas php.

Volver al principio de la página


Ejemplo de ejercicio

En los enunciados de los ejercicios se incluye un ejemplo de ejercicio resuelto y un enlace al ejercicio resuelto, que se puede abrir en una pestaña (o ventana) diferente. Mostrando el código fuente de las páginas de los ejercicios, se puede ver el código HTML buscado. Ese código fuente se puede copiar y pegar en las páginas PHP.

A continuación se muestra un ejemplo de ejercicio y de enlace al ejercicio:

Enlace a ejemplo Recogida de datos 1

ERROR (no puede mostrarse el objeto)

Volver al principio de la página


Solución del ejemplo de ejercicio anterior

A continuación se comenta una posible solución para la página php del ejemplo anterior.

Fragmentos HTML y fragmentos PHP

La página php del ejemplo contiene cuatro fragmentos:

A continuación se muestra el código fuente con los fragmentos PHP con fondo gris y los fragmentos HTML con fondo blanco:

<?php 
/**
 * Ejemplo de recogida de datos 1 - ejemplo_recogida_datos_1.php
 * 
 * @author    Bartolomé Sintes Marco <bartolome.sintes+mclibre@gmail.com>
 * @copyright 2011 Bartolomé Sintes Marco
 * @license   http://www.gnu.org/licenses/agpl.txt AGPL 3 or later
 * @version   2011-11-13
 * @link      http://www.mclibre.org
 */

print "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?".">\n"; 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  <title>Ejemplo de recogida de datos 2 (Resultado). Ejemplo de ejercicio. 
  PHP. Bartolomé Sintes Marco</title>
  <link href="mclibre_php_soluciones.css" rel="stylesheet" type="text/css" 
  title="Color" />
</head>

<body>
<h1>Ejemplo de recogida de datos 2 (Resultado)</h1>
<?php
function recoge($var)
{ 
    $tmp = (isset($_REQUEST[$var])) ? strip_tags(trim(htmlspecialchars($_REQUEST[$var]))) : '';
    if (get_magic_quotes_gpc()) {
        $tmp = stripslashes($tmp);
    }
    return $tmp;
}

$nombre = recoge('nombre');
$edad   = recoge('edad');

$nombreOk = FALSE;
$edadOk   = FALSE;

if ($nombre=="") {
    print "<p class=\"aviso\">No ha escrito su nombre.</p>\n";
} else {
    $nombreOk = TRUE;
}

if ($edad=="") {
    print "<p class=\"aviso\">No ha escrito su edad.</p>\n";
} elseif (!is_numeric($edad)) { 
    print "<p  class=\"aviso\">No ha escrito la edad como número.</p>\n";
} elseif (!ctype_digit($edad)) { 
    print "<p class=\"aviso\">No ha escrito la edad como número entero.</p>\n";
} elseif ($edad<0 || $edad>130) {
    print "<p class=\"aviso\">La edad no está entre 0 y 130 años.</p>\n";
} else {
    $edadOk = TRUE;
}

if ($nombreOk && $edadOk) {
    print "<p>Su nombre es <strong>$nombre</strong>.</p>\n";
    print "<p>Su edad es <strong>$edad</strong>.</p>\n";
}

print "<p><a href=\"ejemplo_recogida_datos_1.html\">Volver al formulario.</a></p>\n";
?>
<address>
  Este programa forma parte del curso "Páginas web con PHP" disponible en <a
  href="http://www.mclibre.org/">http://www.mclibre.org</a><br />
  Autor: Bartolomé Sintes Marco<br />
  Última modificación de esta página: 13 de noviembre de 2011
</address>
<p class="licencia">El programa PHP que genera esta página está bajo 
<a rel="license" href="http://www.gnu.org/licenses/agpl.txt">licencia AGPL 3 o
posterior</a>.</p>
</body>
</html>

Por supuesto la página podría contener un único fragmento PHP en la que los fragmentos HTML fueran generados por instrucciones print.

Volver al principio de la página


Núcleo del programa php

El fragmento PHP que recoge y genera los datos tiene la siguiente estructura:

A continuación se muestra el código fuente con los tres apartados con fondo gris y fondo blanco alternados:

<?php
function recoge($var)
{ 
    $tmp = (isset($_REQUEST[$var])) ? strip_tags(trim(htmlspecialchars($_REQUEST[$var]))) : '';
    if (get_magic_quotes_gpc()) {
        $tmp = stripslashes($tmp);
    }
    return $tmp;
}

$nombre = recoge('nombre');
$edad   = recoge('edad');
$nombreOk = FALSE;
$edadOk   = FALSE;

if ($nombre=="") {
    print "<p class=\"aviso\">No ha escrito su nombre.</p>\n";
} else {
    $nombreOk = TRUE;
}

if ($edad=="") {
    print "<p class=\"aviso\">No ha escrito su edad.</p>\n";
} elseif (!is_numeric($edad)) { 
    print "<p  class=\"aviso\">No ha escrito la edad como número.</p>\n";
} elseif (!ctype_digit($edad)) { 
    print "<p class=\"aviso\">No ha escrito la edad como número entero.</p>\n";
} elseif ($edad<0 || $edad>130) {
    print "<p class=\"aviso\">La edad no está entre 0 y 130 años.</p>\n";
} else {
    $edadOk = TRUE;
}
if ($nombreOk && $edadOk) {
    print "<p>Su nombre es <strong>$nombre</strong>.</p>\n";
    print "<p>Su edad es <strong>$edad</strong> años.</p>\n";
}

print "<p><a href=\"ejemplo_recogida_datos_1.html\">Volver al formulario.</a></p>\n";
?>

Volver al principio de la página

Esta página forma parte del curso "Páginas web con PHP" disponible en http://www.mclibre.org
Autor: Bartolomé Sintes Marco
Última modificación de esta página: 13 de noviembre de 2011

Creative Commons License
Esta obra está bajo una licencia de Creative Commons Reconocimiento-CompartirIgual 3.0 España.