4.Programación con PHP y MySQL

55
PHP Ramiro Estigarribia Canese

Transcript of 4.Programación con PHP y MySQL

PHP

Ramiro Estigarribia Canese

¿Qué es PHP?PHP es un lenguaje de programación diseñado para el desarrollo web de contenido dinámico.

¿Cómo funciona?➔ Cuando el cliente hace una petición, el servidor ejecuta

el intérprete PHP. ➔ Este compila el código fuente, que genera el sitio web. ➔ El resultado es enviado al navegador del cliente.

Características.1. Es un multiplataforma y gratis. (Windows, Linux, Mac.)2. El código PHP es invisible al navegador.3. Capacidad de conexión con bases de datos.4. Capacidad de expandir su potencial con plugins.5. Posee una amplia penetración en internet.

Market Share: Sitios en Internet

http://w3techs.com/technologies/overview/programming_language/all

Market Share en InternetLenguajes para cliente

http://w3techs.com/technologies/overview/client_side_language/all

EvoluciónLa última versión es 5.7, que presenta mejoras en el entorno orientado a objetos.Compite en aplicaciones empresariales con las plataformas J2EE y .NET.

➔ Mejor soporte para MySQL.➔ Mejor soporte a XML.➔ Soporte nativo para SQLite.➔ Iteradores de datos.➔ Manejo de excepciones.➔ Mejoras con la implementación con Oracle.

Instalación en WindowsLa forma más común es utilizar “combos”:Apache (servidor web), MySQL (base de datos) y PHP.

Facilitan el trabajo para instalar un servidor de desarrollo.

http://www.wampserver.comhttp://wtriple.com/wtnmp/http://www.easyphp.org/

Instalación en LinuxEn Centos/RedHat/Fedora :● yum install httpd mysql-server php-mysql php-

commonEn Ubuntu/Debian/Mint :● sudo apt-get install tasksel

(el combo completo)apt-get install phpmyadmin

● sudo apt-get install php (solo el compilador)

¿Cómo se prueba la instalación?➔ Después que tengamos instalado nuestro

servidor local tenemos que probarlo, para hacer esto ingresamos http://localhost en nuestro navegador.

➔ Si todo esta instalado debidamente entonces debemos ver un mensaje diciendo que funciona.

➔ La carpeta /var/www/html, es por defecto la carpeta principal. Todo lo que esté en esta carpeta es accesible desde el navegador web a través del servidor web.

Activar modo debugdisplay_errors = on1. Ingresar a la terminal: LXTerminal2. Ejecutar: sudo subl /etc/php5/apache2/php.ini3. Cambiar la opción display_erros = off, y reemplazar por display_errors=on.(Control G, y escribir 469, para llegar al lugar exacto.)

3. Reiniciar el servicio: apachectl restart

Estructura Básica <!DOCTYPE html> <head> <meta charset="UTF-8" /> <title>Ejemplo PHP</title> </head> <body> <?php print 'Hola mundo'; ?> </body></html>

➔ Todo código va entre: <?php y ?>

➔ La líneas que empiezan con // son comentarios.

➔ La función print imprime texto en la pantalla.

➔ Al igual que Java, toda instrucción debe terminar con ;

Variables➔ Comienzan con el signo $.➔ No hace falta declarar, o especificar el tipo de dato.

<?php$dia = 24; //variable de tipo integer.$sueldo = 758.43; //variable de tipo double.$nombre = ‘juan’; //variable de tipo string. print "variable entera $dia";print "<br>";print "Variable double: $sueldo";print "<br>";print "Variable string: $nombre";?>

Estructura condicional (if)Cuando se pretende que el programa tome un camino concreto, se utiliza: if y else.

La estructura es la siguiente: if (Condición) { Instrucción 1;}else{ Instrucción 2;}

Estructura condicional (if)Ejemplo: Valor Aleatorio.

<?php$valor=rand(1,10);//rand permite sortear un númeroprint "El valor sorteado es $valor<br>";if ($valor<5){ echo "Es menor o igual a 5";}else{ echo "Es mayor a 5";} ?>

Estructura while ➔ Es similar a otros lenguajes (Java, C++, etc.)➔ Ejecuta un bloque de programa mientras se cumpla

una cierta condición.➔ Cuando deja de cumplirse, sale del ciclo y continúa

ejecutándose el resto del programa.

while(condición){ instrucciones;}

