Prof: Ing.
José Marval
Introducción
Requisitos
• Servidor web Apache ([Link])
• con el módulo PHP ([Link])
• y la base de datos MySQL ([Link]) si se desea
crear páginas dinámicas
Otras utilidades
• Herramientas para la gestión de MySQL, como
PHPMyAdmin ([Link])
• Editores de PHP.
• Manuales de PHP y MySQL
Prof: Ing. José Marval
Herramientas
Editor:
Servidor Local ([Link]
WampServer.
Carpeta servidor. X:/wamp/www
XAMPP.
Carpeta servidor. X:/xampp/htdocts
Manual de PHP.
Prof: Ing. José Marval
Como Funciona PHP
Prof: Ing. José Marval
Sintaxis Básica
PHP es sensible a las mayúsculas.
¿Cómo se incrusta en la página web?
<?PHP ... ?>
recomendado, siempre disponible
<?= expresión ?>
equivale a <?PHP echo expresión ?>
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 */
echo “hola”; // Comentario de una línea
Ejemplo:
<?php
phpinfo();
?>
[Link]
Prof: Ing. José Marval
Funciones echo y print
echo print
echo “Hola mundo”; print “Hola mundo”;
echo “Hola “ . “mundo”; print “Hola “, “mundo”;
Ejemplo:
<HTML>
<HEAD>
<TITLE>Mi primer programa en PHP</TITLE>
</HEAD>
<BODY>
<?PHP
echo "<P>Hola mundo</P>";
?>
</BODY>
</HTML>
[Link]
Prof: Ing. José Marval
Ejercicio 1
programa que muestra un mensaje
Ilustra cómo incrustar código PHP en un documento HTML y cómo
imprimir desde PHP
Prof: Ing. José Marval
Ejercicio 1
Código:
<html>
<head>
<title>PHP y HTML</title>
</head>
<body>
<h1><font color=“#0000FF”>PHP y HTML</font></h1>
<p>Éste es el párrafo 1, escrito desde HTML</p>
<?php
echo "<p>Éste es el párrafo 2, escrito desde PHP</p>\n";
?>
<p>Éste es el párrafo 3, escrito nuevamente desde HTML</p>
<?php
echo "<P>Y éste es el párrafo 4, escrito desde PHP</P>\n";
?>
</body>
</html>
[Link]
Prof: Ing. José Marval
Tipos de Datos
PHP soporta 8 tipos de datos primitivos:
• Tipos escalares: boolean, integer, double, string
• Tipos compuestos: array, object
• Tipos especiales: 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
Prof: Ing. José Marval
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;
echo “El valor es: “ . $valor . “\n”;
echo “El valor es: $valor\n”;
Resultado:
El valor es: 5
Prof: Ing. José Marval
Constantes
• Definición de constantes:
define (“CONSTANTE”, “hola”);
echo CONSTANTE;
• No llevan $ delante
• Sólo se pueden definir constantes de los tipos
escalares (boolean, integer, double, string).
Prof: Ing. José Marval
Operadores
Precedencia de operadores
Operadores Información Adicional
[] array()
++ -- incremento/decremento
! tipos
* / % aritmética
+ - . aritmética, y cadena
< <= > >= comparación
== != comparación
&& lógicos
|| lógicos
? : ternario
= += -= *= /= .= %= asignación
Prof: Ing. José Marval
Estructuras de control
•Estructura selectiva if-else
if (condición) if (condición1)
sentencia sentencia 1
else if (condición2)
sentencia 2
if (condición)
...
sentencia 1
else if (condición n)
else
sentencia n
sentencia 2
else
sentencia n+1
•Mismo comportamiento que en C
•Las sentencias compuestas se encierran
entre llaves
•elseif puede ir todo junto
Prof: Ing. José Marval
Estructuras de control
Ejemplo de estructura selectiva if-else:
<?PHP
if ($sexo == ‘M’)
$saludo = "Bienvenida, ";
else
$saludo = "Bienvenido, ";
$saludo = $saludo . $nombre;
echo $saludo;
?>
Prof: Ing. José Marval
Estructuras de control
• Estructura selectiva switch
switch (expresión)
{
case valor_1:
sentencia 1
break;
case valor_2:
sentencia 2
break;
…
case valor_n:
sentencia n
break;
default
sentencia n+1
}
Prof: Ing. José Marval
Estructuras de control
• Estructura repetitiva while
while (condición)
sentencia
• Mismo comportamiento que en C
Ejemplo de estructura repetitiva while:
<?PHP
echo "<UL>\n";
$i=1;
while ($i <= 5)
{
echo "<LI>Elemento $i</LI>\n";
$i++;
}
echo "</UL>\n";
?>
Prof: Ing. José Marval
Estructuras de control
• Estructura repetitiva for
for (inicialización; condición; incremento)
sentencia
• Mismo comportamiento que en C
Ejemplo de estructura repetitiva for:
<?PHP
echo "<UL>\n";
for ($i=1; $i<=5; $i++)
echo "<LI>Elemento $i</LI>\n";
echo "</UL>\n";
?>
Prof: Ing. José Marval
Ejercicio 2
Prof: Ing. José Marval
Ejercicio 2
<html>
<head>
<title>PHP y HTML</title>
</head>
<body>
<h1><font color=“#0000FF”>Tabla de Multiplicar</font></h1>
<?PHP
$n = 7;
echo "<P>La tabla de multiplicar del $n es:</P>\n";
for ($i=1; $i<=10; $i++)
echo "$n x $i = " . $n*$i . "<BR>\n";
?>
</body>
</html>
[Link]
Prof: Ing. José Marval
Arreglos
Se declaran y acceden los elementos con los corchetes: [ ]
• La primera componente es la cero
• Los elementos pueden tener distinto tipo en un mismo vector
• Se puede acceder a un elemento mediante un índice asociativo.
• Arrays multidimensionales
• Constructor: array()
Tipos de los elementos:
$vector1[0] = 1;
$vector1[1] = ‘hola’;
$vector1[“nom”] = “juan”;
• Constructor:
$vector2 = array (1, “jorge”, 3);
$vector3 = array(0 => 1, 1 => “jorge”, “nom” => “jaime”, 3 => 5 );
// índice => valor
Prof: Ing. José Marval
Arreglos
Otra 2 formas:
$a[] = 'a';
$a[] = 'b';
$a[] = 'c';
// equivale a
$a = array('a', 'b', 'c');
//--------------------------------------------------------------------------------------------//
$firstquarter = array(1 => 'January', 'February‘,'March');
print_r($firstquarter);
Genera:
Array ( [1] => January [2] => February [3] =>March )
Nota: Array que empieza en 1 en vez de 0
$fruits = array (
"fruits" => array("a" => "orange", "b" => "banana", "c" =>
"apple"),
"numbers" => array(1, 2, 3, 4, 5, 6),
"holes" => array("first", 5 => "second", "third")
);
print_r($fruits);
Prof: Ing. José Marval
Arreglos
La estructura de control foreach permite iterar sobre arrays
Sintaxis:
foreach (expresión_array as $valor)
sentencia
foreach (expresión_array as $clave => $valor)
sentencia
Ejemplos:
foreach ($color as $valor)
echo “Valor: $valor<BR>\n”;
foreach ($color as $clave => $valor)
echo “Clave: $clave; Valor: $valor<BR>\n”;
Salida:
Valor: 101
Valor: 51
Valor: 255
Clave: rojo; Valor: 101
Clave: verde; Valor: 51
Clave: azul; Valor: 255
Prof: Ing. José Marval
Cadenas
Las cadenas pueden ir con comillas dobles “ o comillas simples ‘.
$cadena = “Hola Mundo”;
$cadena = ‘Hola Mundo’;
Algunas Funciones de Cadenas:
•strlen(cadena). Nos devuelve el número de carácteres de una cadena.
• split(separador,cadena). Divide una cadena en varias usando un carácter separador.
• sprintf(cadena de formato, var1, var2...). Formatea una cadena de texto al igual que
printf pero el resultado es devuelto como una cadena.
• substr(cadena, inicio, longitud). Devuelve una subcadena de otra, empezando por inicio
y de longitud longitud.
• chop(cadena). Elimina los saltos de línea y los espacios finales de una cadena.
• strpos(cadena1, cadena2). Busca la cadena2 dentro de cadena1 indicándonos la posición
en la que se encuentra.
• str_replace(cadena1, cadena2, texto). Reemplaza la cadena1 por la cadena2 en el texto.
Prof: Ing. José Marval
Cadenas
<body>
<?php
echo strlen("12345"),"<br>";
$palabras=split(" ","Esto es una prueba");
for ($i=0;$palabras[$i];$i++)
echo $palabras[$i],"<br>";
$resultado=sprintf ("8X5 = %d <br>",8*5);
echo $resultado,"<br>";
echo substr("Devuelve una subcadena de otra",9,3),"<br><br>";
if (chop("Cadena \n\n ")=="Cadena")
echo "Iguales <Br><br>";
echo strpos("busca la palabra dentro de la frase",
"palabra"),"<br><br>";
echo str_replace ("verde","rojo","Un pez de color verde, como
verde es la hierba"),"<br>";
?>
</body>
Prof: Ing. José Marval
Funciones
Ejemplo:
function suma ($x, $y)
{
$s = $x + $y;
return $s;
}
$a=1;
$b=2;
$c=suma ($a, $b);
echo $c;
Por defecto los parámetros se pasan por valor
Paso por referencia:
function incrementa (&$a)
{
$a = $a + 1;
}
$a=1;
incrementa ($a);
echo $a; // Muestra un 2
Prof: Ing. José Marval
Funciones
Argumentos por defecto
function muestranombre ($titulo = "Sr.")
{
echo "Estimado $titulo:\n";
}
muestranombre ();
muestranombre ("Prof.");
Salida:
Estimado Sr.:
Estimado Prof.:
Los argumentos con valores por defecto deben ser siempre los últimos:
function muestranombre ($nombre, $titulo= "Sr.")
{
echo "Estimado $titulo $nombre:\n";
}
muestranombre (“Fernández”);
muestranombre (“Fernández”, "Prof.");
Salida:
Estimado Sr. Fernández:
Estimado Prof. Fernández:
Prof: Ing. José Marval
include y require
•Inclusión de ficheros externos:
include(), include_once()
require(), require_once()
•Ambos incluyen y evalúan el fichero especificado
•Diferencia: en caso de error include() produce un
warning y require() un error fatal
•Se usará require() si al producirse un error debe
interrumpirse la carga de la página
Ejemplo:
<?PHP
// Incluir bibliotecas de funciones
require ("[Link]");
require ("[Link]");
require ("[Link]");
require ("[Link]");
?>
<?PHP
include ("[Link]");
?>
// Código HTML + PHP
. . .
<?PHP
include ("[Link]");
?>
Prof: Ing. José Marval
Objetos
<?php
class ejemplo{
var $variable1;
var $variable2;
//constructor
public function __construct($cad){
$this->variable1 = $cad;
}
//funciones
public function asigna($cad){
$this->variable2 = $cad;
}
public function muestra(){
echo $this->variable1.' '.$this->variable2;
}
}
//creando el objeto
$objeto = new ejemplo("HOLA");
//usando las funciones
$objeto->asigna("MUNDO");
$objeto->muestra();
?>
Prof: Ing. José Marval
Formulario
Prof: Ing. José Marval
Formulario
Para leer desde el formulario:
Variables globales: $_GET, $_POST
Para el ejemplo:
$nombre = $_GET[‘nombre’];
$empresa = $_GET[‘empresa’];
$email = $_GET[‘email’];
$mensaje = $_GET[‘mensaje’];
Prof: Ing. José Marval
Subidas de Archivos
Para subir un fichero al servidor se utiliza el elemento de entrada FILE
Hay que tener en cuenta una serie de consideraciones importantes:
• El elemento FORM debe tener el atributo ENCTYPE="multipart/form-
data“
• El fichero tiene un límite en cuanto a su tamaño. Este límite se fija de en
el fichero de configuración [Link]
Prof: Ing. José Marval
Subidas de Archivos
La variable $_FILES contiene toda la información del fichero
subido:
$_FILES['imagen']['name']
Nombre original del fichero en la máquina cliente
$_FILES['imagen']['type']
Tipo mime del fichero. Por ejemplo, "image/gif"
$_FILES['imagen']['size']
Tamaño en bytes del fichero subido
$_FILES['imagen']['tmp_name']
Nombre del fichero temporal en el que se almacena el fichero
subido en el servidor
$_FILES['imagen’]['error']
Código de error asociado al fichero subido
Prof: Ing. José Marval
Subidas de Archivos
if (is_uploaded_file ($_FILES['imagen']['tmp_name']))
{
$nombreDirectorio = "img/";
$nombreFichero = $_FILES['imagen']['name'];
move_uploaded_file ($_FILES['imagen']['tmp_name'],
$nombreDirectorio . $nombreFichero);
}
else
echo "No se ha podido subir el fichero";
Prof: Ing. José Marval
Ejercicio 3
Prof: Ing. José Marval
Prof: Ing. José Marval
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
[Link]
Puede administrar bases de datos locales y remotas
Prof: Ing. José Marval
PHPMyAdmin
Prof: Ing. José Marval
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 orden SQL
PHP Base
de
resultado datos
Prof: Ing. José Marval
Lenguaje SQL
Las instrucciones más habituales son SELECT, INSERT, UPDATE,
DELETE
Veamos su sintaxis básica y algunos ejemplos de uso
Para ello utilizaremos una tabla noticias con cinco campos: un
identificador único de la noticia, el título de la noticia, el texto de
la noticia, la categoría de la noticia y la fecha de publicación de la
noticia
usuarios
nombre
apellido
cedula
nick
clave
tipo
Prof: Ing. José Marval
Lenguaje SQL
SELECT
Sintaxis:
SELECT expresión FROM tabla
[WHERE condición]
[ORDER BY {unsigned_integer | col_name | formula}
[ASC | DESC] ,...]
[LIMIT [offset,] row_count | row_count OFFSET
offset]
Ejemplo:
SELECT * from usuarios WHERE nombre=‘jose’ LIMIT 10
ORDER BY nick DESC
Obtiene los usuarios cuyo nombre es “josé” con un tope máximo de 10,
ordenados por nick
Prof: Ing. José Marval
Lenguaje SQL
INSERT
Sintaxis:
INSERT [INTO] nombre_tabla [(nombre_columna,...)]
VALUES ((expresión | DEFAULT),...), (...),...
INSERT [INTO] nombre_tabla
SET nombre_columna=(expresión | DEFAULT), ...
Ejemplo:
INSERT INTO usuarios (nombre, apellido, cedula,
nick, clave, Tipo) VALUES (‘josé’, ‘marval’,
‘14000000’, ‘jose_1520’, ‘1234’, 0)
Inserta un usuario con los valores indicados
Prof: Ing. José Marval
Lenguaje SQL
UPDATE
Sintaxis:
UPDATE nombre_tabla
SET nombre_columna1=expr1 [, nombre_columna2=expr2
...]
[WHERE condición]
[ORDER BY ...]
[LIMIT row_count]
Ejemplo:
UPDATE usuarios SET clave = ‘654321’ WHERE
cedula=‘14000000’
Modifica la clave del usuario con cedula = 14000000
Prof: Ing. José Marval
Lenguaje SQL
DELETE
Sintaxis:
DELETE FROM nombre_tabla
[WHERE condición]
[ORDER BY ...]
[LIMIT row_count]
Ejemplo:
DELETE FROM usuarios WHERE nombre = ‘jose’
Borra los usuarios de nombre jose
Prof: Ing. José Marval
Conectar MySQL con PHP
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
Prof: Ing. José Marval
Conectar MySQL con PHP
Las funciones concretas de MySQL que realizan estas operaciones son:
– Conectar con el servidor y seleccionar la bases de datos:
• mysqli_connect()
– Enviar la instrucción SQL a la base de datos:
• mysqli_query()
– Obtener y procesar los resultados:
• mysqli_num_rows(), mysqli_fetch_assoc(),
mysqli_fetch_object(),
– Cerrar la conexión con el servidor de bases de datos:
• mysqli_close()
Prof: Ing. José Marval
Conectar MySQL con PHP
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 = new mysqli (servidor, username, password, database);
Ejemplo:
$conexion = new mysqli("localhost“, "us_curso“, "us_pasword“, "base_datos");
Prof: Ing. José Marval
Conectar MySQL con PHP
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
Sintaxis:
$resultado = $conexion->query (instrucción);
Ejemplo:
$resultado = $conexion->query("SELECT * FROM USUARIOS")
Prof: Ing. José Marval
Conectar MySQL con PHP
Obtener y procesar los resultados: mysqli_num_rows(),
mysqli_fetch_assoc()
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_assoc(), que obtiene una fila del resultado en un
array asociativo cada vez que se invoca
Sintaxis:
$nFilas = $resultado->num_rows;
$fila = $resultado->fetch_assoc();
Prof: Ing. José Marval
Conectar MySQL con PHP
Ejemplo:
usuarios
jose marval 14000000 Jose_20 1234 0
pedro lopez 16000000 pedrito 1234 0
jose perez 15000000 Jose_21 1234 1
luis jimenez 13000000 Luisj_55 1234 0
carlos perez 17000000 carlospz 1234 1
jose rodriguez 15600000 Jose_22 1234 1
Instrucción:
select * from usuarios
Prof: Ing. José Marval
Conectar MySQL con PHP
Ejemplo:
usuarios
jose marval 14000000 Jose_20 1234 0
pedro lopez 16000000 pedrito 1234 0
jose perez 15000000 Jose_21 1234 1 $consulta
luis jimenez 13000000 Luisj_55 1234 0 $nfilas=3
carlos perez 17000000 carlospz 1234 1
jose rodriguez 15600000 Jose_22 1234 1
Instrucción:
select * from usuarios where nombre = “jose”
Prof: Ing. José Marval
Conectar MySQL con PHP
Obtener los resultados: mysqli_num_rows(), mysqli_fetch_assoc()
Para acceder a un campo determinado de una fila se usa la siguiente
sintaxis:
$fila[“nombre_campo”]// por ser un array asociativo
Ejemplo:
$nFilas = $resultado->num_rows;
for ($i=0; $i<$nfilas; $i++){
$fila = $resultado->fetch_assoc ();
echo "Nombre: " . $fila["nombre"];
echo "Login: " . $fila["login"];
}
?>
Prof: Ing. José Marval
Conectar MySQL con PHP
Cerrar la conexión con el servidor de bases de datos:
mysqli_close()
Ejemplo
$conexion->close ($conexion);
Prof: Ing. José Marval
MySQL con PHP
Ejemplo:
Generar la tabla usuarios con PHP:
Prof: Ing. José Marval
Formularios
Prof: Ing. José Marval
Formularios
Prof: Ing. José Marval
Ajax
Asynchronous JavaScript And XML (JavaScript asíncrono y
XML)
Prof: Ing. José Marval
Objeto XMLHttpRequest
Un objeto XMLHttpRequest es una instancia de una API que nos
permite la transferencia de datos en formato XML desde los script del
navegador (JavaScript) a los del servidor ( PHP, Perl, ASp, Java ... ) e
inversamente.
Prof: Ing. José Marval
Función AJAX con Jquery
$.ajax({
url : '[Link]',
data : { },
type : 'GET',
dataType : 'json',
success : function(json) {
$("#contenedor").html([Link]);
},
error : function(jqXHR, status, error) {
//Si ocurre un error
}
});
Prof: Ing. José Marval
Sesiones
•A veces es necesario mantener el estado de una conexión entre
distintas páginas o entre distintas visitas a un mismo sitio
Ejemplos: aplicaciones personalizadas, carrito de la compra,
control de acceso
•HTTP es un protocolo sin estado: cada conexión entre el cliente
y el servidor es independiente de las demás.
•Para mantener el estado entre diferentes conexiones hay que
establecer lo que se conoce como una sesión.
•Las sesiones permiten disponer de unas variables con valores
persistentes durante toda la conexión del usuario.
•PHP dispone de una biblioteca de funciones para la gestión de
sesiones.
Prof: Ing. José Marval
Sesiones
Funciones de PHP para el manejo de sesiones.
session_start ()
inicializa una sesión y le asigna un identificador de sesión
único. Si la sesión ya está iniciada, carga todas las
variables de sesión.
$_SESSION[‘nombre’] = valor;
registra una variable de sesión
unset ($_SESSION[‘nombre’]);
elimina una variable de sesión
if (isset($_SESSION[‘nombre’]))
comprueba si una variable está registrada. Devuelve true
en caso afirmativo y false en caso contrario
session_destroy ()
cierra una sesión
Prof: Ing. José Marval