Introducción a PHP · ordenador solicitando la p´agina fichero.php. El servidor recibe el mensaje...

Post on 14-Mar-2020

8 views 0 download

Transcript of Introducción a PHP · ordenador solicitando la p´agina fichero.php. El servidor recibe el mensaje...

Introduccion a PHP

Luis Valencia Cabrera (lvalencia@us.es)

Research Group on Natural ComputingDepartamento de Ciencias de la Computacion e Inteligencia Artificial

Universidad de Sevilla

10-02-2020, Bases de Datos

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

Introduccion

Comunicacion cliente - servidorPHP (acronimo de “PHP: Hypertext Preprocessor”) es unlenguaje interpretado de alto nivel embebido en paginasHTML y ejecutado en el servidor.Su nombre es una broma, ya que la primera P de las siglashace referencia a PHP. Es un nombre recursivo.

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

Introduccion

Comunicacion entre el cliente y el servidor sin PHP:Escribimos en la barra del navegador la direccion y el archivo asolicitar.El navegador envıa el mensaje a traves de Internet a otro ordenador,por ejemplo http://www.cs.us.es/cursos/bd/Welcome.htmlsolicitando la pagina (archivo) Welcome.html.El servidor web (que puede ser el Apache, IIS, etc.), programa quese ejecuta en la maquina www.cs.us.es, recibe el mensaje y lee elarchivo solicitado desde el disco duro.El servidor web envıa el archivo solicitado por el navegador tal cualesta en el disco duro.El navegador muestra en pantalla el archivo que envio el servidorweb.

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

Introduccion

Comunicacion entre el cliente y el servidor con PHP:Escribimos en el navegador la direccion del archivo a solicitar.El navegador envıa el mensaje a traves de Internet a otroordenador solicitando la pagina fichero.php.El servidor recibe el mensaje y al ver que la extension es “php”solicita al interprete de PHP (otro programa que se ejecuta enel servidor web) que ejecute el archivo y devuelva la respuesta.El interprete PHP lee desde el disco el archivo fichero.php.El interprete PHP ejecuta los comandos contenidos en elarchivo (y eventualmente se comunica con un gestor de basede datos) (por ejemplo MySQL).

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

Introduccion

Comunicacion entre el cliente y el servidor con PHP:Tras ejecutar el programa contenido en el archivo, envıa surespuesta al servidor web.Este envıa la respuesta al cliente que la habıa solicitado.El navegador muestra en pantalla el archivo que envio elservidor web.En PHP la salida puede ser la pagina HTML de respuesta(esta viaja por internet y llega al cliente que la solicito), obien un archivo JSON, XML, etc.

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

Introduccion

Para agregar un programa PHP dentro de una pagina HTMLdebemos por un lado al crear el archivo definirlo con extensionphp (a diferencia de las paginas estaticas que tienen extensionhtml) y dentro del contenido de la pagina, encerrar elprograma entre los sımbolos<?php /* Mi programa PHP */ ?>

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

Introduccion

Inicia el servidor (programa Apache) en el panel de control deXAMPPCrea un directorio Ejemplos en C://xampp/htdocs/Guarda el fichero ej1.php (ver diapositiva siguiente) en eldirectorio C://xampp/htdocs/EjemplosPara ver la salida del programa, escribe en el navegadorlocalhost/Ejemplos/ej1.php

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

Un primer ejemplo

El comando de PHP para imprimir dentro de la pagina se llamaecho.<html><head></head><body><?php

echo "Hola Mundo";?></body></html>Podemos ver en el navegador cual es el codigo HTML que hagenerado el programa PHP.

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

Comentarios

Comentarios dentro de <? php y ?>

// Esto es un comentario en una lınea# Esto tambien es un comentario en una lınea/* Esto es un comentariode mas de una lınea */

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

Otro ejemplo

Las variables empiezan siempre con el sımbolo de dolar ($).PHP distingue entre mayusculas y minusculasPodemos concatenar cadenas de caracteres con el contenidode expresiones. El operador de concatenacion es el punto (.)La estructura if - else es igual que en JavaScript.

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

Otro ejemplo

