13.05.2013 Views

TUTORIAL DE PHP - Erika Vilches

TUTORIAL DE PHP - Erika Vilches

TUTORIAL DE PHP - Erika Vilches

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>TUTORIAL</strong> <strong>DE</strong> <strong>PHP</strong><br />

M. en C. <strong>Erika</strong> <strong>Vilches</strong>


Scripting del Lado del<br />

Servidor<br />

<strong>PHP</strong>: Acrónimo recursivo → <strong>PHP</strong>: Hypertext Preprocessor<br />

El módulo <strong>PHP</strong> se adjunta al servidor web, diciéndole<br />

que los archivos con una determinada extensión deben<br />

ser examinados por código <strong>PHP</strong>.<br />

Cualquier código <strong>PHP</strong> encontrado en la pagina es<br />

ejecutado y reemplazado por la salida que produce antes<br />

de que la página web se envíe al browser.<br />

archivo.php → Interpretado por <strong>PHP</strong><br />

archivo.html → Pasado directamente al browser


El único momento en que se llama al intérprete de<br />

<strong>PHP</strong> → cuando se carga una página web.<br />

<strong>PHP</strong> no puede hacer validación del lado del cliente.<br />

Validación del lado del cliente → JavaScript, lenguaje<br />

que corre dentro del browser mismo<br />

Es posible utilizar JavaScript en conjunto con <strong>PHP</strong>.<br />

<strong>PHP</strong> no depende del browser utilizado en absoluto.


Etiquetas <strong>PHP</strong><br />

Considere el siguiente pedazo de una página web <strong>PHP</strong><br />

que despliega la fecha actual:<br />

Today is <br />

La etiqueta <br />

que cierra.<br />

En este ejemplo, el comando echo le indica a <strong>PHP</strong> que<br />

despliegue el siguiente elemento a pantalla.<br />

El comando date produce una versión formateada de la<br />

fecha actual que contiene el día, mes y año


El caracter “punto y coma” es utilizado para indicar el<br />

fin de un comando <strong>PHP</strong>.<br />

Otros estilos de etiqueta incluyen:<br />

La etiqueta corta<br />


Ejemplo de Script<br />

Crear un nuevo archivo llamado time.php que contenga<br />

lo siguiente:<br />

The time is<br />

<br />

and the date is<br />

<br />

Ubicar el archivo en un lugar donde pueda ser accedido<br />

por un servidor web con <strong>PHP</strong> habilitado.<br />

Cuando se indica el URL a este archivo en el browser, se<br />

debe ver la fecha y hora actuales, de acuerdo al reloj del<br />

sistema del servidor web.


<strong>PHP</strong> de Manera Local<br />

El código <strong>PHP</strong> en un script se ejecutara solamente si se accede<br />

a través de un servidor web que tenga el módulo <strong>PHP</strong><br />

habilitado.<br />

Si se abre el script directamente en el browser ya sea<br />

arrastrando el archivo o con doble click, será tratado como si<br />

solo contuviera HTML.<br />

En caso de que se utilice una instalación predeterminada de<br />

Apache en Windows, el archivo time.php deberá estar<br />

localizado en el folder:<br />

C:\Program Files\Apache Group\Apache\htdocs<br />

y el URL correcto sería:<br />

http://localhost/time.php


Si se escribe el código de time.php tal como se mostró,<br />

nos damos cuenta que la salida puede ser formateada de<br />

mejor manera, ya que no hay espacio entre el tiempo y<br />

la palabra and.<br />

The time is<br />

<br />

and the date is<br />

The time is<br />

23:28:36and the date is<br />

time.php<br />

23 March 2008<br />

The time is 23:28:36and the date is 23 March 2008<br />

Browser<br />

View Source<br />

Cualquier línea en un script que solamente contenga<br />

código dentro de etiquetas <strong>PHP</strong> no tomará una línea de<br />

salida en el HTML generado.<br />

Si se inserta un espacio después del ?>, ahora la línea<br />

contiene elementos que no son <strong>PHP</strong> y la salida tiene el<br />

formato correcto.


El comando echo<br />

Es posible que la página entera consista de un conjunto<br />

de instrucciones <strong>PHP</strong> para generar la salida.<br />

El comando echo se utiliza para enviar una salida al<br />

browser.<br />

Reescribiendo time.php como un solo bloque de código<br />

<strong>PHP</strong> con una serie de comandos echo nos queda:<br />

<br />

time.php<br />

The time is 23:34:52 and the date is 23 March 2008<br />

Browser<br />

The time is 23:34:52 and the date is 23 March 2008<br />

View Source


Los elementos no dinámicos que se quieren sacar se<br />

colocan entre comillas.<br />

Para encerrar strings se pueden utilizar comillas dobles “<br />

” o comillas simples ‘ ’<br />

Los siguientes enunciados son igualmente válidos:<br />

echo "The time is ";<br />

echo 'The time is ';<br />

Note que los caracteres de espacio se utilizan en estos<br />

enunciados dentro de las comillas para colocar un<br />

espacio entre el texto y la salida de la función date.<br />