Mostrar Números<?php$valor=rand(1,100);//rand permite sortear un número$inicio=1;while($inicio<=$valor){ print $inicio; print "<br>"; $inicio++;}?>

Titulos y tamaños <?PHP $numero=1; while ($numero<=6) { print "<h$numero> Titulo $numero </h$numero>"; $numero++; } ?>

Tabla: 6 filas y 2 columnas<?PHP $numero=1;print "<table border=1>"; while ($numero<=6) { print "<tr><td>A</td><td>B</td></tr>"; $numero++; }print "</table>"; ?>

Ciclo For (Desde)Se diferencia de while, en que se debe incluir, una variable, la cual se incrementa o decrementa en forma automática.

for ($variable=Inicio; Condición; Incremento) { Intrucción_1; : Intrucción_N; }

Mostrar números del 1 al 12<?phpfor($numero=1;$numero<=12;$numero++){ print $numero; print "<br>";}?>

Números al cuadrado<?PHP print "<table Border=1><tr> <th>Numero</th><th>Cuadrado</th></tr>"; for ($i=1; $i<=10; $i++) { $cuadrado= $i * $i; print"<tr>"; print"<td>$i</td>"; print"<td>$cuadrado</td>"; print"</tr>"; } print "</table>"; ?>

Formularios➔ Permite cargar datos al servidor.➔ Es el medio ideal para registrar datos, solicitar

productos, sacar turnos etc.➔ HTML solo tiene el objetivo de crear el formulario.

Se requiere de dos páginas, una que implementa el formulario HTML y otra que procesa los datos.

Para acceder al dato se cuenta con $_REQUEST, indicando el nombre de la variable.

Variable nombreArchivo uno.html:

Archivo dos.php:

<form action=dos.php> Ingrese su nombre: <input type=text name=nombre><br> <input type=submit value=confirmar> </form>

<?php print "El nombre ingresado es:"; print $_REQUEST['nombre']; ?>

Tabla de Multiplicar<form action=result.php><label>Inserte un numero</label><input type=number name=num> <input type=submit></form>

<?php$num = $_REQUEST["num"];$x = 1; //inicializadordo { $resultado = $x * $num; print "$resultado <br>"; $x++; //incrementación} while ($x <= 10);?>

Mayor de edad<form action=edad.php>Ingrese el nombre:<input type=text name=nombre><br>Ingrese la edad:<input type=number name=edad><br><input type=submit></form>

<?php print $_REQUEST['nombre']; if ($_REQUEST['edad']>=18) { print " Es mayor de edad"; } else { print " No es mayor de edad"; }?>

<form action=calcular.php>Ingrese valor uno:<input type=number name=valor1><br>Ingrese valor dos:<input type=number name=valor2><br><input type=radio name=operador value=suma>sumar<br><input type=radio name=operador value=resta>restar<br><input type=submit value=Calcular></form>

Control Radio (parte 1)

Control Radio (parte 2)<?php if ($_REQUEST['operador']=='suma') { $suma=$_REQUEST['valor1'] + $_REQUEST['valor2']; print "La suma es: $suma"; } if ($_REQUEST['operador']=='resta') { $resta=$_REQUEST['valor1'] - $_REQUEST['valor2']; print "La resta es: $resta"; } ?>

<Select> (parte 1)<form action=dos.php>Ingrese su nombre:<input type=text name=nombre><br>Seleccione en que rango se ubica su salario:<select name=salario> <option value=1>1-1000</option> <option value=2>1001-3000</option> <option value=3>3000</option> </select><br><input type=submit></form>

<Select> (parte 2)<?php print $_REQUEST['nombre']; if ($_REQUEST['salario']==3) { print " Debe pagar impuestos."; } else { print " No debe pagar impuestos."; }?>

VectoresSe utilizan directamente, sin declarar:$nombre[0]=’Juan’;$nombre[1]=’Pedro’;

Si ahora hacemos: $nombre[2]=Luis;El vector tendrá 3 datos.

También podemos obviar el subíndice:$nombre[]=’Juan’;$nombre[]=’Pedro’;$nombre[]=Luis;

Automáticamente se numera: 0,1,2....

Ejemplo con un Vector<?php $nombre[0]=’Juan’;$nombre[1]=’Pedro’;$nombre[2]=’Luis’;for($i=0;$i<count($nombres);$i++) { print $nombres[$i]; print "<br>"; } ?>

