SlideShare une entreprise Scribd logo
1  sur  166
Télécharger pour lire hors ligne
PHP




PHP HiperText Preprocesor




                            1
Contenidos
●   Introducción
●   Sintaxis básica
●   Variables, tipos y operadores
●   Variables predefinidas
●   Constantes
●   Estructuras de Control
●   Incluir código de ficheros externos
●   Funciones
●   Accediendo a MySQL
●   Cookies
●   Sesiones
●   Ficheros y directorios
●   Clases y Objetos (PHP 5)
                                          2
Introducción
●   ¿Que es PHP?

    –   Lenguaje de programación de alto nivel

    –   Empotrado en páginas HTML

    –   Ejecutado en servidor

    –   Software libre
                                                 3
Introducción (II)
●   ¿Que puedo hacer con PHP?

    –   Scripts del lado del servidor

    –   Scripts en linea de comandos

    –   Aplicaciones con interfaz gráfica PHP-GTK



                                                    4
Introducción (III)
●   Scripts del lado del servidor
                                          BD
                             Servidor

                            HTML + PHP
     Cliente                              LDAP
                            Procesa PHP


                            Genera HTML        ...




                                           /

                                                     5
Introducción (III)
●   Scripts del lado del servidor
                                                Servidor BD:
                       Servidor Web : Apache2     MySQL

                           HTML + PHP

    Navegador
     (Firefox)
                           Procesa PHP


                          Genera HTML
                                                       c:




                                                               6
Introducción
●   Requisitos
       –   PHP5
       –   Servidor Web : apache2
       –   Servidor BD : mysql
       –   Editor : netbeans
●   Todo en 1 : XAMPP (Apache + MySQL + PHP)
●   Netbeans


                  ¡¡¡ Software libre !!!
                                               7
Introducción
●   Instalación en windows
         –   XAMPP : http://www.apachefriends.org/es/xampp.html
         –   Installer : Instalación por defecto : C:xampp
         –   Raiz de documentos : c:xampphtdocs
         –   Configuración php : c:xamppapachebinphp.ini
         –   Configuración apache :
              C:xamppapacheconfhttpd.conf
         –   Configuración mysql : C:xamppmysqlbinmy.cnf


●   Navegador : http://localhost
●   MySQL : http://localhost/phpmyadmin                        8
Introducción
●   Instalación en windows (II)
●   Editor de scripts php
         –   Editor de texto plano
         –   IDE (Entorno de desarrollo integrado)
                  ●   Editor
                  ●   Resaltado de sintaxis
                  ●   Plantillas html
                  ●   Debuger
                  ●   Proyectos
                  ●   ...

                                                     9
Introducción
●   Instalación en windows (II)

        –   IDE : Netbeans, Eclipse, Zend Studio …

        –   NetBeans

        –   http://www.netbeans.org/downloads/index.html

        –   PHP + Spanish + Windows



                                                           10
Introducción
●   Primer proyecto php en netbeans
       –   Archivo → Proyecto nuevo
       –   Categoría → PHP
       –   Proyectos → PHP application
       –   Project Name → Nombre_del_proyecto
       –   Sources folder →
            C:xampphtdocsNombre_del_proyecto
       –   Run as → Local web site
       –   Project URL → http://localhost/Nombre_del_proyecto

                                                                11
Introducción
●   Primer proyecto php en netbeans (II)
         Nombre del projecto : PhpProject1




                                             12
Introducción
●   Primer proyecto php en netbeans (II)
    –   Ejecutar proyecto:
        Ejecutar → Set project configuration → Personalizar




                                                              13
                                         Ejecutar proyecto
Sintaxis Básica (I)
●   Código PHP empotrado en documentos HTML
●   Instrucciones entre etiquetas:
    –   <?php ... ?>
    –   <script language=”php”> ... </script>
    –   <? ... ?>
    –   <% ... %>
●   recomendado : <?php .... ?>
    –   XHTML
    –   XML
                                                14
Sintaxis Básica (II)
●   Ejemplo
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Título de la página</title>
      </head>
      <body>

        <?php

        echo "<p>Estas usando:".$_SERVER['HTTP_USER_AGENT']."</p>";

        ?>

      </body>
    </html>


                                                                              15
Sintaxis Básica (III)
●   Scripts PHP :
    –   Serie de sentencias / instrucciones
    –   Ejecutadas secuenciálmente
    –   Datos en variables
    –   Estructuras de control
    –   Funciones
    –   Clases (POO)



                                              16
Sintaxis Básica (IV)
●   Los espacios/tabulaciones/saltos de linea entre
    las instrucciones, no afectan al comportamiento
    –    Las siguientes instrucciones tienen el mismo resultado:

    <?php       echo           “hola mundo”   ;?>


    <?php    echo “hola mundo”;     ?>


    <?php

         echo “hola mundo”;
    ?>


    <?php echo “hola mundo”;
    ?>                                                             17
Sintaxis Básica (V)
●   Las instrucciones siempre se finalizan con
    punto y coma
    <?php
       echo “<p>hola mundo</p>”;
       echo “<p>Esto es una prueba</p>”;

    ?>

    <?php
       echo “<p>hola mundo</p>”;echo “<p>Esto es una prueba</p>”;

    ?>

    <?php
       echo “<p>hola mundo</p>”;

                   echo “<p>Esto es una prueba</p>”;
    ?>
                                                                    18
Sintaxis Básica (VI)
●   Comentarios : Texto que no se ejecuta
    –    Linea : //
    <?php
       //Esta linea no se tiene en cuenta
       echo “<p>hola mundo</p>”;//Este comentario tampoco
       echo “<p>Esto es una prueba</p>”;
    ?>


    –    Bloque: /* ... */
    <?php
       /*Esta linea no se tiene en cuenta
       esta tampoco
       tampoco esta/*
                                            Estos comentarios
         /* No se puede anidar              producirían un error
         /* bloques de comentarios*/
         */                                                        19
    ?>
Variables
●   Los datos se almacenan en variables
    –   Las variables se representan con un signo de dolar
        seguido por el nombre de la variable
    –   Sensible a mayúsculas/minúsculas
    –   El nombre de la variable :
         ●   Empezar con letra o _ (guión bajo)
         ●   Contener : letras números _
         <?php                            <?php
         $cont=1;                         $1Usuario = “mikel”;
         $_cont=1;                        $usuario-2 = “ainara”;
         $nombre_usuario=”mikel”          $número = 12;
         $PESO22_=”102g”                  $cont 1 = 0;
         ?>                               ?>
                                                                   20
               CORRECTO                        INCORRECTO
Operadores de Asignación
●   Asignación : =
    –    Permite asignar valores a variables
    –    El operando de la izquierda recibe el valor de la
         expresión de la derecha
    <?php
       $cont = 123;
       $cont =”Hola”;

         $a = ($b = 4) + 5;

         echo $a;
         echo $b;
    ?>
          9
          4
                                                             21
Variables (II)
●   A diferencia de otros lenguajes PHP es un lenguaje “no
    tipado”
●   El programador no decide el tipo de una variable
●   El tipo lo decide PHP en tiempo de ejecución dependiendo
    del contexto
    <?php
       $cont = 123;
       var_dump($cont);
       int(123)

         $cont =”Hola”;
         var_dump($cont);
         string(4) "Hola"

         $cont= true;
         var_dump($cont);
         bool(true)                                          22
    ?>
Variables (III)
●   Para forzar variables
    –   settype($variable,”tipo”)
    –   Moldear variables (casting)
●   Mostrar tipo variable
    –   var_dump($variable);
●   Mostrar contenido variable
    –   print_r($variable)
    –   echo
    –   printf
                                      23
Variables (IV)
●   Mostrar contenido variables : ejemplos
    <?php
       $cont = 123;
       echo $cont;

         123

         $mensaje =”Página en construcción”;
         echo $mensaje;

         Página en construcción


         echo $cont;
         echo $mensaje;
         123Página en construcción


    ?>                                         24
Variables (V)
●   Mostrar contenido variables : Saltos de linea
    <?php
       $cont = 123;
       $mensaje =”Página en construcción”;
       echo $cont;
       echo $mensaje;
    ?>
    Fuente HTML :

    123Página en construcción

    Navegador:

    123Página en construcción



                                                    25
Variables (VI)
●   Mostrar contenido variables : Saltos de linea (II)
    <?php
       $cont = 123;
       $mensaje =”Página en construcción”;
       echo $cont;
       echo “<br/>”;
       echo $mensaje;
    ?>

    Fuente HTML :

    123<br/>Página en
    construcción
    Navegador:

    123
    Página en construcción
                                                         26
Variables (VII)
●   Mostrar contenido variables : Saltos de linea (III)
    <?php
       $cont = 123;
       $mensaje =”Página en construcción”;
       echo $cont;
       echo “n”;
       echo $mensaje;
    ?>

    Fuente HTML :

    123
    Página en construcción
    Navegador:

    123Página en construcción

                                                          27
Pasar datos entre scripts
●   HTTP : protocolo sin estado
●   El valor de las variables existe durante la vida del
    script (página)
●   Pasar datos entre scripts (páginas)
    –   Formularios
    –   “Enlaces GET”
    –   Cookies
    –   Sesiones


                                                           28
Obtener variables de formularios
●   Metodo : POST
    <!-- index.html -->
    <form action =”logon.php” method=”post”>
          <input type=”text” name=”user”/>
          <input type=”text” name=”pass”/>
          <input type=”submit”
    </form>



    <?php

    //logon.php
    $usuario = $_POST['user'];
    $pass = $_POST['pass'];

    ?>

                                               29
Obtener variables de formularios
●   Metodo : GET
    <form action =”logon.php” method=”get”>
         <input type=”text” name=”user”/>
         <input type=”text” name=”pass”/>
         <input type=”submit”
    </form>


    <a href=”logon.php?user=nombreUsuario&pass=password”>logon</a>



    <?php
    //logon.php

    $usuario = $_GET['user'];
    $pass = $_GET['pass'];

    ?>                                                               30
Tipos
●   Tipos
    –   Escalares
         ●   Enteros
         ●   Coma flotante
         ●   Cadenas
         ●   Booleanos
    –   Compuestos
         ●   Matrices
         ●   Objetos
    –   Null
    –   Resource                     31
Tipos : Enteros
●   Enteros (Integer)
    –   Números enteros del conjunto Z = {...,-2,1,0,1,2,...}
    –   Tamaño depende de la plataforma
    –   Usual : 32 bits con signo
    –   Z = {-2147483647,-2147483646,...,-1,0,1,2147483646,2147483647}
    –   Si se desborda un entero será interpretado como
        float (numero de coma flotante)


                                                                         32
Tipos : Enteros (II)
●   Enteros (Integer)
    Declarando variables de enteros:
    <?php
       $cont = 123;// Un número decimal
       $cont = -123;// Un número decimal negativo
       $cont = 0123;// Un número octal
       $cont = 0x1A;// Un número hexadecimal

         $edadMinima = 18;
    ?>

    Desbordamiento de enteros :
    <?php
       $numeroGrande = 2147483647;
       var_dump($numeroGrande);// Devuelve : int(2147483647)
       $numeroGrande = 2147483648;
       var_dump($numeroGrande);// Devuelve : float(2147483647)   33

    ?>
Tipos : Reales
●   Números de coma flotante (Float)
    –    Números reales
    –    También conocidos como doble o real
    –    Tamaño depende de la plataforma
    –    Usual : ~1.8e308


    <?php

         $a = 1.234;
         $b = 1.2e3;
         $c = 7E-10;
    ?>
                                               34
Tipos : Reales (II)
●   Float : Imprimir variables de tipo float
    –    echo
    <?php

         $num=16.6765464;
         echo $num;
         16.6765464

    ?>


    –    printf
    <?php
       $num=16.6765464;
       printf("el numero es : %.2f ",$num);
       16.68
    ?>                                         35
Operadores aritméticos
●   Podemos realizar operaciones aritméticas


              Operacion         Operador                   Ejemplo
         suma                      +        $total = $precio + $iva;
         resta                     -        $oferta = $total - $descuento;
         multiplicacion            *        $iva = $precio*0.16;
         division                  /        $media = $suma / $total;
         módulo (resto)            %        $resto = $total % 5;
         negación                  -        $a = 10*-$b;


    –   El operador ' / ' devuelve un valor flotante a menos que los dos operandos sean enteros y
        los números sean divisibles sin residuos

                                                                                                36
Operadores aritméticos (II)
●        El orden de ejecución :
         –   *   /       %
         –   +       -
         –   Izquierda a derecha
         –   Paréntesis : orden de ejecución
    <?php

         echo (8 % 3 * 5); // 10       echo 8%(3*5); // 8
         echo (8 * 3 % 5); // 4        echo 8*(3%5); //24
         echo (5 * 8 % 3); // 1        echo 5 *( 8 % 3); //10
         echo (5 % 8 * 3); // 15       echo 5 %( 8 * 3); // 5

         echo ((($a+($b-$c))/$d) % 3); //paréntesis de aperture = paréntesis de cierre
    ?>                                                                                   37
Operadores aritméticos (III)
●        Ejemplos :
    <?php

         $a = 10;

         $b = 30 + $a;

         echo $b *0.6;


         $c = (($a * 40) - $b) / 2;

         $pie = 10;
         $altura = 25;
         $superficie = ($pie*$altura)/2;



    ?>                                     38
Operadores aritméticos (IV)
●   Operadores de incremento/decremento :
            Operacion      Ejemplo                     Ejemplo
         Pre-incremento      ++$a    Incrementa $a en uno, y luego devuelve $a.
         Post-incremento     $a++    Devuelve $a, y luego incrementa $a en uno.
         Pre-decremento      --$a    Decrementa $a en uno, luego devuelve $a.
         Post-decremento     $a--    Devuelve $a, luego decrementa $a en uno.


    <?php

          $a = 10;
          $a++;
          echo $a; //11

          $a--;
          echo $a; // 10

    ?>
                                                                                  39
Tipos : Cadenas
●   Cadenas (String)
    –   Secuencia de caracteres
    –   Antes de PHP 6 : un carácter -> un byte
    –   256 tipos de caracteres diferentes
    –   Diferentes maneras de especificar
    –   Caracteres de escape
    –   No hay limite de tamaño



                                                  40
Tipos : Cadenas
●   Cadenas (String) : Definición de cadenas
    –    Comillas simples : '
    –    Imprimir comilla simple:
          ●   '
    –    Para imprimir barra invertida
          ●   
    <?php
       echo 'Esto es una cadena';

         $c = 'Una cadena en una variable';

         echo 'Imprime una
         cadena con
         saltos';                              41
    ?>
Tipos : Cadenas
●   Cadenas (String) : Definición de cadenas
    –   Comillas dobles : “Esto es una cadena”
    –   Caracteres escapados
         ●   n   : Imprime una linea nueva
         ●   t   : Imprime una tabulación horizontal
         ●      : Imprime una barra invertida
         ●   $   : Imprime un signo de dólar
         ●   ”   : Imprime una comilla doble


    –   Los nombres de las variables serán expandidos
                                                        42
Tipos : Cadenas
●   Cadenas : Comillas dobles
    <?php
       $nombre = “esti”;

         echo ”Frase con n tres n saltos de linea.n”;
         Frase con
         tres
         saltos de linea.                                  “n” != “<br/>”

         $articulo = “tFrase tabuladanSin tabular”;
         echo $articulo;
              Frase tabulada
         Sin Tabular

         echo ”Ha seleccionado ”5” 'articulos' “;
         Ha seleccionado “5” 'articulos'
    ?>
                                                                             43
Tipos : Cadenas
●   Cadenas : Expansión de variables
    –    Las variables son interpretadas
    <?php
       $nombre = “ainhoa”;

         echo ”Bienvenid@ $nombre”; // Imprime Bienvenid@ ainhoa

         $articulo = “camiseta”;
         $cantidad = 5;
         echo ”Ha seleccionado $cantidad $articulos “; // Incorrecto

         echo ”Ha seleccionado $cantidad ${articulo}s “; // Correcto
         echo ”Ha seleccionado $cantidad {$articulo}s “; // Correcto
         echo ”Ha seleccionado $cantidad $articulo's “; // Correcto

    ?>
                                                                       44
Tipos : Cadenas
●   Cadenas : Heredoc
    –    Definir cadenas largas
    –    Uso similar a comillas dobles
    –    Caracteres de escape
    –    Expansión de variables

    <?php
       $cadena = <<<FIN
       Ejemplo de una cadena
       que se extiende por varias líneas
       usando la sintaxis heredoc.
       FIN;


    ?>                                     45
Tipos : Cadenas
●   Cadenas : Heredoc
    –    Expansión de variables

    <?php
       $nombre = $_REQUEST['txNombre'];
       $apellido = $_REQUEST['txApellido'];
       $dni = $_REQUEST['txDni'];

         $cadena = <<<FIN
         El usuario $nombre $apellido
         con dni $dni
         certifica que
         ....
         FIN;

    ?>
                                              46
Tipos : Cadenas
●   Cadenas : Acceso a caracteres
    –    Indices [ 0 .. longitud_cadena -1]

    <?php
       $cadena = “esto es una prueba”;
       echo $cadena;
       esto es una prueba

         echo $cadena[0]; // Imprime el primer caracter
         e

         echo $cadena[6]; // Imprime el 7 caracter
         s

         $cadena[0]='E';
         echo $cadena;
         Esto es una prueba
    ?>                                                    47
Operadores de cadena
●   Concatenación             '.'
    <?php
       $cadena = “<label class='datos'>”.$nombre.” “.$apellido”.”</labe>;
       echo $cadena;
       <label class='datos'>Esti Goikoetxea</label>

         //Html : Esti Goikoetxea
    ?>


●   Asignación sobre concatenación                       ' .= '
    <?php
       $cadena = “<label class=';
       ...
       $cadena.=”datos”;
       ...
       $cadena.=”'>”.$nombre.” “.$apellido”.”</label>;
       ...
    ?>                                                                      48
Tipos : Booleanos
●   Booleanos :
    –    2 valores : true o false || TRUE o FALSE
          ●   0,0.0, “” , '',”0”, null,array vacio = false
          ●   Cualquier otro valor = true

    <?php

    var_dump((bool) "");        // bool(false)
    var_dump((bool) 1);         // bool(true)
    var_dump((bool) -2);        // bool(true)
    var_dump((bool) "foo");     // bool(true)
    var_dump((bool) 2.3e5);     // bool(true)
    var_dump((bool) array(12)); // bool(true)
    var_dump((bool) array());   // bool(false)
    var_dump((bool) "false");   // bool(true)
                                                             49
    ?>
Operadores lógicos
●   Operadores

            Operacion   Nombre             Resultados
      $a and $b           Y    TRUE si tanto $a como $b son TRUE.
      $a or $b            O    TRUE si cualquiera de $a o $b es
                               TRUE.
      $a xor $b          XOR   TRUE si $a o $b es TRUE, pero no
                               ambos.
      ! $a                No   TRUE si $a no es TRUE.
      $a && $b            Y    TRUE si tanto $a como $b son TRUE.
      $a || $b            O    TRUE si cualquiera de $a o $b es
                               TRUE.



                                                                    50
Tipos : Array
●   Matrices (Array)
    –   Serie de pares de clave/valor (con un orden)
    –   No puede haber claves repetidas
    –   Multidimensionales
    –   Por defecto : claves numéricas consecutivas
    –   Claves : integer o string
    –   Valor : cualquier tipo de PHP
    –   Mediante los arrays podemos agrupar datos /
        variables en una sola variable
    –   Los valores no tienen por que ser del mismo tipo   51
Tipos : Array
●   Matrices (Array) : Definir array
    –    Podemos definir/crear arrays de diferentes maneras
    <?php
       $laborables = array(“lunes”,”martes”,”miércoles”,”jueves”,”viernes”);

         $laborables = array(0=>”lunes”,1=>”martes”,2=>”miércoles”,
                             3=>”jueves”,4=>”viernes”);
    ?>

    –    De las dos maneras tendríamos la siguiente
         estructura (¡en una sola variable!)
    Índice      0            1            2            3              4
    Valor       “lunes”      “martes”     “miércoles” “jueves”        “viernes”

                                                                                  52
Tipos : Array
●   Matrices (Array) : Definir array
    –    Podemos especificar los índices directamente
    <?php
       $festivos[0]=”sábado”;
       $festivos[1]=”domingo”;

    ?>

     Índice      0           1
     Valor       “sábado”    “domingo”




    –    Los índices no tiene por que ser consecutivos
                                                         53
Tipos : Array
●   Matrices (Array) : Definir array
    –    Los índices numéricos no se reordenan
    <?php
       $usuario[0]=”ainhoa”;
       $usuario[2]=”ane”;
       $usuario[1]=”iñaki”;

    ?>


              Índice              0        2        1
              Valor            “ainhoa”   “ane”   “iñaki”


     –   Aunque disponemos de herramientas para hacerlo
                                                            54
Tipos : Array
●   Matrices (Array) : Añadir elementos al array
    –   Podemos añadir elementos al array sin especificar
        el índice
     <?php
        $estaciones[0]=”invierno”;
        $estaciones[1]=”primavera”;
        $estaciones[]=”verano”;
        $estaciones[]=”otoño”;
     ?>

    –   De esta manera se añadirán al final del array y su
        indice será el mayor indice del array incrementado
        en uno Índice      0         1        2      3
                    Valor     “invierno”   “primavera”   “verano”   “otoño”
                                                                              55
Tipos : Array
●   Matrices (Array) : Acceder a los valores

      $laborables = array(“lunes”,”martes”,”miércoles”,”jueves”,”viernes”);
      echo $laborables;
       Array

      echo $laborables[2];
       miércoles

      $estaciones[0]=”invierno”;
      $estaciones[1]=”primavera”;
      $estaciones[]=”verano”;
      $estaciones[]=”otoño”;

      print_r($estaciones);

      Array ( [0] => invierno [1] => primavera [2] => verano [3] => otoño )
                                                                              56
Tipos : Array
●   Matrices (Array) : Array asociativo
    –    Los índices no tienen por que ser numéricos
    <?php

         $laborables = array(“enero”=>31,
                 ”febrero”=>28,
                 ”marzo”=>31,
                 ”abril”=>30,
                 ....
                 ,”diciembre”=>31);

         echo $laborables[“abril”];
         30

         print_r ($laborables[2]);
         Array ( [enero] => 31 [febrero] => 28 [marzo] => 31 [abril] => 30 ... )
    ?>
                                                                                   57
Tipos : Array
●   Matrices (Array) : Array asociativo
    –    Generalmente con BD => Asociativos
    <?php

         echo “<tr><td>Nombre:</td><td>” . $fila['nombre'] . ”</td></tr>”;
         echo “<tr><td>Apellido:</td><td>” . $fila['apellido'] . ”</td></tr>”;
         echo “<tr><td>Dni:</td><td>” . $fila['dni'] . ”</td></tr>”;

    ?>


             Nombre                      Ainara
             Apelido                  Etxeberria
             Dni                      99999999K


                                                                                 58
Tipos : Array
●   Matrices (Array) : Array multidimensional
    <?php
       $apuntados = array(
               “enero”=>array(“mikel”,”ainhoa”,”ane”),
               ”febrero”=>array(“ainara”,”eneko”),
               ....
               ,”diciembre”=>0);
    ?>




        Índice    “enero”    “febrero” ....   “diciembre”
        Valor     “mikel      “ainara”
                  “ainhoa”    “eneko”
                  “ane”

                                                            59
Tipos : Array
●   Matrices (Array) : Array multidimensional
    <?php

         $apuntados = array(
                 “enero”=>array(“mikel”,”ainhoa”,”ane”),
                 ”febrero”=>array(“ainara”,”eneko”),
                 ....
                 ,”diciembre”=>0);


         echo $apuntados[“enero”][1];
         ainhoa

         echo $apuntados[“febrero”][0];
         ainara

         echo $apuntados[“diciembre”];
         0
    ?>                                                     60
