Desarrollo de sitios web con PHP y MySQL

Download Report

Transcript Desarrollo de sitios web con PHP y MySQL

Implantación de Sistemas
Curso PHP y MySQL
U
N
E
F
A
Hungria Berbesi
INSTALACIÓN DE WAMPSERVER


Wamp Server, antes conocido comoWAMP, es un completo
paquete al estilo ’apachefriends’ que te permite instalar y
configurar fácilmente en tu sistema lo último del servidor Web
Apache, el lenguaje de programación PHP y el servidor de base
de datos MySQL.
Las versiones que instala de esta aplicaciones son las siguientes:
Apache 2.2.6, PHP5, MySQL database, PHPmyadmin y
SQLitemanager.
Pero Wamp Server no es simplemente un paquete de programas,
esta aplicación instala una interfaz residente en la barra de
tareas que permite iniciar, supervisar y detener los distintos
servicios.
INSTALACIÓN DE WAMPSERVER

Instalación y configuración de wampserver

Pasos:



Descargar
Instalar
Probar
INSTALACIÓN DE WAMPSERVER

Una de las ventajas de usar Wamp Server es que la
instalación modificará los archivos de configuración
(*.conf) con la ruta donde finalmente se ubicará el
programa. También crea un directorio denominado
’www’ que será la raíz para tus documentos.
Un icono ebarra de tareas nos indicará al instante el
estado de los diferentes serviciosn la.
INTRODUCCIÓN A PHP

Lenguajes de script



PHP es un lenguaje de script del lado del servidor. Otros
lenguajes similares son ASP, JSP o ColdFusion
Los scripts PHP están incrustados en los documentos HTML y el
servidor los interpreta y ejecuta antes de servir las páginas al
cliente
El cliente no ve el código PHP sino los resultados que produce
PHP
 Es un lenguaje de
programación
interpretado,
diseñado
originalmente para
la creación de
páginas web
dinámicas.

MySQL
 Es un sistema de
gestión de bases de
datos relacional,
multihilo y
multiusuario.
 MySQL es utilizado
en aplicaciones
web, como

INTRODUCCIÓN A PHP

¿Cómo funciona PHP? (1)
Cliente
(navegador)
Servidor web
Página
HTML
<P>Hola, Ana</P>
internet
Página
HTML
Apache
 Es un servidor web HTTP de código
abierto, para plataformas Unix, Microsoft
Windows, Macintosh y otras que
implementen el protocolo.
 Apache es usado principalmente para
enviar páginas web estáticas y
dinámicas en la World Wide Web.

INTRODUCCIÓN A PHP