Arreglo Asociativo➔ Asigna nombres a cada posición o dato del arreglo. ➔ Es una manera más humana de acceder a los elementos.➔ Esta vez los datos tendrán la forma de $llave => $valor.

<?php$persona = array('nombre'=>'Juan', 'apellido'=>'valdez');?>Para acceder a un dato:

print $persona['apellido'];

Recorrer ArreglosExisten varias maneras.La mejor y más sencilla es utilizar el bucle foreach().

<?php$colores = array('rojo', 'verde', 'azul');foreach( $colores as $color) { print 'Color actual '. $color ;}?>

Funciones para Arreglos➔ sort(): Sirve para ordenar un arreglo

Recibe dos parámetros: el arreglo y el tipo de algoritmo.(SORT_NUMERIC, SORT_STRING, SORT_REGULAR, estos son los mas utilizados).

➔ print_r(): Imprime todos los elementos del arreglo.➔ in_array(): Busca un valor(primer parámetro) en un arreglo

(segundo parámetro) y devuelve True si lo consigue o False si no.

➔ array_search(): Busca un valor (primer parámetro) en un arreglo (segundo parámetro) y devuelve la posición si lo consigue.

Subir 1 Archivo.<form enctype=multipart/form-data action=subir.php>Archivo: <input name=archivo type=file> <input type=submit> </form >

<?phpprint "Nombre:";print $_FILES['archivo']['name'];print "<br>Tipo:";print $_FILES['archivo']['type'];print "<br>Tamano:"; print $_FILES['archivo']['size'];print "<br>Ruta:";print $_FILES['archivo']['tmp_name'];?>

Sessions ➔ Permiten que las páginas sean tratadas como un grupo,

ya que podemos compartir variables en diferentes páginas. ➔ Para crear una Session se utiliza la función session_start().➔ Se almacenan en el disco duro del usuario.

<?phpsession_start();$_SESSION['nombre'] = 'Juan';$_SESSION['apellido'] = 'Perez';?>

<?phpsession_start();if (isset($_SESSION['nombre'])) {print $_SESSION['nombre']; } else {print 'No existe la variable';}?>

Cookies➔ Permiten guardar configuración del usuario.➔ Se almacenan en el disco duro del usuario.➔ Pueden permanecer un gran tiempo almacenadas,

incluso hasta después que dejas el sitio. ➔ Tienen un tamaño limitado de espacio, por lo cual solo

sirven para datos específicos.Crear una cookie:setcookie('nombreUsuario', 'Pedro', time() + 4800);Leer una cookie:if (isset($_COOKIE['nombreUsuario'])) print 'Valor de la Cookie '. $_COOKIE['nombreUsuario'];else print 'No hay Cookies';

Redireccionar a otra página<?phpheader("Location: http://[direccion]");?>Para probar implementaremos un formulario que solicite el ingreso por teclado de una dirección de internet. La segunda página redireccionará al sitio web cargado en el formulario.

Funciones de Fecha.Las funciones de PHP en general están pensadas para ser usadas rápidamente, sin muchas complicaciones. print date("d-m-Y H:i");Resultado: 27-05-2014 19:30print date("d-m-Y");Resultado: 27-05-2014print date("H:i:s");Resultado: 19:30:15Más funciones: http://php.net/manual/es/ref.datetime.php

Funciones de Fecha.<?php$dias = array("domingo","lunes","martes","miercoles","jueves","viernes","sabado");print "Hoy es ".$dias[date("w")]."<br>";print "Today is " . date("Y.m.d") . "<br>";print "Today is " . date("Y-m-d") . "<br>";print "Today is " . date("l");?>

Base de datosUno de los empleos principales de PHP es el acceso a una base de datos. Las operaciones se hacen empleando el lenguaje SQL.PHP implementa distintas funciones según la base de datos a emplear. Existen funciones para trabajar con:➢ MySQL➢ Microsoft SQL Server➢ Oracle➢ PostgreSQL➢ SYBASE, etc.

¿Qué es PhpMyAdmin?Es una herramienta escrita en PHP con la intención de manejar la administración de MySQL a través de páginas web, utilizando Internet.

Puede crear y eliminar Bases de Datos, crear, eliminar y alterar tablas; borrar, editar y añadir campos, ejecutar cualquier sentencia SQL, administrar claves en campos, administrar privilegios, exportar datos en varios formatos.

