TUTORIAL DE PHP - Erika Vilches
TUTORIAL DE PHP - Erika Vilches
TUTORIAL DE PHP - Erika Vilches
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 />