ManuelRomero/DAW/distancia/tutorias/Tutoria2

De WikiEducator
Saltar a: navegación, buscar





Icon objectives.jpg

Objetivos

Se han tratado los siguientes temas
  1. Agenda
  2. Ejercicios básicos de php
  3. Presentación del tema de bases de datos




Agenda

  • Sobre la agenda hemos comentado tres conceptos
  1. Cómo ejecutar código php en un solo fichero
  2. Cómo pasar información en input de tipo hidden
  3. Cómo pasar varios datos de información usando una sola variable que sería un array

Ejecutar php en un solo fichero

  • Muchas ocasiones queremos que el código php se ejecute en la misma página php.
  • Esto implica que de alguna manera el servidor tiene que saber si esta página es la primera vez o sea que se pide por que un usuario ha tecleado el url de la página en el navegador
  • O bien se solicita la página por que se ha invocado la ejecución del fichero como resultado de hacer un submit en un forfmulario.
  • En la página index.php tendrá que haber un formulario p.e.
<form action=”index.php” method=”POST”> 
   …..
  <intput type=submit value=”enviar datos” name=”enviar”
 
</form>

El código necesario dentro de la página sería

<?php
  if ($_POST['enviar']){...
}
?>
  • De esta forma vemos si se ha enviado el formulario.
  • Por su puesto hay varias maneras pero esta es una de ellas
  • Cuando se quiere invocar al mismo fichero se puede ver en el elemento form lo siguiente
  • O bien escribier el nombre del fichero
<form action=”index.php” method=”POST”>
  • También odemos escribir un punto
<form action=”." method=”POST”>
  • Podemos tomar el valor de la variable superglobal $_SERVER, escribiendo un código php
<form action=<?php echo $_SERVER['PHP_SELF']; ?> method=”POST”>
  • Aquí ponemos un ejemplo que es uno de los que vimos en la tutoría


Icon activity.jpg

Actividad

  • Escribir un programa en php que en un solo fichero se nos solicite nombre de usuario y password
  • Al ejecutar la parte de php se verificarán las siguietes condiciones
  1. Que el usuario y password no estén vacíos
  2. Que el usuario tenga más de 7 caracteres
  3. que la password tenga al menos un dígito
  • En caso de que todo esté ok, simplemente se dejará el nombre de usuario y password en las casillas de texto
  • En caso de que haya algún error, se informará del error que haya (solo del primero que se encuentre), y se mostrará las cajas de texto vacías
<!DOCTYPE html>
<html>
    <head>
        <title>Formulario de datos  </title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
        <!-- Aqui empieza el código php -->
        <?php 
        //Si es la primera vez que se ejecuta el formulario
        if (!(isset($_POST['enviar']))){
            //Primera vez
            $usuario="";
            $pass="";
        }
        else{
            if (errores()){
                //Segunda o siguientes veces con error
            $usuario="";
            $pass="";
 
            }else{
 
                //Todo ok y no es la primera vez que se carga la página
                 $usuario=$_POST['usuario'];
                 $pass=$_POST['pass'];
 
            }
        }
 
        /*Esta función analiza los datos de usuario y passoword para ver si hay algún error
          En caso de error muestra un mensaje y retorna un booleano con valor true
          En caso de que no haya error retorna el booleano false
        */
        function errores(){
            $usuario = $_POST['usuario'];
            $pass = $_POST['pass'];
            if ((empty($usuario))||(empty($pass))){
                echo "Los campos de usuariio y pass no pueden estar vacíos";
                return true;
            }
            if (strlen($usuario)<=7){
                echo "La cadena de usuario debe tener más de 7 caracteres y no ".strlen($usuario);
                return true;
            }
            //Establemcesmos la expresión regular de números 
            $expresion='/[0-9]/';
            //Con esta función analizamos a ver si el texto $pass tiene la expresión regular $expreson
            if (preg_match($expresion,$pass)!=true){
                echo "La pass debe tener al menos un dígito y no lo tienen ".($pass);
                return true;
 
            }
            return false;
        }
        ?>
 
         <form action=<?php echo $_SERVER['PHP_SELF'] ?> method="POST">
            Inserta un numero <br>
           <!--Observar que el valor de las cajas de texto la obtengo ejecutando php -->
            usuario : <input type="text" name="usuario" value="<?php echo "$usuario"; ?>"/>
            Pass:    <input type="text" name="pass" value="<?php echo "$pass" ;?>"/>
            <br>
            <input type="submit" value="Enviar" name="enviar"/> 
        </form>
 
    </body>
</html>






//MRM Poner ejemplo formulario.

Enviar datos con input de tipo hidden Supongamos que tenemos un dato que queremos pasar a un programa php, es un valor conocido por la página cliente. Para enviar datos al servidor, estos han de ir en un formulario. Si no queremos que en la página cliente se vean los datos los insertaremos en input de tipo hidden <form action=”index.php” method=”POST”>

 <intput type=hidden value=8 name =edad1>
 <intput type=hidden value=12 name =edad2>
 <intput type=submit value=”enviar datos” name=”enviar”

</form>

en la ejecucion del fichero en el servidor podremos obtener esos valores <?php …. $edadPrimera = $_POST['edad1']; $edadSegunda = $_POST['edad2']: …. ?>

En el caso de la agenda observamos que cada nombre y teléfono que rellene en el input de tipo text lo podré leer directamente del input, pero también los anteriores los tengo que ir leyendo para visualizarlos , ya que partimos de que todo el mundo tiene claro que http es un protocolo sin estado.

insertar imágenes de la aplicación de la agenda

Pasar varios valores en una única variable usando un array Supongamos que queremos pasar 10 números de diez notas para calcular la media en el cliente tendríamos que tener 10 cajas de texto

<form action=”index.php” method=”POST”>

 <intput type=text name =notas[]>
 <intput type=text name =notas[]>
 <intput type=text name =notas[]>
 <intput type=text name =notas[]>
 <intput type=text name =notas[]>
 <intput type=text name =notas[]>
 <intput type=text name =notas[]>
 <intput type=text name =notas[]>
 <intput type=text name =notas[]>
 <intput type=text name =notas[]>
 <intput type=submit value=”enviar datos” name=”enviar”

</form>

En el servidor leeré todas las notas y se amacenarán en un array <?php $notas =$_POST['notas']; $suma=0; foreach($notas as $nota) {

    $suma=$suma+$nota;

} echo “nota media = $suma/10; ?>