Modulo 1 PHP5 y My SQL
Modulo 1 PHP5 y My SQL
PHP 5 y MySQL
Mdulo 1
Servicio de documentacin
Programacin PHP 5 y MySQL (mdulo 1)
Presentacin
Historia y evolucin de PHP
Qu es PHP?
Ausencia de compilacin
Modos de ejecucin
Caso prctico
Herramientas de desarrollo
Cuestiones generales de sintaxis
Referencias a variables
Operaciones con variables
Malabarismo de tipos
Funciones tiles
Comprobar y forzar el cambio de tipos
Constantes
Estructuras de control
Directivas del lenguaje y funciones
Ejercicios
Conclusin
Presentacin
Lo que vendr
Qu es PHP?
Ausencia de compilacin
Por otro lado, y para hacer una comparacin justa, es cierto que los
lenguajes que son nativos (C/C++) o compilados (Java) en muchos
casos son ms veloces, pero esa velocidad es exigida para el tipo de
tareas que llevan a cabo, y a un coste de desarrollo mucho ms
elevado; PHP sin embargo puede hacer todo para lo que ha sido
pensado, sin presentar notables problemas de rendimiento.
Modos de ejecucin
Referencias:
PHP-GTK
http://gtk.php.net
PHP-SDL
http://sourceforge.net/projects/phpsdl/
Un servidor Web
Navegador Web
Facebook
http://www.facebook.com
Wikipedia
http://www.wikipedia.org
Yahoo!
http://www.yahoo.com
Caso prctico
Herramientas de desarrollo
Por otro lado tambin sabe (de haberlo ledo) que a cuanto ms
completos los editores, mas rpido avanzar en el desarrollo
Referencias:
Notepad++
http://notepad-plus.sourceforge.net/es/site.htm
Vim
http://www.vim.org/
Eclipse PDT
http://www.eclipse.org/pdt/
Zend Studio
http://www.zend.com/products/studio/
BitNami WampStack
php [NOMBRE_FICHERO]
php prueba1.php
Perfecto!
<?php
define('NUM_REPETICIONES', 5);
$fecha = date('d-m-Y');
A continuacin, prubalo.
El resultado ser:
No cierres la ventana.
<?php
$nombre = 'Pablo';
?>
[ Mi nombre es "<?php echo $nombre; ?>" ]
[ Mi nombre es "Pablo" ]
<?php
$a = 1;
$b = 33 * 102;
$c = (10 * 2) / 4;
?>
Este nuevo ejemplo, aunque parezca una nica instruccin por estar
en la misma lnea, tambin tiene tres instrucciones delimitadas por el
punto y coma.
<?php $a = 1; $b = 5; $c = 4 * 2; ?>
Comentarios
<?php
$precio = 100; // Precio unitario
$impuesto = $precio * 0.16; # Calculo del impuesto
?>
<?php
/*
Este script lee el correo entrante y elimina
aquellos que detecta como spam.
Version: 1.0
Autor: Scott Tiger
*/
// @TODO
?>
<?php
$horaActual = 19; // Son las 7 de la tarde
?>
<?php if($horaActual < 13): ?>
Buenos das!
<?php else: ?>
Buenas tardes!
<?php endif; ?>
Buenas tardes!
Ejectalo de nuevo.
Buenos das!
<?php
$colores = array('Rojo', 'Verde', 'Azul', 'Amarillo');
?>
<ul>
<?php foreach($colores as $color): ?>
<li><?php echo $color; ?></li>
<?php endforeach; ?>
</ul>
<?php
$colores = array('Rojo', 'Verde', 'Azul', 'Amarillo');
echo '<ul>';
foreach($colores as $color) {
echo '<li>', $color, '</li>';
}
echo '</ul>';
?>
<?php
echo 'Hola mundo!';
?>
Hola mundo!
<?php
echo 'Hola mundo!', 'Esta es una prueba!', 'Adis, mundo
cruel.';
?>
Hola mundo!
Esta es una prueba!
Adis, mundo cruel.
Genial!
Veamos un ejemplo:
<?php
$nombreSucursal = 'Barcelona';
/*
Primero concatenamos la palabra 'Sucursal ' al nombre de la
sucursal contenido en la variable $nombreSucursal
*/
$mensaje = 'Sucursal ' . $nombreSucursal;
// Concatenamos ahora a $mensaje el salto de lnea durante la
asignacin
$mensaje .= PHP_EOL;
print $mensaje;
?>
A continuacin, prubalo.
El resultado ser:
Sucursal Barcelona
<?php
$nombreSucursal = 'Barcelona';
/*
Utilizamos la variable $nombreSucursal dentro de la cadena de
texto.
*/
$mensaje = "Sucursal $nombreSucursal";
// Concatenamos a $mensaje el salto de lnea durante la
asignacin
$mensaje .= PHP_EOL;
print $mensaje;
?>
<?php
$hora = 9;
$minutos = 48;
echo 'Hora actual: $hora:$minutos' . PHP_EOL;
echo "Hora actual: $hora:$minutos" . PHP_EOL;
?>
Dentro del cdigo PHP es posible identificar a una variable del resto
de elementos por el signo del dlar que antecede al nombre.
Por ejemplo:
<?php
$contador = 36;
?>
Conozcmoslas:
Por ejemplo:
<?php
$edad = 38;
$nombre = 'Jess';
?>
Boolean
<?php
define('SERVIDOR', 'produccion');
/*
$modoPruebas tendr false, la constante SERVIDOR
no es igual a local.
*/
$modoPruebas = (SERVIDOR == 'local');
$modoPruebas = (1 == 3);
(1 == 3)
Lo entiendes?
$modoPruebas=true;
Integer
<?php
$a = 25; // 25 en base decimal;
$b = 0x10; // 16 en base hexadecimal
$c = 011; // 9 en base octal
/*
La funcin printf permite imprimir valores y especificar su
formato. En este ejemplo %d representa un valor entero.
*/
printf("a: %d, b: %d, c: %d\n", $a, $b, $c);
?>
Float
<?php
$precioUnitario = 59.9;
$distTierraLuna = 10 / 4; // $distTierraLuna es 2.5
?>
String
<?php
/*
La siguiente lnea instruye al navegador que el contenido
que genera este script es una imagen.
*/
header('Content-type: image/png');
$imagen = file_get_contents('logo.png');
echo $imagen;
?>
<?php
$nombreSucursal = 'Barcelona';
$mensaje = 'Sucursal ' . $nombreSucursal;
$mensaje .= PHP_EOL;
print $mensaje;
?>
Array
<?php
$diccionario = array(
'rbol' => 'Planta perenne, de tronco leoso y elevado,
que se ramifica a cierta altura del suelo.',
'animal' => 'Ser orgnico que vive, siente y se mueve
por propio impulso.',
'libro' => 'Conjunto de muchas hojas de papel u otro
material semejante que, encuadernadas, forman un volumen.'
);
?>
Object
<?php
class Persona {
var $nombre;
var $edad;
function saludar() {
echo "Mi nombre es {$this->nombre} y tengo
{$this->edad} aos.";
}
}
Resource
<?php
$conexion = mysql_connect('localhost', 'admin', 'secreto');
// $conexion es una variable de tipo resource (recurso)
mysql_close($conexion);
?>
NULL
<?php
$nombre = 'Francsco';
echo "Su nombre es $nombre\n";
unset($nombre);
// $nombre ya no contiene ningn valor debido al unset
// PHP lanza una advertencia
echo "Su nombre es $nombre\n";
?>
Referencias a variables
<?php
// La forma incorrecta, guardar el mismo dato en variables
diferentes
$telSantiago = 666333222;
$telSanti = 666333222;
/*
Si se cambia el valor a una de las variables, la otra no se
dar cuenta produciendo informacin desactualizada!
*/
$telSanti = 666000111;
$telSanti = &$telSantiago;
/*
Usando referencias, al cambiar una de las variables
la otra es "notificada" automticamente!
*/
$telSanti = 666000111;
<?php
$subtotal = 104;
$impuestos = 30;
echo ($subtotal + $impuestos); // Esto imprimir "134"
?>
<?php
$subtotal = 100;
$transporte = 20;
$total = $subtotal + $transporte;
?>
<?php
$numEntradas = 60;
$numVendidas = 13;
<?php
$contador = 245;
/*
Incrementamos (sumamos 1) al contador
porque hemos recibido una nueva visita.
*/
$contador++;
// Ahora el contador vale 246
<?php
$contador = 5;
$resultado = $contador++ * 2;
/*
$resultado aqu contiene 10.
$contador aqu vale 6.
*/
$contador = 5;
$resultado = ++$contador * 2;
/*
$resultado aqu contiene 12.
$contador aqu vale 6.
*/
?>
Multiplicacin
<?php
$tapasPorPersona = 4;
$numTapas = 10 * $tapasPorPersona;
?>
Necesitaremos <?php echo $numTapas; ?> para la fiesta.
Divisin
<?php
$premioLoteria = 200000;
$numFamiliares = 6;
$reparto = $premioLoteria / $numFamiliares;
printf("Cuando gane la lotera repartir %f entre mis
familiares.", $reparto);
?>
Mdulo
<?php
$numCartas = 40;
$numJugadores = 3;
?>
Se repartirn <?php echo round($numCartas / $numJugadores) ?>
carta(s) a cada jugador y sobrarn <?php echo($numCartas %
$numJugadores) ?> carta(s).
Operadores de asignacin
<?php
$otroNum = 3;
$otroNum += 5; // Es equivalente a $otroNum = $otroNum + 5
echo 'Otro nmero: ', $otroNum . PHP_EOL;
?>
Operadores de comparacin
<?php
$estacion = 'verano';
if($estacion == 'invierno') {
echo 'No olvides abrigarte durante esta estacin del
ao.';
}
?>
Igual (==): Devuelve true cuando los dos operandos tienen igual
contenido.
Distinto (!=, <>): Devuelve true cuando los dos operandos tienen
distinto contenido.
Idntico (===): Devuelve true cuando los dos operandos tienen igual
contenido e igual tipo de datos (por ejemplo, los dos valores son 12
y, adems, son ambos de tipo Integer).
<?php
// Asignamos 40 a la variable $a
$a = 40;
?>
Ejectalo.
El resultado ser:
<?php
// Asignamos 40 a la variable $a
$a = 40;
Fjate en el resultado:
$b vale 0
Operadores de ejecucin
<?php
/*
La salida del comando "tree" la mostramos
por pantalla.
*/
echo '=== Arbol del sistema ===', PHP_EOL;
echo `tree`, PHP_EOL;
/*
Utilizamos la funcin shell_exec
con identico resultado que con backticks.
*/
echo '=== Memoria utilizada ===', PHP_EOL;
echo shell_exec('mem'), PHP_EOL;
?>
Operadores lgicos
<?php
$llueve = false;
$nublado = true;
$soleado = true;
$estoyTrabajando = false;
?>
Malabarismo de tipos
<?php
$titular = '5 delincuentes han sido arrestados.';
// Se arresto a un delicuente ms
$titular += 1; // Aqu $titular es tratado como un entero!
echo "En total se han arrestado a $titular delincuentes.";
?>
<?php
?>
Funciones tiles
<?php
// Realizamos algunas declaraciones de variable
$numero = 5;
$texto = 'PHP rulez!';
$coleccion = array('tierra', 'marte', 'saturno');
$afirmacion = true;
int(5)
string(10) "PHP rulez!"
array(3) {
[0]=>
string(6) "tierra"
[1]=>
string(5) "marte"
[2]=>
string(7) "saturno"
}
bool(true)
print_r
<?php
// Realizamos algunas declaraciones de variable
$numero = 5;
$texto = 'PHP rulez!';
$coleccion = array('tierra', 'marte', 'saturno');
$afirmacion = true;
5
PHP rulez!
Array
(
[0] => tierra
[1] => marte
[2] => saturno
)
1
<?php
/**
La siguiente funcin convierte nmeros
en palabras a valor numrico.
*/
function convertir($valor) {
switch($valor) {
case 'uno': return 1;
case 'dos': return 2;
case 'tres': return 3;
case 'cuatro': return 4;
case 'cinco': return 5;
case 'seis': return 6;
case 'siete': return 7;
case 'ocho': return 8;
case 'nueve': return 9;
}
}
/*
Definimos una coleccin de nmeros
expresados numricamente o literalmente.
*/
$valores = array('uno', 53, 'tres', 'nueve', 13);
?>
Constantes
Veamos un ejemplo:
<?php
define('MODO_PRUEBAS', true);
if(MODO_PRUEBAS) {
echo 'Ejecutndose en modo pruebas.', PHP_EOL;
}
?>
<?php
// Las siguientes son definiciones vlidas
define('NUM_PAGINAS', 10); # Entero
define('NOMBRE_APLIC', 'Gestin 2000'); # Cadena de texto
define('FUNCION_HABILITADA', false); # Booleana
// Definiciones invalidas por su nombre o su valor
define('10NOMBRE', 10); # Nombre invalido!
define('#PRUEBA', 'Hola'); # Tampoco funcionar
define('CONJUNTO', array(1, 2, 3)); # Contenido no soportado
?>
Por ejemplo:
<?php
// Definimos la constante USUARIO con el valor "admin"
define('USUARIO', 'admin');
$usuarioActual = USUARIO;
$claveActual = '123';
/*
Si la constante CLAVE est definida la utilizamos
para reemplazar el contenido de la variable $claveActual
*/
if(defined('CLAVE')) {
$claveActual = CLAVE;
}
?>
He aqu algunas:
<?php
echo 'Lnea uno', PHP_EOL;
echo 'Este mensaje se mostrar gracias a la lnea nmero ',
__LINE__, PHP_EOL;
echo 'Otro mensaje para finalizar.', PHP_EOL;
?>
Lnea uno
Este mensaje se mostrara gracias a la lnea nmero 3
Otro mensaje para finalizar.
DIRECTORY_SEPARATOR y PATH_SEPARATOR.
Veamos un ejemplo:
<?php
$dirAplic = array(
'home',
'juan',
'aplicaciones',
'bin',
);
$dirJuegos = array(
'home',
'laura',
'juegos',
'cartas'
);
/*
Queremos mostrar los dos directorios
con las rutas absolutas.
*/
/*
Luego unimos los dos directorios
con el operador de concatenacin.
*/
echo $dirAplic . PATH_SEPARATOR . $dirJuegos;
?>
home\juan\aplicaciones\bin;home\laura\juegos\cartas
Estructuras de control
<?php
$numLoteria = 62443;
$numGanador = 78331;
if($numLoteria == $numGanador) {
echo 'Has ganado la lotera!';
}
?>
<?php
$genero = 'M'; # M es igual a masculino, y F a femenino
if($genero == 'M') {
echo 'Eres hombre.';
} else {
echo 'Eres mujer.;
}
?>
<?php
/*
Los estados aceptados por semforo son:
R: Rojo, A: Amarillo, V: Verde
*/
$semaforo = 'R';
if($semaforo == 'R') {
echo 'No puedes cruzar en rojo.';
} elseif($semaforo == 'A' {
echo 'Acelera o frena! Semforo en amarillo.';
} else {
echo 'En verde, adelante.';
}
?>
<?php
/*
Los estados aceptados por semforo son:
R: Rojo
A: Amarillo
V: Verde
*/
$semaforo = 'R';
switch($semaforo) {
case 'R':
echo 'No puedes cruzar en rojo.';
break;
case 'A':
echo 'Acelera o frena! Semforo en amarillo.';
break;
case 'V':
echo 'En verde, adelante.';
break;
default:
echo 'Color desconocido. Semforo averiado.';
}
?>
<?php
$error = 60003;
switch($error) {
case 60001:
echo 'Error de impresin'; break;
case 60002:
echo 'Error de comunicacin'; break;
case 60003:
echo 'Error de lectura'; break;
case 60004:
echo 'Error de grabacin'; break;
default:
echo 'Error desconocido'; break;
}
?>
Al iniciar este mdulo vimos como era posible recorrer una coleccin
de datos con la estructura foreach, ampliemos algo mas esa
definicin
<?php
$usuarios = array(
'Santiago',
'Pablo',
'Guadalupe',
'Alejandra',
'Celeste'
);
Esta es su salida:
<?php
for($i = 0 ; $i < 6; $i++)
echo "Linea #$i", PHP_EOL;
?>
Linea #0
Linea #1
Linea #2
Linea #3
Linea #4
Linea #5
<?php
$dinero = 450; // Euros
while($dinero > 0) { // Gasto 100 siempre que tenga dinero.
$dinero -= 100;
}
echo "Ya no puedes comprar tu balance es de $dinero euros.";
?>
<?php
// Balance inicial en negativo por culpa de la crisis.
$dinero = -120; // Euros
while($dinero > 0) { // Gasto 100 siempre que tenga dinero.
$dinero -= 100;
}
echo "Ya no puedes comprar tu balance es de $dinero euros.";
?>
<?php
// Balance inicial en negativo por culpa de la crisis.
$dinero = -70; // Euros
do {
$dinero -= 100; // Gasto 100, tenga o no dinero.
} while($dinero > 0); // Si tengo dinero, entonces continuo
gastando.
<?php
/*
Configuracin de la base de datos.
*/
define('BD_SERVIDOR', '127.0.0.1');
define('BD_NOMBRE', 'bd_socios');
define('BD_USUARIO', 'admin');
define('BD_CLAVE', 'admin123');
?>
<?php
include 'no_existo.php';
echo 'PHP mostrar una advertencia en la lnea anterior, y
tambin este mensaje';
?>
<?php
require 'no_existo.php';
echo 'PHP mostrar una advertencia en la lnea anterior y
nunca mostrar este mensaje';
?>
<?php
/*
El fichero de configuracin es absolutamente necesario
para continuar, por esa razn utilizamos require en lugar
de include.
*/
require 'config.php';
// Establecer conexin con la base de datos
$db = mysql_connect(BD_SERVIDOR, BD_USUARIO, BD_CLAVE);
// Seleccionamos la base de datos con la cual trabajar
mysql_select_db(BD_NOMBRE);
?>
Ejercicio 1
Ejercicio 2
Ejercicio 3
La suma de 23 y 13 es: 36
La resta de 23 y 13 es: 10
La multiplicacin de 23 y 13 es: 299
La divisin de 23 y 13: 1.77
Ejercicio 4
Ejercicio 5
Ejercicio 6
Ejercicio 7
Ejercicio 8
7x1=7
7 x 2 = 14
7 x 3 = 21
7 x 4 = 28
7 x 5 = 35
7 x 6 = 42
7 x 7 = 49
7 x 8 = 56
7 x 9 = 63
7 x 10 = 70
Ejercicio 9
Ejercicio 10
Conclusin
Mucha suerte!