Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introducción a PHP
http://www.pacoarce.com Pág 1
Introducción a PHP
http://www.pacoarce.com Pág 2
Introducción a PHP
Comando
"getdate"...................................................................................................................................................41
Comando
"mktime" ..................................................................................................................................................42
Validando
fechas
con
"checkdate" .....................................................................................................................44
Comando
"printf".......................................................................................................................................................46
Comando
"sprintf" ....................................................................................................................................................47
Comando
"number_format" ..................................................................................................................................47
Operaciones
básicas
de
strings ...........................................................................................................................48
Convertir
caracteres
especiales
de
texto
a
HTML .......................................................................................50
7-‐
Manejo
de
archivos .............................................................................................................................. 51
Verificar
si
existe
un
archivo ...............................................................................................................................51
Verificar
si
es
archivo
o
directorio.....................................................................................................................52
Propiedades
de
archivos ........................................................................................................................................52
Creando
y
borrando
un
archivo ..........................................................................................................................53
Abrir
y
cerrar
un
archivo .......................................................................................................................................54
Leer
un
archivo...........................................................................................................................................................55
Protegiendo
archivos
contra
escrituras
múltiples......................................................................................58
Operaciones
con
directorios.................................................................................................................................59
8
-‐
Galletas.................................................................................................................................................... 61
Creación
de
galletas..................................................................................................................................................61
Lectura
de
galletas ....................................................................................................................................................62
Borrar
una
galleta .....................................................................................................................................................63
9-‐
Acceso
a
base
de
datos ........................................................................................................................ 64
Conexión
al
servidor ................................................................................................................................................64
Conexión
a
la
base
de
datos ..................................................................................................................................64
Operaciones
básicas .................................................................................................................................................65
10-‐
Otros
recursos
Referencias
en
el
internet................................................................................. 67
http://www.pacoarce.com Pág 3
Introducción a PHP
<?php
print "Hola mundo!";
?>
<?php
print phpinfo();
?>
http://www.pacoarce.com Pág 4
Introducción a PHP
<html>
<head>
<title>Ejemplo de mezcla de HTML y PHP</title>
</head>
<body>
<br>
Este es un ejemplo de como mezclar código estático de HTML
y dinámico de PHP<br>
<br>
Esta parte es creada por el HTML.<br>
<br>
<?php
Comentarios
En todo lenguaje de programación es conveniente tener alguna forma de
incluir comentarios, letreros que indican alguna nota acerca del código o su
implementación.
http://www.pacoarce.com Pág 5
Introducción a PHP
1- Usando los caracteres "//": se usa para incluir una sola linea de comentarios
3- Usando los caracteres "/*" y "*/": se usa para incluir varias lineas de
comentarios
<?php
// este es mi primer programa de php
?>
Para el humano es muy difícil leer una serie de frases si no son separadas por
símbolos de puntuación Es por esto que en muchos lenguajes de
programación se usan caracteres especiales para separar las instrucciones y
hacer más claro el concepto. En algunos lenguajes se usa simplemente una
nueva linea para separar las instrucciones Pero otros lenguajes usan otros
caracteres siendo el mas usado el ";" ya que esto es herencia del lenguaje "C"
del cual provienen una gran cantidad de lenguajes comerciales actuales
Verdad que es difícil leer esto sin el uso de separadores?
Variables
Todo lenguaje de programación usa el concepto de "variables": las podemos
considerar recipientes o contenedores (cajitas) que guardan valores para ser
usados en la resolución de problemas. En la vida real, los humanos a
menudo usamos este tipo de apoyo, en forma de notas, tarjetas de
http://www.pacoarce.com Pág 6
Introducción a PHP
Por esto es que las variables deben de ser "bautizadas" con nombres que sean
indicativos del tipo de información que se guarda en esas "cajitas". Y es
mucho mejor aun si no repetimos esos nombres.
Ejemplos de VARIABLES:
$uno
$contador
$nombre_de_variable_un_poco_largo
$i
$esta_variable_no_es_igual_a_esta_otra
http://www.pacoarce.com Pág 7
Introducción a PHP
$Esta_variable_no_es_igual_a_esta_otra
$iva
$subtotal1
$subtotal2
$total
$123_ya_te_vi
Tipos de datos
Los tipos de datos o información que maneja el PHP se pueden resumir en lo
siguiente:
Enteros o "Integer" - Datos numéricos, pero sin incluir decimales. Optimo uso
son contadores. Ejemplos: 1, 2, 3, 5, 7, -11, -13,-17, -19, -23
"Ejemplos",
http://www.pacoarce.com Pág 8
Introducción a PHP
Valores de lógica básica o "Boolean" - Aquí solo existen dos posibles valores:
verdadero (true) o falso (false).
Operadores y expresiones
En los lenguajes de los humanos, se usan unas reglas para construir frases que
tengan sentido. Considere esto:
"porque veas a no no con prestes verás lo, Ossian, que nada todas son Tir na
n'Ög las atención maravillas estas en comparadasque".
$subtotal = 100;
$contador = $contador + 1;
$ancho = $largo * 100 / 500;
$i++;
http://www.pacoarce.com Pág 9
Introducción a PHP
Operadores Aritméticos
Operador Nombre Ejemplo Resultado
Operador de concatenación
Para "unir" cadenas de caracteres se usa el operador punto ".":
$letrerototote = $letrerito . " para " . $nombre . " " . $apellido . "<br>";
Operadores de comparación
Para comparar una cosa con otra y saber si el resultado es verdadero o falso se
usan estos operadores. Para los ejemplos, se asume que la variable $todo es
igual a 5.
Operador Nombre Es verdadero si... Ejemplo Resultado == igual a ambos
lados son iguales $todo == 5 true
http://www.pacoarce.com Pág 10
Introducción a PHP
Operadores booleanos
Cambio de tipo
Es posible "forzar" a que el resultado de una operación cambie de tipo,
como por ejemplo una división entre números con decimales regrese un
número entero. La manera mas fácil de forzar este cambio es así:
http://www.pacoarce.com Pág 11
Introducción a PHP
Precedencia
Como en los lenguajes humanos de occidente, los lenguajes de programación
modernos "leen" las expresiones de derecha a izquierda. Pero los operadores
tienen una precedencia o jerarquía establecida para su ejecución. Considere
esto:
$resultado = 3 + 2 * 5;
$resultado = (3 + 2) * 5;
$iva = 0.15;
print "Este ejemplo es menos primitivo que 'Hola mundo!'. El valor
del iva es
$iva<br>";
echo 'El comando "echo" es equivalente al comando "print" y se
http://www.pacoarce.com Pág 12
Introducción a PHP
pueden usar
indistintamente';
2. Control de flujo
La vida diaria esta llena de decisiones y rutinas. Levantarse, cepillar los
dientes, bañarse, desayunar, ir al trabajo, comer,hacerse "pato" en la
tarde, regresar a casa, cenar, ver TV o escuchar radio o leer algo, y
dormir.
Y en cada una de esta rutina mil y un decisiones que tomar: ¿me baño
primero o me lavo los dientes? ¿Desayuno huevos o soloun café? ¿Hay café?
¿Me voy por la supuesta vía rápida o por calles entre la ciudad? ¿Leo mi
correo o termino el reporte?¿Esta mi jefe en la oficina? ¿Qué como? ¿Cuanto
dinero traigo para comer? ...
Comando "if"
En un ejemplo anterior examinamos una situación parecida a esta: "Si haces
tu tarea puedes ir al cine". Este ejemplo de la vidareal contiene una condición,
que si se cumple trae una consecuencia. Pero de no cumplirse, no se hace
http://www.pacoarce.com Pág 13
Introducción a PHP
realidad dichaconsecuencia.
if ( expresión ) {
comando;
comando;
...
}
Ejemplo:
1 $edad = 45;
2 $bono = 2500;
3 $salario = 25000;
4 if ( $edad >= 40 ) {
5 $salario += $bono;
6 print "Su edad lo hace acreedor a un bono por antigüedad. Su nuevo sueldo
7 es
8 $salario <br>";
9 }
10 print "Su edad es $edad <br>";
Pruebe este código. Luego cambie el valor de la variable $edad y compare los
resultados.
El comando "if" tiene otra forma que incluye la instrucción equivalente a "de lo
contrario":
1 if ( expresión ) {
2 comando;
3 comando;
4 ...
5 } else {
6 otro comando;
http://www.pacoarce.com Pág 14
Introducción a PHP
7 otro comando;
8 }
Ejemplo:
1 $limite = 4;
2 $llegadas_tarde = 5;
3 $penalidad = 500;
4 $salario = 8000;
5 if ( $llegadas_tarde > $limite ) {
6 $salario -= $penalidad;
7 print "Por llegar tarde mas de $limite veces este mes, su nuevo sueldo es
8 $salario
9 <br>";
10 } else {
11 print "Su sueldo no fue modificado por su puntualidad este mes, y sigue
12 siendo de
13 $salario <br>";
14 }
15 print "Usted llegó tarde este mes $llegadas_tarde veces <br>";
1 $edad = 38;
2 $estado_civil = "casado";
3 if ( $edad < 40 ) {
4 print "Disfrute de nuestro crucero al caribe ";
5 if ( $estado_civil == "casado" ) {
6 print " en compañía de su familia ";
7 }
8 print " con un descuento especial y agradables sorpresas <br>";
9 } else {
10 print "Lo invitamos a nuestro retiro al campo, donde disfrutará de paz ";
11 if ( $estado_civil != "casado" ) {
12 print " de estar solo con usted mismo ";
13 } else {
14 print " de compartir con los suyos ";
15 }
16 print " en un increíble lago en lo alto de la montaña <br>";
17 }
18 print "Su edad es de $edad años y es usted $estado_civil <br>";
Pruebe este código y cambie los valores de las variables para comparar los
resultados.
Ejemplo:
http://www.pacoarce.com Pág 15
Introducción a PHP
1 $edad = 25;
2 if( $edad <= 20 ) {
3 print "Te regalamos boletos para el concierto de Marilyn Manson <br>";
4 }
5 if( $edad > 20 and $edad <= 30 ) {
6 print "Te regalamos unos boletos para ir al concierto de Moby <br>";
7 }
8 if( $edad > 30 and $edad <= 40 ) {
9 print "Te regalamos unos boletos para ir al teatro <br>";
10 }
11 if( $edad > 40 ) {
12 print "Te regalamos unos boletos para ir a la opera <br>";
13 }
14
Comando "switch"
Una alternativa a usar varios comandos "if" es el comando "switch". A
diferencia de los comandos "if", el comando "switch"solo puede evaluar una
sola expresión. Puede comprenderse este comando como un "separador de
monedas", ya que esosaparatos funcionan gracias a las variaciones del tamaño
de las monedas.
1 switch ( expresión ) {
2 case resultado1:
3 comando;
4 comando;
5
6
break;
7 case resultado2:
8 comando;
9 comando;
10 break;
11 case resultado3:
12 comando;
13 comando;
14 break;
15
16
default:
17 comando;
18 comando;
19 }
Ejemplo:
1 $estado_civil = "divorciado";
2 print "Lo invitamos a un viaje por el amazonas ";
3 switch ( $estado_civil ) {
4 case "soltero":
5 print " donde podrá conocer a otras personas en ";
6 break;
7 case "casado":
8 print " para que su familia viva ";
http://www.pacoarce.com Pág 16
Introducción a PHP
9 break;
10 case "divorciado":
11 print " en el que podrá olvidar sus problemas en ";
12 break;
13 case "arrejuntado":
14 print " para que se anime a tomar esa importante decisión en ";
15 break;
16 case "viudo":
17 print " para recordar los mejores momentos de su vida en ";
18 break;
19 default:
20 print " que le ayudará a definir su estado social gracias a ";
21 }
22 print " una extraordinaria experiencia de 2 semanas, todo incluido <br>";
¡Un "atajo" de un comando "if" con solo un comando para el caso "true" y
uno solo para el caso "false" lo proporciona esteoperador.
Ejemplo:
1 $total = 35000;
2 $tipo_de_cambio = 11.35;
3 $gran_total = ( $tipo_de_cambio > 0 ) ? $total * $tipo_de_cambio : $total;
4 $letrero = ( $tipo_de_cambio > 0 ) ? ", tipo de cambio " . $tipo_de_cambio
5 : "";
6 print "El gran total de su pedido es $gran_total $letrero <br>";
1 Comando "while"
2 La sintaxis básica para este comando es:
3 ************************************************************
4 while ( expresión ) {
5 comando;
6 comando;
7 ...
8 }
http://www.pacoarce.com Pág 17
Introducción a PHP
Ejemplo:
1 $contador = 0;
2 $veces = 7;
3 print "Se van a imprimir $veces números: <br>";
4 while ( $contador < 7 ) {
5 print " Número: $contador <br>";
6 $contador++;
7 }
8 print "Fin del ciclo, el contador vale $contador<br>";
1 do {
2 comando;
3 comando;
4 ...
5 } while ( expresión );
Ejemplo:
http://www.pacoarce.com Pág 18
Introducción a PHP
1 $contador = 0;
2 $veces = 7;
3 print "Se van a imprimir $veces
4 números: <br>";
5 do {
6 print " Número: $contador <br>";
7 $contador++;
8 } while ( $contador < 7 );
9 print "Fin del ciclo, el contador vale
10 $contador<br>";
Comando "for"
Como se observa en los ejemplos anteriores, es muy común usar una variable
"contador", la cual es inicializada en algún valor(en los ejemplos fue "cero") e
incrementada en un valor a cada vuelta del ciclo (en los ejemplos se
incrementó en "1").
La inicialización del contador solo se ejecuta una ves y nunca mas vuelve a
ejecutarse, antes de evaluar la expresión por vesprimera.
Ejemplo:
1 $veces = 7;
http://www.pacoarce.com Pág 19
Introducción a PHP
Ejemplo:
1 $veces = 7;
2 print "Se van a imprimir $veces números: <br>";
3 for ( $contador = 0 ; $contador < $veces ; $contador++ ) {
4 // aquí checo por una condición especial para terminar el ciclo
5 if ( $contador == 5 ) {
6 print "Se va a terminar el ciclo prematuramente <br>";
7 break;
8 }
9 print " Número: $contador <br>";
10 }
11 print "Fin del ciclo, el contador vale $contador<br>";
El comando "continue" sirve para saltarse un ciclo, sin terminar de ejecutar los comandos
restantes del ciclo.
Ejemplo:
1 $veces = 7;
2 print "Se van a imprimir $veces números: <br>";
3 for ( $contador = 0 ; $contador < $veces ; $contador++ ) {
4 // aquí checo por una condición especial para saltar un ciclo
5 if ( $contador == 4 ) {
6 print "Se va a saltar un ciclo <br>";
7 continue;
8 }
9 print " Número: $contador <br>";
10 }
11 print "Fin del ciclo, el contador vale $contador<br>";
http://www.pacoarce.com Pág 20
Introducción a PHP
3- Arreglos
Existen un tipo de "cajitas" que pueden contener mas de un valor
independiente a la ves, y se llaman "arreglos" (arrays). Estopuede visualizarse
como una caja de herramientas con compartimentos independientes, pero
todos unidos formando una sola"caja". No se pueden separar los
compartimentos de la caja principal, y ahí donde va la caja principal, van las
"cajitas" que estacontiene.
La variable tiene un solo nombre, pero las "cajitas" que contiene son
numeradas, desde el "cero" en adelante, para saberconque
compartimento se va a trabajar.
Creación de arreglos
2- Usando los caracteres "[" y "]" para ir llenando "el siguiente elemento" del
arreglo, comenzando en el elemento "cero":
$días[] = "Lunes";
$días[] = "Martes";
$días[] = "Miércoles";
$días[] = "Jueves";
$días[] = "Viernes";
$días[] = "Sábado";
$días[] = "Domingo";
$calificaciones[0] = 8;
$calificaciones[1] = 9;
$calificaciones[2] = 7;
$calificaciones[3] = 6;
http://www.pacoarce.com Pág 21
Introducción a PHP
su interior:
Esto muestra el mes "Abril". Recuerde que todos los elementos comienzan en
cero.
Ejemplo:
count(nombre-del-arreglo)
Ejemplo:
1 $elementos = count($días);
2 for( $contador = 0 ; $contador < $elementos ; $contador++ ) {
3 print "Elemento $contador del arreglo días = $días[$contador] <br>";
4 }
5 print "Fin del ciclo, el contador vale $contador <br>";
Para evitar todo este manejo de contadores, tamaño del arreglo y el uso de los
caracteres "[" y "]" se puede usar el comando"foreach" para recorrer todo un
arreglo.
La parte del "elemento" es una variable que se define en ese instante y va a servir
como "cajita provisional" para contener elvalor de cada elemento. La desventaja de
este método es que no se puede saber que numero de elemento es, salvo que
http://www.pacoarce.com Pág 22
Introducción a PHP
Ejemplo:
Ejemplos:
Ejemplo:
http://www.pacoarce.com Pág 23
Introducción a PHP
1 unset( $días[2] );
2 foreach( $días as $día ) {
3 print " $día <br> ";
4 }
5 print "Fin del ciclo <br>";
1 $busca = "Lunes";
2 $si_no = in_array( $busca, $días );
3 if( $si_no == false ) {
4 print "No existe la palabra $busca en el arreglo 'días' <br>";
5 } else {
6 print "Si existe la palabra $busca en el arreglo 'días' <br>";
7 }
Ordenando arreglos
A veces es necesario ordenar los elementos de un arreglo. Esto se logra fácilmente
con el comando "sort", el cual ordena todoslos elementos de un arreglo de manera
"ascendente", o "de menos a mayor".
1 sort($días);
2 foreach( $días as $día ) {
3 print " $día <br> ";
4 }
5 print "Fin del ciclo <br>";
http://www.pacoarce.com Pág 24
Introducción a PHP
Arreglos asociativos
No siempre es conveniente usar números para identificar los elementos de un
arreglo. Para el humano es mas fácil usar"letreros" o "nombres" para identificar las
cosas.
PHP permite crear arreglos cuyos elementos tienen nombres en ves de números.
Ejemplo:
1 $empleado = array (
2 nombre=>"Fulana de Tal",
3 puesto=>"Diseñadora",
4 edad=>28,
5 "proyecto actual"=>"pagina web"
6 );
2- Usando los caracteres "[" y "]" con un "nombre" en su interior para ir llenando
"el elemento nombre..." del arreglo:
Ejemplo:
1 $empleado[“nombre”] = "Fulana de Tal";
2 $empleado[“puesto”] = "Diseñadora";
3 $empleado[“edad”] = 28;
4 $empleado["proyecto actual"] = "pagina web";
Para mostrar todos los elementos de un arreglo asociativo se usa una pequeña
variante del comando "foreach". Ejemplo:
Ejemplo:
1 foreach( $empleado as $llave=>$valor ) {
2 print "El elemento $llave contiene $valor <br>";
3 }
4 print "Fin del ciclo <br>";
Ejemplo:
1 asort( $empleado );
2 foreach( $empleado as $llave=>$valor ) {
3 print "El elemento $llave contiene $valor <br>";
4 }
5 print "Fin del ciclo <br>";
http://www.pacoarce.com Pág 25
Introducción a PHP
4- Funciones
Una función es un bloque de código de PHP que no es ejecutado inmediatamente,
sino que puede ser "llamado" o ejecutadodesde el código "principal" varias veces.
Una función es la definición de una "rutina", que es probable que se vaya a ejecutar
muchas veces.
La vida real esta llena de rutinas que se ejecutan una y otra ves, pero rara ves la
"anotamos" una ves que la aprendemos. Pero alestar aprendiendo algunas rutinas de
la vida real, el humano se apoya apuntando la rutina para ejecutarla mas adelante
con esosapuntes. El caso típico es una receta de cocina.
Creación de funciones
La sintaxis general para crear o definir una función es la siguiente:
El nombre de las funciones sigue las reglas de los nombres de las variables, con
una excepción: el símbolo "$" al principio delnombre.
Los ingredientes son una lista de variables, separada por comas. Aquí es posible
crear una "receta de cocina" sin ingredientes,por mas extraño que parezca.
Ejemplo:
http://www.pacoarce.com Pág 26
Introducción a PHP
11 $calificaciones[1] = 9;
12 $calificaciones[2] = 7;
13 $calificaciones[3] = 6;
14 print "Se va a imprimir el contenido del arreglo 'calificaciones' <br>";
15 muestra_arreglo( $calificaciones );
16 print "Se va a imprimir el contenido del arreglo 'meses' <br>";
17 muestra_arreglo( $meses );
18 print "Fin de la rutina principal <br>";
Parámetros
A los ingredientes de la receta se les llama parámetros.
Las variables de la rutina principal se conocen como "globales", pero son muy
respetuosas y no se meten a las funciones amenos que las inviten.
Para invitar a una variable global en una función se usa el comando "global". La
sintaxis general es la siguiente:
global lista-de-variables;
Ejemplo:
http://www.pacoarce.com Pág 27
Introducción a PHP
7
8 $subtotal = 1500;
9 $tasa = 0.15;
10 $iva = 0;
11 print "Subtotal $subtotal <br>";
12 calcula_iva ( $subtotal, $tasa );
13 print "IVA $iva <br>";
14 $total = $subtotal + $iva;
15 print "Total $total <br>";
Regreso de valores
En el ejemplo de la compra del refresco, la "rutina" regresa un valor: el refresco.
¿Y que pasa si no hubo el sabor y tamañoespecificado? Si esto se le encargó a un
adulto es posible que tome una decisión en la tienda y traiga otro sabor y/o tamaño
derefresco. Pero un niño, o persona sin experiencia en esta rutina, regresará con las
manos vacías. Y aún esto es un resultado dela rutina: "No había de ese sabor,
mamá".
Las funciones pueden regresar un valor después de ser llamadas, pero solo pueden
regresar un valor directamente. Si se desea"simular" el regreso de varios valores, se
declaran variables globales y se modifican dentro de la función. Así, al terminar
lafunción dejará una "herencia" de variables globales modificadas.
Ejemplo:
http://www.pacoarce.com Pág 28
Introducción a PHP
http://www.pacoarce.com Pág 29
Introducción a PHP
5- Formas de HTML
Hasta ahora los ejemplos usados han usado el comando "print" para comunicar
algo al usuario: resultados de las rutinas. Peroel usuario ha estado "mudo", sin
posibilidad de una comunicación de dos vías con la rutina de PHP.
Todos los valores que recibe una rutina PHP son de tipo "string" (cadena de
caracteres), aun los valores numéricos que el
usuario final pudiera llegar a escribir.
2- Bautizar los elementos de la forma que van a ser evaluados por la rutina de PHP.
Ejemplo de Dreamweaver:
http://www.pacoarce.com Pág 30
Introducción a PHP
sin el "$".
Ejemplos de HTML:
http://www.pacoarce.com Pág 31
Introducción a PHP
Ejemplos de Dreamweaver:
variables
Nombre de la Contenidos lo que el usuario escriba en el campo
Tipostring
variable $nombre "nombre"
http://www.pacoarce.com Pág 32
Introducción a PHP
Para crear una variable de tipo arreglo, en el nombre del campo se deben incluir los
caracteres "[" y "]" al final del nombre.Esta opción es muy útil en las etiquetas
"<select>".
Campos ocultos
A veces es necesario incluir valores que sean asignados a una variable al mandar
una forma, pero sin que el usuario se entere.Para esto se usan los campos ocultos.
Supongamos que se desea pasar los nombres de las plantillas de HTML que se van
amostrar si hubo un error en el llenado de la forma, y otra cuando el llenado fue
exitoso.
Ejemplo de Dreamweaver:
Validaciones
Una ves recibidos los valores del usuario hay que validarlos antes de poder
procesarlos. Las validaciones son operacionesnecesarias en toda rutina, y
pueden llegar a consumir tiempo y esfuerzo. En esta sección se muestra un tipo
muy básico devalidaciones, solo como base para usarse en la vida real.
Para los campos de tipo texto, como nombre, dirección, contraseña, etc, lo primero
a validar es que contengan algo. El usuariopuede escribir solo espacios, y también
hay que validar esta situación.
http://www.pacoarce.com Pág 33
Introducción a PHP
Luego hay que checar si después de este "recorte" aun queda algo, o sea
probar si la variable está vacía o no. Esto puedehacerse de varias formas, y
aquí hay dos ejemplos:
Ejemplo:
1 if ( $nombre == "" ) {
2 // aquí va la rutina de error
3 comando;
4 comando;
5 ...
6 }
7 if ( strlen($nombre) == 0 ) {
8 // aquí va la rutina de error comando;
9 comando;
10 ...
11 }
En el caso de valores numéricos, como edad, precio, cantidades, etc, hay que
recordar que llegan a la rutina de PHP comocadena de caracteres. Así que la
primera validación es igual a la de los ejemplos anteriores. Pero luego hay que
convertir esosvalores a enteros (integer) o números con punto decimal (double) y
validar rangos.
http://www.pacoarce.com Pág 34
Introducción a PHP
Ejemplos:
Para las variables de tipo array, que se manejan en los combos de lista y los
cuadros de checado, lo primero a validar es siexiste el arreglo, ya que si el
usuario no selecciona ninguna opción, no se genera un arreglo vacío, sino que la
variable nisiquiera existe. En el caso de existir, es bueno saber cuantos
elementos tiene el arreglo.
Ejemplos:
1 // validar el arreglo $musica, que contiene los gustos musicales del usuario
2 if ( isset( $musica ) ) {
3 // si existe el arreglo, averiguo cuantos elementos tiene
4 $num_elementos = count( $musica );
5 } else {
6 // no existe el arreglo
7 $num_elementos = 0;
8 // el hecho de que no exista el arreglo no necesariamente
9 // genera un error, por eso no muestro una plantilla de error
10 }
http://www.pacoarce.com Pág 35
Introducción a PHP
Ejemplos:
1 // validación de nombre
2 $nombre = trim( $nombre );
3 if ( $nombre == "" ) {
4 // aquí muestro la plantilla de HTML que contiene la variable $error
5 // por el momento no le paso ningún parámetro, solo muestro la página
6 header( "location: $error");
7 // es indispensable terminar la ejecución de la rutina
8 exit;
9 }
10 // ejemplo de redirección a otra página, local
11 header( "location: menu.html" );
12 exit;
13 // ejemplo de redirección a otro sitio
14 header( "location: http://www.apple.com/quicktime/" );
15 exit;
http://www.pacoarce.com Pág 36
Introducción a PHP
<a href="ayuda.php">ayuda</a>
Ejemplo en Dreamweaver:
archivo_de_la_rutina.php?variable1=valor1&variable2=valor2&variable2=valor3
Se escribe el nombre del archivo que contiene la rutina de PHP, seguido del
caracter "?" y una lista de nombres de variables, elsímbolo "=" y el valor de esa
variable, separada por el caracter "&". Si algún valor lleva espacios, se deben usar
comillas oapóstrofes para delimitar el valor.
Ejemplos en HTML:
<a href="ayuda.php?tema=5&plantilla=ayuda_gral.html">ayuda</a>
<a href="ayuda.php?tema='llenado de
http://www.pacoarce.com Pág 37
Introducción a PHP
formas'&plantilla=ayuda_gral.html">ayuda</a>
Ejemplos en Dreamweaver:
http://www.pacoarce.com Pág 38
Introducción a PHP
6- Fechas y strings
En esta sección se cubren las instrucciones para manejo de horas y fechas, manejo
de cadenas de caracteres y ejemplos de usoscomunes en validación de fechas y
textos.
El manejo de hora y fecha es una herencia del Unix, y aunque el manejo interno
es muy sencillo, hay que entender el formato"nativo".
Afortunadamente, existen varios comandos para lidiar con esto y convertir las
horas y fechas entre los formatos interno y elformato que e humano está
acostumbrado.
Comando "time"
Para obtener la hora y fechas actuales, se usa la función integrada "time". Es
importante notar que este comando reporta lafecha del servidor donde se está
ejecutando la rutina de PHP, y no la fecha de la máquina del usuario.
$segundos = time();
Esta función por si sola no es muy útil para el humano, ya que no está
acostumbrado a ver el número de segundos desde unafecha arbitraria para saber
que día y que horas son.
Comando "date"
Afortunadamente existe una función que permite mostrar el número de segundos de
una manera familiar para el humano: date.Es importante saber que los nombres o
abreviaciones de meses y días de la semana se reportan generalmente en el
idiomainglés.
http://www.pacoarce.com Pág 39
Introducción a PHP
s segundos 07 , 45
http://www.pacoarce.com Pág 40
Introducción a PHP
1 $fecha = time();
2 $letrero = date ( "d/m/Y" , $fecha );
3 print "La fecha de hoy es $letrero <br>";
4 // esto imprime algo así: La fecha de hoy es 09/02/2003
5
6 $tiempo = time();
7 $hora = date ( "H:i:s" , $tiempo );
8 print "La hora es $hora <br>";
9 // esto imprime algo así: La hora es 09:58:37
10
11 $segundos = time();
12 $día = date( "l" , $segundos );
13 $dia2 = date( "j" , $segundos );
14 $mes = date( "F" , $segundos );
15 $anio = date( "Y" , $segundos );
16 $hora = date( "h" , $segundos );
17 $ampm = date( "A" , $segundos );
18 $mins = date( "i" , $segundos );
19 print "Hoy es $día $dia2 de $mes de $anio, y son las $hora $ampm con $mins
20 minutos...
21 buen día! <br>";
22 // esto imprime algo así: Hoy es Friday 18 de September de 1959, y son las 2
23 PM con
24 18 minutos... buen día!
Más adelante veremos como obtener los nombres de los días y meses en otro
idioma.
Comando "getdate"
Existe una manera de obtener los datos más comunes de hora y fecha, mediante la
función integrada "getdate".
http://www.pacoarce.com Pág 41
Introducción a PHP
Ejemplo:
Comando "mktime"
Cuando se desea saber que hora y fecha es, todo va muy bien hasta aquí.. Pero
que pasa cuando se desean hacer operacionescon fechas? El PHP solo entiende
de segundos, y nada más. Y que pasa si el usuario escribe una fecha, o una hora?
http://www.pacoarce.com Pág 42
Introducción a PHP
Ejemplo:
http://www.pacoarce.com Pág 43
Introducción a PHP
Ejemplo:
Para esto llega al rescate de los flojos el comando "checkdate". Se le pasan como
parámetros el mes, día y año y regresa unvalor booleano, indicando si la fecha es
válida o no (true o false).
http://www.pacoarce.com Pág 44
Introducción a PHP
Ejemplo:
http://www.pacoarce.com Pág 45
Introducción a PHP
Comando "printf"
Para "formatear" (arreglar, "vestir", "adornar", eso que tanto les agrada a los
humanos) un valor numérico de modo que seamás fácil su lectura, se usa la
función integrada "printf".
Finalmente, para los números con decimales, se puede incluir un "." seguido del
número de decimales a mostrar.
Todo esto parece un poco complicado, pero querían "arreglar" su salida, no?
Con unos cuantos ejemplos quedará claro esteenredado asunto.
Ejemplo:
1 $entero= 1500;
2 $enterototote = 568423597;
3 $pi = 3.141592653589793;
4 print "Este es el valor de 'pi': $pi <br>";
5 printf ( "Lo mismo, pero solo con dos decimales: %.2f <br>", $pi );
http://www.pacoarce.com Pág 46
Introducción a PHP
Comando "sprintf"
Esta variante del comando "printf" no manda el resultado al navegador del
usuario, sino que crea un "string" para ser guardadoy usado mas adelante.
Comando "number_format"
Este comando es muy usado para "formatear" valores numéricos de una manera
mas sencilla, y muy orientado a mostrarcantidades en formato de "moneda"
(pesos y centavos, pues). Solo incluye comas para separar miles, millones, etc, y
el númerode decimales indicado.
Ejemplo:
1 $entero = 1500;
2 $enterototote = 568423597;
3 $pi = 3.141592653589793;
4 $iva = 0.15;
5 $total1 = $entero * ( 1 + $iva );
6 $total2 = $enterototote * ( 1 + $iva );
7 $stotal1 = number_format ( $total1, 2 );
8 $stotal2 = number_format ( $total2, 2 );
9 $spi = number_format ( $pi, 6 );
10 //
11 print "El total 1 es: $ $stotal1 <br>";
12 print "El total 2 es: $ $stotal2 <br>";
13 print "pi es: $spi <br>";
http://www.pacoarce.com Pág 47
Introducción a PHP
Ejemplo:
Ejemplo:
Ejemplo:
http://www.pacoarce.com Pág 48
Introducción a PHP
Ejemplo:
1 $numero = 12548.3698;
2 $snumero = (string) $numero;
3 $busca = ".";
4 $comienza = strpos( $snumero, $busca );
5 if( $comienza === false ) {
6 print "No se encontro '$busca' en '$snumero' (no tiene decimales) <br>";
7 } else {
8 $enteros = substr( $snumero, 0, $comienza );
9 $decimales = substr( $snumero, $comienza+1 );
10 print "El numero $snum tiene esta parte entera: $enteros, y esta parte
11 decimal:
12
13 $decimales <br>";
14 }
Ejemplo:
Ejemplo:
1 // esta rutina supone que hay un campo en una forma de HTML llamado 'cantidad',
2 // que es la cantidad a pagar
http://www.pacoarce.com Pág 49
Introducción a PHP
El parámetro debe ser escrito tal y como se muestra en la sintaxis. Una ves
obtenida la tabla de caracteres especiales, hay quesustituir todos los caracteres
especiales de un string con el comando "strtr".
Ejemplo:
http://www.pacoarce.com Pág 50
Introducción a PHP
7- Manejo de archivos
El manejo de archivos es importante al manejar plantillas de HTML que
se van a mezclar con rutinas de PHP, y paraalmacenar y manejar datos si
no se cuenta con una base de datos.
Es importante señalar que al manipular archivos, se debe contar con los permisos
de acceso necesarios en el directorio detrabajo (o en el que se desean almacenar).
Se recomienda crear un directorio donde almacenar los archivos, para que solo
estedirectorio tenga permisos especiales que le permitan crear, grabar y modificar
archivos.
http://www.pacoarce.com Pág 51
Introducción a PHP
Ejemplo:
1 $archivo = "contador.txt";
2 $error = "error_archivo.html";
3 // antes de abrir y usar un archivo, checo si existe
4 if( ! file_exists( $archivo ) ) {
5 // archivo NO encontrado, mandar error
6 header( "location: $error " );
7 exit;
8 }
9 // aquí continuo trabajando con el archivo...
$si_no = is_file(nombre_del_archivo );
$si_no = is_dir( nombre_del_archivo );
Ejemplo:
Propiedades de archivos
Todos los archivos poseen ciertas propiedades, como tamaño y fechas de creación
y modificación. Estas cualidades se puedenobtener con los comandos "filesize",
"filectime" y "filemtime".
La sintaxis básica para estos comandos es:
$bytes = filesize( nombre_del_archivo );
$segundos = filectime( nombre_del_archivo );
$segundos = filemtime( nombre_del_archivo );
http://www.pacoarce.com Pág 52
Introducción a PHP
Ejemplo:
touch( nombre_del_archivo );
http://www.pacoarce.com Pág 53
Introducción a PHP
unlink( nombre_del_archivo );
Ejemplo:
1 // se va a abrir un archivo
2 $arch = "contador.txt";
3 touch( $arch );
4 // aquí se continúa la rutina ...
Letra Modo solo Descripciónabre un archivo solo para leer sus contenidos, no se pueden
r lectura cambiar ni borrar
solo abre un archivo borrando todo su contenido previo, y comienza a escribir
w
escritura desde el principio
abre un archivo sin borrar su contenido previo, y comienza a escribir al
a agregar
final
Una vez abierto un archivo, se pueden llevar a cabo las operaciones de lectura,
escritura o agregar (append). Es posible abrir ytrabajar con varios archivos al
mismo tiempo.
Ejemplo:
1 $arch = "contador.txt";
2 // se va a abrir el archivo para lectura
3 $archID = fopen( $arch, "r" );
4 // aquí sigue la rutina
http://www.pacoarce.com Pág 54
Introducción a PHP
comunicación, con el comando "fclose". La sintaxis básica para este comando es:
fclose( apuntador_al_archivo );
El parámetro "apuntador_al_archivo" es un entero que se obtuvo al abrir el archivo.
Ejemplo:
1 $arch = "contador.txt";
2 // se va a abrir el archivo para escritura, borrando contenidos anteriores
3 $archID = fopen( $arch, "w" );
4 // aquí van comandos de escritura
Leer un archivo
Cuando se abre un archivo en modo de lectura, los contenidos del archivo se
accesan con el comando "fgets". Este comandolee linea por linea del archivo,
donde una linea termina con el caracter "newline" o "\n".
Los archivos de texto creados en los sistemas Windows, Unix, Linux y algunos
programas de Mac OS X incluyen este caracterpara separar las líneas. Pero los
programas del sistema Mac OS 9 o menor, y algunos programas del sistema Mac
OS X, nogeneran este caracter para separar las lineas. Así que debe tener cuidado al
leer un archivo de texto creado bajo estascircunstancias.
Ejemplo:
1 $arch = "contador.txt";
2 // se va a abrir el archivo para lectura
3 $archID = fopen( $arch, "r" );
4 // por que será que siempre usan en este ejemplo el # 1024? todo un
5 misterio...
6 $linea = fgets( $archID, 1024 );
7 // aquí termino de usar el archivo y lo cierro
8 fclose( $archID );
En el ejemplo anterior, solo se lee una linea. ¿Qué pasa si se desea leer más
http://www.pacoarce.com Pág 55
Introducción a PHP
Ejemplo:
http://www.pacoarce.com Pág 56
Introducción a PHP
Ejemplo:
http://www.pacoarce.com Pág 57
Introducción a PHP
Para evitar que varios usuarios escriban sobre un archivo al mismo tiempo, se usan
los comandos "flock" y "is_writable". Estoscomandos evitan que otra rutina pueda
escribir en un archivo mientras se está actualizando.
$si_no=is_writable(nombre_de_archivo);
flock( apuntador_al_archivo, entero );
El comando "flock" siempre se usa en pares, uno para proteger el archivo y otro para liberarlo.
Estas operaciones se ejecutanjusto después de abrir el archivo y justo antes de cerrarlo.
Ejemplo:
http://www.pacoarce.com Pág 58
Introducción a PHP
23 }
24
25 // incremento el contador en 1
26 $contador++;
27
28 // ahora grabo el contador, destruyendo el valor anterior
29
30 // pero primero checo si el archivo se puede escribir
31 $bandera = false;
32 $máximo = 120000;
33 $contador = 0;
34
35 // esta parte se deja de tarea entender que hace... :-)
36 while ( ! $bandera ) {
37
38 if( is_writabe( $arch ) ) {
39 $bandera = true;
40 break;
41
42 }
43 $contador++;
44 if( $contador > $máximo ) {
45
46 break;
47 }
48 }
49
50
51 // si el archivo se puede escribir...
52
53 if( $bandera ) {
54 // abro el archivo
55 $archID = fopen( $arch, "w" );
56
57 // lo protejo contra escritura
58 flock( $archID, 2 );
59
60 // escribo el contador
61 fwrite( $archID, $contador );
62
63 // quito el candado
64 flock( $archID, 3 );
65
66 // cierro el archivo
67 fclose( $archID );
68 }
http://www.pacoarce.com Pág 59
Introducción a PHP
Ejemplo:
http://www.pacoarce.com Pág 60
Introducción a PHP
8 - Galletas
Las galletas son pequeñas cantidades de información que se guardan en la
computadora del usuario. De manera general, solo elservidor que guardó una
galleta puede leerla o modificarla.
El uso mas común de las galletas es guardar preferencias de los usuarios o datos
de acceso a un sistema (como IDs, passwords,etc.). Para evitar guardar datos de
cientos o miles de usuarios en un servidor, se usa la computadora de cada usuario
para queahí se guarden estas pequeñas cantidades de información.
Cada servidor puede crear hasta 20 galletas para su uso, y cada galleta tiene un
valor máximo de 4 Kbytes. Solo al mandarinformación de la rutina de PHP al
usuario final es posible crear la galleta en la maquina del usuario (comandos
"print","printf", "echo", "header").
Creación de galletas
-Nombre de la galleta: un string que se adhiera a las reglas de los nombres de las
variables. El nombre de la galleta va a crear una variable global con el mismo
nombre.
-Valor de la galleta: un string que contenga los datos a guardar. Es común usar
un caracter "separador" si se desea guardar datos con una estructura.
-Ruta: define el "área" del sitio donde esta galleta será mandada al servidor, cada
ves que se accesa una página dentro de esta ruta. Si se desea mandar la galleta
para todo el sitio, se usa "/".
http://www.pacoarce.com Pág 61
Introducción a PHP
-Dominio: define los dominios a los cuales se va a mandar la galleta. Como esto
restringe el mandar la galleta solo desde ciertos dominios, generalmente se
omite al crear galletas de uso "universal". Si no se desea especificar un dominio,
se usa unstring vacío ("") o se omite el parámetro.
Para crear una galleta desde una rutina de PHP se usa el comando "setcookie".
Ejemplo:
Lectura de galletas
Para leer una o varias galletas guardadas, es necesario que el usuario ejecute una
rutina de PHP. Esto hace que todas lasgalletas activas generen variables globales
con el mismo nombre de la galleta. Si la galleta ya no es válida, no se crea
lavariable.
Ejemplo:
1 // código principal
2 ...
3 // checar si existe la variable "$misitio_prefs"
4 if( isset( $misitio_prefs ) ) {
5 // la galleta existe, se va a leer y separar su valor
http://www.pacoarce.com Pág 62
Introducción a PHP
Para borrar una galleta, la manera más segura es crear la galleta con el mismo
nombre, con un valor "vacío" y una fecha deexpiración "vencida".
Ejemplo:
http://www.pacoarce.com Pág 63
Introducción a PHP
Conexión al servidor
Para establecer una conexión al servidor de base de datos se usa el comando
"mysql_connect" o "mysql_pconnect". El segundocomando es mas usado en
conexiones desde paginas web.
Ejemplo:
http://www.pacoarce.com Pág 64
Introducción a PHP
esto es "mysql_select_db".
Ejemplo:
1 Ejemplo:
2 $usuario = "folderx";
3 $pwd = "unobiendificil";
4 $servidor = "localhost";
5 $db = "empleados";
6
7 $link = mysql_pconnect( $servidor, $usuario, $pwd );
8
9 if( ! $link ) {
10 header( "location: error_mysql.html" );
11 exit;
12
13 }
14
15 if( ! mysql_select_db( $db ) ) {
16 header( "location: error_mysql.html" );
17 exit;
18
19 }
Operaciones básicas
En general solo existen 4 operaciones básicas que se pueden realizar con una base
de datos:
http://www.pacoarce.com Pág 65
Introducción a PHP
Está fuera del alcance de este curso explicar a detalle los siguientes ejemplos:
Ejemplo:
http://www.pacoarce.com Pág 66
Introducción a PHP
http://www.pacoarce.com Pág 67