¿Cómo funciona PHP? (2)
Cliente
(navegador)
Servidor web
Página
PHP
Página
HTML
Intérprete
PHP
<?PHP
$nombre = "Ana";
printf ("<P>Hola,
$nombre</P>");
?>
<P>Hola, Ana</P>
internet
Página
HTML
INTRODUCCIÓN A PHP

Breve historia de PHP





Creado por Rasmus Lerdorf para uso personal en 1994
PHP = PHP: Hypertext Preprocessor
Versión actual: PHP 5
Es un módulo que se añade al servidor web y fue concebido
inicialmente para Apache
¿Por qué PHP?


Por sus ventajas: es potente, fácil de aprender, de libre
distribución, permite el acceso a bases de datos y otras
funcionalidades orientadas a la red
Dispone de abundante soporte en la Web
INTRODUCCIÓN A PHP

Requisitos




Apache es un servidor Web
cuya misión es la de recibir y
responder peticiones de páginas
Webs
Servidor web Apache (www.apache.org)
con el módulo PHP (www.php.net)
y la base de datos MySQL (www.mysql.com) si se desea crear
páginas dinámicas
Otras utilidades



Herramientas para la gestión de MySQL, como PHPMyAdmin
(www.phpmyadmin.net)
Editores de PHP, como DevPHP (www.sourceforge.net), Eclipse
(www.eclipse.org) o Aptana Studio (www.aptana.com)
Manuales de PHP y MySQL
ENTORNOS DE DESARROLLO PARA
PHP

¿Cómo desarrollar un proyecto en PHP?
◦
◦
◦
Los ficheros PHP son ficheros de texto y se pueden crear con
cualquier editor de texto, como el WordPad de Windows
Es mucho más conveniente utilizar entornos de desarrollo que
permiten editar el código más cómodamente, y además
proporcionan funciones como la detección y corrección de
errores, visualización de las páginas en el navegador, ayuda
sensible al contexto y gestión de todos los recursos asociados al
proyecto
Algunos entornos de desarrollo:




Dev-PHP
Eclipse
Aptana Studio
Dreamweaver
LENGUAJE PHP BÁSICO
1.
2.
3.
4.
5.
6.
7.
Sintaxis básica
Tipos de datos
Variables
Constantes
Expresiones y operadores
Estructuras de control
Arreglos
SINTAXIS BÁSICA


PHP es sensible a las mayúsculas
¿Cómo se incrusta en la página web?
<?PHP
recomendado, siempre disponible
?>


Las instrucciones se separan con un ; como en C. La marca final
?> implica un ;
Comentarios: como en C, /* … */ (varias líneas ) y // (una línea)
/* Comentario de
varias líneas */
printf “hola”; // Comentario de una línea
SINTAXIS BÁSICA

Para imprimir: echo y printf
echo: muestra una o más cadenas
echo cadena1 [, cadena2…];
echo “Hola mundo”;
echo “Hola “, “mundo”;
printf: muestra una cadena
printff cadena;
printf “Hola mundo”;
printf “Hola “ . “mundo”;
SINTAXIS BÁSICA

Ejemplo:
<HTML>
<HEAD>
<TITLE>Mi primer programa en PHP</TITLE>
</HEAD>
<BODY>
<?PHP
printf (“Hola mundo”);
?>
</BODY>
</HTML>
SINTAXIS BÁSICA


Uso de \n para generar código HTML legible
a) Sin \n
Código PHP
printf (“Párrafo 1”);
printf (“Párrafo 2”);
Código HTML
<P>Párrafo 1</P><P>Párrafo 2</P>
Salida
Párrafo 1 Párrafo 2
SINTAXIS BÁSICA


Uso de \n para generar código HTML legible
b) Con \n
Código PHP
printf (“Párrafo 1\n”);
printf (“Párrafo 2\n”);
Código HTML
<P>Párrafo 1</P>
<P>Párrafo 2</P>
Salida
Párrafo 1
Párrafo 2
TIPOS DE DATOS

PHP soporta 8 tipos de datos primitivos:





Tipos escalares: boolean, integer, double, string
Tipos compuestos: array, object
Tipos especiales: resource, NULL
El tipo de una variable no se suele especificar. Se decide en tiempo
de ejecución en función del contexto y puede variar
Funciones de interés:



La función gettype() devuelve el tipo de una variable
Las funciones is_type comprueban si una variable es de un tipo
dado:
is_array(), is_bool(), is_float(), is_integer(), is_null(),
is_numeric(), is_object(), is_resource(), is_scalar(),
is_string()
La función var_dump() muestra el tipo y el valor de una variable. Es
especialmente interesante con los arrays
VARIABLES




Las variables siempre van precedidas de un $
El nombre es sensible a las mayúsculas
Comienzan por letra o subrayado, seguido de letras, números o
subrayado
Variables predefinidas:
$GLOBALS, $_SERVER, $_GET, $_POST, $_COOKIES, $_FILES,
$_ENV, $_REQUEST, $_SESSION


Ámbito: globales al fichero (excepto funciones) o locales a una
función
Ejemplo:
$valor = 5;
printf “El valor es: “ . $valor . “\n”;
printf “El valor es: $valor\n”; // ojo: comillas dobles
Resultado:
El valor es: 5
EXPRESIONES Y OPERADORES