Se encuentra disponible bajo la licencia GPL.

Inicio de PhpMyAdmin

Creación de Base de Datos1. Ingresar en la opción Bases de Datos.2. Escribir el nombre, y presionar el botón Crear.

Creación de Tablas1. Ingresar en la Base de Datos creada. (Columbia)2. Escribir el nombre, el número de columnas y presionar el botón Continuar.

Insertar datosIngresar en la tabla Alumnos y presionar el botón Insertar.

5320290Juan Lopez1994-01-04

2333555Ana Gaona1994-01-06

2100555Carol Perez1992-01-06

Insertar los siguientes Alumnos:

Listado (selección de registros)<?php$db = new mysqli('localhost', 'root', '1', 'Columbia');$sql = "select * from Alumnos";

$resultado = $db->query($sql);while($fila = $resultado->fetch_assoc()){ // $fila es un arreglo asociativo con los campos del select print $fila['Documento']; print "<hr>";}?>

Insert Alta de registros. (parte 1)

<form action=insertar.php><label>Documento:</label><input type=number name=Documento><br><label>Nombre:</label><input type=text name=Nombre><br><label>Nacimiento:</label><input type=date name=Nacimiento><br><input type=submit></form>

Es necesario un formulario para cargar datos, y otro para procesar.

Insert Alta de registros. (parte 2)

<?php$db = new mysqli('localhost', 'root', '1', 'Columbia');$sql = "insert into Alumnos values('$_REQUEST[Documento]','$_REQUEST[Nombre]', '$_REQUEST[Nacimiento]')";

if(! $db->query($sql)){ die("Ocurrio un error ejecutando: $db->error");} print "Filas Insertadas: $db->affected_rows";?>

UpdateModificar Registros.

<?php$db = new mysqli('localhost', 'root', '1', 'Columbia');$sql = "update Alumnos set Nombre = 'Pedro'";if(! $db->query($sql) ){ die("Ocurrio un error ejecutando: $db->error");} print 'Filas Modificadas: '.$db->affected_rows;?>

En este ejemplo, vamos modificar los nombres, sin usar un formulario.

DeleteEliminar Registros.

<?php$db = new mysqli('localhost', 'root', '1', 'Columbia');$sql = "delete from Alumnos";if(! $db->query($sql) ){ die("Ocurrio un error ejecutando: $db->error");} print 'Filas Eliminadas: '.$db->affected_rows;?>

En este ejemplo, vamos eliminar todos los datos.

Include y Require.➔ ¿Cómo haríamos para crear un sitio web que contenga

100 páginas con conexión a una base de datos? ➔ Sería tedioso repetir un código 100 veces. ➔ Para esto tenemos las funciones include y require.require "conexion.php"; $sql = "UPDATE Alumnos SET Nombre = 'Pedro'";if(! $db->query($sql) ) die("Ocurrio un error ejecutando: $db->error");print 'Filas Modificadas: '.$db->affected_rows;

➔ Include intenta cargar el archivo pero si no logra, continua la ejecución.

➔ En cambio Require corta el programa y muestra el error.

Automatizar creación de ABM http://www.phpscaffold.com/➔ Permite crear los formularios y listados para trabajar

con bases de datos.➔ Evita el trabajo de escribir muchas líneas de código.➔ Es necesario Exportar la tabla con PhpMyAdmin, y

copiar el resultado.➔ Finalmente se pueden personalizar los resultados.

Clases y Objetos<?php class Carro { var $color;var $numero_puertas;var $marca;var $gasolina = 0;

function llenarTanque($gasolina_nueva){$this->gasolina = $this->gasolina + $gasolina_nueva;}function acelerar(){ if ($this->gasolina > 0){ $this->gasolina = $this->gasolina - 1; return 'Gasolina restante: '.$this->gasolina;} } }

Se utilizan de manera similar a otros lenguajes.

Facilitan la comprensión y el mantenimiento.

Instanciar una clase.

$carro = new Carro(); // Instanciamos la clase Carro$carro->color = 'Rojo'; // Llenamos las propiedades$carro->marca = 'Honda';$carro->numero_puertas = 4;$carro->llenarTanque(10); // utilizamos los metodos$carro->acelerar();$carro->acelerar();$carro->acelerar(); ?>

➔ Asignamos el color rojo y la marca Honda.

➔ Definimos el número de puertas, y cargamos 10 litros.

➔ Finalmente aceleramos.