Upload
others
View
12
Download
0
Embed Size (px)
Citation preview
Introduccion a PHP
Luis Valencia Cabrera ([email protected])
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 ([email protected]) 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 ([email protected]) 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 ([email protected]) 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 ([email protected]) 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 ([email protected]) 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 ([email protected]) 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 ([email protected]) 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 ([email protected]) 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 ([email protected]) 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 ([email protected]) 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 ([email protected]) 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 ([email protected]) 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 ([email protected]) 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 ([email protected]) 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 ([email protected]) Bases de DatosIntroduccion a PHP
IntroduccionOtro ejemplo
<?php$num = rand(1, 100);echo $num;echo "<br>";if ($num <= 50) {
echo "El número es menor o igual a 50.";} else {
echo "El número es mayor a 50.";}
?>
Luis Valencia Cabrera ([email protected]) 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 ([email protected]) Bases de DatosIntroduccion a PHP
Funciones con variables locales
<?phpfunction prueba(){
$x = 5;echo "<p>La variable x dentro de la función" .
"toma el valor: $x</p>";}prueba();
echo "<p>La variable x fuera de la función" ."toma el valor : $x</p>";
?>
Luis Valencia Cabrera ([email protected]) 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 ([email protected]) 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 ([email protected]) Bases de DatosIntroduccion a PHP
Tipos de dato array
<?php$coches = array("Volvo", "BMW", "Toyota");echo "<br>";echo "<br>";echo "La posición 0 es $coches[0] <br>";echo "La posición 1 es $coches[1] <br>";echo "La posición 2 es $coches[2] <br>";
?>
Luis Valencia Cabrera ([email protected]) Bases de DatosIntroduccion a PHP
Tipos de dato array
<?php$dia = date("j");$ds = date("w");$dias_cast = array(
"domingo", "lunes","martes", "miércoles", "jueves","viernes", "sábado"
);echo "Hoy es " . $dias_cast[$ds] . " " . $dia;
?>
Luis Valencia Cabrera ([email protected]) 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 ([email protected]) 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 ([email protected]) 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 ([email protected]) 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 ([email protected]) 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 ([email protected]) 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 ([email protected]) 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 ([email protected]) 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 ([email protected]) 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 ([email protected]) 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 ([email protected]) 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 ([email protected]) 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 ([email protected]) 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 ([email protected]) 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 ([email protected]) 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 ([email protected]) 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 ([email protected]) 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> ";
Luis Valencia Cabrera ([email protected]) 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 ([email protected]) 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 ([email protected]) 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> ";echo "<em>",$fila['apellidos'],"</em><br>";
}
$conn = null;echo "<br><strong>Consulta realizada</strong> ";
?>
Luis Valencia Cabrera ([email protected]) 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 ([email protected]) Bases de DatosIntroduccion a PHP