Operadores aritméticos:
+, -, *, /, %, ++, -Operador de asignación:
=
operadores combinados: .=, +=, etc
$a = 3; $a += 5;  a vale 8
$b = “hola ”; $b .= “mundo”;  b vale “hola mundo”
 Equivale a $b = $b . “mundo”;
Operadores de comparación:
==, !=, <, >, <=, >= y otros
Operador de control de error: @. Antepuesto a una expresión, evita
cualquier mensaje de error que pueda ser generado por la expresión
Operadores lógicos:
and (&&), or (||), !, xor
and/&& y or/|| tienen diferentes prioridades
Operadores de cadena:
concatenación: . (punto)
asignación con concatenación: .=
ESTRUCTURAS DE CONTROL

Estructuras selectivas:



if-else
switch
Estructuras repetitivas:



while
for
foreach
ESTRUCTURAS DE CONTROL

Estructura selectiva if-else
if (condición)
sentencia
if (condición)
sentencia 1
else
sentencia 2



if (condición1)
sentencia 1
else if (condición2)
sentencia 2
...
else if (condición n)
sentencia n
else
sentencia n+1
Mismo comportamiento que en C
Las sentencias compuestas se encierran entre llaves
elseif puede ir todo junto
ESTRUCTURAS DE CONTROL

Ejemplo de estructura selectiva if-else:
<?PHP
if ($sexo == ‘M’)
$saludo = "Bienvenida, ";
else
$saludo = "Bienvenido, ";
printf (“$saludo”);
?>
ESTRUCTURAS DE CONTROL

Ejemplo de estructura repetitiva while:
<?PHP
printf ("<UL>\n");
$i=1;
while ($i <= 5)
{
printf ("<LI>Elemento $i</LI>\n");
$i++;
}
printf ("</UL>\n");
?>
ESTRUCTURAS DE CONTROL

Estructura repetitiva for
for (inicialización; condición; incremento)
sentencia
inicialización

Mismo comportamiento que en C
condición
falsa
cierta
sentencia
incremento
ESTRUCTURAS DE CONTROL

Ejemplo de estructura repetitiva for:
<?PHP
printf ("<UL>\n");
for ($i=1; $i<=5; $i++)
printf ("<LI>Elemento $i</LI>\n");
printf ("</UL>\n");
?>
ARREGLOS

Sintaxis:
array ([clave =>] valor, ...)


La clave es una cadena o un entero no negativo. El valor puede ser
de cualquier tipo válido en PHP, incluyendo otro array
Ejemplos:
<?php
$cars=array("Volvo","BMW","Toyota");
echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
?>
$cars1="Volvo";
$cars2="BMW";
$cars3="Toyota";

$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";

<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>
"43");
echo "Peter is " . $age['Peter'] . " years old.";
?>
FORMULARIOS HTML
1.
2.
Acceso a formularios HTML desde PHP
El formulario de PHP
ACCESO A FORMULARIOS DESDE PHP


Desde PHP se puede acceder fácilmente a los datos
introducidos desde un formulario HTML
Veámoslo con un ejemplo simple
ACCESO A FORMULARIOS DESDE PHP


<form action="welcome.php" method="get">
Name: <input type="text" name="fname">
Age: <input type="text" name="age">
<input type="submit">
</form>
Welcome <?php echo $_GET["fname"]; ?>.<br>
You are <?php echo $_GET["age"]; ?> years old!
ACCESO A FORMULARIOS DESDE PHP
ACCESO A FORMULARIOS DESDE PHP



A partir de PHP 4.2.0, el valor por defecto de la directiva de PHP
register_globals es off
Esto tiene una gran importancia sobre los formularios, ya que
no es posible acceder a las variables enviadas de la manera
anterior (como variables globales). En su lugar hay que utilizar
la variable predefinida de PHP $_REQUEST, escribiendo
$_REQUEST[‘edad’] en lugar de $edad
Se puede poner register_globals = on en el fichero de
configuración php.ini, pero no es recomendable por motivos de
seguridad. Una alternativa que permite hacer mínimos cambios
en el código ya existente es la siguiente:
$edad = $_REQUEST[‘edad’];
ACCESO A FORMULARIOS DESDE PHP