Tipos : Array
●   Matrices (Array) : Array multidimensional
    <?php
       ...
       echo “<pre>”;
       print_r ($apuntados);
       echo “</pre>”;
          Array
    (
        [enero] => Array
          (
             [0] => mikel
             [1] => ainhoa
             [2] => ane
          )

        [febrero] => Array
             (
               [0] => ainara
        ....
        [diciembre] => 0
    )
                                                61
    ?>
Operadores de matrices
●   Operadores

       Operacion    Nombre                    Resultados
      $a + $b         Unión       Unión de $a y $b.
      $a == $b      Igualdad      TRUE si $a y $b tienen las mismas parejas llave/valor.

      $a === $b     Identidad     TRUE si $a y $b tienen las mismas
                                  parejas llave/valor en el mismo orden
                                  y de los mismos tipos.
      $a!=$b       No-igualdad    TRUE si $a no es igual a $b.
      $a <> $b     No-igualdad    TRUE si $a no es igual a $b.
      $a !== $b    No-identidad   TRUE si $a no es idéntico a $b.




                                                                                           62
Tipos : NULL
●   Variable que no tiene valor
●   Posibles valor : null || NULL


    <?php

         $var =null;

    ?>




                                      63
Tipos : Resource
●   Contiene una referencia a un recurso externo
●   Los recursos son usados por funciones
    especiales
    –   Algunos recursos : mysql, ldap,gd ...
    –   Mysql :
         ●   Recurso : mysql link
         ●   Crear recurso : $con = mysql_connect('host' ...)
         ●   mysql_query(“SELECT ...”, $con);
         ●   ....

                                                                64
Variables predefinidas
●   Variables del servidor
    –   $_SERVER
        ●   PHP_SELF
        ●   SERVER_ADDR
        ●   SERVER_ADDR
        ●   DOCUMENT_ROOT
        ●   QUERY_STRING
        ●   REMOTE_ADDR
        ●   HTTP_HOST
        ●   ...
        [http://es2.php.net/reserved.variables]
                                                  65
Constantes
●   Definición de constantes
    –    define($nombre,$valor)
    –    $nombre (string) : nombre de la constante
    –    $valor : Valor de la constante
    <?php

         define("const1","primera constante");
         define("MAX",10);

         echo MAX;
         10

         echo const1
         primera constante

    ?>                                               66
Estructuras de control
●   Controlar la ejecución de instrucciones
●   Decidir en tiempo de ejecución que sentencias
    ejecutar u omitir
●   Crear bloques repetitivos
●   En tiempo de ejecución / contexto




                                                    67
Estructuras de control : IF
●   Permite la ejecución condicional de sentencias
●   Si la condición se cumple en tiempo de
    ejecución : se ejecuta un bloque de código
    predeterminado

    <?php
    if (expr) 
       sentencia
    ?> 




●   Las tabulaciones no son necesarias pero si       68
    recomendables para la legibilidad el código
Estructuras de control : IF
●   expr : “cualquier cosa que tiene un valor”
    <?php
        $a = 5; 
    ?> 


    –   Los literales son expresiones
         –   '5' es una expresión con el valor 5
    –   Las variables son expresiones
         –   $a es una expresión con el valor 5



                                                   69
Estructuras de control : IF
●   expr : “cualquier cosa que tiene un valor”
     –   Las comparaciones son una expresion con valores
         booleanos (true o false ) (verdadero o falso)

    <?php
        $a = 10;
        if ( $a > 0 )
           echo “a es mayor que cero”;
    ?> 


    –    $a > 0 es una expresión con valor TRUE


                                                       70
Estructuras de control : IF
●   expr se evalúa a su valor condicional (boolean)
    –   Si la expresión se evalúa como true se ejecuta la
        sentencia
    –   Si la expresión se evalúa como false no se ejecuta
        la sentencia
    <?php
    $a = 10;
    if ($a > 0) 
       print "a es mayor que 0";

    if ($a)
       print “a es diferente a 0”;

    ?> 
                                                            71
Operadores de comparación
●   Operadores

      Operacion       Nombre                             Resultados
       $a == $b          Igual       TRUE si $a es igual a $b.
      $a === $b       Idéntico       TRUE si $a es igual a $b, y son del mismo tipo.
        $a != $b      Diferente      TRUE si $a no es igual a $b.
       $a <> $b       Diferente      TRUE si $a no es igual a $b.
       $a !== $b     No idénticos    TRUE si $a no es igual a $b.TRUE si $a no es
                                     igual a $b, o si no son del mismo tipo.
        $a < $b      Menor que       TRUE si $a es escrictamente menor que $b.
        $a > $b      Mayor que       TRUE si $a es estrictamente mayor que $b.
       $a <= $b    Menor o igual que TRUE si $a es menor o igual que $b.
       $a >= $b    Mayor o igual que TRUE si $a es mayor o igual que $b.




                                                                                       72
Operadores de comparación
●   Las expresiones de comparación siempre
    devuelven un valor boolean
    <?php
    $a = 5;
    $b = 0;
    $c = "0";

    var_dump($a>$b);   //bool(true)
    var_dump($a<$b);   //bool(false)
    var_dump($a>$c);   //bool(true)
    var_dump($b==$c);  //bool(true)
    var_dump($b===$c); //bool(false)
    var_dump($b!=$c);  //bool(false)
    var_dump($b!==$c); //bool(true)
    var_dump($b<>$c);  //bool(false)
    var_dump($a>=$b);  //bool(true)
    ?> 
                                             73
Estructuras de control : IF
●   Comparación
    <?php
    $a = 5;
    $c = "0";

    if($a>0)
       echo “a es mayor que cero”;

    if($c==0)
       echo “c es igual a cero”


    if($_SERVER['HTTP_USER_AGENT']=='MSIE')
        echo “<link rel='stylesheet' type='text/css'” 
             .“href='style_ie.css'/>

    if ($_SERVER['HTTP_USER_AGENT']=='Firefox')
        echo “<link rel='stylesheet' type='text/css'” 
            .”href='style_firefox.css'/>”;               74
    ?>
Estructuras de control : IF
●   If : Bloques
    –    Podemos agrupar bloque de instrucciones
         mediante { }


    <?php
    if ($usuario != null ) {
       echo “<span class='datos'>$nombre</span>”;
       echo “<span class='datos'>$apellido</span>”;
       echo “<span class='datos'>$telefono</span>”;
    }

    ?>



                                                      75
Estructuras de control : IF
●   If : Anidar condiciones
    –    Podemos anidar indefinidamente condiciones


    <?php
    if ($usuario != null ) {
       echo “<span class='datos'>$nombre</span>”;
       echo “<span class='datos'>$apellido</span>”;
       echo “<span class='datos'>$telefono</span>”;
       if($telefono2 != null){
           echo “<span class='datos'>$telefono2</span>”;
       }
    }

    ?>

                                                           76
Estructuras de control : IF
●   If : Condiciones de múltiples expresiones
    –    Operadores lógicos


    <?php
    if ( $edad < 18 ) {
       ...
    }
    if ( $edad >= 18 and $edad <=35 ){ //Solo si se cumplen
       ...                             // las dos condiciones
    }
    if ( $edad > 35 and $edad <= 60){  //Solo si se cumplen
       ...                             // las dos condiciones
    }

    ?>
                                                                77
Estructuras de control : IF
●   If : Condiciones de múltiples expresiones

    <?php
    if ( $annos<18 or ($annos == 18 and 
       $mesNacimiento < $mesActual)) {
       ...
    }

    if ( $result!=null and ($numResult > 100 or $pagina=0)){
       ...
    }

    ?>




                                                               78
Estructuras de control : IF ...
               ELSE
●   else : Ejecutar sentencias en caso de que la
    expresión evaluada en el if sea igual a false


    <?php
    echo “<link rel='stylesheet' type='text/css'”;
    if ($_SERVER['HTTP_USER_AGENT']=='MSIE' ) {
       echo “ href='style_explorer.css'/>”;
    }
    else{
        echo “ href='style_firefox.css'/>”;
    }

    ?> 


                                                     79
Estructuras de control : ELSEIF
●   elseif : combinación if y else
    –   Se ejecuta si if = false y se da otra condición nueva

    <?php

    echo “<link rel='stylesheet' type='text/css'”;
    if ($_SERVER['HTTP_USER_AGENT']=='MSIE' ) {
       echo “ href='style_explorer.css'/>”;
    }
    elseif ($_SERVER['HTTP_USER_AGENT']=='SAFARI'){
        echo “ href='style_safari.css'/>”;
    }
    else{
        echo “ href='style_firefox.css'/>”;
    }
    ?>
                                                            80
Estructuras de control : ELSEIF
●   elseif : No hay limite de sentencias elseif
    –   Solo una se ejecuta

    <?php
    if ($opcion==1 ) {
       ...
    }
    elseif ($opcion==2){ //Si se da la condición, se ejecuta 
        ...              //el bloque y se sale de la estructura
    }
    elseif ($opcion==3){
        ...
    }
    else{        //Si no se da ninguna condición anterior
        ...      //Se ejecuta el bloque else
    }
    ?> 
                                                                  81
Estructuras de control : SWITCH
●   switch : Comparar la misma variable
    –   Similar a bloque if – elseif – else ( != 1 variable)

    <?php
    switch ($i) {
        case 0:
           echo "i = 0";
           break;
        case 1:
           echo "i = 1";
           break;
        case 2:
           echo "i = 2";
           break;
    }
    ?>

                                                               82
Estructuras de control : SWITCH
●   switch : sentencia break
    –   Las sentencias se empiezan a ejecutar desde una
        sentencia case que se cumpla hasta el final del
        switch o hasta una sentencia break
    <?php                       <?php
    $i=1;                       $i=1;
    switch ($i) {               switch ($i) {
        case 0:                     case 0:
           echo "i = 0";               echo "i = 0";
           break;                   case 1:
        case 1:                        echo "i = 1";
           echo "i = 1";            case 2:
           break;                      echo "i = 2";
        case 2:                 }
           echo "i = 2";        ?>
           break;
    }                           i=1i=2
    ?>
    i=1                                                   83
Estructuras de control : SWITCH
●   switch : caso default
    –   ~ else : En caso de que no se cumpla ningún 'case'

    <?php
    $i=1;
    switch ($i) {
        case 0:
            echo "i = 0";
            break;
        case 1:
            echo "i = 1";
            break;
        case 2:
            echo "i = 2";
            break;
        default:
            ...
    }
    ?>                                                   84
Estructuras de control : Bucles
●   Estructuras repetitivas

●   El código se ejecuta mientras se de una
    condición

●   Diferentes tipos de bucles

●   Diferentes sentencias

                                              85
Estructuras de control : Bucles
●   while
     –   Tipo mas simple
     –   while (expr) sentencia
     –   Si la condición nunca obtiene el valor false
          ●   Bucle infinito !!!
     –   Múltiples sentencias : { }
    <?php
    $i=0;
    while($i<10){
        echo $i;
        $i=$i+1;
    }
    ?>
                                                        86
Estructuras de control : Bucles
●   while
    <?php
    $valorMax=10;
    $valorMin=1;
    $aux=$valorMin;
    while( $aux <= $valorMax ){
        echo “<input type='radio' name='vota' value='$aux'/>$auxn”;
        $aux=$aux+1;
    }


    $cont=0;
    while(!empty($imagenes[$cont])){
        echo “<img src='{$imagenes[$cont]}'/>”;
        $cont++;
    }


    ?>

                                                                       87
Estructuras de control : Bucles
●   do .. while
     –   Similar a while : La condición se evalúa al final
    <?php


     $i = 0;
     do {
         print $i;
     } while ($i>0);



    ?>




                                                             88
Estructuras de control : Bucles
●   For
     –   for (expr1 ; expr2 ; expr3 ) sentencia
          ●   expr1 : Se ejecuta una sola vez al comienzo del bucle
          ●   expr2 : Se evalúa en el comienzo de cada iteración
               –   true : el bucle continua ejecutándose
               –   false : termina la ejecución del bucle
          ●   expr3 : Se ejecuta al final de cada iteración

    <?php

    for ($i=1;$i<=10;$i++){
        echo “<input type='radio' name='vota' value='$i'/>$in”;
    }
    ?>
                                                                      89
Estructuras de control : Bucles
●   For
    <?php


    echo “<table”>;
    for ($i=0;$i<$maxUsuarios;$i++){
        echo “<tr>”;
        echo “<td>{$usuario[$i]['nombre']}</td>”;
        echo “<td>{$usuario[$i]['apellido']}</td>”;
        echo “<td>{$usuario[$i]['dni']}</td>”;
        echo “</tr>”;
    }
    echo “</table>”;
    ?>




                                                      90
Estructuras de control : Bucles
●   Foreach
     –   Fácil iteración sobre matrices
          ●   foreach(expresion_array as $value) sentencia
          ●   foreach(expresion_array as $key => $value) sentencia

    <?php
    $arUsuarios = array(“jon”,”ainara”,”mikel”,”ane”);
    foreach($arUsuarios as $usuario){
        echo “<a href='editar.php?usuario=$usuario'>$usuario</a>n”;
    }

    <a href='editar.php?usuario=jon'>jon</a>
    <a href='editar.php?usuario=ainara'>ainara</a>
    <a href='editar.php?usuario=mikel'>mikel</a>
    <a href='editar.php?usuario=ane'>ane</a>

    ?>                                                                 91
Estructuras de control : Bucles
●   Foreach
    <?php
    $usuario = array(“Nombre”=>“jon”,
                        ”Fecha de nacimiento”=>”1982-10-25”
                        “Dirección”=>”francia 4”);



         foreach($usuario as $dato=>$valor){
             echo “$dato : $valor <br/>“;
         }


    ?>

    Nombre : Jon
    Fecha de nacimiento : 1982-10-25
    Dirección : francia 4


                                                              92
Estructuras de control : Bucles
●   Foreach
    <?php
    $arUsuarios = array(
          “11111111”=>array(“jon”,”1975-10-22”,”Gasteiz”),
          “22222222”=>array(”ainara”,”1967-06-22”,”Bilbo”),
          “33333333”=>array(“mikel”,”1983-05-04”,”Donostia”)
    );

    echo “<table border='2'>”;
    foreach($arUsuarios as $dni=>$arUsuario){
        echo “<tr>”;
        foreach($arUsuario as $datosUsuario){
            echo “<td>$datosUsuario</td>”;
        }
        echo “</tr>”;
    }
    echo “</table>”;
    ?>


                                                               93
Estructuras de control : break
●   break : sentencia para salir del bucle
     <?php
     $arUsuarios = array(
           “11111111”=>array(“jon”,”1975-10-22”,”Gasteiz”,”admin”),
           “22222222”=>array(”ainara”,”1967-06-22”,”Bilbo”,”admin”),
             ...
          “44444444”=>array(“ane”,”1983-05-04”,”Bilbo”,”desarrollo”)
     );

     foreach($arUsuarios as $dni=>$arUsuario){
         if($arUsuario[3]==”desarrollo”){
             break;
         }
         echo “<tr><td>$dni</td>”;
         foreach($arUsuario as $datosUsuario){
             echo “<td>$datosUsuario</td>”;
         }
         echo “</tr>”;
     }
     echo “</table>”;
     ?>
                                                                       94
Estructuras de control : continue
●   continue : sentencia para terminar iteración
     <?php
     $arUsuarios = array(
          “11111111”=>array(“jon”,”1975-10-22”,”Gasteiz”,”admin”),
           “22222222”=>array(”ane”,”1967-06-22”,”Bilbo”,”desarrollo”),
             ...
         “44444444”=>array(“ana”,”1983-05-04”,”Bilbo”,”desarrollo”)
     );

     foreach($arUsuarios as $dni=>$arUsuario){
         if($arUsuario[3]==”desarrollo”){
             continue;
         }
         echo “<tr><td>$dni</td>”;
         foreach($arUsuario as $datosUsuario){
             echo “<td>$datosUsuario</td>”;
         }
         echo “</tr>”;
     }
     echo “</table>”;
     ?>
                                                                         95
Estructuras de control
●   Sintaxis alternativa
    –   if , while , for , switch
    –   abrir llave = dos puntos (:)
    –   cerrar llave =
         ●   endif; endwhile; endfor; endswitch;
     <?php if($a==5):?>
         <p>A es igual a 5</p>
     <?php endif;?>


     <?php
         for($i=0;$i<10;$i++):
             echo “<input type='radio' name='vot' value='$i'/>$i”;
         endfor;
     ?>                                                              96
Incluir código de ficheros externos
●   Include y require
     –   Funciones para incluir otros ficheros
     –   include ([ruta]nombre fichero);
     –   require ([ruta] nombre fichero);
●   Si no se encuentra el fichero
     –   Include produce un warning (el script continua)
     –   Require produce un error fatal (el script NO notinua)
     <?php
     include('cabecera.php');

     ...
                                                            97
     include('pie.php'); 
     ?>
Incluir código de ficheros externos
●   Include y require
     –   El código se inserta en el lugar donde se encuentra
         la instrucción include/require
     <?php                            <?php
     $apuntados = 3;                  define(“MAX”,10);
     echo MAX - $apuntados.”<br/”>;   ?>

     include("constantes.php");

     echo MAX - $apuntados;
     ?>

     -3
     7




                                                           98
Incluir código de ficheros externos
●    Include y require
         –   Si los ficheros no están al mismo nivel : ruta
         –   Podemos incluir desde url
    /var/www/cursos/apuntados/               /var/www/cursos/include/

    <?php                                    <?php
    $apuntados = 3;
    echo MAX - $apuntados.”<br/”>;           define(“MAX”,10);

    include("../include/constantes.php");    ?>

    echo MAX - $apuntados;
    ?>

    -3
    7

                                                                        99
Incluir código de ficheros externos
●    Include_once y require_once
      –   Mismo funcionamiento que include y require
      –   Pero si el fichero ha sido evaluado e incluido no
          vuelve a incluirse
    <?php                                     //constante.php

    $apuntados = 3;                           <?php
    echo MAX - $apuntados.”<br/”>;
                                              include(“funciones.php”);
    include("constantes.php");
    include(“funciones.php”);                 define(“MAX”,10);
                                              ?>
    echo MAX - $apuntados;
    ?>

    Fatal error: Cannot redeclare funcion()
    (previously declared in ... )
                                                                          100
Funciones
●   No repetir código
●   Divide y vencerás
●   Funciones especificas
●   Funciones variables mediante parámetros
●   El código no se ejecuta hasta la llamada a la
    función
●   Funciones definidas por el usuario
●   Funciones predefinidas (API)
                                                    101
Funciones
●   Funciones : definición y llamada
    –   Definición:


    function nombreDeFuncion (parametros){
         cuerpo de función
    }

    –   Llamada


    nombreDeFuncion($parametro);             102
Funciones
●   Funciones : definición y llamada

    <?php

    function bienvenida(){
        echo “hola mundo!”;
    }

    bienvenida();
    bienvenida();
    echo “<br/>”;
    bienvenida();

    hola mundo!hola mundo!
    hola mundo!


    ?>

                                         103
Funciones
●   Funciones : en ficheros externos

    <?php                            <?php

    require_once(“funciones.php”);   function bienvenida(){
                                         echo “Bienvenido”;
    bienvenida();                    }
    echo “<br/>”;
    despedida();                     function despedida(){
                                         echo “Gracias por su visita”;
                                     }
    ?>
                                     ?>
    Bienvenido
    Gracias por su visita




                                                                         104
Funciones
●   Funciones : parámetros
    –   Podemos pasarle variables a las funciones
    –   Lista de variables separadas por comas
    –   Los parámetros han de definirse al definir la función
    –   Si se definen parámetros, hay que pasarle variables
        a la función en la llamada
    <?php

    function suma($num1,$num2){
        echo $num1 + $num2;
    }


    suma(14,6);       //20
    suma(34,5615);    //5649
    suma(2);          //Warning ...                        105
    ?>
Funciones
●   Funciones : parámetros

    <?php                            <?php

    require_once(“funciones.php”);   function bienvenida($nombre){
    $usuario1 = “jon”;                   echo “Bienvenido $nombre”;
    $usuario2 = “ainhoa”;            }

    bienvenida($usuario1);           function despedida($nom){
    echo “<br/>”;                        echo “Adios $nom”;
    despedida($usuario1);            }
    echo “<br/>”;
    bienvenida($usuario2);           ?>
    ?>

    Bienvenido jon
    Adios jon
    Bienvenido ainhoa

                                                                      106
Funciones
●   Funciones : parámetros por defecto

    <?php

    function asistentes($numero = 0){
        echo “han asistido $numero personas”;
    }

    $b=45;
    asistentes();
    asistentes(10);
    asistentes($b);
    asistentes(24,23,”doce”);
    ?>

    0
    10
    45
    24
                                                107
Funciones
●   Funciones : ámbito de las variables
    <?php                        <?php
    function suma($a,$b){        function suma($a,$b){
        $a = $a + $b;                $a = $a + $b;
        echo $a;                     echo $a;
    }                            }

    $a=10;                       $num1=10;
    $b=5;                        $num2=5;
    $c=20;                       $num3=20;

    suma($a,$b);                 suma($a,$b);
    echo $a;                     echo $a;
    suma($a,$c);                 suma($num1,$num2);
    echo $a;                     echo $b;

    ?>                           ?>

    25                           0
    10                                //nada
    30                           15
    10                                //nada             108
Funciones
●   Funciones : Return
    –   Las funciones pueden devolver un valor mediante
        la sentencia return
    –   Puede devolverse cualquier tipo de valor
    –   Solo puede devolverse un valor
    –   Podemos devolver múltiples valores dentro de un
        elemento array por ejemplo
    <?php
    function suma($a,$b){
        $a = $a + $b;
        return $a;
    }
    $result = suma(23,10);
    echo $result; // 33                                   109
    ?>
Funciones
●   Funciones : Return
    <?php
    function esPar($num){                      <table>
        return $num % 2 == 0;                  <tr class='par'>
    }                                              <td>ane</td>
                                               </tr>
    $usuarios = array(“ane”,”mikel”,           <tr class='impar'>
            ”jon”,”ainhoa”,”roger”);               <td>mikel</td>
    echo “<table>”;                            </tr>
    foreach($usuarios as $indice=>$usuario){   <tr class='par'>
        echo “<tr class=”;
        if(esPar($indice)){                        <td>jon</td>
            echo “'par'>”;                     </tr>
        }                                      <tr class='impar'>
        else{                                      <td>ainhoa</td>
            echo “'impar'>”;                   </tr>
        }                                      <tr class='par'>
        echo “t<td>$usuario</td></tr>”;           <td>roger</td>
    }                                          </tr>
    echo “</table>”;                           </table>
                                                                     110
    ?>
Funciones
●   Funciones :
    <?php
    function imprimirTabla($mat){              <table>
        echo “<table>”;                        <tr class='par'>
        foreach($mat as $fila){                    <td>mikel</td>
            echo “<tr>”;                           <td>millan</td>
            foreach($fila as $valor){              <td>999999999</td>
                echo “<td>$valor</td>”;        </tr>
            }                                  <tr class='impar'>
            echo “</tr>”;                          <td>jon</td>
        }                                          <td>guereñu</td>
        echo “</table>”;                           <td>686868686</td>
    }                                          </tr>
                                               <tr class='impar'>
    $usuarios = array(                             <td>manu</td>
        array(”mikel”,”millan”,”999999999”),       <td>arregi</td>
        array(”jon”,”guereñu”,”686868686”)         <td>12345678</td>
        array(“manu”,”arregi”,”123456789”));   </tr>
                                               </table>
    imprimirTabla($usuarios);
                                                                        111
    ?>
Funciones
●   Funciones : Parametros por referencia
    –   Accedemos a la variable por referencia
    –   No se crea una copia, accedemos a la variable
        original
    <?php
    function incrementar(&$val){
        $val ++;
    }

    $cont=1;
    echo $cont;
    incrementar($cont);
    echo $cont;
    ?>

    1
    2
                                                        112
Funciones predefinidas
●   Redireccionar
    –   header() : enviar cabeceras
    –   Redireccionar a otra página
    <?php
    if(usuarioValido($usuario){
        header(“Location: correcto.php”);
    }
    else{
        header(“Location: incorrecto.php”);
    }
    ?>

    <?php
    $dominio = $_SERVER['HTTP_HOST'];
    if(usuarioValido($usuario){
        header(“Location: http://$dominio/usuarios”);
    }
    else{
        header(“Location: http://$dominio/error”);
                                                        113
    }
    ?>
Funciones predefinidas
●   Redireccionar
    –    header() : No puede haber texto antes de una
         llamada a header
    –    No puede haber ningun echo, print ... antes de una
         llamada a header
         <?php
         $dominio = $_SERVER['HTTP_HOST'];
         if(usuarioValido($usuario){
             header(“Location: http://$dominio/usuarios”);   ERROR
         }
    ?>

    <body>
    ...
    <?php                                                ERROR
         header(“Location: http://$dominio/usuarios”);
                                                                     114
    ?>
    ?>
Funciones predefinidas
●   Funciones de variables
    –   printf (string_formateado,$var [,$var])
         ●   Imprime strings formateados
              –   %% : literal '%'
              –   %b : Integer binario
              –   %c : Integer caracter ASCII
              –   %d : Integer decimal con signo
              –   %e : Notación científica
              –   %u : Integer decimal sin signo
              –   %f : Float numero de coma flotante
              –   %o : Integer octal
              –   %x : Integer hexadedimal

                                                       115
Funciones predefinidas
●    Funciones de variables
      –   printf (string_formateado,$var [,$var])
    <?php

        $num=126;
        printf("decimal num=%d",$num);
        printf("binario num=%b",$num);
        printf("hexadecimal num=%x",$num);
        printf("float num=%f",$num);
        printf("float num=%.2f",$num);
        printf("ascii num=%c",$num);
        printf("cientifico num=%e",$num);
    ?>
    decimal num=126
    binario num=1111110
    hexadecimal num=7e
    float num=126.000000
    float num=126.00
    ascii num=~
    cientifico num=1.260000e+2                      116
Funciones predefinidas
●   Funciones de variables
     –   empty ($variable)
          ●   Devuelva si la variable existe o no / si está definida o no
     –   unset ($variable)
          ●   Destruye la variable
          ●   Elimina un elemento de un array ( ¡¡¡no lo reordena!!!)
    <?php                                        <?php
    if(!empty($nombreUsuario){
        obtenerDatosUsuario($nombreUsuario);     unset($cont);
    }                                            unset($usuarios[$i]);
    else{
        echo “Inserta el nombre de usuario”;     ?>
    }
    ?>
                                                                         117
Funciones predefinidas
●   Funciones de variables
     –   is_tipo($variable)
          ●   Devuelve si la variable es del tipo o no (true || false)
          ●   is_bool() , is_int(), is_float(), is_string(), is_array() ...

    <?php
    if(is_int($num)){
        printf(“El valor es : %u”,$num);
    }
    elseif(is_float($num)){
        printf(“El valor es : %.2f”,$num);
    }
    else{
        printf(“No ha insertado un numero”);
    }
    ?>

      [http://es2.php.net/manual/es/ref.var.php]                              118
Funciones predefinidas
●   Funciones matemáticas
    –   floor($float) : devuelve el siguiente integer mas pequeño
    –   rand($int_min,$int_max) : genera un numero aleatorio
    –   sqrt($float) : raiz cuadrada
    –   pow($base,$exp) : potencia
    –   sin($float) : seno
    –   cos($float) : coseno
    –   tan($float) : tangente
    –   ...

     [http://es2.php.net/manual/es/ref.math.php]
                                                                    119
Funciones predefinidas
●   Funciones matemáticas
    <?php

    $num1 = 18;
    $num2 = 5;
    $div=round($num1/$num2);     //3
    $resto=$num1 % num2;         //3

    $num1=9;
    $raiz = sqrt($num1);         //3

    $x = 0;
    $y = 0;
    $senoX = sin($x);            //0
    $cosenoY = cos($y);          //1

    $aleatorio = rand(10,500);   //324

    ?>
                                         120
Funciones predefinidas
●   Funciones de cadenas (no codificación)
    –   strlen ($cadena) : devuelve el número de caracteres
    –   strpos ($pajar,$aguja) : Devuelve la posición de la primera
        ocurrencia de $aguja en $pajar
    –   stripos ~ strpos (stripos : indiferente a mayus – minus)
    –   strtolower ($cadena) : devuelve la cadena en minusculas
    –   strtoupper ($cadena) : devuelve la cadena en mayusculas
    –   trim ($cadena) : elimina espacios en blanco en principo y fin de
        cadena
    –   str_replace ($cad,$sus,$orig) : sustituye todas las apariciones
        de $cad por $sus en $orig
    –   explode ($separador,$cadena) : divide $cadena en trozos
        separados por $separador y devuelve un array con los trozos        121
Funciones predefinidas
●   Funciones de cadenas (no codificación)
    <?php                              <?php
    $cadena = "hola soy una cadena";
    echo strlen($cadena);              $cadena = "   tengo   espacios   ";
    19                                 echo trim($cadena);
                                       tengo espacios
    $cadena = "hola soy una cádena";
    echo strlen($cadena);              $cad = "soy una cadena";
    20                                 str_replace("cadena","cadenita",$cad);
                                       hola soy una cadenita
    $cadena = "hola soy una cadena";
    echo strpos($cadena,"soy");        print_r(explode(" ",$cadena));
    5
                                       Array
    $cadena = "Hola Soy Una Cadena";   (
    echo strtolower($cadena);              [0] => hola
    hola soy una cadena                    [1] => soy
                                           [2] => una
    echo strtoupper($cadena);              [3] => cadena
    HOLA SOY UNA CADENA                )

    ?>                                 ?>                               122
Funciones predefinidas
●   Funciones de cadenas (codificadas)
    –   Operan sobre cadenas codificadas en UTF-8,ISO-8859 ...
    –   Podemos especificar la codificación en las funciones
    –   Podemos establecer una codificación por defecto
         ●   mb_internal_encoding ("UTF-8");
         ●   mb_internal_encoding() : muestra la codificación interna

    <?php
    echo mb_internal_encoding ();      //ISO-8859-1
    echo mb_strlen ( "camión") ;       //7
    mb_internal_encoding ("UTF-8"); 
    echo mb_internal_encoding ();      //UTF-8
    echo mb_strlen ( "camión") ;       //6
    ?>

                                                                        123
Funciones predefinidas
●   Funciones de cadenas (codificadas)
    –   mb_strlen ($cadena,[$cod]) : Número de caracteres
    –   mb_strpos ($pajar,$aguja) : Posición de la primera ocurrencia
        de $aguja en $pajar
    –   mb_stripos ~ mb_strpos (stripos : indiferente a mayus – minus)
    –   mb_strtolower ($cadena) : devuelve la cadena en minúsculas
    –   mb_strtoupper ($cadena) : devuelve la cadena en mayúsculas
    –   mb_ereg_replace ($patron,$sus,$orig) : sustituye todas las
        apariciones de $patron por $sus en $orig
    –   mb_split ($patron,$cadena) : divide $cadena en trozos
        separados por $patron y devuelve un array con los trozos

                                                                         124
Funciones predefinidas
●    Funciones de cadenas (codificadas)
    <?php                              <?php
    mb_internal_encoding ("UTF-8");    mb_internal_encoding ("UTF-8");

    $cadena = "Ahí está mi camión";    $cad = "soy una cadena";
    echo mb_strlen($cadena);           mb_ereg_replace("soy","era",$cad);
    18                                 era una cadena

                                       $cadena = "Ahí está mi camión";
    $cadena = "hola soy una cadena";
    echo mb_strpos($cadena,"soy");     print_r(mb_split(" ",$cadena));
    5
                                       Array
    $cadena = "Ahí Está Mi Camión";    (
    echo mb_strtolower($cadena);           [0] => Ahí
    ahí está mi camión                     [1] => está
                                           [2] => mi
    echo mb_strtoupper($cadena);           [3] => camión
    AHí ESTá MI CAMIóN                 )
    ?>                                 ?>

                                                                         125
Funciones predefinidas
●   Funciones de arrays
    –   count ($array) : devuelve el numero de elementos del array
    –   asort ($array) : ordena $array utilizando los valores menor-mayor
    –   arsort ($array) : ordena $array utilizando los valores mayor-menor
    –   ksort ($array) : ~ asort pero utilizando las claves
    –   krsort ($array) : ~ arsort pero utilizando las claves
    –   array_keys ($array) : devuelve un array con las claves
    –   array_values ($array) : devuelve un array con los valores




                                                                       126
Funciones predefinidas
●   Funciones de arrays
    –   in_array ($aguga,$array) : devuelve true si aguja está en $array
    –   array_search($aguja,$array) : Busca $aguja en $array y si lo
        encuentra devuelve su clave (si no, false)
    –   implode ($separador,$array) : Devuelve una cadena con todos
        los elementos del array separados por el separador
    –   list ($var1,...,$varN) : Crea variables a partir de un array




                                                                       127
Funciones predefinidas
●   Funciones de arrays
    <?php
      –                               <?php
    $usuarios=array("mikel","ane",    $usuarios=array(
                   "eneko","manu");       "99999999"=>"mikel",
    echo count($usuarios);                "34343434"=>"ane",
    4                                     "12121212"=>"eneko",
                                          "76677667"=>"manu");
    asort($usuarios);
    print_r($usuarios);               echo count($usuarios);
                                      4

    $Array                            krsort($usuarios);
    (                                 print_r($usuarios);
        [1] => ane
        [2] => eneko                  Array
        [3] => manu                   (
        [0] => mikel                      [99999999] => mikel
    )                                     [76677667] => manu
                                          [34343434] => ane
                                          [12121212] => eneko
                                      )
    ?>                                ?>                         128
Funciones predefinidas
●   Funciones de arrays
      –
    <?php
    $usuarios=array(“99999999"=>"mikel", "34343434"=>"ane",
                    "12121212"=>"eneko","76677667"=>"manu");

    $dnis=array_keys($usuarios);
    print_r($dnis);

    Array
    (
        [0] => 99999999
        [1] => 34343434
        [2] => 12121212
        [3] => 76677667
    )

    $cad_dni = implode(“, “,$dnis);
    echo $cad_dni;

    99999999, 34343434, 12121212, 76677667

    ?>                                                         129
Funciones predefinidas
●   Funciones de arrays
    <?php
    $usuarios=array("99999999"=>"mikel","34343434"=>"ane",
                    "12121212"=>"eneko","76677667"=>"manu");

    $usuario = “eneko”;

    if(in_array($usuario,$usuarios)){
        echo “El usuario $usuario está en la lista.”;
    }
    else{
        echo “El usuario $usuario no está en la lista”;
    }

    if($pos=array_search($usuario,$usuarios)){
        unset($usuarios[$pos]);
    }

    ?>

                                                               130
Accediendo a DB : MySQL
●   MySQL
         –   Servidor de Bases de Datos
         –   Almacenaje de datos en bruto
         –   Cada BD es independiente
         –   Las BD tienen tablas
         –   Tablas tiene registros (filas + columnas)

                                 BD : blog


             Tabla : usuario                      Tabla : accesos
    id         user       pass               id        user           acceso
1            mikel      12321           1          1                10/01/09
2            ainhoa     32343           2          1                05/03/09   131
Accediendo a DB : MySQL
●   MySQL : Gestionando mysql con phpmyadmin
    –   Crear/eliminar/editar ... BD, tablas, registros, usuarios ...




                                                                        132
Accediendo a DB : MySQL
●   MySQL : SLQ (Structured Query Language)
●   Consultas : Obteniendo datos de tablas
    –   Obtener todos los datos de una tabla (tabla usuario)
        SELECT * FROM usuario


    –   Obtener una columna de una tabla
        SELECT nombre FROM usuario


    –   Obtener mas de un campo de una tabla
        SELECT nombre,apellido,dni FROM usuario
                                                               133
Accediendo a DB : MySQL
●   MySQL : SLQ (Structured Query Language)
●   Consultas : Obteniendo datos de tablas (II)
    –   Condiciones
        SELECT * FROM usuario
        WHERE edad>18


    –   SELECT * FROM usuario
        WHERE nombre = “ane”


    –   SELECT * FROM usuario
        WHERE nombre LIKE “%ana%”                 134
Accediendo a DB : MySQL
●   MySQL : SLQ (Structured Query Language)
●   Consultas : Insertando datos en tablas

    –   INSERT INTO usuario(nombre,pass) VALUES (“mikel”,”123”)



    –   INSERT INTO usuario (nombre) VALUES (“mikel”)



    –   INSERT INTO usuario(id,pass) VALUES (“1”,”123”)
                                                             135
Accediendo a DB : MySQL
●   MySQL : SLQ (Structured Query Language)
●   Consultas : Actualizando datos de tablas

    –   UPDATE usuario SET pass=”1010” WHERE nombre =”ane”



    –   UPDATE usuario SET pass=”0000”
        WHERE nombre LIKE “a%”


    –   UPDATE usuario SET pass=”0000” AND nombre=”jon”
        WHERE id=”1”                                      136
Accediendo a DB : MySQL
●   MySQL : SLQ (Structured Query Language)
●   Consultas : Eliminando datos de tablas

    –   DELETE FROM usuario WHERE id=”2”



    –   DELETE FROM usuario WHERE nombre LIKE “%a”



    –   DELETE FROM usuario WHERE pass =”” OR pass=”0000”
                                                        137
Accediendo a DB : MySQL
●   Acceder al servidor de BD MySQL
●   Funciones mysql:
    –   http://es.php.net/manual/es/ref.mysql.php
    –   Crear , eliminar, modificar, obtener ...
    –   BD, tablas, usuarios, privilegios ...
●   Tipo recurso ( referencia a recurso externo )
●   mysql_connect($hostname,$usuario,$password)
    –   devuelve un identificador de enlace o false
    –   $hostname ~ host[:puerto]

                                                      138
Accediendo a DB : MySQL
●   Crear / Abrir la conexión
    –   mysql_connect ($hostname,$usuario,$password)
    –   Si no hay problemas devuelve el enlace
    –   El enlace se cerrara automáticamente al finalizar el
        script o mediante la función mysql_close($link)
     <?php

     $con = mysql_connect(“localhost”,”user”,”pass”) 
            or die(“No se pudo abrir la conexión:” . mysql_error());

     if($con){
         echo “Conexión exitosa”;
     }
     ?>
                                                                       139
Accediendo a DB : MySQL
●   Cerrar la conexión
    –     mysql_close ($link)

    <?php

    $con = mysql_connect(“localhost”,”user”,”pass”) 
           or die(“No se pudo abrir la conexión:” . mysql_error());


    ...


    mysql_close($con);

    ?>



                                                                      140
Accediendo a DB : MySQL
●   Seleccionar BD
    –    mysql_select_db($dbname,[$link]);
    –    Devuelve true o false
    <?php

    $con = mysql_connect(“localhost”,”user”,”pass”) 
           or die(“No se pudo abrir la conexión:” . mysql_error());

    if (mysql_select_db(“usuarios”,$con)){
        ...
    }
    else{
        echo “no se pudo seleccionar la base de datos”);
    }
    mysql_close($con);

    ?>                                                                141
Accediendo a DB : MySQL
●   Realizar consultas
    –   mysql_db_query($link)
    –   Crear, eliminar, modificar ...
         ●   BD, tablas, permisos, registros ...
    –   Valores retornados
         ●   SELECT,SHOW,DESCRIBE,EXPLAIN : resource
         ●   INSERT,UPDATE,DELETE,DROP ... : true o false




                                                            142
Accediendo a DB : MySQL
●   Consultas sin retorno de valor
    <?php
    $con = mysql_connect(“localhost”,”user”,”pass”);

    $SQL = “CREATE DATABASE prueba”;
    if( mysql_query($SQL)){ echo “BD creada con exito”;}

    $SQL = “CREATE TABLE prueba (user VARCHAR(10),pass VARCHAR(10))”;
    if(mysql_query($SQL)){ echo “Tabla creada con exito”;}

    $SQL= "INSERT INTO prueba(user,pass) VALUES('usuario1','pass1')";
    if(mysql_query($SQL)){ echo “Se insertaron los datos con exito”;}

    $SQL =”DELETE FROM prueba WHERE user='usuario1'”;
    if(mysql_query($SQL)){ echo “Registro eliminado con exito”;}

    mysql_close($con);
    ?>

                                                                        143
Accediendo a DB : MySQL
●   Consultas con retorno de valor
    –   Valores en una variable tipo recurso
    –   Funciones para tratar los valores retornados

    –   mysql_fecth_assoc ($RS)
         ●   $RS : El valor retornado por mysql_query
         ●   Devuelve una matriz asociativa
         ●   Claves = nombres de las columnas



                                                        144
Accediendo a DB : MySQL
●   Consultas con retorno de valor
    –    mysql_fetch_assoc
    <?php
    $con = mysql_connect(“localhost”,”user”,”pass”);

    mysql_select_db("prueba",$con);

    $SQL = "SELECT * FROM prueba";

    $RS=mysql_query($SQL);

    while($fila=mysql_fetch_assoc($RS)){
        echo “Usuario : ”.$fila['user'];
        echo “Pass : ”.$fila['pass'];

    }

    ?>
                                                       145
Accediendo a DB : MySQL
●   Consultas con retorno de valor
    –   mysql_fetch_row($RS)
         ●   $RS : El valor retornado por mysql_query
         ●   Devuelve una matriz numérica
         ●   Claves = enteros empezando por 0




                                                        146
Accediendo a DB : MySQL
●   Consultas con retorno de valor
    –    mysql_fetch_row
    <?php                                              0 = usuario1
    $con = mysql_connect(“localhost”,”user”,”pass”);   1 = pass1
                                                       0 = usuario2
    mysql_select_db("prueba",$con);                    1 = pass2
                                                       ...
    $SQL = "SELECT * FROM prueba";

    $RS=mysql_query($SQL);

    while($fila=mysql_fetch_row($RS)){
        foreach($fila as $clave=>$valor){
            echo “$clave = $valor”;
        }
    }

    ?>

                                                                      147
Accediendo a DB : MySQL
●   Consultas con retorno de valor
    –   mysql_fetch_array ($RS,[$tipo])
         ●   $RS : El valor retornado por mysql_query
         ●   Devuelve una matriz asociativa, numérica o ambas
         ●   Por defecto : ambas
         ●   $tipo : constante que puede tener los siguientes valores
              –   MYSQL_ASSOC
              –   MYSQL_NUM
              –   MYSQL_BOTH




                                                                    148
Accediendo a DB : MySQL
●   Consultas con retorno de valor
    –    mysql_fetch_array
    <?php                                              0 = usuario1
    $con = mysql_connect(“localhost”,”user”,”pass”);   name = usuario1
                                                       1 = pass1
    mysql_select_db("prueba",$con);                    pass = pass1
                                                       0 = usuario2
    $SQL = "SELECT * FROM prueba";                     name = usuario2
                                                       1 = pass2
    $RS=mysql_query($SQL);                             ...

    while($fila=mysql_fetch_array($RS)){
        foreach($fila as $clave=>$valor){
            echo “$clave = $valor”;
        }
    }


    ?>
                                                                         149
Accediendo a DB : MySQL
●   Errores
    –    mysql_error ($link)
          ●   Devuelve el texto del mensaje de error de la última
              operación MySQL
          ●   Si no ocurrió error : “” (cadena vacía)

    <?php
    $con = mysql_connect(“localhost”,”user”,”pass”);

    if(!mysql_select_db("pruebaaaa",$con)){
        echo mysql_error();
    }

    ?>

    Unknown database 'pruebaaaa'
                                                                    150
Cookies
●   Pequeños ficheros que se escriben en el
    ordenador del cliente
●   Contienen información que las páginas que las
    han escrito pueden recuperar y utilizar
●   Se puede establecer el tiempo que el
    ordenador del usuario guardará el fichero
●   Idioma,temas,ultimo acceso ...



                                                151
Cookies
●   Creación de cookie
    –   setcookie($nombre[,$valor][,$expire][,$path]
                  [,$dominio][,$secure][,$httponly])
         ●   $nombre (string) : Nombre de la cookie
         ●   $valor (string ) : Valor de la cookie
         ●   $expire (int ) : Tiempo de caducidad (time()+60*60*24*30 : 30 dias)
         ●   $path (string) : ruta en el servidor
         ●   $dominio (string ) : dominio
         ●   $secure (bool) : indica si solo será accesible mediante https
         ●   $httponly (bool) : accesible solo mediante http




                                                                               152
Cookies
●   Obtención de cookie
    –    $_COOKIE[$nombreCookie]
    <?php

    //Establecer cookie

    $caducidad = time()*60*60*24*365;
    setcookie(“idioma”,$idiomaSeleccionado,$caducidad);

    ?>

    <?php

    //Obtener cookie

    $idiomaPreferido = $_COOKIE[“idioma”];

    ?>
                                                          153
Sesiones
●   Mecanismo para preservar datos a lo largo de
    accesos posteriores
●   Almacena información en el servidor accesible
    a través de diferentes scripts
●   La información se guarda en variables de
    sesión




                                                   154
Sesiones
●   Iniciar sesión
    –   session_start() : antes de cualquier etiqueta html


●   Crear variable de sesión
    –   $_SESSION ['nombre'] = $valor;

●   Recuperar variable de sesión
    –   $variable = $_SESSION ['nombre'];

                                                             155
Sesiones
<?php
session_start();
if(usuarioValido($usuario)){
    $_SESSION['valido']=true;
}
....


?>




<?php
session_start();
if(!empty($_SESSION['valido'] and $_SESSION['valido']==true)){
    ...
}
else{
    header(“Location : login.php?error=true”);
}
?>
                                                                 156
Sesiones
●   Funciones
    –   session_start : inicia la sesión
    –   session_destroy : destruye los datos de sesión
    –   session_unset : elimina todas las variables de
        sesion
    –   session_cache_expire : Devuelve/establece la
        caducidad actual del caché

[http://es2.php.net/manual/es/ref.session.php]

                                                         157
Ficheros y directorios
●   Ficheros
    –   abrir fichero : fopen ($fichero,$modo)
         ●   $fichero (string ) : ruta + nombre de fichero
         ●   $modo (string ) :
              –   a : Añadir datos al final del fichero. Si no existe, se crea
              –   a+ : Añadir datos al final del fichero y leer datos. Si no existe, se
                  crea.
              –   r : Solo lectura
              –   r+ : Lectura y escritura. Se añade al principio del fichero
              –   w : Escritura. Todo el contenido será borrado. Si no existe, se
                  crea.
              –   w+ : Lectura y escritura. Todo el contenido será borrado. Si no
                  existe se crea.
                                                                                     158
Ficheros y directorios
●   Ficheros
    –    abrir fichero : fopen ($fichero,$modo)

    <?php
    $fichero = “files/salida.txt”;

    if (fopen($fichero,'a+')) {
        echo (“El fichero se ha abierto con exito.”);
    }
    else{
        echo (“Error : no se a podido abrir el fichero”);
    }


    ?>




                                                            159
Ficheros y directorios
●   Ficheros
    –   Leer desde fichero : fgets($fichero,$longitud)
    –   Lee una linea de $longitud - 1 bytes
    –   feof($fichero) : verifica si el apuntador del fichero está al
        final del mismo
    <?php
    $fichero = fopen("datos.txt", "r");
    if ($fichero) {
        while (!feof($fichero)) {
            $bufer = fgets($fichero);
            echo $bufer;
        }
        fclose ($fichero);
    }
    ?>

                                                                        160
Ficheros y directorios
●   Ficheros
    –   Escribir en fichero : fwrite($fichero , $cadena [,$longitud] )
    –   Escribe $cadena
    –   n : nueva linea
    <?php
    $fich = fopen("escrito","a+");
    fwrite($fich,"hola soy una linean");
    fwrite($fich,"hola soy otra linean");
    fwrite($fich,"hola soy una:n linea");
    ?>

    hola soy una linea
    hola soy otra linea
        hola soy una:
    linea

                                                                         161
Ficheros y directorios
●   Ficheros
    –   Cerrar fichero : fclose ($fichero)
    <?php
    $fichero = “files/salida.txt”;

    if (fopen($fichero,'a+')) {
        echo (“El fichero se ha abierto con exito.”);
    }
    else{
        echo (“Error : no se a podido abrir el fichero”);
    }

    if(fclose($fichero)){
        echo “el fichero se ha cerrado correctamente”;
    }
    ?>
    [http://es2.php.net/manual/es/ref.filesystem.php]

                                                            162
Ficheros y directorios
●   Ficheros
    –    Subir ficheros al servidor
    <html>
    ...
    <form action=”upload.php” enctype=”multipart/form-data”
                                                           
    method=”post>

    <input type=”file” name=”fich”/>

    <?php
    $dir=”public/files/”;

    copy($_FILES['fich']['tmp_name'],$dir.$_FILES['fich']['name']);

    [name] => fichero.pdf
    [type] => application/pdf
    [tmp_name] => tmp/php/phpJbTkgB
    [error] => 0
    [size] => 450307
                                                                      163
    ?>
Ficheros y directorios
●   Directorios
    –   Abrir directorio : opendir($ruta)
         ●   Devuelve un recurso ($gestor)


    –   Leer directorio : readdir($gestor)
         ●   Devuelve el nombre del fichero


    <?php
    if($gestor=opendir(“images”)){
        while(false!==($fich = readdir($gestor))){
            echo “<img src='$fich'/>”;
        }
    }
    ?>
    [http://es2.php.net/manual/es/book.dir.php]
                                                     164
Clases y objetos
●   Definición de clases
     –   Variables (atributos) y Funciones (métodos)
     –   Las funciones acceden a los atributos
     –   class nombreClase { ... }
     –   $this : accedemos a los atributos y métodos de la clase
         desde “dentro” de la clase
          ● $this->name       //accede al atributo $name
          ● $this->imprimir() //accede al método imprimir
     –   Desde fuera de la clase:
          ● $obj = new MiObjeto();
          ● MiObjeto->imprimir();


     –   Podemos crear tantos objetos (instancias) de la clase como
         queramos                                                 165
Clases y objetos
●

    <?php
    class usuario{
        private $nombre;
        private $apellido;

         public function getNombre(){ return $this->nombre;}
         public funcion getApellido(){ return $this->apellido;}

         public function setNombre($nombre){$this->nombre=$nombre;}
         public function setApellido($ape){$this->apellido=$ape;}


    }



    $user = new Usuario();
    $user->setNombre(“Jon”);
    $user->setApellido(“Brown”);
    $usuario2 = new Usuario();
    $usaurio2->setNombre(“Ane”);
    echo “usuario :”.$usuario2->getNombre();

    ?>                                                                166

Contenu connexe

Tendances

Adentrándonos al Framework Symfony
Adentrándonos al  Framework SymfonyAdentrándonos al  Framework Symfony
Adentrándonos al Framework SymfonyRodrigo Miranda
 
PHP Avanzado: Seguridad Web
PHP Avanzado: Seguridad WebPHP Avanzado: Seguridad Web
PHP Avanzado: Seguridad WebRightster
 
Iniciación PHP 5. PHP y MySQL
Iniciación PHP 5. PHP y MySQLIniciación PHP 5. PHP y MySQL
Iniciación PHP 5. PHP y MySQLRightster
 
Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Raul Fraile
 
desarrolo de sitios web php y mysql
desarrolo de sitios web php y mysqldesarrolo de sitios web php y mysql
desarrolo de sitios web php y mysqlJuan Timoteo Cori
 
PHP Avanzado: Características avanzadas de PHP
PHP Avanzado: Características avanzadas de PHPPHP Avanzado: Características avanzadas de PHP
PHP Avanzado: Características avanzadas de PHPRightster
 
Symfony2 Formacion y primeros pasos
Symfony2  Formacion y primeros pasosSymfony2  Formacion y primeros pasos
Symfony2 Formacion y primeros pasosSoni BM
 
Tutorial de php y my sql completo
Tutorial de php y my sql completoTutorial de php y my sql completo
Tutorial de php y my sql completoAndrés Amaya
 
Las buenas prácticas oficiales para aplicaciones Symfony
Las buenas prácticas oficiales para aplicaciones SymfonyLas buenas prácticas oficiales para aplicaciones Symfony
Las buenas prácticas oficiales para aplicaciones Symfonysymfony_bcn
 
PHP Avanzado: PHP, XML y Servicios Web
PHP Avanzado: PHP, XML y Servicios WebPHP Avanzado: PHP, XML y Servicios Web
PHP Avanzado: PHP, XML y Servicios WebRightster
 

Tendances (20)

Php Con Postgres
Php Con PostgresPhp Con Postgres
Php Con Postgres
 
Adentrándonos al Framework Symfony
Adentrándonos al  Framework SymfonyAdentrándonos al  Framework Symfony
Adentrándonos al Framework Symfony
 
PHP Avanzado: Seguridad Web
PHP Avanzado: Seguridad WebPHP Avanzado: Seguridad Web
PHP Avanzado: Seguridad Web
 
4.Programación con PHP y MySQL
4.Programación con PHP y MySQL4.Programación con PHP y MySQL
4.Programación con PHP y MySQL
 
Iniciación PHP 5. PHP y MySQL
Iniciación PHP 5. PHP y MySQLIniciación PHP 5. PHP y MySQL
Iniciación PHP 5. PHP y MySQL
 
Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Symfony2: Framework para PHP5
Symfony2: Framework para PHP5
 
Manual De Php
Manual De PhpManual De Php
Manual De Php
 
desarrolo de sitios web php y mysql
desarrolo de sitios web php y mysqldesarrolo de sitios web php y mysql
desarrolo de sitios web php y mysql
 
Iniciacion a PHP (I)
Iniciacion a PHP (I)Iniciacion a PHP (I)
Iniciacion a PHP (I)
 
PHP Avanzado: Características avanzadas de PHP
PHP Avanzado: Características avanzadas de PHPPHP Avanzado: Características avanzadas de PHP
PHP Avanzado: Características avanzadas de PHP
 
Symfony2 Formacion y primeros pasos
Symfony2  Formacion y primeros pasosSymfony2  Formacion y primeros pasos
Symfony2 Formacion y primeros pasos
 
Composer: Gestionando dependencias en PHP
Composer: Gestionando dependencias en PHP Composer: Gestionando dependencias en PHP
Composer: Gestionando dependencias en PHP
 
Tutorial de php y my sql completo
Tutorial de php y my sql completoTutorial de php y my sql completo
Tutorial de php y my sql completo
 
Curso php-my sql-clase-2
Curso php-my sql-clase-2Curso php-my sql-clase-2
Curso php-my sql-clase-2
 
Las buenas prácticas oficiales para aplicaciones Symfony
Las buenas prácticas oficiales para aplicaciones SymfonyLas buenas prácticas oficiales para aplicaciones Symfony
Las buenas prácticas oficiales para aplicaciones Symfony
 
PHP Avanzado: PHP, XML y Servicios Web
PHP Avanzado: PHP, XML y Servicios WebPHP Avanzado: PHP, XML y Servicios Web
PHP Avanzado: PHP, XML y Servicios Web
 
Conociendo PHP
Conociendo PHPConociendo PHP
Conociendo PHP
 
Manual de PHP Basico
Manual de PHP BasicoManual de PHP Basico
Manual de PHP Basico
 
Php basico
Php basicoPhp basico
Php basico
 
Historia de PHP
Historia de PHPHistoria de PHP
Historia de PHP
 

En vedette

Cuaderno de-ejercicios-y-practicas-php
Cuaderno de-ejercicios-y-practicas-phpCuaderno de-ejercicios-y-practicas-php
Cuaderno de-ejercicios-y-practicas-phplgcj1989
 
Servidor Web Apache, PHP, MySQL.
Servidor Web Apache, PHP, MySQL.Servidor Web Apache, PHP, MySQL.
Servidor Web Apache, PHP, MySQL.Ángel Acaymo M. G.
 
Buenas Prácticas de Programación en PHP
Buenas Prácticas de Programación en PHPBuenas Prácticas de Programación en PHP
Buenas Prácticas de Programación en PHPJesus Castagnetto
 
Php basico y avanzado
Php basico y avanzadoPhp basico y avanzado
Php basico y avanzadodrakatiadiaz
 
Manual user diseño web con html y css
Manual user   diseño web con html y cssManual user   diseño web con html y css
Manual user diseño web con html y cssJose Luis Fernandez
 
Users - Desarrollo PHP + MySQL
Users - Desarrollo PHP + MySQLUsers - Desarrollo PHP + MySQL
Users - Desarrollo PHP + MySQLAndrés Pizarro
 
52 ejercicios-resueltos-en-pseudocodigo
52 ejercicios-resueltos-en-pseudocodigo52 ejercicios-resueltos-en-pseudocodigo
52 ejercicios-resueltos-en-pseudocodigoepetekaun
 
Exposicion de php
Exposicion de phpExposicion de php
Exposicion de phpangie barre
 
Ejercicios resueltos
Ejercicios resueltosEjercicios resueltos
Ejercicios resueltosfermodcor
 
Tutorial CodeIgniter + Netbeans 7
Tutorial CodeIgniter + Netbeans 7Tutorial CodeIgniter + Netbeans 7
Tutorial CodeIgniter + Netbeans 7Juan Fede
 
Elegant CSS Design In Drupal: LESS vs Sass
Elegant CSS Design In Drupal: LESS vs SassElegant CSS Design In Drupal: LESS vs Sass
Elegant CSS Design In Drupal: LESS vs SassMediacurrent
 

En vedette (16)

Cuaderno de-ejercicios-y-practicas-php
Cuaderno de-ejercicios-y-practicas-phpCuaderno de-ejercicios-y-practicas-php
Cuaderno de-ejercicios-y-practicas-php
 
Servidor Web Apache, PHP, MySQL.
Servidor Web Apache, PHP, MySQL.Servidor Web Apache, PHP, MySQL.
Servidor Web Apache, PHP, MySQL.
 
Buenas Prácticas de Programación en PHP
Buenas Prácticas de Programación en PHPBuenas Prácticas de Programación en PHP
Buenas Prácticas de Programación en PHP
 
Php basico y avanzado
Php basico y avanzadoPhp basico y avanzado
Php basico y avanzado
 
ejercicios php rfo
ejercicios php rfoejercicios php rfo
ejercicios php rfo
 
Php desde cero
Php desde ceroPhp desde cero
Php desde cero
 
Manual user diseño web con html y css
Manual user   diseño web con html y cssManual user   diseño web con html y css
Manual user diseño web con html y css
 
Users - Desarrollo PHP + MySQL
Users - Desarrollo PHP + MySQLUsers - Desarrollo PHP + MySQL
Users - Desarrollo PHP + MySQL
 
52 ejercicios-resueltos-en-pseudocodigo
52 ejercicios-resueltos-en-pseudocodigo52 ejercicios-resueltos-en-pseudocodigo
52 ejercicios-resueltos-en-pseudocodigo
 
Exposicion de php
Exposicion de phpExposicion de php
Exposicion de php
 
Ejercicios resueltos
Ejercicios resueltosEjercicios resueltos
Ejercicios resueltos
 
ILLUSTRATOR CS6
ILLUSTRATOR CS6ILLUSTRATOR CS6
ILLUSTRATOR CS6
 
Adobe Illustrator
Adobe IllustratorAdobe Illustrator
Adobe Illustrator
 
Software
SoftwareSoftware
Software
 
Tutorial CodeIgniter + Netbeans 7
Tutorial CodeIgniter + Netbeans 7Tutorial CodeIgniter + Netbeans 7
Tutorial CodeIgniter + Netbeans 7
 
Elegant CSS Design In Drupal: LESS vs Sass
Elegant CSS Design In Drupal: LESS vs SassElegant CSS Design In Drupal: LESS vs Sass
Elegant CSS Design In Drupal: LESS vs Sass
 

Similaire à Curso Php (20)

1 intro php
1 intro php1 intro php
1 intro php
 
33 php
33 php33 php
33 php
 
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdfPHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
 
Programacion - Php
Programacion - PhpProgramacion - Php
Programacion - Php
 
Php1
Php1Php1
Php1
 
Apache
ApacheApache
Apache
 
Php1
Php1Php1
Php1
 
Trabajo especial (php)
Trabajo especial (php)Trabajo especial (php)
Trabajo especial (php)
 
Trabajo especial copy
Trabajo especial   copyTrabajo especial   copy
Trabajo especial copy
 
Apuntes php
Apuntes phpApuntes php
Apuntes php
 
Programacion en php atavez de ejemplos
Programacion en php atavez de ejemplosProgramacion en php atavez de ejemplos
Programacion en php atavez de ejemplos
 
Apuntes php
Apuntes phpApuntes php
Apuntes php
 
PHP IUTE
PHP IUTEPHP IUTE
PHP IUTE
 
Tema4.pdf
Tema4.pdfTema4.pdf
Tema4.pdf
 
Practica09
Practica09Practica09
Practica09
 
Webinar - Radiografía actual del lenguaje PHP
Webinar - Radiografía actual del lenguaje PHPWebinar - Radiografía actual del lenguaje PHP
Webinar - Radiografía actual del lenguaje PHP
 
Tema1
Tema1Tema1
Tema1
 
Apuntes php
Apuntes phpApuntes php
Apuntes php
 
Programacion en php a traves de ejemplos
Programacion en php a traves de ejemplosProgramacion en php a traves de ejemplos
Programacion en php a traves de ejemplos
 
Ejemplos en php
Ejemplos en phpEjemplos en php
Ejemplos en php
 

Plus de larasaregune

4.Estructura (diseño con CSS)
4.Estructura (diseño con CSS)4.Estructura (diseño con CSS)
4.Estructura (diseño con CSS)larasaregune
 
2.Sintaxis (diseño con CSS)
2.Sintaxis (diseño con CSS)2.Sintaxis (diseño con CSS)
2.Sintaxis (diseño con CSS)larasaregune
 
1.Introduccion (diseño con CSS)
1.Introduccion (diseño con CSS)1.Introduccion (diseño con CSS)
1.Introduccion (diseño con CSS)larasaregune
 
0.Indice De Contenidos
0.Indice De Contenidos0.Indice De Contenidos
0.Indice De Contenidoslarasaregune
 
3.Propiedades (diseño con CSS)
3.Propiedades (diseño con CSS)3.Propiedades (diseño con CSS)
3.Propiedades (diseño con CSS)larasaregune
 
3.Propiedades (diseño con CSS)
3.Propiedades (diseño con CSS)3.Propiedades (diseño con CSS)
3.Propiedades (diseño con CSS)larasaregune
 
1.Introduccion (diseño web con CSS)
1.Introduccion (diseño web con CSS)1.Introduccion (diseño web con CSS)
1.Introduccion (diseño web con CSS)larasaregune
 
0.Indice de Contenidos
0.Indice de Contenidos0.Indice de Contenidos
0.Indice de Contenidoslarasaregune
 
0.Indice de Contenidos (diseño web con CSS)
0.Indice de Contenidos (diseño web con CSS)0.Indice de Contenidos (diseño web con CSS)
0.Indice de Contenidos (diseño web con CSS)larasaregune
 

Plus de larasaregune (9)

4.Estructura (diseño con CSS)
4.Estructura (diseño con CSS)4.Estructura (diseño con CSS)
4.Estructura (diseño con CSS)
 
2.Sintaxis (diseño con CSS)
2.Sintaxis (diseño con CSS)2.Sintaxis (diseño con CSS)
2.Sintaxis (diseño con CSS)
 
1.Introduccion (diseño con CSS)
1.Introduccion (diseño con CSS)1.Introduccion (diseño con CSS)
1.Introduccion (diseño con CSS)
 
0.Indice De Contenidos
0.Indice De Contenidos0.Indice De Contenidos
0.Indice De Contenidos
 
3.Propiedades (diseño con CSS)
3.Propiedades (diseño con CSS)3.Propiedades (diseño con CSS)
3.Propiedades (diseño con CSS)
 
3.Propiedades (diseño con CSS)
3.Propiedades (diseño con CSS)3.Propiedades (diseño con CSS)
3.Propiedades (diseño con CSS)
 
1.Introduccion (diseño web con CSS)
1.Introduccion (diseño web con CSS)1.Introduccion (diseño web con CSS)
1.Introduccion (diseño web con CSS)
 
0.Indice de Contenidos
0.Indice de Contenidos0.Indice de Contenidos
0.Indice de Contenidos
 
0.Indice de Contenidos (diseño web con CSS)
0.Indice de Contenidos (diseño web con CSS)0.Indice de Contenidos (diseño web con CSS)
0.Indice de Contenidos (diseño web con CSS)
 

Dernier

Danielarora Martinez 31061614 ARQUITECTURA GRIEGA.pptx
Danielarora Martinez 31061614 ARQUITECTURA GRIEGA.pptxDanielarora Martinez 31061614 ARQUITECTURA GRIEGA.pptx
Danielarora Martinez 31061614 ARQUITECTURA GRIEGA.pptxaurorialfonzo6
 
Portafolio de Diseño Gráfico por Giorgio B Huizinga
Portafolio de Diseño Gráfico por Giorgio B HuizingaPortafolio de Diseño Gráfico por Giorgio B Huizinga
Portafolio de Diseño Gráfico por Giorgio B Huizingagbhuizinga2000
 
Historia de los estilos artísticos docum
Historia de los estilos artísticos documHistoria de los estilos artísticos docum
Historia de los estilos artísticos documminipuw
 
Afiche Didáctico-Temático de la Modernidad
Afiche Didáctico-Temático de la ModernidadAfiche Didáctico-Temático de la Modernidad
Afiche Didáctico-Temático de la ModernidadDiosymarSuarez
 
Diagramas de flujo metalurgico en mineria.pptx
Diagramas de flujo metalurgico en mineria.pptxDiagramas de flujo metalurgico en mineria.pptx
Diagramas de flujo metalurgico en mineria.pptxHarryArmandoLazaroBa
 
MANUFACTURA AERONAUTICA 2024 presentacion
MANUFACTURA AERONAUTICA 2024 presentacionMANUFACTURA AERONAUTICA 2024 presentacion
MANUFACTURA AERONAUTICA 2024 presentacionssuser1ed434
 
Gabriela Marcano historia de la arquitectura 2 renacimiento
Gabriela Marcano historia de la arquitectura 2 renacimientoGabriela Marcano historia de la arquitectura 2 renacimiento
Gabriela Marcano historia de la arquitectura 2 renacimientoGabrielaMarcano12
 
PRESENTACION DE LA ARQUITECTURA GRIEGA (EDAD ANTIGUA)
PRESENTACION DE LA ARQUITECTURA GRIEGA (EDAD ANTIGUA)PRESENTACION DE LA ARQUITECTURA GRIEGA (EDAD ANTIGUA)
PRESENTACION DE LA ARQUITECTURA GRIEGA (EDAD ANTIGUA)lemg25102006
 
Anatomia.pfd29382819292829191929292929292929
Anatomia.pfd29382819292829191929292929292929Anatomia.pfd29382819292829191929292929292929
Anatomia.pfd29382819292829191929292929292929FiorellaLaura2
 
Medición IRI Diseño de Pavimentos Maestria en Vias Terrestres
Medición IRI Diseño de Pavimentos Maestria en Vias TerrestresMedición IRI Diseño de Pavimentos Maestria en Vias Terrestres
Medición IRI Diseño de Pavimentos Maestria en Vias TerrestresKengYoshiIngaOchoa1
 
Sesión 02 Buenas practicas de manufactura.pptx
Sesión 02 Buenas practicas de manufactura.pptxSesión 02 Buenas practicas de manufactura.pptx
Sesión 02 Buenas practicas de manufactura.pptxMarcosAlvarezSalinas
 
Arquitectura griega, obras antiguas. pdf
Arquitectura griega, obras antiguas. pdfArquitectura griega, obras antiguas. pdf
Arquitectura griega, obras antiguas. pdfduf110205
 
PRESENTACION SOBRE EL PROYECTO DE GRADO .
PRESENTACION SOBRE EL PROYECTO DE GRADO .PRESENTACION SOBRE EL PROYECTO DE GRADO .
PRESENTACION SOBRE EL PROYECTO DE GRADO .Rosa329296
 
Arquitectura antigua. Salazar Alejandra.pdf
Arquitectura antigua. Salazar Alejandra.pdfArquitectura antigua. Salazar Alejandra.pdf
Arquitectura antigua. Salazar Alejandra.pdfsalazar1611ale
 
Dia mundial de la salud (1).pdf triptico
Dia mundial de la salud (1).pdf tripticoDia mundial de la salud (1).pdf triptico
Dia mundial de la salud (1).pdf tripticoThaisAymeeTacucheBen
 
LAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdf
LAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdfLAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdf
LAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdfBrbara57940
 
MARIA ZABALA HISTORIA DE LA ARQUITECTURA II, ARQUITECTURA RENACENTISTA.pdf
MARIA ZABALA HISTORIA DE LA ARQUITECTURA II, ARQUITECTURA RENACENTISTA.pdfMARIA ZABALA HISTORIA DE LA ARQUITECTURA II, ARQUITECTURA RENACENTISTA.pdf
MARIA ZABALA HISTORIA DE LA ARQUITECTURA II, ARQUITECTURA RENACENTISTA.pdfitssmalexa
 
Arquitectos del Movimiento Moderno (Historia de la Arquitectura)
Arquitectos del Movimiento Moderno (Historia de la Arquitectura)Arquitectos del Movimiento Moderno (Historia de la Arquitectura)
Arquitectos del Movimiento Moderno (Historia de la Arquitectura)LeonardoDantasRivas
 
Plano de diseño de una Planta de tratamiento de aguas PTAP
Plano de diseño de una Planta de tratamiento de aguas  PTAPPlano de diseño de una Planta de tratamiento de aguas  PTAP
Plano de diseño de una Planta de tratamiento de aguas PTAPjuanrincon129309
 
Manual de Normas APA 7ma edición (1).pdf
Manual de Normas APA 7ma edición (1).pdfManual de Normas APA 7ma edición (1).pdf
Manual de Normas APA 7ma edición (1).pdfsteevensnodamartel
 

Dernier (20)

Danielarora Martinez 31061614 ARQUITECTURA GRIEGA.pptx
Danielarora Martinez 31061614 ARQUITECTURA GRIEGA.pptxDanielarora Martinez 31061614 ARQUITECTURA GRIEGA.pptx
Danielarora Martinez 31061614 ARQUITECTURA GRIEGA.pptx
 
Portafolio de Diseño Gráfico por Giorgio B Huizinga
Portafolio de Diseño Gráfico por Giorgio B HuizingaPortafolio de Diseño Gráfico por Giorgio B Huizinga
Portafolio de Diseño Gráfico por Giorgio B Huizinga
 
Historia de los estilos artísticos docum
Historia de los estilos artísticos documHistoria de los estilos artísticos docum
Historia de los estilos artísticos docum
 
Afiche Didáctico-Temático de la Modernidad
Afiche Didáctico-Temático de la ModernidadAfiche Didáctico-Temático de la Modernidad
Afiche Didáctico-Temático de la Modernidad
 
Diagramas de flujo metalurgico en mineria.pptx
Diagramas de flujo metalurgico en mineria.pptxDiagramas de flujo metalurgico en mineria.pptx
Diagramas de flujo metalurgico en mineria.pptx
 
MANUFACTURA AERONAUTICA 2024 presentacion
MANUFACTURA AERONAUTICA 2024 presentacionMANUFACTURA AERONAUTICA 2024 presentacion
MANUFACTURA AERONAUTICA 2024 presentacion
 
Gabriela Marcano historia de la arquitectura 2 renacimiento
Gabriela Marcano historia de la arquitectura 2 renacimientoGabriela Marcano historia de la arquitectura 2 renacimiento
Gabriela Marcano historia de la arquitectura 2 renacimiento
 
PRESENTACION DE LA ARQUITECTURA GRIEGA (EDAD ANTIGUA)
PRESENTACION DE LA ARQUITECTURA GRIEGA (EDAD ANTIGUA)PRESENTACION DE LA ARQUITECTURA GRIEGA (EDAD ANTIGUA)
PRESENTACION DE LA ARQUITECTURA GRIEGA (EDAD ANTIGUA)
 
Anatomia.pfd29382819292829191929292929292929
Anatomia.pfd29382819292829191929292929292929Anatomia.pfd29382819292829191929292929292929
Anatomia.pfd29382819292829191929292929292929
 
Medición IRI Diseño de Pavimentos Maestria en Vias Terrestres
Medición IRI Diseño de Pavimentos Maestria en Vias TerrestresMedición IRI Diseño de Pavimentos Maestria en Vias Terrestres
Medición IRI Diseño de Pavimentos Maestria en Vias Terrestres
 
Sesión 02 Buenas practicas de manufactura.pptx
Sesión 02 Buenas practicas de manufactura.pptxSesión 02 Buenas practicas de manufactura.pptx
Sesión 02 Buenas practicas de manufactura.pptx
 
Arquitectura griega, obras antiguas. pdf
Arquitectura griega, obras antiguas. pdfArquitectura griega, obras antiguas. pdf
Arquitectura griega, obras antiguas. pdf
 
PRESENTACION SOBRE EL PROYECTO DE GRADO .
PRESENTACION SOBRE EL PROYECTO DE GRADO .PRESENTACION SOBRE EL PROYECTO DE GRADO .
PRESENTACION SOBRE EL PROYECTO DE GRADO .
 
Arquitectura antigua. Salazar Alejandra.pdf
Arquitectura antigua. Salazar Alejandra.pdfArquitectura antigua. Salazar Alejandra.pdf
Arquitectura antigua. Salazar Alejandra.pdf
 
Dia mundial de la salud (1).pdf triptico
Dia mundial de la salud (1).pdf tripticoDia mundial de la salud (1).pdf triptico
Dia mundial de la salud (1).pdf triptico
 
LAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdf
LAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdfLAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdf
LAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdf
 
MARIA ZABALA HISTORIA DE LA ARQUITECTURA II, ARQUITECTURA RENACENTISTA.pdf
MARIA ZABALA HISTORIA DE LA ARQUITECTURA II, ARQUITECTURA RENACENTISTA.pdfMARIA ZABALA HISTORIA DE LA ARQUITECTURA II, ARQUITECTURA RENACENTISTA.pdf
MARIA ZABALA HISTORIA DE LA ARQUITECTURA II, ARQUITECTURA RENACENTISTA.pdf
 
Arquitectos del Movimiento Moderno (Historia de la Arquitectura)
Arquitectos del Movimiento Moderno (Historia de la Arquitectura)Arquitectos del Movimiento Moderno (Historia de la Arquitectura)
Arquitectos del Movimiento Moderno (Historia de la Arquitectura)
 
Plano de diseño de una Planta de tratamiento de aguas PTAP
Plano de diseño de una Planta de tratamiento de aguas  PTAPPlano de diseño de una Planta de tratamiento de aguas  PTAP
Plano de diseño de una Planta de tratamiento de aguas PTAP
 
Manual de Normas APA 7ma edición (1).pdf
Manual de Normas APA 7ma edición (1).pdfManual de Normas APA 7ma edición (1).pdf
Manual de Normas APA 7ma edición (1).pdf
 

Curso Php

  • 2. Contenidos ● Introducción ● Sintaxis básica ● Variables, tipos y operadores ● Variables predefinidas ● Constantes ● Estructuras de Control ● Incluir código de ficheros externos ● Funciones ● Accediendo a MySQL ● Cookies ● Sesiones ● Ficheros y directorios ● Clases y Objetos (PHP 5) 2
  • 3. Introducción ● ¿Que es PHP? – Lenguaje de programación de alto nivel – Empotrado en páginas HTML – Ejecutado en servidor – Software libre 3
  • 4. Introducción (II) ● ¿Que puedo hacer con PHP? – Scripts del lado del servidor – Scripts en linea de comandos – Aplicaciones con interfaz gráfica PHP-GTK 4
  • 5. Introducción (III) ● Scripts del lado del servidor BD Servidor HTML + PHP Cliente LDAP Procesa PHP Genera HTML ... / 5
  • 6. Introducción (III) ● Scripts del lado del servidor Servidor BD: Servidor Web : Apache2 MySQL HTML + PHP Navegador (Firefox) Procesa PHP Genera HTML c: 6
  • 7. Introducción ● Requisitos – PHP5 – Servidor Web : apache2 – Servidor BD : mysql – Editor : netbeans ● Todo en 1 : XAMPP (Apache + MySQL + PHP) ● Netbeans ¡¡¡ Software libre !!! 7
  • 8. Introducción ● Instalación en windows – XAMPP : http://www.apachefriends.org/es/xampp.html – Installer : Instalación por defecto : C:xampp – Raiz de documentos : c:xampphtdocs – Configuración php : c:xamppapachebinphp.ini – Configuración apache : C:xamppapacheconfhttpd.conf – Configuración mysql : C:xamppmysqlbinmy.cnf ● Navegador : http://localhost ● MySQL : http://localhost/phpmyadmin 8
  • 9. Introducción ● Instalación en windows (II) ● Editor de scripts php – Editor de texto plano – IDE (Entorno de desarrollo integrado) ● Editor ● Resaltado de sintaxis ● Plantillas html ● Debuger ● Proyectos ● ... 9
  • 10. Introducción ● Instalación en windows (II) – IDE : Netbeans, Eclipse, Zend Studio … – NetBeans – http://www.netbeans.org/downloads/index.html – PHP + Spanish + Windows 10
  • 11. Introducción ● Primer proyecto php en netbeans – Archivo → Proyecto nuevo – Categoría → PHP – Proyectos → PHP application – Project Name → Nombre_del_proyecto – Sources folder → C:xampphtdocsNombre_del_proyecto – Run as → Local web site – Project URL → http://localhost/Nombre_del_proyecto 11
  • 12. Introducción ● Primer proyecto php en netbeans (II) Nombre del projecto : PhpProject1 12
  • 13. Introducción ● Primer proyecto php en netbeans (II) – Ejecutar proyecto: Ejecutar → Set project configuration → Personalizar 13 Ejecutar proyecto
  • 14. Sintaxis Básica (I) ● Código PHP empotrado en documentos HTML ● Instrucciones entre etiquetas: – <?php ... ?> – <script language=”php”> ... </script> – <? ... ?> – <% ... %> ● recomendado : <?php .... ?> – XHTML – XML 14
  • 15. Sintaxis Básica (II) ● Ejemplo <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Título de la página</title> </head> <body> <?php echo "<p>Estas usando:".$_SERVER['HTTP_USER_AGENT']."</p>"; ?> </body> </html> 15
  • 16. Sintaxis Básica (III) ● Scripts PHP : – Serie de sentencias / instrucciones – Ejecutadas secuenciálmente – Datos en variables – Estructuras de control – Funciones – Clases (POO) 16
  • 17. Sintaxis Básica (IV) ● Los espacios/tabulaciones/saltos de linea entre las instrucciones, no afectan al comportamiento – Las siguientes instrucciones tienen el mismo resultado: <?php echo “hola mundo” ;?> <?php echo “hola mundo”; ?> <?php echo “hola mundo”; ?> <?php echo “hola mundo”; ?> 17
  • 18. Sintaxis Básica (V) ● Las instrucciones siempre se finalizan con punto y coma <?php echo “<p>hola mundo</p>”; echo “<p>Esto es una prueba</p>”; ?> <?php echo “<p>hola mundo</p>”;echo “<p>Esto es una prueba</p>”; ?> <?php echo “<p>hola mundo</p>”; echo “<p>Esto es una prueba</p>”; ?> 18
  • 19. Sintaxis Básica (VI) ● Comentarios : Texto que no se ejecuta – Linea : // <?php //Esta linea no se tiene en cuenta echo “<p>hola mundo</p>”;//Este comentario tampoco echo “<p>Esto es una prueba</p>”; ?> – Bloque: /* ... */ <?php /*Esta linea no se tiene en cuenta esta tampoco tampoco esta/* Estos comentarios /* No se puede anidar producirían un error /* bloques de comentarios*/ */ 19 ?>
  • 20. Variables ● Los datos se almacenan en variables – Las variables se representan con un signo de dolar seguido por el nombre de la variable – Sensible a mayúsculas/minúsculas – El nombre de la variable : ● Empezar con letra o _ (guión bajo) ● Contener : letras números _ <?php <?php $cont=1; $1Usuario = “mikel”; $_cont=1; $usuario-2 = “ainara”; $nombre_usuario=”mikel” $número = 12; $PESO22_=”102g” $cont 1 = 0; ?> ?> 20 CORRECTO INCORRECTO
  • 21. Operadores de Asignación ● Asignación : = – Permite asignar valores a variables – El operando de la izquierda recibe el valor de la expresión de la derecha <?php $cont = 123; $cont =”Hola”; $a = ($b = 4) + 5; echo $a; echo $b; ?> 9 4 21
  • 22. Variables (II) ● A diferencia de otros lenguajes PHP es un lenguaje “no tipado” ● El programador no decide el tipo de una variable ● El tipo lo decide PHP en tiempo de ejecución dependiendo del contexto <?php $cont = 123; var_dump($cont); int(123) $cont =”Hola”; var_dump($cont); string(4) "Hola" $cont= true; var_dump($cont); bool(true) 22 ?>
  • 23. Variables (III) ● Para forzar variables – settype($variable,”tipo”) – Moldear variables (casting) ● Mostrar tipo variable – var_dump($variable); ● Mostrar contenido variable – print_r($variable) – echo – printf 23
  • 24. Variables (IV) ● Mostrar contenido variables : ejemplos <?php $cont = 123; echo $cont; 123 $mensaje =”Página en construcción”; echo $mensaje; Página en construcción echo $cont; echo $mensaje; 123Página en construcción ?> 24
  • 25. Variables (V) ● Mostrar contenido variables : Saltos de linea <?php $cont = 123; $mensaje =”Página en construcción”; echo $cont; echo $mensaje; ?> Fuente HTML : 123Página en construcción Navegador: 123Página en construcción 25
  • 26. Variables (VI) ● Mostrar contenido variables : Saltos de linea (II) <?php $cont = 123; $mensaje =”Página en construcción”; echo $cont; echo “<br/>”; echo $mensaje; ?> Fuente HTML : 123<br/>Página en construcción Navegador: 123 Página en construcción 26
  • 27. Variables (VII) ● Mostrar contenido variables : Saltos de linea (III) <?php $cont = 123; $mensaje =”Página en construcción”; echo $cont; echo “n”; echo $mensaje; ?> Fuente HTML : 123 Página en construcción Navegador: 123Página en construcción 27
  • 28. Pasar datos entre scripts ● HTTP : protocolo sin estado ● El valor de las variables existe durante la vida del script (página) ● Pasar datos entre scripts (páginas) – Formularios – “Enlaces GET” – Cookies – Sesiones 28
  • 29. Obtener variables de formularios ● Metodo : POST <!-- index.html --> <form action =”logon.php” method=”post”> <input type=”text” name=”user”/> <input type=”text” name=”pass”/> <input type=”submit” </form> <?php //logon.php $usuario = $_POST['user']; $pass = $_POST['pass']; ?> 29
  • 30. Obtener variables de formularios ● Metodo : GET <form action =”logon.php” method=”get”> <input type=”text” name=”user”/> <input type=”text” name=”pass”/> <input type=”submit” </form> <a href=”logon.php?user=nombreUsuario&pass=password”>logon</a> <?php //logon.php $usuario = $_GET['user']; $pass = $_GET['pass']; ?> 30
  • 31. Tipos ● Tipos – Escalares ● Enteros ● Coma flotante ● Cadenas ● Booleanos – Compuestos ● Matrices ● Objetos – Null – Resource 31
  • 32. Tipos : Enteros ● Enteros (Integer) – Números enteros del conjunto Z = {...,-2,1,0,1,2,...} – Tamaño depende de la plataforma – Usual : 32 bits con signo – Z = {-2147483647,-2147483646,...,-1,0,1,2147483646,2147483647} – Si se desborda un entero será interpretado como float (numero de coma flotante) 32
  • 33. Tipos : Enteros (II) ● Enteros (Integer) Declarando variables de enteros: <?php $cont = 123;// Un número decimal $cont = -123;// Un número decimal negativo $cont = 0123;// Un número octal $cont = 0x1A;// Un número hexadecimal $edadMinima = 18; ?> Desbordamiento de enteros : <?php $numeroGrande = 2147483647; var_dump($numeroGrande);// Devuelve : int(2147483647) $numeroGrande = 2147483648; var_dump($numeroGrande);// Devuelve : float(2147483647) 33 ?>
  • 34. Tipos : Reales ● Números de coma flotante (Float) – Números reales – También conocidos como doble o real – Tamaño depende de la plataforma – Usual : ~1.8e308 <?php $a = 1.234; $b = 1.2e3; $c = 7E-10; ?> 34
  • 35. Tipos : Reales (II) ● Float : Imprimir variables de tipo float – echo <?php $num=16.6765464; echo $num; 16.6765464 ?> – printf <?php $num=16.6765464; printf("el numero es : %.2f ",$num); 16.68 ?> 35
  • 36. Operadores aritméticos ● Podemos realizar operaciones aritméticas Operacion Operador Ejemplo suma + $total = $precio + $iva; resta - $oferta = $total - $descuento; multiplicacion * $iva = $precio*0.16; division / $media = $suma / $total; módulo (resto) % $resto = $total % 5; negación - $a = 10*-$b; – El operador ' / ' devuelve un valor flotante a menos que los dos operandos sean enteros y los números sean divisibles sin residuos 36
  • 37. Operadores aritméticos (II) ● El orden de ejecución : – * / % – + - – Izquierda a derecha – Paréntesis : orden de ejecución <?php echo (8 % 3 * 5); // 10 echo 8%(3*5); // 8 echo (8 * 3 % 5); // 4 echo 8*(3%5); //24 echo (5 * 8 % 3); // 1 echo 5 *( 8 % 3); //10 echo (5 % 8 * 3); // 15 echo 5 %( 8 * 3); // 5 echo ((($a+($b-$c))/$d) % 3); //paréntesis de aperture = paréntesis de cierre ?> 37
  • 38. Operadores aritméticos (III) ● Ejemplos : <?php $a = 10; $b = 30 + $a; echo $b *0.6; $c = (($a * 40) - $b) / 2; $pie = 10; $altura = 25; $superficie = ($pie*$altura)/2; ?> 38
  • 39. Operadores aritméticos (IV) ● Operadores de incremento/decremento : Operacion Ejemplo Ejemplo Pre-incremento ++$a Incrementa $a en uno, y luego devuelve $a. Post-incremento $a++ Devuelve $a, y luego incrementa $a en uno. Pre-decremento --$a Decrementa $a en uno, luego devuelve $a. Post-decremento $a-- Devuelve $a, luego decrementa $a en uno. <?php $a = 10; $a++; echo $a; //11 $a--; echo $a; // 10 ?> 39
  • 40. Tipos : Cadenas ● Cadenas (String) – Secuencia de caracteres – Antes de PHP 6 : un carácter -> un byte – 256 tipos de caracteres diferentes – Diferentes maneras de especificar – Caracteres de escape – No hay limite de tamaño 40
  • 41. Tipos : Cadenas ● Cadenas (String) : Definición de cadenas – Comillas simples : ' – Imprimir comilla simple: ● ' – Para imprimir barra invertida ● <?php echo 'Esto es una cadena'; $c = 'Una cadena en una variable'; echo 'Imprime una cadena con saltos'; 41 ?>
  • 42. Tipos : Cadenas ● Cadenas (String) : Definición de cadenas – Comillas dobles : “Esto es una cadena” – Caracteres escapados ● n : Imprime una linea nueva ● t : Imprime una tabulación horizontal ● : Imprime una barra invertida ● $ : Imprime un signo de dólar ● ” : Imprime una comilla doble – Los nombres de las variables serán expandidos 42
  • 43. Tipos : Cadenas ● Cadenas : Comillas dobles <?php $nombre = “esti”; echo ”Frase con n tres n saltos de linea.n”; Frase con tres saltos de linea. “n” != “<br/>” $articulo = “tFrase tabuladanSin tabular”; echo $articulo; Frase tabulada Sin Tabular echo ”Ha seleccionado ”5” 'articulos' “; Ha seleccionado “5” 'articulos' ?> 43
  • 44. Tipos : Cadenas ● Cadenas : Expansión de variables – Las variables son interpretadas <?php $nombre = “ainhoa”; echo ”Bienvenid@ $nombre”; // Imprime Bienvenid@ ainhoa $articulo = “camiseta”; $cantidad = 5; echo ”Ha seleccionado $cantidad $articulos “; // Incorrecto echo ”Ha seleccionado $cantidad ${articulo}s “; // Correcto echo ”Ha seleccionado $cantidad {$articulo}s “; // Correcto echo ”Ha seleccionado $cantidad $articulo's “; // Correcto ?> 44
  • 45. Tipos : Cadenas ● Cadenas : Heredoc – Definir cadenas largas – Uso similar a comillas dobles – Caracteres de escape – Expansión de variables <?php $cadena = <<<FIN Ejemplo de una cadena que se extiende por varias líneas usando la sintaxis heredoc. FIN; ?> 45
  • 46. Tipos : Cadenas ● Cadenas : Heredoc – Expansión de variables <?php $nombre = $_REQUEST['txNombre']; $apellido = $_REQUEST['txApellido']; $dni = $_REQUEST['txDni']; $cadena = <<<FIN El usuario $nombre $apellido con dni $dni certifica que .... FIN; ?> 46
  • 47. Tipos : Cadenas ● Cadenas : Acceso a caracteres – Indices [ 0 .. longitud_cadena -1] <?php $cadena = “esto es una prueba”; echo $cadena; esto es una prueba echo $cadena[0]; // Imprime el primer caracter e echo $cadena[6]; // Imprime el 7 caracter s $cadena[0]='E'; echo $cadena; Esto es una prueba ?> 47
  • 48. Operadores de cadena ● Concatenación '.' <?php $cadena = “<label class='datos'>”.$nombre.” “.$apellido”.”</labe>; echo $cadena; <label class='datos'>Esti Goikoetxea</label> //Html : Esti Goikoetxea ?> ● Asignación sobre concatenación ' .= ' <?php $cadena = “<label class='; ... $cadena.=”datos”; ... $cadena.=”'>”.$nombre.” “.$apellido”.”</label>; ... ?> 48
  • 49. Tipos : Booleanos ● Booleanos : – 2 valores : true o false || TRUE o FALSE ● 0,0.0, “” , '',”0”, null,array vacio = false ● Cualquier otro valor = true <?php var_dump((bool) "");        // bool(false) var_dump((bool) 1);         // bool(true) var_dump((bool) -2);        // bool(true) var_dump((bool) "foo");     // bool(true) var_dump((bool) 2.3e5);     // bool(true) var_dump((bool) array(12)); // bool(true) var_dump((bool) array());   // bool(false) var_dump((bool) "false");   // bool(true) 49 ?>
  • 50. Operadores lógicos ● Operadores Operacion Nombre Resultados $a and $b Y TRUE si tanto $a como $b son TRUE. $a or $b O TRUE si cualquiera de $a o $b es TRUE. $a xor $b XOR TRUE si $a o $b es TRUE, pero no ambos. ! $a No TRUE si $a no es TRUE. $a && $b Y TRUE si tanto $a como $b son TRUE. $a || $b O TRUE si cualquiera de $a o $b es TRUE. 50
  • 51. Tipos : Array ● Matrices (Array) – Serie de pares de clave/valor (con un orden) – No puede haber claves repetidas – Multidimensionales – Por defecto : claves numéricas consecutivas – Claves : integer o string – Valor : cualquier tipo de PHP – Mediante los arrays podemos agrupar datos / variables en una sola variable – Los valores no tienen por que ser del mismo tipo 51
  • 52. Tipos : Array ● Matrices (Array) : Definir array – Podemos definir/crear arrays de diferentes maneras <?php $laborables = array(“lunes”,”martes”,”miércoles”,”jueves”,”viernes”); $laborables = array(0=>”lunes”,1=>”martes”,2=>”miércoles”, 3=>”jueves”,4=>”viernes”); ?> – De las dos maneras tendríamos la siguiente estructura (¡en una sola variable!) Índice 0 1 2 3 4 Valor “lunes” “martes” “miércoles” “jueves” “viernes” 52
  • 53. Tipos : Array ● Matrices (Array) : Definir array – Podemos especificar los índices directamente <?php $festivos[0]=”sábado”; $festivos[1]=”domingo”; ?> Índice 0 1 Valor “sábado” “domingo” – Los índices no tiene por que ser consecutivos 53
  • 54. Tipos : Array ● Matrices (Array) : Definir array – Los índices numéricos no se reordenan <?php $usuario[0]=”ainhoa”; $usuario[2]=”ane”; $usuario[1]=”iñaki”; ?> Índice 0 2 1 Valor “ainhoa” “ane” “iñaki” – Aunque disponemos de herramientas para hacerlo 54
  • 55. Tipos : Array ● Matrices (Array) : Añadir elementos al array – Podemos añadir elementos al array sin especificar el índice <?php $estaciones[0]=”invierno”; $estaciones[1]=”primavera”; $estaciones[]=”verano”; $estaciones[]=”otoño”; ?> – De esta manera se añadirán al final del array y su indice será el mayor indice del array incrementado en uno Índice 0 1 2 3 Valor “invierno” “primavera” “verano” “otoño” 55
  • 56. Tipos : Array ● Matrices (Array) : Acceder a los valores $laborables = array(“lunes”,”martes”,”miércoles”,”jueves”,”viernes”); echo $laborables; Array echo $laborables[2]; miércoles $estaciones[0]=”invierno”; $estaciones[1]=”primavera”; $estaciones[]=”verano”; $estaciones[]=”otoño”; print_r($estaciones); Array ( [0] => invierno [1] => primavera [2] => verano [3] => otoño ) 56
  • 57. Tipos : Array ● Matrices (Array) : Array asociativo – Los índices no tienen por que ser numéricos <?php $laborables = array(“enero”=>31, ”febrero”=>28, ”marzo”=>31, ”abril”=>30, .... ,”diciembre”=>31); echo $laborables[“abril”]; 30 print_r ($laborables[2]); Array ( [enero] => 31 [febrero] => 28 [marzo] => 31 [abril] => 30 ... ) ?> 57
  • 58. Tipos : Array ● Matrices (Array) : Array asociativo – Generalmente con BD => Asociativos <?php echo “<tr><td>Nombre:</td><td>” . $fila['nombre'] . ”</td></tr>”; echo “<tr><td>Apellido:</td><td>” . $fila['apellido'] . ”</td></tr>”; echo “<tr><td>Dni:</td><td>” . $fila['dni'] . ”</td></tr>”; ?> Nombre Ainara Apelido Etxeberria Dni 99999999K 58
  • 59. Tipos : Array ● Matrices (Array) : Array multidimensional <?php $apuntados = array( “enero”=>array(“mikel”,”ainhoa”,”ane”), ”febrero”=>array(“ainara”,”eneko”), .... ,”diciembre”=>0); ?> Índice “enero” “febrero” .... “diciembre” Valor “mikel “ainara” “ainhoa” “eneko” “ane” 59
  • 60. Tipos : Array ● Matrices (Array) : Array multidimensional <?php $apuntados = array( “enero”=>array(“mikel”,”ainhoa”,”ane”), ”febrero”=>array(“ainara”,”eneko”), .... ,”diciembre”=>0); echo $apuntados[“enero”][1]; ainhoa echo $apuntados[“febrero”][0]; ainara echo $apuntados[“diciembre”]; 0 ?> 60
  • 61. Tipos : Array ● Matrices (Array) : Array multidimensional <?php ... echo “<pre>”; print_r ($apuntados); echo “</pre>”; Array ( [enero] => Array ( [0] => mikel [1] => ainhoa [2] => ane ) [febrero] => Array ( [0] => ainara .... [diciembre] => 0 ) 61 ?>
  • 62. Operadores de matrices ● Operadores Operacion Nombre Resultados $a + $b Unión Unión de $a y $b. $a == $b Igualdad TRUE si $a y $b tienen las mismas parejas llave/valor. $a === $b Identidad TRUE si $a y $b tienen las mismas parejas llave/valor en el mismo orden y de los mismos tipos. $a!=$b No-igualdad TRUE si $a no es igual a $b. $a <> $b No-igualdad TRUE si $a no es igual a $b. $a !== $b No-identidad TRUE si $a no es idéntico a $b. 62
  • 63. Tipos : NULL ● Variable que no tiene valor ● Posibles valor : null || NULL <?php $var =null; ?> 63
  • 64. Tipos : Resource ● Contiene una referencia a un recurso externo ● Los recursos son usados por funciones especiales – Algunos recursos : mysql, ldap,gd ... – Mysql : ● Recurso : mysql link ● Crear recurso : $con = mysql_connect('host' ...) ● mysql_query(“SELECT ...”, $con); ● .... 64
  • 65. Variables predefinidas ● Variables del servidor – $_SERVER ● PHP_SELF ● SERVER_ADDR ● SERVER_ADDR ● DOCUMENT_ROOT ● QUERY_STRING ● REMOTE_ADDR ● HTTP_HOST ● ... [http://es2.php.net/reserved.variables] 65
  • 66. Constantes ● Definición de constantes – define($nombre,$valor) – $nombre (string) : nombre de la constante – $valor : Valor de la constante <?php define("const1","primera constante"); define("MAX",10); echo MAX; 10 echo const1 primera constante ?> 66
  • 67. Estructuras de control ● Controlar la ejecución de instrucciones ● Decidir en tiempo de ejecución que sentencias ejecutar u omitir ● Crear bloques repetitivos ● En tiempo de ejecución / contexto 67
  • 68. Estructuras de control : IF ● Permite la ejecución condicional de sentencias ● Si la condición se cumple en tiempo de ejecución : se ejecuta un bloque de código predeterminado <?php if (expr)     sentencia ?>  ● Las tabulaciones no son necesarias pero si 68 recomendables para la legibilidad el código
  • 69. Estructuras de control : IF ● expr : “cualquier cosa que tiene un valor” <?php $a = 5;  ?>  – Los literales son expresiones – '5' es una expresión con el valor 5 – Las variables son expresiones – $a es una expresión con el valor 5 69
  • 70. Estructuras de control : IF ● expr : “cualquier cosa que tiene un valor” – Las comparaciones son una expresion con valores booleanos (true o false ) (verdadero o falso) <?php $a = 10; if ( $a > 0 ) echo “a es mayor que cero”; ?>  – $a > 0 es una expresión con valor TRUE 70
  • 71. Estructuras de control : IF ● expr se evalúa a su valor condicional (boolean) – Si la expresión se evalúa como true se ejecuta la sentencia – Si la expresión se evalúa como false no se ejecuta la sentencia <?php $a = 10; if ($a > 0)     print "a es mayor que 0"; if ($a) print “a es diferente a 0”; ?>  71
  • 72. Operadores de comparación ● Operadores Operacion Nombre Resultados $a == $b Igual TRUE si $a es igual a $b. $a === $b Idéntico TRUE si $a es igual a $b, y son del mismo tipo. $a != $b Diferente TRUE si $a no es igual a $b. $a <> $b Diferente TRUE si $a no es igual a $b. $a !== $b No idénticos TRUE si $a no es igual a $b.TRUE si $a no es igual a $b, o si no son del mismo tipo. $a < $b Menor que TRUE si $a es escrictamente menor que $b. $a > $b Mayor que TRUE si $a es estrictamente mayor que $b. $a <= $b Menor o igual que TRUE si $a es menor o igual que $b. $a >= $b Mayor o igual que TRUE si $a es mayor o igual que $b. 72
  • 73. Operadores de comparación ● Las expresiones de comparación siempre devuelven un valor boolean <?php $a = 5; $b = 0; $c = "0"; var_dump($a>$b);   //bool(true) var_dump($a<$b);   //bool(false) var_dump($a>$c);   //bool(true) var_dump($b==$c);  //bool(true) var_dump($b===$c); //bool(false) var_dump($b!=$c);  //bool(false) var_dump($b!==$c); //bool(true) var_dump($b<>$c);  //bool(false) var_dump($a>=$b);  //bool(true) ?>  73
  • 74. Estructuras de control : IF ● Comparación <?php $a = 5; $c = "0"; if($a>0) echo “a es mayor que cero”; if($c==0) echo “c es igual a cero” if($_SERVER['HTTP_USER_AGENT']=='MSIE') echo “<link rel='stylesheet' type='text/css'”   .“href='style_ie.css'/> if ($_SERVER['HTTP_USER_AGENT']=='Firefox') echo “<link rel='stylesheet' type='text/css'”  .”href='style_firefox.css'/>”; 74 ?>
  • 75. Estructuras de control : IF ● If : Bloques – Podemos agrupar bloque de instrucciones mediante { } <?php if ($usuario != null ) {    echo “<span class='datos'>$nombre</span>”; echo “<span class='datos'>$apellido</span>”; echo “<span class='datos'>$telefono</span>”; } ?> 75
  • 76. Estructuras de control : IF ● If : Anidar condiciones – Podemos anidar indefinidamente condiciones <?php if ($usuario != null ) {    echo “<span class='datos'>$nombre</span>”; echo “<span class='datos'>$apellido</span>”; echo “<span class='datos'>$telefono</span>”; if($telefono2 != null){ echo “<span class='datos'>$telefono2</span>”; } } ?> 76
  • 77. Estructuras de control : IF ● If : Condiciones de múltiples expresiones – Operadores lógicos <?php if ( $edad < 18 ) {    ... } if ( $edad >= 18 and $edad <=35 ){ //Solo si se cumplen ...   // las dos condiciones } if ( $edad > 35 and $edad <= 60){  //Solo si se cumplen ...   // las dos condiciones } ?> 77
  • 78. Estructuras de control : IF ● If : Condiciones de múltiples expresiones <?php if ( $annos<18 or ($annos == 18 and  $mesNacimiento < $mesActual)) {    ... } if ( $result!=null and ($numResult > 100 or $pagina=0)){ ... } ?> 78
  • 79. Estructuras de control : IF ... ELSE ● else : Ejecutar sentencias en caso de que la expresión evaluada en el if sea igual a false <?php echo “<link rel='stylesheet' type='text/css'”; if ($_SERVER['HTTP_USER_AGENT']=='MSIE' ) {    echo “ href='style_explorer.css'/>”; } else{  echo “ href='style_firefox.css'/>”; } ?>  79
  • 80. Estructuras de control : ELSEIF ● elseif : combinación if y else – Se ejecuta si if = false y se da otra condición nueva <?php echo “<link rel='stylesheet' type='text/css'”; if ($_SERVER['HTTP_USER_AGENT']=='MSIE' ) {    echo “ href='style_explorer.css'/>”; } elseif ($_SERVER['HTTP_USER_AGENT']=='SAFARI'){  echo “ href='style_safari.css'/>”; } else{  echo “ href='style_firefox.css'/>”; } ?> 80
  • 81. Estructuras de control : ELSEIF ● elseif : No hay limite de sentencias elseif – Solo una se ejecuta <?php if ($opcion==1 ) {    ... } elseif ($opcion==2){ //Si se da la condición, se ejecuta  ...  //el bloque y se sale de la estructura } elseif ($opcion==3){ ... } else{ //Si no se da ninguna condición anterior ... //Se ejecuta el bloque else } ?>  81
  • 82. Estructuras de control : SWITCH ● switch : Comparar la misma variable – Similar a bloque if – elseif – else ( != 1 variable) <?php switch ($i) {     case 0: echo "i = 0"; break;     case 1: echo "i = 1"; break;     case 2: echo "i = 2"; break; } ?> 82
  • 83. Estructuras de control : SWITCH ● switch : sentencia break – Las sentencias se empiezan a ejecutar desde una sentencia case que se cumpla hasta el final del switch o hasta una sentencia break <?php <?php $i=1; $i=1; switch ($i) { switch ($i) {     case 0:     case 0: echo "i = 0"; echo "i = 0"; break;     case 1:     case 1: echo "i = 1"; echo "i = 1";     case 2: break; echo "i = 2";     case 2: } echo "i = 2"; ?> break; } i=1i=2 ?> i=1  83
  • 84. Estructuras de control : SWITCH ● switch : caso default – ~ else : En caso de que no se cumpla ningún 'case' <?php $i=1; switch ($i) {     case 0: echo "i = 0"; break;     case 1: echo "i = 1"; break;     case 2: echo "i = 2"; break; default: ... } ?> 84
  • 85. Estructuras de control : Bucles ● Estructuras repetitivas ● El código se ejecuta mientras se de una condición ● Diferentes tipos de bucles ● Diferentes sentencias 85
  • 86. Estructuras de control : Bucles ● while – Tipo mas simple – while (expr) sentencia – Si la condición nunca obtiene el valor false ● Bucle infinito !!! – Múltiples sentencias : { } <?php $i=0; while($i<10){ echo $i; $i=$i+1; } ?> 86
  • 87. Estructuras de control : Bucles ● while <?php $valorMax=10; $valorMin=1; $aux=$valorMin; while( $aux <= $valorMax ){ echo “<input type='radio' name='vota' value='$aux'/>$auxn”; $aux=$aux+1; } $cont=0; while(!empty($imagenes[$cont])){     echo “<img src='{$imagenes[$cont]}'/>”;     $cont++; } ?> 87
  • 88. Estructuras de control : Bucles ● do .. while – Similar a while : La condición se evalúa al final <?php  $i = 0; do {      print $i; } while ($i>0); ?> 88
  • 89. Estructuras de control : Bucles ● For – for (expr1 ; expr2 ; expr3 ) sentencia ● expr1 : Se ejecuta una sola vez al comienzo del bucle ● expr2 : Se evalúa en el comienzo de cada iteración – true : el bucle continua ejecutándose – false : termina la ejecución del bucle ● expr3 : Se ejecuta al final de cada iteración <?php for ($i=1;$i<=10;$i++){ echo “<input type='radio' name='vota' value='$i'/>$in”; } ?> 89
  • 90. Estructuras de control : Bucles ● For <?php echo “<table”>; for ($i=0;$i<$maxUsuarios;$i++){ echo “<tr>”; echo “<td>{$usuario[$i]['nombre']}</td>”; echo “<td>{$usuario[$i]['apellido']}</td>”; echo “<td>{$usuario[$i]['dni']}</td>”; echo “</tr>”; } echo “</table>”; ?> 90
  • 91. Estructuras de control : Bucles ● Foreach – Fácil iteración sobre matrices ● foreach(expresion_array as $value) sentencia ● foreach(expresion_array as $key => $value) sentencia <?php $arUsuarios = array(“jon”,”ainara”,”mikel”,”ane”); foreach($arUsuarios as $usuario){ echo “<a href='editar.php?usuario=$usuario'>$usuario</a>n”; } <a href='editar.php?usuario=jon'>jon</a> <a href='editar.php?usuario=ainara'>ainara</a> <a href='editar.php?usuario=mikel'>mikel</a> <a href='editar.php?usuario=ane'>ane</a> ?> 91
  • 92. Estructuras de control : Bucles ● Foreach <?php $usuario = array(“Nombre”=>“jon”,   ”Fecha de nacimiento”=>”1982-10-25”   “Dirección”=>”francia 4”); foreach($usuario as $dato=>$valor){ echo “$dato : $valor <br/>“; } ?> Nombre : Jon Fecha de nacimiento : 1982-10-25 Dirección : francia 4 92
  • 93. Estructuras de control : Bucles ● Foreach <?php $arUsuarios = array(   “11111111”=>array(“jon”,”1975-10-22”,”Gasteiz”),   “22222222”=>array(”ainara”,”1967-06-22”,”Bilbo”),   “33333333”=>array(“mikel”,”1983-05-04”,”Donostia”) ); echo “<table border='2'>”; foreach($arUsuarios as $dni=>$arUsuario){ echo “<tr>”; foreach($arUsuario as $datosUsuario){ echo “<td>$datosUsuario</td>”; } echo “</tr>”; } echo “</table>”; ?> 93
  • 94. Estructuras de control : break ● break : sentencia para salir del bucle <?php $arUsuarios = array(   “11111111”=>array(“jon”,”1975-10-22”,”Gasteiz”,”admin”),   “22222222”=>array(”ainara”,”1967-06-22”,”Bilbo”,”admin”), ...      “44444444”=>array(“ane”,”1983-05-04”,”Bilbo”,”desarrollo”) ); foreach($arUsuarios as $dni=>$arUsuario){ if($arUsuario[3]==”desarrollo”){ break; } echo “<tr><td>$dni</td>”; foreach($arUsuario as $datosUsuario){ echo “<td>$datosUsuario</td>”; } echo “</tr>”; } echo “</table>”; ?> 94
  • 95. Estructuras de control : continue ● continue : sentencia para terminar iteración <?php $arUsuarios = array(  “11111111”=>array(“jon”,”1975-10-22”,”Gasteiz”,”admin”),   “22222222”=>array(”ane”,”1967-06-22”,”Bilbo”,”desarrollo”), ...     “44444444”=>array(“ana”,”1983-05-04”,”Bilbo”,”desarrollo”) ); foreach($arUsuarios as $dni=>$arUsuario){ if($arUsuario[3]==”desarrollo”){ continue; } echo “<tr><td>$dni</td>”; foreach($arUsuario as $datosUsuario){ echo “<td>$datosUsuario</td>”; } echo “</tr>”; } echo “</table>”; ?> 95
  • 96. Estructuras de control ● Sintaxis alternativa – if , while , for , switch – abrir llave = dos puntos (:) – cerrar llave = ● endif; endwhile; endfor; endswitch; <?php if($a==5):?> <p>A es igual a 5</p> <?php endif;?> <?php for($i=0;$i<10;$i++): echo “<input type='radio' name='vot' value='$i'/>$i”; endfor; ?> 96
  • 97. Incluir código de ficheros externos ● Include y require – Funciones para incluir otros ficheros – include ([ruta]nombre fichero); – require ([ruta] nombre fichero); ● Si no se encuentra el fichero – Include produce un warning (el script continua) – Require produce un error fatal (el script NO notinua) <?php include('cabecera.php'); ... 97 include('pie.php');  ?>
  • 98. Incluir código de ficheros externos ● Include y require – El código se inserta en el lugar donde se encuentra la instrucción include/require <?php <?php $apuntados = 3; define(“MAX”,10); echo MAX - $apuntados.”<br/”>; ?> include("constantes.php"); echo MAX - $apuntados; ?> -3 7 98
  • 99. Incluir código de ficheros externos ● Include y require – Si los ficheros no están al mismo nivel : ruta – Podemos incluir desde url /var/www/cursos/apuntados/ /var/www/cursos/include/ <?php <?php $apuntados = 3; echo MAX - $apuntados.”<br/”>; define(“MAX”,10); include("../include/constantes.php"); ?> echo MAX - $apuntados; ?> -3 7 99
  • 100. Incluir código de ficheros externos ● Include_once y require_once – Mismo funcionamiento que include y require – Pero si el fichero ha sido evaluado e incluido no vuelve a incluirse <?php //constante.php $apuntados = 3; <?php echo MAX - $apuntados.”<br/”>; include(“funciones.php”); include("constantes.php"); include(“funciones.php”); define(“MAX”,10); ?> echo MAX - $apuntados; ?> Fatal error: Cannot redeclare funcion() (previously declared in ... ) 100
  • 101. Funciones ● No repetir código ● Divide y vencerás ● Funciones especificas ● Funciones variables mediante parámetros ● El código no se ejecuta hasta la llamada a la función ● Funciones definidas por el usuario ● Funciones predefinidas (API) 101
  • 102. Funciones ● Funciones : definición y llamada – Definición: function nombreDeFuncion (parametros){ cuerpo de función } – Llamada nombreDeFuncion($parametro); 102
  • 103. Funciones ● Funciones : definición y llamada <?php function bienvenida(){ echo “hola mundo!”; } bienvenida(); bienvenida(); echo “<br/>”; bienvenida(); hola mundo!hola mundo! hola mundo! ?> 103
  • 104. Funciones ● Funciones : en ficheros externos <?php <?php require_once(“funciones.php”); function bienvenida(){ echo “Bienvenido”; bienvenida(); } echo “<br/>”; despedida(); function despedida(){ echo “Gracias por su visita”; } ?> ?> Bienvenido Gracias por su visita 104
  • 105. Funciones ● Funciones : parámetros – Podemos pasarle variables a las funciones – Lista de variables separadas por comas – Los parámetros han de definirse al definir la función – Si se definen parámetros, hay que pasarle variables a la función en la llamada <?php function suma($num1,$num2){ echo $num1 + $num2; } suma(14,6); //20 suma(34,5615); //5649 suma(2); //Warning ... 105 ?>
  • 106. Funciones ● Funciones : parámetros <?php <?php require_once(“funciones.php”); function bienvenida($nombre){ $usuario1 = “jon”; echo “Bienvenido $nombre”; $usuario2 = “ainhoa”; } bienvenida($usuario1); function despedida($nom){ echo “<br/>”; echo “Adios $nom”; despedida($usuario1); } echo “<br/>”; bienvenida($usuario2); ?> ?> Bienvenido jon Adios jon Bienvenido ainhoa 106
  • 107. Funciones ● Funciones : parámetros por defecto <?php function asistentes($numero = 0){ echo “han asistido $numero personas”; } $b=45; asistentes(); asistentes(10); asistentes($b); asistentes(24,23,”doce”); ?> 0 10 45 24 107
  • 108. Funciones ● Funciones : ámbito de las variables <?php <?php function suma($a,$b){ function suma($a,$b){ $a = $a + $b; $a = $a + $b; echo $a; echo $a; } } $a=10; $num1=10; $b=5; $num2=5; $c=20; $num3=20; suma($a,$b); suma($a,$b); echo $a; echo $a; suma($a,$c); suma($num1,$num2); echo $a; echo $b; ?> ?> 25 0 10 //nada 30 15 10 //nada 108
  • 109. Funciones ● Funciones : Return – Las funciones pueden devolver un valor mediante la sentencia return – Puede devolverse cualquier tipo de valor – Solo puede devolverse un valor – Podemos devolver múltiples valores dentro de un elemento array por ejemplo <?php function suma($a,$b){ $a = $a + $b; return $a; } $result = suma(23,10); echo $result; // 33 109 ?>
  • 110. Funciones ● Funciones : Return <?php function esPar($num){ <table> return $num % 2 == 0; <tr class='par'> } <td>ane</td> </tr> $usuarios = array(“ane”,”mikel”, <tr class='impar'> ”jon”,”ainhoa”,”roger”); <td>mikel</td> echo “<table>”; </tr> foreach($usuarios as $indice=>$usuario){ <tr class='par'> echo “<tr class=”; if(esPar($indice)){ <td>jon</td> echo “'par'>”; </tr> } <tr class='impar'> else{ <td>ainhoa</td> echo “'impar'>”; </tr> } <tr class='par'> echo “t<td>$usuario</td></tr>”; <td>roger</td> } </tr> echo “</table>”; </table> 110 ?>
  • 111. Funciones ● Funciones : <?php function imprimirTabla($mat){ <table> echo “<table>”; <tr class='par'> foreach($mat as $fila){ <td>mikel</td> echo “<tr>”; <td>millan</td> foreach($fila as $valor){ <td>999999999</td> echo “<td>$valor</td>”; </tr> } <tr class='impar'> echo “</tr>”; <td>jon</td> } <td>guereñu</td> echo “</table>”; <td>686868686</td> } </tr> <tr class='impar'> $usuarios = array( <td>manu</td> array(”mikel”,”millan”,”999999999”), <td>arregi</td> array(”jon”,”guereñu”,”686868686”) <td>12345678</td> array(“manu”,”arregi”,”123456789”)); </tr> </table> imprimirTabla($usuarios); 111 ?>
  • 112. Funciones ● Funciones : Parametros por referencia – Accedemos a la variable por referencia – No se crea una copia, accedemos a la variable original <?php function incrementar(&$val){ $val ++; } $cont=1; echo $cont; incrementar($cont); echo $cont; ?> 1 2 112
  • 113. Funciones predefinidas ● Redireccionar – header() : enviar cabeceras – Redireccionar a otra página <?php if(usuarioValido($usuario){ header(“Location: correcto.php”); } else{ header(“Location: incorrecto.php”); } ?> <?php $dominio = $_SERVER['HTTP_HOST']; if(usuarioValido($usuario){ header(“Location: http://$dominio/usuarios”); } else{ header(“Location: http://$dominio/error”); 113 } ?>
  • 114. Funciones predefinidas ● Redireccionar – header() : No puede haber texto antes de una llamada a header – No puede haber ningun echo, print ... antes de una llamada a header <?php $dominio = $_SERVER['HTTP_HOST']; if(usuarioValido($usuario){ header(“Location: http://$dominio/usuarios”); ERROR } ?> <body> ... <?php ERROR header(“Location: http://$dominio/usuarios”); 114 ?> ?>
  • 115. Funciones predefinidas ● Funciones de variables – printf (string_formateado,$var [,$var]) ● Imprime strings formateados – %% : literal '%' – %b : Integer binario – %c : Integer caracter ASCII – %d : Integer decimal con signo – %e : Notación científica – %u : Integer decimal sin signo – %f : Float numero de coma flotante – %o : Integer octal – %x : Integer hexadedimal 115
  • 116. Funciones predefinidas ● Funciones de variables – printf (string_formateado,$var [,$var]) <?php     $num=126;     printf("decimal num=%d",$num);     printf("binario num=%b",$num);     printf("hexadecimal num=%x",$num);     printf("float num=%f",$num); printf("float num=%.2f",$num);     printf("ascii num=%c",$num); printf("cientifico num=%e",$num); ?> decimal num=126 binario num=1111110 hexadecimal num=7e float num=126.000000 float num=126.00 ascii num=~ cientifico num=1.260000e+2 116
  • 117. Funciones predefinidas ● Funciones de variables – empty ($variable) ● Devuelva si la variable existe o no / si está definida o no – unset ($variable) ● Destruye la variable ● Elimina un elemento de un array ( ¡¡¡no lo reordena!!!) <?php <?php if(!empty($nombreUsuario){ obtenerDatosUsuario($nombreUsuario); unset($cont); } unset($usuarios[$i]); else{ echo “Inserta el nombre de usuario”; ?> } ?> 117
  • 118. Funciones predefinidas ● Funciones de variables – is_tipo($variable) ● Devuelve si la variable es del tipo o no (true || false) ● is_bool() , is_int(), is_float(), is_string(), is_array() ... <?php if(is_int($num)){ printf(“El valor es : %u”,$num); } elseif(is_float($num)){ printf(“El valor es : %.2f”,$num); } else{ printf(“No ha insertado un numero”); } ?> [http://es2.php.net/manual/es/ref.var.php] 118
  • 119. Funciones predefinidas ● Funciones matemáticas – floor($float) : devuelve el siguiente integer mas pequeño – rand($int_min,$int_max) : genera un numero aleatorio – sqrt($float) : raiz cuadrada – pow($base,$exp) : potencia – sin($float) : seno – cos($float) : coseno – tan($float) : tangente – ... [http://es2.php.net/manual/es/ref.math.php] 119
  • 120. Funciones predefinidas ● Funciones matemáticas <?php $num1 = 18; $num2 = 5; $div=round($num1/$num2); //3 $resto=$num1 % num2; //3 $num1=9; $raiz = sqrt($num1); //3 $x = 0; $y = 0; $senoX = sin($x); //0 $cosenoY = cos($y); //1 $aleatorio = rand(10,500); //324 ?> 120
  • 121. Funciones predefinidas ● Funciones de cadenas (no codificación) – strlen ($cadena) : devuelve el número de caracteres – strpos ($pajar,$aguja) : Devuelve la posición de la primera ocurrencia de $aguja en $pajar – stripos ~ strpos (stripos : indiferente a mayus – minus) – strtolower ($cadena) : devuelve la cadena en minusculas – strtoupper ($cadena) : devuelve la cadena en mayusculas – trim ($cadena) : elimina espacios en blanco en principo y fin de cadena – str_replace ($cad,$sus,$orig) : sustituye todas las apariciones de $cad por $sus en $orig – explode ($separador,$cadena) : divide $cadena en trozos separados por $separador y devuelve un array con los trozos 121
  • 122. Funciones predefinidas ● Funciones de cadenas (no codificación) <?php <?php $cadena = "hola soy una cadena"; echo strlen($cadena); $cadena = "   tengo   espacios   "; 19 echo trim($cadena); tengo espacios $cadena = "hola soy una cádena"; echo strlen($cadena); $cad = "soy una cadena"; 20 str_replace("cadena","cadenita",$cad); hola soy una cadenita $cadena = "hola soy una cadena"; echo strpos($cadena,"soy"); print_r(explode(" ",$cadena)); 5 Array $cadena = "Hola Soy Una Cadena"; ( echo strtolower($cadena);     [0] => hola hola soy una cadena     [1] => soy     [2] => una echo strtoupper($cadena);     [3] => cadena HOLA SOY UNA CADENA ) ?> ?> 122
  • 123. Funciones predefinidas ● Funciones de cadenas (codificadas) – Operan sobre cadenas codificadas en UTF-8,ISO-8859 ... – Podemos especificar la codificación en las funciones – Podemos establecer una codificación por defecto ● mb_internal_encoding ("UTF-8"); ● mb_internal_encoding() : muestra la codificación interna <?php echo mb_internal_encoding (); //ISO-8859-1 echo mb_strlen ( "camión") ; //7 mb_internal_encoding ("UTF-8");  echo mb_internal_encoding (); //UTF-8 echo mb_strlen ( "camión") ; //6 ?> 123
  • 124. Funciones predefinidas ● Funciones de cadenas (codificadas) – mb_strlen ($cadena,[$cod]) : Número de caracteres – mb_strpos ($pajar,$aguja) : Posición de la primera ocurrencia de $aguja en $pajar – mb_stripos ~ mb_strpos (stripos : indiferente a mayus – minus) – mb_strtolower ($cadena) : devuelve la cadena en minúsculas – mb_strtoupper ($cadena) : devuelve la cadena en mayúsculas – mb_ereg_replace ($patron,$sus,$orig) : sustituye todas las apariciones de $patron por $sus en $orig – mb_split ($patron,$cadena) : divide $cadena en trozos separados por $patron y devuelve un array con los trozos 124
  • 125. Funciones predefinidas ● Funciones de cadenas (codificadas) <?php <?php mb_internal_encoding ("UTF-8"); mb_internal_encoding ("UTF-8"); $cadena = "Ahí está mi camión"; $cad = "soy una cadena"; echo mb_strlen($cadena); mb_ereg_replace("soy","era",$cad); 18 era una cadena $cadena = "Ahí está mi camión"; $cadena = "hola soy una cadena"; echo mb_strpos($cadena,"soy"); print_r(mb_split(" ",$cadena)); 5 Array $cadena = "Ahí Está Mi Camión"; ( echo mb_strtolower($cadena);     [0] => Ahí ahí está mi camión     [1] => está     [2] => mi echo mb_strtoupper($cadena);     [3] => camión AHí ESTá MI CAMIóN ) ?> ?> 125
  • 126. Funciones predefinidas ● Funciones de arrays – count ($array) : devuelve el numero de elementos del array – asort ($array) : ordena $array utilizando los valores menor-mayor – arsort ($array) : ordena $array utilizando los valores mayor-menor – ksort ($array) : ~ asort pero utilizando las claves – krsort ($array) : ~ arsort pero utilizando las claves – array_keys ($array) : devuelve un array con las claves – array_values ($array) : devuelve un array con los valores 126
  • 127. Funciones predefinidas ● Funciones de arrays – in_array ($aguga,$array) : devuelve true si aguja está en $array – array_search($aguja,$array) : Busca $aguja en $array y si lo encuentra devuelve su clave (si no, false) – implode ($separador,$array) : Devuelve una cadena con todos los elementos del array separados por el separador – list ($var1,...,$varN) : Crea variables a partir de un array 127
  • 128. Funciones predefinidas ● Funciones de arrays <?php – <?php $usuarios=array("mikel","ane", $usuarios=array( "eneko","manu"); "99999999"=>"mikel", echo count($usuarios); "34343434"=>"ane", 4 "12121212"=>"eneko", "76677667"=>"manu"); asort($usuarios); print_r($usuarios); echo count($usuarios); 4 $Array krsort($usuarios); ( print_r($usuarios);     [1] => ane     [2] => eneko Array     [3] => manu (     [0] => mikel     [99999999] => mikel )     [76677667] => manu     [34343434] => ane     [12121212] => eneko ) ?> ?> 128
  • 129. Funciones predefinidas ● Funciones de arrays – <?php $usuarios=array(“99999999"=>"mikel", "34343434"=>"ane",  "12121212"=>"eneko","76677667"=>"manu"); $dnis=array_keys($usuarios); print_r($dnis); Array (     [0] => 99999999     [1] => 34343434     [2] => 12121212     [3] => 76677667 ) $cad_dni = implode(“, “,$dnis); echo $cad_dni; 99999999, 34343434, 12121212, 76677667 ?> 129
  • 130. Funciones predefinidas ● Funciones de arrays <?php $usuarios=array("99999999"=>"mikel","34343434"=>"ane",  "12121212"=>"eneko","76677667"=>"manu"); $usuario = “eneko”; if(in_array($usuario,$usuarios)){ echo “El usuario $usuario está en la lista.”; } else{ echo “El usuario $usuario no está en la lista”; } if($pos=array_search($usuario,$usuarios)){ unset($usuarios[$pos]); } ?> 130
  • 131. Accediendo a DB : MySQL ● MySQL – Servidor de Bases de Datos – Almacenaje de datos en bruto – Cada BD es independiente – Las BD tienen tablas – Tablas tiene registros (filas + columnas) BD : blog Tabla : usuario Tabla : accesos id user pass id user acceso 1 mikel 12321 1 1 10/01/09 2 ainhoa 32343 2 1 05/03/09 131
  • 132. Accediendo a DB : MySQL ● MySQL : Gestionando mysql con phpmyadmin – Crear/eliminar/editar ... BD, tablas, registros, usuarios ... 132
  • 133. Accediendo a DB : MySQL ● MySQL : SLQ (Structured Query Language) ● Consultas : Obteniendo datos de tablas – Obtener todos los datos de una tabla (tabla usuario) SELECT * FROM usuario – Obtener una columna de una tabla SELECT nombre FROM usuario – Obtener mas de un campo de una tabla SELECT nombre,apellido,dni FROM usuario 133
  • 134. Accediendo a DB : MySQL ● MySQL : SLQ (Structured Query Language) ● Consultas : Obteniendo datos de tablas (II) – Condiciones SELECT * FROM usuario WHERE edad>18 – SELECT * FROM usuario WHERE nombre = “ane” – SELECT * FROM usuario WHERE nombre LIKE “%ana%” 134
  • 135. Accediendo a DB : MySQL ● MySQL : SLQ (Structured Query Language) ● Consultas : Insertando datos en tablas – INSERT INTO usuario(nombre,pass) VALUES (“mikel”,”123”) – INSERT INTO usuario (nombre) VALUES (“mikel”) – INSERT INTO usuario(id,pass) VALUES (“1”,”123”) 135
  • 136. Accediendo a DB : MySQL ● MySQL : SLQ (Structured Query Language) ● Consultas : Actualizando datos de tablas – UPDATE usuario SET pass=”1010” WHERE nombre =”ane” – UPDATE usuario SET pass=”0000” WHERE nombre LIKE “a%” – UPDATE usuario SET pass=”0000” AND nombre=”jon” WHERE id=”1” 136
  • 137. Accediendo a DB : MySQL ● MySQL : SLQ (Structured Query Language) ● Consultas : Eliminando datos de tablas – DELETE FROM usuario WHERE id=”2” – DELETE FROM usuario WHERE nombre LIKE “%a” – DELETE FROM usuario WHERE pass =”” OR pass=”0000” 137
  • 138. Accediendo a DB : MySQL ● Acceder al servidor de BD MySQL ● Funciones mysql: – http://es.php.net/manual/es/ref.mysql.php – Crear , eliminar, modificar, obtener ... – BD, tablas, usuarios, privilegios ... ● Tipo recurso ( referencia a recurso externo ) ● mysql_connect($hostname,$usuario,$password) – devuelve un identificador de enlace o false – $hostname ~ host[:puerto] 138
  • 139. Accediendo a DB : MySQL ● Crear / Abrir la conexión – mysql_connect ($hostname,$usuario,$password) – Si no hay problemas devuelve el enlace – El enlace se cerrara automáticamente al finalizar el script o mediante la función mysql_close($link) <?php $con = mysql_connect(“localhost”,”user”,”pass”)  or die(“No se pudo abrir la conexión:” . mysql_error()); if($con){ echo “Conexión exitosa”; } ?> 139
  • 140. Accediendo a DB : MySQL ● Cerrar la conexión – mysql_close ($link) <?php $con = mysql_connect(“localhost”,”user”,”pass”)  or die(“No se pudo abrir la conexión:” . mysql_error()); ... mysql_close($con); ?> 140
  • 141. Accediendo a DB : MySQL ● Seleccionar BD – mysql_select_db($dbname,[$link]); – Devuelve true o false <?php $con = mysql_connect(“localhost”,”user”,”pass”)  or die(“No se pudo abrir la conexión:” . mysql_error()); if (mysql_select_db(“usuarios”,$con)){ ... } else{ echo “no se pudo seleccionar la base de datos”); } mysql_close($con); ?> 141
  • 142. Accediendo a DB : MySQL ● Realizar consultas – mysql_db_query($link) – Crear, eliminar, modificar ... ● BD, tablas, permisos, registros ... – Valores retornados ● SELECT,SHOW,DESCRIBE,EXPLAIN : resource ● INSERT,UPDATE,DELETE,DROP ... : true o false 142
  • 143. Accediendo a DB : MySQL ● Consultas sin retorno de valor <?php $con = mysql_connect(“localhost”,”user”,”pass”); $SQL = “CREATE DATABASE prueba”; if( mysql_query($SQL)){ echo “BD creada con exito”;} $SQL = “CREATE TABLE prueba (user VARCHAR(10),pass VARCHAR(10))”; if(mysql_query($SQL)){ echo “Tabla creada con exito”;} $SQL= "INSERT INTO prueba(user,pass) VALUES('usuario1','pass1')"; if(mysql_query($SQL)){ echo “Se insertaron los datos con exito”;} $SQL =”DELETE FROM prueba WHERE user='usuario1'”; if(mysql_query($SQL)){ echo “Registro eliminado con exito”;} mysql_close($con); ?> 143
  • 144. Accediendo a DB : MySQL ● Consultas con retorno de valor – Valores en una variable tipo recurso – Funciones para tratar los valores retornados – mysql_fecth_assoc ($RS) ● $RS : El valor retornado por mysql_query ● Devuelve una matriz asociativa ● Claves = nombres de las columnas 144
  • 145. Accediendo a DB : MySQL ● Consultas con retorno de valor – mysql_fetch_assoc <?php $con = mysql_connect(“localhost”,”user”,”pass”); mysql_select_db("prueba",$con); $SQL = "SELECT * FROM prueba"; $RS=mysql_query($SQL); while($fila=mysql_fetch_assoc($RS)){ echo “Usuario : ”.$fila['user']; echo “Pass : ”.$fila['pass']; } ?> 145
  • 146. Accediendo a DB : MySQL ● Consultas con retorno de valor – mysql_fetch_row($RS) ● $RS : El valor retornado por mysql_query ● Devuelve una matriz numérica ● Claves = enteros empezando por 0 146
  • 147. Accediendo a DB : MySQL ● Consultas con retorno de valor – mysql_fetch_row <?php 0 = usuario1 $con = mysql_connect(“localhost”,”user”,”pass”); 1 = pass1 0 = usuario2 mysql_select_db("prueba",$con); 1 = pass2 ... $SQL = "SELECT * FROM prueba"; $RS=mysql_query($SQL); while($fila=mysql_fetch_row($RS)){ foreach($fila as $clave=>$valor){ echo “$clave = $valor”; } } ?> 147
  • 148. Accediendo a DB : MySQL ● Consultas con retorno de valor – mysql_fetch_array ($RS,[$tipo]) ● $RS : El valor retornado por mysql_query ● Devuelve una matriz asociativa, numérica o ambas ● Por defecto : ambas ● $tipo : constante que puede tener los siguientes valores – MYSQL_ASSOC – MYSQL_NUM – MYSQL_BOTH 148
  • 149. Accediendo a DB : MySQL ● Consultas con retorno de valor – mysql_fetch_array <?php 0 = usuario1 $con = mysql_connect(“localhost”,”user”,”pass”); name = usuario1 1 = pass1 mysql_select_db("prueba",$con); pass = pass1 0 = usuario2 $SQL = "SELECT * FROM prueba"; name = usuario2 1 = pass2 $RS=mysql_query($SQL); ... while($fila=mysql_fetch_array($RS)){ foreach($fila as $clave=>$valor){ echo “$clave = $valor”; } } ?> 149
  • 150. Accediendo a DB : MySQL ● Errores – mysql_error ($link) ● Devuelve el texto del mensaje de error de la última operación MySQL ● Si no ocurrió error : “” (cadena vacía) <?php $con = mysql_connect(“localhost”,”user”,”pass”); if(!mysql_select_db("pruebaaaa",$con)){ echo mysql_error(); } ?> Unknown database 'pruebaaaa' 150
  • 151. Cookies ● Pequeños ficheros que se escriben en el ordenador del cliente ● Contienen información que las páginas que las han escrito pueden recuperar y utilizar ● Se puede establecer el tiempo que el ordenador del usuario guardará el fichero ● Idioma,temas,ultimo acceso ... 151
  • 152. Cookies ● Creación de cookie – setcookie($nombre[,$valor][,$expire][,$path] [,$dominio][,$secure][,$httponly]) ● $nombre (string) : Nombre de la cookie ● $valor (string ) : Valor de la cookie ● $expire (int ) : Tiempo de caducidad (time()+60*60*24*30 : 30 dias) ● $path (string) : ruta en el servidor ● $dominio (string ) : dominio ● $secure (bool) : indica si solo será accesible mediante https ● $httponly (bool) : accesible solo mediante http 152
  • 153. Cookies ● Obtención de cookie – $_COOKIE[$nombreCookie] <?php //Establecer cookie $caducidad = time()*60*60*24*365; setcookie(“idioma”,$idiomaSeleccionado,$caducidad); ?> <?php //Obtener cookie $idiomaPreferido = $_COOKIE[“idioma”]; ?> 153
  • 154. Sesiones ● Mecanismo para preservar datos a lo largo de accesos posteriores ● Almacena información en el servidor accesible a través de diferentes scripts ● La información se guarda en variables de sesión 154
  • 155. Sesiones ● Iniciar sesión – session_start() : antes de cualquier etiqueta html ● Crear variable de sesión – $_SESSION ['nombre'] = $valor; ● Recuperar variable de sesión – $variable = $_SESSION ['nombre']; 155
  • 156. Sesiones <?php session_start(); if(usuarioValido($usuario)){ $_SESSION['valido']=true; } .... ?> <?php session_start(); if(!empty($_SESSION['valido'] and $_SESSION['valido']==true)){ ... } else{ header(“Location : login.php?error=true”); } ?> 156
  • 157. Sesiones ● Funciones – session_start : inicia la sesión – session_destroy : destruye los datos de sesión – session_unset : elimina todas las variables de sesion – session_cache_expire : Devuelve/establece la caducidad actual del caché [http://es2.php.net/manual/es/ref.session.php] 157
  • 158. Ficheros y directorios ● Ficheros – abrir fichero : fopen ($fichero,$modo) ● $fichero (string ) : ruta + nombre de fichero ● $modo (string ) : – a : Añadir datos al final del fichero. Si no existe, se crea – a+ : Añadir datos al final del fichero y leer datos. Si no existe, se crea. – r : Solo lectura – r+ : Lectura y escritura. Se añade al principio del fichero – w : Escritura. Todo el contenido será borrado. Si no existe, se crea. – w+ : Lectura y escritura. Todo el contenido será borrado. Si no existe se crea. 158
  • 159. Ficheros y directorios ● Ficheros – abrir fichero : fopen ($fichero,$modo) <?php $fichero = “files/salida.txt”; if (fopen($fichero,'a+')) {     echo (“El fichero se ha abierto con exito.”); } else{     echo (“Error : no se a podido abrir el fichero”); } ?> 159
  • 160. Ficheros y directorios ● Ficheros – Leer desde fichero : fgets($fichero,$longitud) – Lee una linea de $longitud - 1 bytes – feof($fichero) : verifica si el apuntador del fichero está al final del mismo <?php $fichero = fopen("datos.txt", "r"); if ($fichero) {     while (!feof($fichero)) {         $bufer = fgets($fichero);         echo $bufer;     }     fclose ($fichero); } ?> 160
  • 161. Ficheros y directorios ● Ficheros – Escribir en fichero : fwrite($fichero , $cadena [,$longitud] ) – Escribe $cadena – n : nueva linea <?php $fich = fopen("escrito","a+"); fwrite($fich,"hola soy una linean"); fwrite($fich,"hola soy otra linean"); fwrite($fich,"hola soy una:n linea"); ?> hola soy una linea hola soy otra linea hola soy una: linea 161
  • 162. Ficheros y directorios ● Ficheros – Cerrar fichero : fclose ($fichero) <?php $fichero = “files/salida.txt”; if (fopen($fichero,'a+')) {     echo (“El fichero se ha abierto con exito.”); } else{     echo (“Error : no se a podido abrir el fichero”); } if(fclose($fichero)){ echo “el fichero se ha cerrado correctamente”; } ?> [http://es2.php.net/manual/es/ref.filesystem.php] 162
  • 163. Ficheros y directorios ● Ficheros – Subir ficheros al servidor <html> ... <form action=”upload.php” enctype=”multipart/form-data”   method=”post> <input type=”file” name=”fich”/> <?php $dir=”public/files/”; copy($_FILES['fich']['tmp_name'],$dir.$_FILES['fich']['name']); [name] => fichero.pdf [type] => application/pdf [tmp_name] => tmp/php/phpJbTkgB [error] => 0 [size] => 450307 163 ?>
  • 164. Ficheros y directorios ● Directorios – Abrir directorio : opendir($ruta) ● Devuelve un recurso ($gestor) – Leer directorio : readdir($gestor) ● Devuelve el nombre del fichero <?php if($gestor=opendir(“images”)){ while(false!==($fich = readdir($gestor))){ echo “<img src='$fich'/>”; } } ?> [http://es2.php.net/manual/es/book.dir.php] 164
  • 165. Clases y objetos ● Definición de clases – Variables (atributos) y Funciones (métodos) – Las funciones acceden a los atributos – class nombreClase { ... } – $this : accedemos a los atributos y métodos de la clase desde “dentro” de la clase ● $this->name //accede al atributo $name ● $this->imprimir() //accede al método imprimir – Desde fuera de la clase: ● $obj = new MiObjeto(); ● MiObjeto->imprimir(); – Podemos crear tantos objetos (instancias) de la clase como queramos 165
  • 166. Clases y objetos ● <?php class usuario{ private $nombre; private $apellido; public function getNombre(){ return $this->nombre;} public funcion getApellido(){ return $this->apellido;} public function setNombre($nombre){$this->nombre=$nombre;} public function setApellido($ape){$this->apellido=$ape;} } $user = new Usuario(); $user->setNombre(“Jon”); $user->setApellido(“Brown”); $usuario2 = new Usuario(); $usaurio2->setNombre(“Ane”); echo “usuario :”.$usuario2->getNombre(); ?> 166