En el browser, la salida de ambas formas de time.php es la<br />

misma porque en HTML, todo el espacio en blanco<br />

(enters, espacios o tabs múltiples) se despliega como un<br />

solo espacio en blanco.


Comentarios<br />

Un comentario es un pedazo de texto libre que puede<br />

aparecer en cualquier parte de un script y es ignorado<br />

completamente por <strong>PHP</strong><br />

Los // estilos # de comentario disponibles son los siguientes:<br />

o → Comentarios de una sola línea. Cualquier<br />

cosa /* ... hasta */ el final de la línea es ignorado<br />

→ Comentarios /* */<br />

de una o varias líneas. Cualquier<br />

cosa entre y es ignorado.


time.php con comentarios:<br />


Variables<br />

Las variables son contenedores en los que se pueden<br />

almacenar valores que pueden ser recuperados mas<br />

tarde.<br />

$number = 5;<br />

$name = "Chris";<br />

En <strong>PHP</strong> el nombre de una variable siempre lleva como<br />

prefijo el signo de pesos $.<br />

Declarar una variable → nombre de la variable a la<br />

izquierda, signo de =, valor que tomara a la derecha.


Las variables se pueden utilizar en lugar de valores fijos.<br />

Ejemplo: echo para desplegar el valor almacenado en<br />

una variable de la misma forma que se desplegaría un<br />

texto fijo.<br />

$name = "Chris";<br />

echo "Hello, ";<br />

echo $name;<br />

Hello, Chris<br />

Las variables son sensibles al uso de mayúsculas y<br />

minúsculas, por lo tanto $name es diferente que $Name<br />

Los nombres de las variables pueden contener<br />

solamente letras, números, y guión bajo y pueden<br />

empezar solamente con una letra u un guión bajo.<br />

Nombres<br />

Válidos →<br />

$percent<br />

$first_name<br />

$line_2<br />

→<br />

Nombres<br />

Inválidos →<br />

$pct%<br />

$first-name<br />

$2nd_line


Expresiones<br />

En la asignación de una variable, el valor dado no<br />

necesita ser un valor fijo, puede ser una expresión (dos o<br />

más valores combinados usando un operador para<br />

producir un resultado)<br />

Ejemplo:<br />

$sum = 16 + 30;<br />

echo $sum;<br />

≡<br />

$a = 16;<br />

$b = 30;<br />

$sum = $a + $b;<br />

echo $sum;<br />

→<br />

46


Variables en Strings<br />

El signo de pesos $ en un string con comillas dobles “ ”<br />

indica que el valor de esa variable debe convertirse en<br />

parte del string.<br />

En un string con comillas sencillas ‘ ’, el signo de pesos $<br />

es tratado como un caracter literal, y no se hace<br />

referencia a ninguna variable.<br />

Ejemplo:<br />

$name = "Chris";<br />

echo "Hello, $name";<br />

→<br />

$name = 'Chris';<br />

echo 'Hello, $name'; →<br />

Hello, Chris<br />

Hello, $name


En ocasiones se requiere indicarle a <strong>PHP</strong> exactamente<br />

donde inicia y termina una variable, para esto se utilizan<br />

llaves { }.<br />

Ejemplo: Se desea desplegar un valor de peso con un<br />

sufijo para indicar libras o onzas.<br />

echo "The total weight is {$weight}lb";<br />

Sin las llaves, <strong>PHP</strong> habria tratado de buscar el valor de<br />

la variable $weightlb.<br />

Se puede obtener el mismo efecto utilizando el<br />

operador de concatenación, el punto, que se puede<br />

utilizar para unir dos o mas strings:<br />

echo 'The total weight is ' . $weight . 'lb'; →<br />

The total weight is 99lb


Enunciados Condicionales<br />

Inicia con la palabra clave if seguida de una condición<br />

entre paréntesis$number<br />

= 5;<br />

if ($number < 10) {<br />

echo "$number is less than ten";<br />

}<br />

Si la condición es verdadera, el código entre llaves se<br />

ejecutará.<br />

Un valor de cero en <strong>PHP</strong> es considerado FALSE, y<br />

cualquier valor distinto de cero es considerado TRUE.


Las llaves se utilizan en <strong>PHP</strong> para agrupar bloques de<br />

código.<br />

En un enunciado condicional, las llaves encierran el<br />

bloque de código que será ejecutado si la condición es<br />

verdadera.<br />

No se requiere tener llaves después de un enunciado if.<br />

Si se omiten, el siguiente enunciado unitario es<br />

ejecutado si la condición es verdadera.


Operadores Condicionales<br />

== Es igual a<br />

=== Es idéntico a (es igual y es el mismo tipo de dato)<br />

!= No es igual a<br />

!== No es idéntico a<br />

< Menor que<br />

Mayor que<br />

>= Mayor que o igual a


Operadores Lógicos<br />

Se pueden combinar dos o más expresiones para<br />

verificar dos o más criterios en un solo enunciado<br />

condicional<br />

$number = 8;<br />