<form action="welcome.php" method="post">
Name: <input type="text" name="fname">
Age: <input type="text" name="age">
<input type="submit">
</form>
Welcome <?php echo $_POST["fname"]; ?>!<br>
You are <?php echo $_POST["age"]; ?> years old.
ACCESO A FORMULARIOS DESDE PHP

Acceso a los diferentes tipos de elementos de entrada de
formulario

Elementos de tipo INPUT









Elemento SELECT


TEXT
RADIO
CHECKBOX
BUTTON
FILE
HIDDEN
PASSWORD
SUBMIT
Simple / múltiple
Elemento TEXTAREA
ACCESO A FORMULARIOS DESDE PHP

TEXT
Introduzca la cadena a buscar:
<INPUT TYPE="text" NAME="cadena" VALUE="valor por defecto" SIZE="20">
<?PHP
$cadena = $_REQUEST[‘cadena’];
?>
ACCESO A FORMULARIOS DESDE PHP

RADIO
Sexo:
<INPUT TYPE="radio" NAME=“sexo" VALUE=“M“ CHECKED>Mujer
<INPUT TYPE="radio" NAME=“sexo" VALUE=“H">Hombre
<?PHP
$sexo = $_REQUEST[‘sexo’];
?>
ACCESO A FORMULARIOS DESDE PHP

CHECKBOX
<INPUT TYPE="checkbox" NAME="extras[]" VALUE="garaje" CHECKED>Garaje
<INPUT TYPE="checkbox" NAME="extras[]" VALUE="piscina">Piscina
<INPUT TYPE="checkbox" NAME="extras[]" VALUE="jardin">Jardín
<?PHP
$extras = $_REQUEST[‘extras’];
?>
ACCESO A FORMULARIOS DESDE PHP

BUTTON
<INPUT TYPE="button" NAME=“actualizar" VALUE="Actualizar datos">
<?PHP
$actualizar = $_REQUEST[‘actualizar’];
if ($actualizar)
printf ("Se han actualizado los datos");
?>
ACCESO A FORMULARIOS DESDE PHP

FILE
<FORM ACTION="procesa.php" METHOD="post“
ENCTYPE="multipart/form-data">
<INPUT TYPE="file" NAME="fichero">
</FORM>
ACCESO A FORMULARIOS DESDE PHP

HIDDEN
<?PHP
printf(“<INPUT TYPE=’hidden’ NAME=’username’
VALUE=’$usuario’>\n”);
?>
<?PHP
$username = $_REQUEST[‘username’];
?>
ACCESO A FORMULARIOS DESDE PHP

PASSWORD
Contraseña: <INPUT TYPE="password" NAME="clave">
<?PHP
$clave = $_REQUEST[‘clave’];
?>
ACCESO A FORMULARIOS DESDE PHP

SUBMIT
<INPUT TYPE="submit" NAME="enviar" VALUE="Enviar datos">
<?PHP
$enviar = $_REQUEST[‘enviar’];
if ($enviar)
printff ("Se ha pulsado el botón de enviar");
?>
ACCESO A FORMULARIOS DESDE PHP

SELECT simple
Color:
<SELECT NAME=“color">
<OPTION VALUE=“rojo" SELECTED>Rojo
<OPTION VALUE=“verde">Verde
<OPTION VALUE=“azul">Azul
</SELECT>
<?PHP
$color = $_REQUEST[‘color’];
?>
ACCESO A FORMULARIOS DESDE PHP

SELECT múltiple
Idiomas:
<SELECT MULTIPLE SIZE="3" NAME="idiomas[]">
<OPTION VALUE="ingles" SELECTED>Inglés
<OPTION VALUE="frances">Francés
<OPTION VALUE="aleman">Alemán
<OPTION VALUE="holandes">Holandés
</SELECT>
<?PHP
$idiomas = $_REQUEST[‘idiomas’];
?>
ACCESO A FORMULARIOS DESDE PHP