$dia = date("d"); guarda en la variable $dia el valor deldıa del mes con dos dıgitos (con ceros iniciales).$dia = date("j"); guarda en la variable $dia el valor deldıa del mes sin ceros iniciales$mes = date("n"); guarda en la variable $mes el valor deldıa del mes una representacion numerica de un mes, sin cerosiniciales.year = date("Y"); guarda en la variable $year el anoactual con 4 dıgitos.ds=date("w"); guarda en la variable $ds una representacionnumerica del dıa de la semana (0 para domingo, 1 lunes...)Podemos encontrar mas formas de dar la fecha enhttp://php.net/manual/es/function.date.php

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

Prueba el siguiente fichero

<!DOCTYPE html><html><body>

<?php$color = "azul";echo "Mi coche es " . $color . "<br>";echo "Mi camisa es " . $COLOR . "<br>";echo "Mi cuaderno es " . $coLOR . "<br>";?>

</body></html>

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

Ejemplo

<?php$dia1=15;$dia2=30;echo "El valor de la primer variable es ";echo $dia1;echo "<br>";echo "El valor de la segunda variable es ";echo $dia2;

?>

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

Otro ejemplo

<?php$dia = date("d");if ($dia <= 15) {

echo "Sitio activo";} else {

echo "Sitio fuera de servicio";}?>

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

Otro ejemplo

<?php$dia = date("j");$mes = date("n");$year = date("Y");echo "Hoy es " . $dia . " del mes " .

$mes . " de " . $year?>

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

IntroduccionOtro ejemplo

<?php$num = rand(1, 100);echo $num;echo "<br>";if ($num <= 50) {

echo "El n&uacute;mero es menor o igual a 50.";} else {

echo "El n&uacute;mero es mayor a 50.";}

?>

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

Sobre el ejemplo

La funcion rand devuelve un valor aleatorio entre un rango dedos enteros:$num=rand(1,100);En la variable $num se almacena un valor entero que lacomputadora genera en forma aleatoria entre 1 y 100.Podemos encontrar mas informacion sobre rand enhttp://php.net/manual/es/function.rand.php

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

Funciones con variables locales

<?phpfunction prueba(){

$x = 5;echo "<p>La variable x dentro de la funci&oacute;n" .

"toma el valor: $x</p>";}prueba();

echo "<p>La variable x fuera de la funci&oacute;n" ."toma el valor : $x</p>";

?>

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

Funciones con variables globales

<?php$x = 5;$y = 10;function Prueba(){

global $x, $y;$y = $x + $y;

}Prueba();echo "<p> El valor obtenido es $y</p>";

?>

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

Algunos tipos de datosLa funcion var_dump() devuelve el tipo de dato y el valor de unavariable<?php

$x1 = "Hello world!";$x2 = 5985;$x3 = 10.365;$x4 = true;var_dump($x1);echo "<br>";var_dump($x2);echo "<br>";var_dump($x3);echo "<br>";var_dump($x4);

?>Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

Tipos de dato array

<?php$coches = array("Volvo", "BMW", "Toyota");echo "<br>";echo "<br>";echo "La posici&oacute;n 0 es $coches[0] <br>";echo "La posici&oacute;n 1 es $coches[1] <br>";echo "La posici&oacute;n 2 es $coches[2] <br>";

?>

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

Tipos de dato array

<?php$dia = date("j");$ds = date("w");$dias_cast = array(

"domingo", "lunes","martes", "mi&eacute;rcoles", "jueves","viernes", "s&aacute;bado"

);echo "Hoy es " . $dias_cast[$ds] . " " . $dia;

?>

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

Formularios HTML

Un formulario permite que el visitante al sitio cargue datos ysean enviados al servidor.HTML solo crea el formulario, la gestion de la informacion lahara el servidor, con lenguajes como PHP. La extension deeste fichero sera HTML, y hara una llamada a un fichero PHPenviandole los datos del usuario.Para crear un formulario debemos utilizar el elemento form,que tiene marca de comienzo y fin.<form propiedades > . . . </form>.Definimos dos propiedades (action y method):<form action="registrardatos.php" method= "post">

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

Formularios HTML

La propiedad action toma el valor del fichero que contiene elprograma que procesara los datos en el servidor. En este casoregistrardatos.php.La segunda propiedad a proporcionar es method. Estapropiedad puede almacenar dos valores: post o get.Normalmente un formulario se envıa mediante post (los datosse envıan en el cuerpo del formulario). Si se emplea get, losdatos se envıan en la cabecera de la peticion de la pagina.

• Utilizando el metodo get estamos limitados en lacantidad de datos a enviar, no ası con el metodo post.

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

Formularios HTML

Ahora veamos el cuadro de texto donde se escribe el nombre:Escriba su nombre:

<input type="text" name="nombre" size="20"><br>

El mensaje Escriba su nombre: es un texto fijo.El elemento <input> permite definir un cuadro de texto siasignamos a la propiedad type el valor text.El identificador nombre permitira a PHP recuperar lo quehaya escrito el usuario.size nos da el tamano del cuadro. En este caso 20 caracteres.No se limita la cantidad de caracteres a ingresar por parte delvisitante sino la cantidad de caracteres que se puedenvisualizar.

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

Formularios HTML

Seguidamente:<input type="submit" value="Enviar">Mediante el elemento <input> definimos un boton para elenvıo de datos al servidor.Para ello, debemos indicar type="submit", definiendolocomo un boton para el envıo de datos.La propiedad value almacena la etiqueta que aparece comotexto del boton.Finalmente cerramos el formulario: </form>.

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

Formulario HTML

<form action="registrardatos.php" method="post">Escriba su nombre:<input type="text" name="nombre" size="20"><br><input type="submit" value="Enviar">

</form>Al intentar enviar el nombre da error porque aun no hemos creadoregistrardatos.php.

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

Formulario HTML

El fichero registrardatos.php incluye el cuerpo:

<body>Hola <?php echo $_POST["nombre"]; ?> <br>Ahora conozco tu nombre.

</body>

Usamos $_POST["nombre"]; para recuperar el dato del usuarioidentificado con la etiqueta nombre.

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

PHP y MySQL

PHP 5 y posteriores se comunican con MySQL usando:MySQLiPDO (PHP Data Objects)

Nosotros usaremos el protocolo PDO.

Nota: existe una tercera opcion para conectar con MySQL, lalibrerıa de php mysql, pero se desaconseja su uso, entre otros, pormotivos de seguridad. Una excepcion a esto es si debemos usarversiones anteriores a PHP5, pues en las mismas no tenemosdisponibles las dos opciones sugeridas.

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

PHP y MySQL

El objetivo es tener una base de datos MySQL en un servidor, ypoder acceder a ella (para consultar y/o manipular datos) desdeotro ordenador mediante un navegador.

Para ello necesitamos conocer:• La base de datos a la que queremos hacer conexion,• un nombre de usuario con acceso a esa base de datos, y• su palabra clave (password).

Ademas necesitamos crear un formulario HTML que permitaal usuario (ajeno a MySQL) proporcionar los datos.PHP se encargara de enlazar MySQL con HTML.

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

PHP y MySQL

Para empezar, crearemos la base de datos prueba en MySQL eindicaremos que vamos a trabajar sobre ella.

CREATE DATABASE pruebaUSE prueba

A continuacion crearemos una tabla contactos con dos atributos:nombre y apellidos

CREATE TABLE contactos (nombre varchar(20),apellidos varchar(20),PRIMARY KEY (nombre, apellidos)

);

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

PHP y MySQL

Por otra parte necesitamos una pagina HTML con un formulariopara recoger los datos<form action="inserta1.php" method="post">

Escriba su nombre:<input type="text" name="nombre" size="20"><br>Escriba sus apellidos:<input type="text" name="apellidos" size="20"><br><input type="submit" value="Enviar">

</form>

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

PHP y MySQL

En enlace entre PHP y MySQL lo hace el fichero inserta1.php.Creamos un fichero con ese nombre y recuperamos la informacionintroducida por el usuario mediante las etiquetas nombre yapellidos.

$nom = $_POST['nombre'];$ape = $_POST['apellidos'];

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

PHP y MySQL

Creamos tres variables y guardamos en ella la informacion de labase de datos, del usuario y de la contrasena de acceso a Mysql:

$db = 'mysql:host=localhost;dbname=prueba;charset=utf8';$user = 'root';$pass = '';

A continuacion, creamos la conexion mediante el protocolo PDO

$conn = new PDO($db,$user,$pass);

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

PHP y MySQL

A continuacion, escribimos la sentencia MySQL que queremosejecutar y la guardamos en la variable $sql, por ejemplo

$sql = "INSERT INTO contactos VALUES (:n,:a)";

Como todavıa no conocemos los valores que debemos insertar(seran proporcionados por el usuario), escribimos marcadores deparametros, en este caso :n y :a. La sentencia SQL puedecontener cero o mas marcadores de parametros por los cuales losvalores reales seran sustituidos cuando la sentencia sea ejecutada.

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

PHP y MySQL

Lo siguiente es enlazar la consulta que hemos creado con laconexion a la base de datos. Para ello creamos una variable$consulta y usamos la funcion prepare. La sintaxis es lasiguiente

$consulta = $conn->prepare($sql);

Puedes encontrar mas informacion sobre la funcion prepare enhttp://php.net/manual/es/pdo.prepare.php

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

PHP y MySQL

Para terminar solo queda enlazar los marcadores :n y :a con losdatos proporcionados por el usuario, que habremos guardado en lasvariables $nom y $ape, validando su tipo:

$consulta->bindParam(':n',$nom,PDO::PARAM_STR);$consulta->bindParam(':a',$ape,PDO::PARAM_STR);

Finalmente, ejecutamos la consulta

$consulta->execute();

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

PHP y MySQL

Es muy importante cerrar la conexion cuando se ha realizado laconsulta. Esto se puede hacer con

$conn = null;

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

PHP y MySQL

El fichero inserta1.php queda por tanto:<?php

$nom = $_POST['nombre'];$ape = $_POST['apellidos'];$db = 'mysql:host=localhost;dbname=prueba;charset=utf8';$user = 'root';$pass = '';

$conn = new PDO($db,$user,$pass);$sql = "INSERT INTO contactos VALUES (:n,:a)";$consulta = $conn->prepare($sql);$consulta->bindParam(':n',$nom,PDO::PARAM_STR);$consulta->bindParam(':a',$ape,PDO::PARAM_STR);$consulta->execute();

$conn = null;echo "<strong> Dato insertado</strong>&nbsp;";

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

Consultas

Ademas de insertar datos, tambien podemos consultar la basede datos.En general, podemos hacer cualquier operacion demodificacion de la base de datos cambiando la sentencia SQLque enviamos a traves de PHP.Aunque no lo vemos en la asignatura, insistir en los protocolosde seguridad asociados al uso de PHP.

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

Consultas

<form action="inserta1.php" method="post">Escriba su nombre:<input type="text" name="nombre" size="20"><br>Escriba sus apellidos:<input type="text" name="apellidos" size="20"><br><input type="submit" value="Enviar datos">

</form>

<form action="consulta1.php" method="post"><input type="submit"

value="Consultar la Base de Datos"></form>

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

Consultas

<?php$db = 'mysql:host=localhost;dbname=prueba;charset=utf8';$user = 'root';$pass = '';

$conn = new PDO($db,$user,$pass);$sql = "SELECT * FROM contactos";foreach ($conn->query($sql) as $fila) {

echo "<strong>",$fila['nombre'],"</strong>&nbsp;";echo "<em>",$fila['apellidos'],"</em><br>";

}

$conn = null;echo "<br><strong>Consulta realizada</strong>&nbsp;";

?>

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP

Para saber mas

http://php.net/manual/es/index.phphttp://www.desarrolloweb.com/manuales/12/http://www.w3schools.com/php/http://www.phpya.com.ar/

Nota: estos son solamente algunos recursos utiles, pero seproporcionara mucho mas material a traves del sitio web de laasignatura. Ademas, otros temas introduciran conceptosadicionales, como el uso de los principios de AJAX, que cambiarala forma en que se envıan las peticiones o se plasman los resultadosdevueltos por PHP en las paginas llamantes.

Luis Valencia Cabrera (lvalencia@us.es) Bases de DatosIntroduccion a PHP