if ($number >= 5 and $number


! a NOT Verdadero si a no es verdadero<br />

a && b AND Verdadero si a y b son verdaderos<br />

a || b OR Verdadero si a o b es verdadero<br />

a and b AND Verdadero si a y b son verdaderos<br />

a xor b XOR<br />

Operadores Lógicos<br />

Verdadero si a o b son verdaderos, pero no<br />

ambos<br />

a or b OR Verdadero si a o b es verdadero


La diferencia entre and y && y entre or y || es la precedencia<br />

utilizada para evaluar expresiones.<br />

En la tabla se muestran primero los operadores de mayor<br />

precedencia.<br />

Las siguientes expresiones, aparentan hacer lo mismo, sin<br />

embargo son sutil pero significativamente diferentes:<br />

a or b and c<br />

a || b and c<br />

En la primer condición, el and tiene mayor precedencia y es<br />

evaluado primero. Toda la condición es verdadera si a es<br />

verdadero o si ambos b y c son verdaderos.<br />

En la segunda condición, el || tiene precedencia, por lo que c<br />

debe ser verdadero y ya sea a o b, para satisfacer la<br />

condición.


Ramas de Condición<br />

Múltiples<br />

Utilizando una cláusula else con un if, se puede<br />

especificar la acción alternativa a ser tomada si la<br />

condición no se cumple<br />

$number = 16;<br />

if ($number < 10) {<br />

echo "$number is less than ten";<br />

}<br />

else {<br />

echo "$number is more than ten";<br />

}<br />

Para añadir mas ramas a un enunciado condicional se<br />

utiliza la palabra clave elseif, para añadir una condición<br />

que sera verificada solo si la condición previa en la<br />

sentencia falló.


Ejemplo: Utilizar la función date para encontrar la hora<br />

del día y desplegar un saludo apropiado.<br />

$hour = date("H");<br />

if ($hour < 12) {<br />

echo "Good morning";<br />

}<br />

elseif ($hour < 17) {<br />

echo "Good afternoon";<br />

}<br />

else {<br />

echo "Good evening";<br />

}<br />

En <strong>PHP</strong> es posible escribir elseif como dos palabras:<br />

else if. La forma en que <strong>PHP</strong> lo interpreta es<br />

ligeramente distinta pero el comportamiento es el<br />

mismo.


La Sentencia Switch<br />

Una sentencia if puede contener tantos elseif como<br />

requiera, sin embargo utilizar demasiadas de estas<br />

sentencias puede crear código dificil de leer.<br />

La alternativa es utilizar la sentencia switch.<br />

switch ($name) {<br />

case "Damon":<br />

case "Shelley":<br />

echo "Welcome, $name, you are my friend";<br />

break;<br />

case "Adolf":<br />

case "Saddam":<br />

echo "You are no friend of mine, $name";<br />

break;<br />

default:<br />

echo "I do not know who you are, $name";<br />

}


Puede haber cualquier número de sentencias case<br />

antecediendo el código <strong>PHP</strong> al que se relacionan.<br />

Si el valor que esta siendo probado por el switch<br />

concuerda con cualquiera de ellos, cualquier código<br />

<strong>PHP</strong> que siga será ejecutado hasta que se encuentre un<br />

comando break.


El Ciclo While<br />

Toma una condición entre paréntesis y el bloque de<br />

código que sigue es repetido mientras esa condición sea<br />

TRUE.<br />

Si la condición es FALSE de inicio, el bloque de código<br />

no se ejecutará.<br />

Ejemplo: Desplegar los números del 1 al 10 al cuadrado.<br />

$count = 1;<br />

while ($count


El Ciclo Do<br />

Muy similar al while excepto que la condición viene<br />

despues que el ciclo de código a repetir.<br />

Por esta variación, el bloque de código se ejecuta al<br />

menos una vez aun cuando la condición sea inicialmente<br />

falsa.<br />

$count = 1;<br />

do {<br />

$square = $count * $count;<br />

echo "$count squared is $square ";<br />

$count++;<br />

} while ($count


El Ciclo For<br />

Forma compacta de crear un ciclo<br />

for ($count = 1; $count


Saliendo de un Ciclo con<br />

Break<br />

Se puede utilizar la sentencia break en un ciclo para<br />

decirle a <strong>PHP</strong> que salga inmediatamente del ciclo y<br />

continue con el resto del script.<br />

La palabra continue es utilizada para terminar la pasada<br />

actual de un ciclo. El script brinca de nuevo al inicio del<br />

mismo ciclo y continua la ejecución hasta que la<br />

condición falle.


Funciones<br />

Una función se utiliza para hacer una tarea que puede<br />

consistir de muchas lineas de código en una rutina que<br />

puede ser llamada utilizando una sola instrucción.<br />

<strong>PHP</strong> tiene una amplia gama de funciones que llevan a cabo<br />

diversas tareas útiles. Algunas de ellas se encuentran<br />

disponibles en el lenguaje <strong>PHP</strong>, y otras, mas especializadas,<br />

solo están disponibles si ciertas extensiones se activan<br />

cuando se instala <strong>PHP</strong>.<br />

Referencia invaluable → www.php.net<br />

Shortcut para una función → www.php.net/function_name


Ya hemos utilizado la función date para generar un<br />

string que contiene una version formateada de la fecha<br />

actual.<br />

echo date('j F Y');<br />

El manual en línea de <strong>PHP</strong> da el prototipo para date así:<br />

string date (string format [, int timestamp])<br />

Esto significa que la función date toma un argumento<br />

llamado format y opcionalmente el entero timestamp.<br />

Regresa un valor en un string.


Definiendo Funciones<br />

Ejemplo de la definición de una función en <strong>PHP</strong>:<br />

function add_tax($amount) {<br />

$total = $amount * 1.09;<br />

return $total;<br />

}<br />

$price = 16.00;<br />

echo "Price before tax: $price ";<br />

echo "Price after tax: ";<br />

echo add_tax($price);<br />

→<br />

→<br />

Price before tax: 16<br />

Price after tax: 17.44<br />

Genera una página web<br />

que contiene información<br />

sobre el módulo <strong>PHP</strong>


Ejemplo: Utilizar la función mail para intentar enviar un<br />

email desde un script de <strong>PHP</strong>.<br />

Los primeros tres argumentos especifican la cuenta de<br />

correo a la que se enviara el correo, el titulo del correo,<br />

y el cuerpo del mismo.<br />

El valor que regresa esta función se utiliza en un if para<br />

verificar si el correo fue enviado exitosamente.<br />

if (mail("chris@lightwood.net",<br />

"Hello", "This is a test email")) {<br />

echo "Email was sent successfully";<br />

}<br />

else {<br />

echo "Email could not be sent";<br />

}<br />

Si el servidor web en el que se corre este script no esta<br />

correctamente configurado para enviar correos, o si hay<br />

algun error al tratar de enviar el mail regresará cero.


Argumentos<br />

Predeterminados<br />

El prototopo de mail indica que toma 3 argumentos y un<br />

4to argumento opcional (headers adicionales).<br />

Si llamamos a mail con muy pocos argumentos, nos<br />

mostrara un warning:<br />

mail("chris@lightwood.net", "Hello");<br />

Warning: mail() expects at least 3 parameters, 2 given in<br />

/home/chris/mail.php on line 3<br />

Formas correctas de llamar a mail:<br />

mail("chris@lightwood.net", "Hello", "This is a test email");<br />

mail("chris@lightwood.net", "Hello", "This is a test email",<br />

"Cc: editor@samspublishing.com");


Cuando definimos una función, si queremos tener más<br />

de un argumento, separamos las variables con comas.<br />

Para hacer alguno de esos argumentos opcional, se le<br />

asigna un valor predeterminado en la lista de<br />

argumentos, de la misma forma que se asigna un valor a<br />

una variable.<br />

Ejemplo: en la función de tax_rate, añadir un argumento<br />

rate opcional, con valor predeterminado de 10.<br />

function add_tax_rate($amount, $rate=10) {<br />

$total = $amount * (1 + ($rate / 100));<br />

return($total);<br />

}<br />

add_tax_rate(16);<br />

add_tax_rate(16, 9);<br />

→ Ambas son válidas


Todos los argumentos opcionales deben aparecer al final<br />

de la lista de argumentos.


Arreglos<br />

Contienen muchas variables similares<br />

En lugar de tener muchas variables similares, se pueden<br />

almacenar los datos como elementos en un arreglo.<br />

Cada elemento tiene su propio identificador, de forma<br />

que pueda ser fácilmente accedido.


Tipos de Arreglos<br />

Numéricos → Un arreglo con una llave numérica<br />

Asociativos → Un arreglo en donde cada llave esta<br />

asociada con un valor<br />

Multidimensionales → Un arreglo que contiene uno o<br />

más arreglos


Arreglos Numéricos<br />

Almacena cada elemento con una llave numérica.<br />

Formas de crearlo:<br />

$names = array("Peter","Quagmire","Joe");<br />

Llave asignada<br />

automáticamente<br />


Arreglos Asociativos<br />

Cada llave esta asociada con un valor.<br />

Cuando se almacena información sobre valores con un<br />

nombre específico, un arreglo numérico no es siempre la<br />

mejor manera de hacerlo.<br />

Con los arreglos asociativos, podemos utilizar los valores<br />

como llaves y asignarles valores.<br />

Ejemplo: Arreglo para asignar edades a diferentes personas:<br />

$ages = array("Peter"=>32, "Quagmire"=>30, "Joe"=>34);<br />

$ages['Peter'] = "32";<br />

$ages['Quagmire'] = "30";<br />

$ages['Joe'] = "34";


Ejemplo:<br />

<br />

→<br />

Peter is 32 years old.


Arreglos Multidimensionales<br />

Cada elemento en el arreglo principal puede ser<br />

también un arreglo<br />

Cada elemento en el sub-arreglo puede ser también un<br />

arreglo, etc...


Ejemplo: Crear un arreglo multidimensional, con llaves<br />

autoasignadas.<br />

$families = array<br />

(<br />

"Griffin"=>array<br />

(<br />

"Peter",<br />

"Lois",<br />

"Megan"<br />

),<br />

"Quagmire"=>array<br />

(<br />

"Glenn"<br />

),<br />

"Brown"=>array<br />

(<br />

"Cleveland",<br />

"Loretta",<br />

"Junior"<br />

)<br />

);<br />

Si lo<br />

imprimiéramos →<br />

echo "Is " . $families['Griffin'][2] .<br />

" a part of the Griffin family?"; →<br />

Array<br />

(<br />

[Griffin] => Array<br />

(<br />

[0] => Peter<br />

[1] => Lois<br />

[2] => Megan<br />

)<br />

[Quagmire] => Array<br />

(<br />

[0] => Glenn<br />

)<br />

[Brown] => Array<br />

(<br />

[0] => Cleveland<br />

[1] => Loretta<br />

[2] => Junior<br />

)<br />

)<br />

Is Megan a part of the Griffin family?


Formas y User Input<br />

Cualquier forma en una página HTML estará<br />

automáticamente disponible para los scripts <strong>PHP</strong>.<br />

Ejemplo:<br />

<br />

<br />

<br />

Name: <br />

Age: <br />

<br />

<br />

<br />

<br />

Output →<br />

<br />

<br />

Welcome .<br />

You are years old.<br />

<br />

<br />

welcome.php<br />

Welcome John.<br />

You are 28 years old.


Las variables $_GET y $_POST se utilizan para<br />

recuperar información de las formas, tal como el user<br />

input.


$_GET<br />

La variable $_GET es utilizada para recuperar valores de<br />

una forma enviados con el método “get”<br />

Es un arreglo de nombres de variables y valores enviados<br />

por el método HTTP GET.<br />

La información enviada con el método get es visible<br />

para todo el mundo (se desplegará en la barra de<br />

direcciones del browser) y tiene limites en la cantidad<br />

de información que puede enviar (Máx. 100 caracteres).


Ejemplo:<br />

Cuando el usuario de<br />

click en “Submit” →<br />

Ahora welcome.php<br />

puede usar la variable<br />

$_GET para obtener<br />

los datos de la forma<br />

<br />

Name: <br />

Age: <br />

<br />

<br />

http://www.erikavilches.com/welcome.php?name=Peter&age=37<br />

→<br />

Welcome .<br />

You are years old!<br />

Los nombres de los campos de la forma son<br />

automáticamente las llaves del arreglo $_GET


$_REQUEST<br />

Contiene los contenidos de $_GET, $_POST y<br />

$_COOKIE<br />

Se puede usar para obtener el resultado de información<br />

enviada con los métodos GET o POST.<br />

Ejemplo: Welcome .<br />

You are years old!


$_POST<br />

Para recolectar valores de una forma enviados con el<br />

método POST (method=“post”).<br />

La información enviada con el método POST es<br />

invisible para otros (no se muestra en el URL) y no tiene<br />

limites en la cantidad de información a enviar.


Ejemplo:<br />

Cuando el usuario de<br />

click en “Submit” →<br />

Ahora welcome.php<br />

puede usar la variable<br />

$_POST para obtener<br />

los datos de la forma<br />

<br />

Enter your name: <br />

Enter your age: <br />

<br />

<br />

→<br />

http://www.erikavilches.com/welcome.php<br />

Welcome .<br />

You are years old!<br />

Los nombres de los campos de la forma son<br />

automáticamente las llaves del arreglo $_POST<br />

$_REQUEST →<br />

Welcome .<br />

You are years old!


Conectarse a una Base de<br />

Datos<br />

Esto se hace con la función mysql_connect().<br />

mysql_connect(servername,username,password);<br />

servername → Opcional. Especifica el servidor al cual se<br />

conectará. El valor default es "localhost:3306"<br />

username → Opcional. Especifica el usuario con el que ser<br />

loggeara. El valor default es el nombre del usuario al que<br />

pertenece el proceso del servidor web.<br />

password → Opcional. Especifica el password con el que se<br />

loggeara. El default es “”


Hay más parametros pero los que se han mencionado<br />

son los mas importantes.<br />

mysql_error() regresa el texto del mensaje de error de la<br />

operación previa en MySQL<br />

Ejemplo: Almacenar la conexión en la variable $con para<br />

utilizarla despues en el script. Ejecutar “die” si la<br />

conexión falla; die es equivalente a exit(). No evita que<br />

los destructores corran.<br />


Cerrando una conexión<br />

La conexión se cierra tan pronto como termina el script.<br />

Para terminar la conexión antes, utilizar la función<br />

mysql_close().<br />

Ejemplo:<br />


Crear una Base de Datos<br />

Se utiliza la función mysql_query() para enviar un query<br />

o comando a una conexión MySQL.<br />

Ejemplo: Crear una base llamada my_db.<br />


Crear una Tabla<br />

Ejemplo: Crear una tabla llamada “person”, con tres<br />

columnas. Los nombres de las columnas serán<br />

“FirstName”, “LastName”, y “Age”.<br />

Una base debe estar seleccionada antes de que se pueda<br />

crear una tabla. La base de datos es seleccionada con la<br />

función mysql_select_db.<br />

Cuando se crea un campo de tipo varchar, se debe<br />

especificar la longitud máxima del campo. (Ej:<br />

varchar(15))


Indicar que personID<br />

es la llave primaria →<br />

$sql = "CREATE TABLE person<br />

(<br />

personID int NOT NULL AUTO_INCREMENT,<br />

PRIMARY KEY(personID),<br />

FirstName varchar(15),<br />

LastName varchar(15),<br />

Age int<br />

)";<br />

mysql_query($sql,$con);


Insertar Datos en una Tabla<br />

Ejemplo: Añadir dos nuevos registros a la tabla “person”<br />


Insertar Datos de una Forma<br />

en una Base de Datos<br />

<br />

<br />

<br />

Firstname: <br />

Lastname: <br />

Age: <br />

<br />

<br />

<br />

<br />

Forma.html


Seleccionar Datos de una<br />

Tabla<br />

Ejemplo: Seleccionar todos los datos almacenados en la<br />

tabla “person”.<br />

La función mysql_fetch_array() se utiliza para devolver<br />

una fila del recordset como un arreglo.<br />

<br />

→<br />

Peter Griffin<br />

Glenn Quagmire


Ejemplo: Desplegando el resultado en una tabla HTML.<br />

<br />


Ejemplo:<br />

Update<br />


Ejemplo:<br />

Delete<br />


Expresiones Regulares<br />

Son una forma poderosa y concisa de escribir una regla que<br />

identifique un formato de string en particular.<br />

Pueden expresar reglas complejas en pocos caracteres.<br />

<strong>PHP</strong> soporta dos tipos de expresiones regulares<br />

Sintaxis POSIX-extended.<br />

PCRE (Perl-compatible Regular Expression)<br />

www.php.net/manual/en/ref.pcre.php<br />

Hacen lo mismo, pero con diferente sintaxis.<br />

No hay necesidad de conocer las dos.


La función ereg se utiliza para probar un string contra<br />

una expresión regular.<br />

Ej: Verificar si $phrase contiene el substring <strong>PHP</strong><br />

$phrase = "I love <strong>PHP</strong>";<br />

if (ereg("<strong>PHP</strong>", $phrase)) {<br />

echo "The expression matches";<br />

}<br />

Las expresiones regulares son case-sentitive.<br />

Para efectuar una comparación regex independiente de<br />

mayúsculas y minúsculas, se utiliza eregi.<br />

if (eregi("php", $phrase)) {<br />

echo "The expression matches";<br />

}


Las expresiones regulares vistas hasta ahora realizan<br />

string matching básico, que también se puede realizar<br />

por funciones como strstr.<br />

Podemos probar por un conjunto de caracteres<br />

poniéndolos dentro de corchetes.<br />

Se listan todos los caracteres que se quieren probar y<br />

la expresión coincide si cualquiera de ellos ocurre.<br />

Ej: Verificar si hay una P mayúscula o minúscula,<br />

seguida de una H mayúscula o minúscula, seguida de<br />

una P mayúscula o minúscula<br />

if (ereg("[Pp][Hh][Pp]", $phrase)) {<br />

echo "The expression matches";<br />

}


Asimismo, se puede especificar un rango de caracteres<br />

utilizando un guión entre dos letras o números.<br />

Ejemplos:<br />

[A-Z] Coincidiría con cualquier letra mayúscula<br />

[0-4] Coincidiría con cualquier numero entre 0 y 4<br />

Una condición verdadera solo si $phrase contiene<br />

una letra mayúscula:<br />

if (ereg("[A-Z]", $phrase)) ...


El símbolo ^ puede ser utilizado para negar un conjunto<br />

de modo que la expresión regular especifique que el<br />

string no debe contener un conjunto de caracteres.<br />

Ej: condicion verdadera si $phrase contiene al menos un<br />

caracter no numerico<br />

if (ereg("[^0-9]", $phrase)) ...


Clases de Caracteres<br />

Para probar todos los caracteres alfanuméricos:<br />

[A-Za-z0-9]<br />

La clase de caracteres que representa el mismo conjunto<br />

de caracteres se puede representar de manera más clara:<br />

[[:alnum:]]<br />

Los caracteres [: y :] indican que la expresión contiene el<br />

nombre de una clase de caracteres.


Nombre de la Clase Descripción<br />

alnum<br />

Todos los caracteres alfanumericos:<br />

AZ, az y 09<br />

alpha Todas las letras, AZ y az<br />

digit Todos los dígitos, 09<br />

lower Todas las letras minúsculas, az<br />

print<br />

Todos los caracteres imprimibles,<br />

incluyendo el espacio<br />

punct Todos los caracteres de puntuación<br />

space<br />

Todos los caracteres de espacio en<br />

blanco, incluyendo tabs y newlines<br />

upper Todas las letras mayúsculas, AZ


Probando por Posición<br />

También es posible probar por posición dentro de un<br />

string en una expresión regular.<br />

El caracter ^, cuando no es parte de una clase de<br />

caracteres, indica el inicio de un string.<br />

$ indica el final de un string.<br />

Ej: Condiciones para verificar si $phrase inicia o<br />

termina con un caracter del alfabeto.<br />

if (ereg("^[a-z]", $phrase)) ...<br />

if (ereg("[a-z]$", $phrase)) ...


Podemos verificar si un string contiene solamente un<br />

patrón determinado, “ensandwichando” el patrón entre<br />

^ y $<br />

Ej: Condición que verifica si $number contiene<br />

solamente un único dígito numérico.<br />

if (ereg("^[[:digit:]]$", $number) ...<br />

Si se quiere buscar un caracter $ literal en una expresión<br />

regular, se debe delimitar el caracter como \$<br />

Cuando la expresión está en dobles comillas, se debe<br />

utilizar \\$, de otra forma el signo $ podría ser<br />

interpretado como el inicio de una variable.


Wildcards<br />

El caracter punto (.) en una expresión regular es un<br />

wildcard, hace match con cualquier caracter.<br />

Ej: Condicion que verifica cualquier palabra de cuatro<br />

letras que contenga una doble 0.<br />

if (ereg("^.oo.$", $word)) ...<br />

Una expresión regular que solo contiene un punto da<br />

verdadero con cualquier string que contenga por lo<br />

menos un caracter. Usar ^ y $ para indicar los limites de<br />

longitud de la expresión.


Patrones de Repetición<br />

Se utiliza el * para indicar que el elemento anterior<br />

puede aparecer cero o mas veces.<br />

Se utiliza el + para indicar que el elemento aparezca al<br />

menos una vez.<br />

Ej: Verificar un string de cualquier longitud que<br />

contiene solo caracteres alfanumericos. (La primera<br />

también devuelve true con el string vacío)<br />

if (ereg("^[[:alnum:]]*$", $phrase)) ...<br />

if (ereg("^[[:alnum:]]+$", $phrase)) ...


Para denotar un grupo de caracteres que deben<br />

repetirse, se utiliza parentesis al rededor de ellos.<br />

Ej: Condición que verifica un string de cualquier<br />

longitud par, que contenga letras y números que se<br />

alternan<br />

Para especificar un numero fijo de veces que debe<br />

repetirse, el numero se da entre llaves. Se puede utilizar<br />

un número simple o un rango con una coma.<br />

Ej:<br />

if (ereg("^([[:alpha:]][[:digit:]])+$", $string)) ...<br />

if (ereg("^([[:alpha:]][[:digit:]]){2,3}$", $string)) ...


Se utiliza el caracter ? para indicar que el elemento<br />

anterior puede aparecer ya sea una vez o no aparecer.<br />

Se puede obtener el mismo comportamiento<br />

utilizando {0, 1}


Ejemplos Prácticos<br />

Validación de Código Postal → 5 dígitos numéricos<br />

seguidos opcionalmente de guión y 4 dígitos numéricos<br />

mas.<br />

if (ereg("^[[:digit:]]{5}(-[[:digit:]]{4})?$", $zip)) ...<br />

Números telefónicos → Verificar que tenga la forma:<br />

(555)555-5555<br />

if (ereg("^\([[:digit:]]{3}\)[[:digit:]]{3}-[[:digit:]]{4}$",<br />

$telephone)) ...


Direcciones de correo electrónico<br />

Forma básica: somename@somedomain.com<br />

TLD que son dos caracteres como .ca o cuatro<br />

caracteres, como .info<br />

Dominios específicos de algunos países que tienen una<br />

extensión de dos partes como .com.mx<br />

Las dos partes principales deben estas reparadas con<br />

una @<br />

Asumimos que la parte izquierda puede contener<br />

cualquier caracter excepto la @ y puede ser de<br />

cualquier longitud<br />

La parte del dominio puede consistir de dos o mas<br />

partes separadas por puntos


La ultima parte puede tener entre 2 y 4 caracteres<br />

de longitud<br />

Los caracteres que se pueden utilizar en la parte del<br />

dominio son mas restrictivos: solamente se pueden<br />

utilizar caracteres alfanuméricos y guión<br />

Ej:<br />

if (ereg("^[^@]+@([a-z0-9\-]+\.)+[a-z]{2,4}$", $email)) ...


Buscar y Reemplazar<br />

Se pueden utilizar expresiones regulares para buscar y<br />

reemplazar en un string con la función ereg_replace.<br />

Sus tres argumentos son: una regex de busqueda, el<br />

string con el que se reemplazara, y el string en el que se<br />

hara el reemplazo. Se regresa el string modificado.<br />

Ej: Poner en blanco un numero telefónico antes de<br />

desplegar el string:<br />

echo ereg_replace(<br />

"\([[:digit:]]{3}\)[[:digit:]]{3}-[[:digit:]]{4}$",<br />

"(XXX)XXX-XXXX", $string);<br />

También es posible utilizar eregi_replace.


Un punto importante sobre<br />

el procesamiento de formas<br />

El valor de un botón submit puede ser visto por <strong>PHP</strong> si<br />

se le da un nombre al botón y el botón es presionado<br />

cuando se envía la forma.<br />

Ej: La siguiente forma tiene dos botones con nombres<br />

diferentes, de manera que se puede utilizar <strong>PHP</strong> para<br />

determinar cuál de ellos fue presionado:<br />

FORM ACTION="button.php" METHOD=POST><br />

<br />

<br />


Ej: La siguiente forma tiene dos botones con nombres<br />

diferentes, de manera que se puede utilizar <strong>PHP</strong> para<br />

determinar cuál de ellos fue presionado:<br />

FORM ACTION="button.php" METHOD=POST><br />

<br />

<br />

<br />

Código <strong>PHP</strong> para determinar cual fue presionado:<br />

if (isset($_POST["button1"])) {<br />

echo "You clicked button 1";<br />

}<br />

elseif (isset($_POST["button2"])) {<br />

echo "You clicked button 2";<br />

}<br />

else {<br />

echo "I don't know which button you clicked!";<br />

}


Campos Obligatorios<br />

Si se envió un campo con un valor en blanco, el<br />

elemento $_POST es creado pero contiene un valor en<br />

blanco.<br />

Por lo tanto, no podemos utilizar isset para verificar si<br />

se ha enviado un valor<br />

Se debe verificar el contenido del elemento<br />

compárandolo con un string vació o...<br />

Utilizando el not booleano:<br />

if (!$_POST["fieldname"]) { ... }


Cookies<br />

Cookies → pequeñas piezas de información que se<br />

almacenan en el browser.<br />

Típicamente contienen datos que son utilizados para<br />

identificarte cuando ves un sitio web, de manera que el<br />

sitio pueda ser personalizado para cada visitante.<br />

Las cookies son enviadas de regreso a los scripts<br />

automáticamente por el browser.<br />

Si te vas, y navegas otro sitio, los valores son recordados<br />

cuando vuelves.


Ej: Si es necesario loggearse en un sitio web, se le puede<br />

poner un cookie que recuerde tu username de manera<br />

que no tengas que typearlo cada vez que regreses, en<br />

este caso, solo se tendría que typear el password.<br />

Ej: En un sitio de comunidad, tu browser puede guardar<br />

la fecha de tu ultima visita en una cookie, de manera<br />

que todos los mensajes que hayan sido posteados desde<br />

la fecha de tu ultima visita sean marcados como nuevos.


Ingredientes de las Cookies<br />

Cada cookie consiste de un nombre y un valor<br />

La instrucción para crear una cookie en tu browser es<br />

enviada como un encabezad HTTP antes de que se<br />

transmita la página web.<br />

Cuando el browser ve este encabezado, toma la acción<br />

apropiada.<br />

Los headers HTTP que crean las cookies son los mismos,<br />

independientemente de si son generados por <strong>PHP</strong> o<br />

cualquier otro medio<br />

Set-Cookie: email=chris@lightwood.net


Un cookie tiene también una fecha de expiración<br />

Ej: Un cookie que expirara al terminar 2010<br />

Set-Cookie: email=chris@lightwood.net;<br />

expires=Sat, 31-Dec-2010 23:59:59 GMT<br />

Si no se envia un atributo “expires” en el header Set-<br />

Cookie, la cookie se destruirá cuando se cierre el web<br />

browser.<br />

Los otros atributos que pueden utilizarse son el nombre<br />

del dominio y el path por el que un browser enviará de<br />

regreso un cookie.<br />

Cuando se hacen visitas subsecuentes a la página de la que<br />

se tiene un cookie, su nombre y valor se envían al servidor


Sesiones<br />

Muy similares a las cookies → Pueden ser utilizadas<br />

para pasar valores entre páginas.<br />

En lugar de almacenar el valor en el browser, los valores<br />

se almacenan en el servidor y un solo cookie de<br />

identidad es utilizado para decirle a <strong>PHP</strong> qué conjunto<br />

de valores corresponde al usuario actual.<br />

Son más eficientes que las cookies (para mayores<br />

volúmenes de datos) porque se manda de ida y vuelta<br />

menos datos entre el servidor y el browser.


Creando una sesión:<br />

session_start();<br />

Se utiliza el arreglo $_SESSION para almacenar y<br />

devolver las variables de la sesión.<br />

A diferencia de las otras super-globals, se le pueden<br />

asignar valores directamente a $_SESSION, después de<br />

lo cual estarán disponibles para cualquier script que<br />

comparta la sesión.


Ej: Utilizando las variables de sesión para monitorear las<br />

visitas a una página.<br />

<br />

Si visitas otra página y luego vuelves, los valores se<br />

recuerdan, si cierras el browser, ya no.


Utilizando Variables de<br />

Sesión<br />

Una ventaja de las variables de sesión sobre las cookies<br />

es su habilidad de utilizar los tipos de datos de <strong>PHP</strong><br />

Los valores de las cookies son siempre texto simple<br />

Una variable de sesión puede tomar cualquier valor<br />

que una variable regular de <strong>PHP</strong> pueda.


Ej: Utilizando arreglos como variables de sesión.<br />

<br />

<br />

Enter a word: <br />

<br />

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!