TEXTAREA
Comentario:
<TEXTAREA COLS=“50" ROWS=“4" NAME="comentario">
Este libro me parece ...
</TEXTAREA>
<?PHP
$comentario = $_REQUEST[‘comentario’];
printf ($comentario);
?>
ACCESO A BASES DE DATOS MYSQL EN
PHP
1.
2.
3.
4.
5.
6.
Bases de datos en la Web
Herramientas de administración: phpMyAdmin
Lenguaje SQL
Funciones de PHP para el acceso a bases de datos
MySQL
Ejercicios
Consulta avanzada de tablas
BASES DE DATOS EN LA WEB
Las bases de datos permiten almacenar de una forma estructurada y
eficiente toda la información de un sitio web
Ventajas
–
–
–
–
–
Proporcionar información actualizada
Facilitar la realización de búsquedas
Disminuir los costes de mantenimiento
Implementar sistemas de control de acceso
Almacenar preferencias de los usuarios
BASES DE DATOS EN LA WEB
Esquema básico de un sitio web soportado por bases de datos:
HERRAMIENTAS DE ADMINISTRACIÓN:
PHPMYADMIN



phpMyAdmin es una herramienta para la administración del
servidor de bases de datos MySQL
Dispone de una interfaz gráfica y es de libre distribución
Permite realizar todo tipo de operaciones sobre bases de datos:








crear, borrar y modificar tablas
consultar, insertar, modificar y eliminar datos
definir usuarios y asignar permisos
realizar copias de seguridad
etc
Está escrita en php y se ejecuta desde el navegador
Si está instalada en la carpeta phpmyadmin, se ejecuta
escribiendo en la barra de direcciones del navegador la url
http://localhost/phpmyadmin/
Puede administrar bases de datos locales y remotas
PHPMYADMIN

Para acceder a phpMyAdmin buscamos el icono de Easyphp en
la barra de tarea y damos click derecho
configuración/PhpMyAdmin
PHPMYADMIN CREAR UNA BASE DE
DATOS
1
3
2 nombre de la
base de datos
PHPMYADMIN CREAR UNA TABLA EN
LA BASE DE DATOS
Nombre de la base creada
anteriormente
# de campo o columnas de la tabla
Nombre de la tabla a crear en la
base de datos
PHPMYADMIN ATRIBUTOS DE LAS
COLUMNAS DE UNA TABLA EN LA
BASE DE DATOS
Propiedades
de las
columnas
PHPMYADMIN INSERTAR REGISTROS
A UNA TABLA DE LA BASE DE DATOS
1. Click
Ingresar
los
valores
LENGUAJE SQL


SQL (Structured Query Language) es el lenguaje que se utiliza
para comunicarse con la base de datos
Procedimiento de comunicación con la base de datos:
Página
PHP
orden SQL
Base de
datos
resultado
FUNCIONES DE PHP PARA EL ACCESO
A BASES DE DATOS MYSQL

Los pasos para acceder desde PHP a una base de datos son los
siguientes:
◦
◦
◦
◦
◦
Conectar con el servidor de bases de datos
Seleccionar una base de datos
Enviar la instrucción SQL a la base de datos
Obtener y procesar los resultados
Cerrar la conexión con el servidor de bases de datos
ACCESO A BASES DE DATOS
MYSQL

Las funciones concretas de MySQL que realizan estas
operaciones son:
◦
Conectar con el servidor de bases de datos:

◦
Seleccionar una base de datos:

◦
mysql_query()
Obtener y procesar los resultados:

◦
mysql_select_db()
Enviar la instrucción SQL a la base de datos:

◦
mysql_connect()
mysql_num_rows() y mysql_fetch_array()
Cerrar la conexión con el servidor de bases de datos:

mysql_close()
ACCESO A BASES DE DATOS
MYSQL

Conectar con el servidor de bases de datos: mysql_connect()
◦

Devuelve un identificador de la conexión en caso de éxito y false
en caso contrario
Sintaxis:
$conexion = mysql_connect (servidor, username, password);

Ejemplo: esto debe de estar dentro de un script php
$conexion = mysql_connect (“localhost”, “cursophp”, “”);
if(!$conexion)
echo “No se puede conectar con el servidor”;
ACCESO A BASES DE DATOS
MYSQL

Seleccionar una base de datos: mysql_select_db()


Devuelve true en caso de éxito y false en caso contrario
Sintaxis:
mysql_select_db (database,conexion);

Ejemplo:
if(mysql_select_db (“lindavista”,$conexion));
echo “No se puede seleccionar la base de datos”;
ACCESO A BASES DE DATOS
MYSQL

Enviar la instrucción SQL a la base de datos: mysql_query()


Devuelve un identificador o true (dependiendo de la instrucción) si
la instrucción se ejecuta correctamente y false en caso contrario
Ejemplo:
$consulta=“select * from alumnos”;
$respuesta = mysql_query ($consulta,$conexion);
ACCESO A BASES DE DATOS
MYSQL

Obtener y procesar los resultados: mysql_num_rows(),
mysql_fetch_array()




En el caso de que la instrucción enviada produzca unos
resultados, mysql_query() devuelve las filas de la tabla afectadas
por la instrucción
mysql_num_rows() devuelve el número de filas afectadas
Para obtener las distintas filas del resultado se utiliza la función
mysql_fetch_array(), que obtiene una fila del resultado en un array
asociativo cada vez que se invoca
Sintaxis:
$nfilas = mysql_num_rows ($respuesta);
$fila = mysql_fetch_array ($respuesta);
ACCESO A BASES DE DATOS
MYSQL

Ejemplo:
noticias
1
Título 1
Texto 1
ofertas
05/02/2004
2
Título 2
Texto 2
promociones
05/02/2004
3
Título 3
Texto 3
promociones
04/02/2004
4
Título 4
Texto 4
costas
01/02/2004
5
Título 5
Texto 5
promociones
31/01/2004
Instrucción:
select * from noticias where categoria=“promociones”
ACCESO A BASES DE DATOS
MYSQL

Ejemplo:
noticias
1
Título 1
Texto 1
ofertas
05/02/2004
2
Título 2
Texto 2
promociones
05/02/2004
3
Título 3
Texto 3
promociones
04/02/2004
$consulta
4
Título 4
Texto 4
costas
01/02/2004
$nfilas=3
5
Título 5
Texto 5
promociones
31/01/2004
Instrucción:
select * from noticias where categoria=“promociones”
ACCESO A BASES DE DATOS
MYSQL

Obtención de las filas:
$nfilas = mysql_num_rows ($respuesta);
if ($nfilas > 0)
{
for ($i=0; $i<$nfilas; $i++)
{
$fila = mysql_fetch_array ($respuesta);
procesar fila i-ésima de los resultados
}
}
ACCESO A BASES DE DATOS
MYSQL

Obtener los resultados: mysql_num_rows(), mysql_fetch_array()

Para acceder a un campo determinado de una fila se usa la
siguiente sintaxis:
$fila[“nombre_campo”] // por ser un array asociativo
$fila[$i]
// $i=índice del campo desde 0

Ejemplo:
for ($i=0; $i<$nfilas; $i++)
{
$fila = mysql_fetch_array ($respuesta);
printf “Título: “ . $fila[“titulo”];
printf “Fecha: “ . $fila[“fecha”];
}
ACCESO A BASES DE DATOS
MYSQL

Cerrar la conexión con el servidor de bases de datos:
mysql_close()

Sintaxis:
mysql_close ($conexion);

Ejemplo
mysql_close ($conexion);
EJERCICIOS

Ejercicio 1:


Ejercicio simple de acceso a una tabla de una base de datos.
Ilustra cómo conectar con una base de datos, enviar una consulta,
recuperar los resultados y mostrarlos en pantalla, actualizar
eliminar e insertar un registro.
Pasos previos:
1.
2.
3.
Crear la base de datos alumnos
Crear la tabla personales en la base de datos alumnos
Ingresar los siguientes valores: