Tutorial de PHP
Tutorial de PHP
El objetivo de este tutorial de php es brindar los conocimientos necesarios para la programacin en php comenzando desde cero. Instalacin de Apache y PHP Generalidades del lenguaje PHP Estructuras Condicionales Formularios en PHP Controles Visuales en Formularios Estructuras Repetitivas Funciones en PHP Funciones tiles predefinidas en PHP Arreglos en PHP Funciones para utilizar con Arreglos Procesamiento de Cadenas Administracion de Archivos Administracin de Base de Datos
3. Pulsar en el botn [Next] para continuar. 4. Aceptar la Licencia para continuar con la instalacin y pulsar nuevamente en el botn [Next].
pulsar el botn [Browse]. Luego de seleccionar el destino, pulsar nuevamente el botn [Next].
6. Seleccionar el nombre de la carpeta que se crear en el men de inicio, con los accesos directos a "start Wampserver" y "uninstall Wampserver" . Luego presionar el botn [Next] para continuar.
7. A continuacin, pregunta si se quiere que se ejecuten los programas al encender el ordenador o si se lo quiere encender manualmente. Para ejecutarlo automticamente, tildar en la casilla, de lo contrario, dejarla inactiva. Pulsar en el botn [Next] y luego en el botn [Install] para comenzar la instalacin. 8. Al finalizar la instalacin, seleccionar la casilla "Launch WAMP5 now" para terminar. A partir de este momento, en la barra de notificaciones aparecer el icono de Wamp5 , si se presiona en l, aparecer una serie de alternativas. Ahora ya se pueden probar pginas realizadas en PHP, para ello, se deben alojar las pginas creadas en PHP en la carpeta: C:\wamp\www\ . Luego entrar en Internet Explorer u otro navegador y colocar: http://Localhost para visualizar el ndice de Wamp5. De aqu se debern ejecutar las pginas.
A medida que se almacenen pginas en la carpeta C:\wamp\www\, irn apareciendo en la pgina ndice, las cuales se las puede seleccionar y abrir directamente desde este ndice.
Primer Ejemplo: Hola Mundo PHP (Ejemplo1.php) <Html> <Body> <?PHP echo "Hola Mundo PHP "; ?> </Html> </Body> Para probar este ejemplo, se debe generar una carpeta en el disco C, en la direccin C:\wamp\www. Si la carpeta generada se llama por ejemplo Prueba, quedara:
C:\wamp\www\Prueba. En esta carpeta se deberan grabar todos los ejemplos y ejercicios que se desarrollen, en este caso el Ejemplo1.php. Para llamar a los ejemplos, se debe ejecutar el programa Wampserver y acceder al Internet Explorer u otro navegador. Luego colocar Localhost y se abrir la pgina de presentacin de Wamp5, en donde se encontrar la carpeta creada Prueba. Realizar un click en ella y luego en el ejemplo grabado para ejecutarlo. Las cadenas se escriben entre comillas y se concatenan con el operador punto. Ejemplo: $Nombre = "Sebastin"; $Apellido = "Gonzlez"; $NA = $Nombre ." ". $Apellido; En la variable $NA queda almacenado: Sebastin Gonzlez.
Se define a una variable, como el espacio fsico habilitado para almacenar un dato. En php no es necesario definir el tipo con anterioridad a utilizarla, las mismas se crean en el momento de emplearlas. A las variables, se las identifica con un nombre, anteponindole el signo $, y se declaran cuando se le asigna un valor, por ejemplo: $dia = 24; Se declar una variable de tipo Integer. $Sueldo = 758.43 ; Se declar una variable de tipo Double. $Codigo = "0047352"; Se declar una variable de tipo String. (Cadena de caracteres) $Profesion = "Arquitecto"; Variable String. Para mostrar un dato o el contenido de una variable se utiliza la instruccin echo o print . Ejemplo: $Profesion = "Arquitecto"; echo "Marcelo"; echo "" . "Profesin: " . $Profesion; Tambin se podra haber escrito: print "Marcelo"; print "" . "Profesin: " . $Profesion; reemplazando la instruccin echo por print.
Operadores
Los operadores en PHP pueden ser Aritmticos, de Comparacin y Lgicos. Estos operadores son los mismos que los utilizados en C y JavaScript, y a continuacin se detallan: Operadores Aritmticos Este tipo de operadores se utiliza para realizar clculos matemticos, los mas utilizados son: Descripcin Suma Resta Multiplicacin Divisin Resto de Divisin Entera Incremento Decremento Operadores de Comparacin Se utilizan en el anlisis de expresiones para las funciones if() o while(), los mas utilizados son: Descripcin Igualdad Identidad Desigualdad Menor que Mayor que Menor o igual Mayor o igual Comentario Verdadero, si $a es igual a $b. Verdadero, si $a es igual a $b y adems si ($a = = = $b ) los tipos son iguales. ( $a != $b ) Verdadero, si $a es distinto de $b. ( $a < $b ) Verdadero, si $a es menor que $b. ( $a > $b ) Verdadero, si $a es mayor que $b. ( $a <= $b ) Verdadero, si $a es menor o igual a $b. ( $a >= $b ) Verdadero, si $a es mayor o igual a $b. Simbologa ($a = = $b ) Smbolo + * / % ++
Operadores Lgicos
Se utilizan para analizar mas de una expresin a la vez. Descripcin Negacin Y O Smbolo ! && ll
La tercera lnea, indica que comienza la seccin de cdigo en PHP. La cuarta y la sexta, imprimen simplemente las leyendas indicadas. La quinta lnea, se utiliza para saltar a la siguiente lnea. (Br pertenece a Html). La lnea 7, llama a una funcin propia de PHP, la cual tiene por objeto mostrar las caractersticas del lenguaje. Por ltimo la lnea 8, cierra la seccin de PHP y contina con Html. La pantalla a visualizar ser similar a la siguiente:
Las cadenas pueden estar encerradas entre comillas simples o dobles. Cuando una frase encerrada entre comillas dobles contiene una variable en su interior, esta se trata como tal, por lo tanto se utilizar su contenido para el almacenamiento. Ejemplo: $dia = 21; $fecha = "Hoy es $dia de Septiembre"; Es este caso se almacenar en la variable $fecha: Hoy es 21 de Setiembre. Si una variable se encuentra dentro de una cadena encerrada entre comillas simples (o apstrofes), la misma pierde el carcter de variable y se convierte en elemento de la cadena. Si en el ejemplo anterior la lnea hubiera sido con comilla simple: $fecha = 'Hoy es $dia de Setiembre'; La variable $fecha contendra : Hoy es $dia de Setiembre. Como se dijo anteriormente, la concatenacin de cadenas se realiza con un punto, no est permitido usar el signo mas (+) para adicionar cadenas. Ejemplo: $estacion = "Primavera"; $plantas = "Flores"; $frase = "En la " . $estacion . " crecen las " . $plantas; En la variable $frase quedar almacenado: En la Primavera crecen las Flores.
Se puede adems, acceder a un carcter cualquiera de la cadena por medio de su ndice de posicin. Por ejemplo para el primer carcter de la variable $frase se puede realizar: $primer = $frase[0]; Para el quinto carcter : $quinto = $frase[4]; Y para el ltimo : $ultimo = $frase[srtlen($frase)-1]; Notar que el primer caracter de una cadena es el elemento cero. El ltimo se logra utilizando la funcin strlen(), que devuelve la cantidad de caracteres de la frase.
<Html> <Title> Archivo Ej2.php> </Title> <Body> <?PHP echo "<H2>"; echo "Datos Personales <Br>"; echo "<Hr>"; define ("COLOR","#0000FF"); $nombre = "Perez Juan"; $direccion = "Coln 1536"; $Profesion = "Web Master"; echo "<Font color= " . COLOR . ">";
echo "Apellido y Nombre: $nombre <Br>"; echo "Domicilio : $direccion <Br>"; echo "Profesin: $Profesion <Br>"; ?> </Body> </Html>
De este modo se pueden introducir tantas condiciones como se quiera dentro de la condicin principal. Una variante de este sistema es utilizando la sentencia elseif, que permite en una sola lnea introducir una condicin adicional: if (Condicion 1) { Instruccin 1; Instruccin 2; : } elseif (Condicion 2) { Instruccin A; Instruccin B; : } else { Instruccin X; Instruccin Z; : }
//Leer del navegador cul es su lengua oficial $idioma=substr($HTTP_ACCEPT_LANGUAGE,0,2); //Formular las posibilidades que se pueden dar if ($idioma == "es") echo "Idioma Espaol"; elseif ($idioma == "fr") echo "Idioma Frances"; else echo "Idioma Ingles"; ?> </BODY> </HTML>
En este ejemplo se hace uso de la variable de servidor $HTTP_ACCEPT_LANGUAGE. De esta variable se rescatan los dos primeros caracteres, esto se logra con la funcin substr(). Los dos caracteres del lenguaje almacenados en la variable $idioma son comparados con las constantes "es" y "fr". En caso de coincidencia se mostrar la leyenda correspondiente de lo contrario se muestra Idioma Ingles. Notar que en estas lneas, los condicionales if y elseif, no llevan llaves en su interior, esto es debido a que si una condicin involucra a una sola sentencia, no son necesarias las llaves. En este caso, cada if contiene una sola sentencia, por lo tanto no se colocaron las llaves.
En este caso, si la variable $opcion tiene almacenado el dato: primerValor, se ejecutar la Instruccin 1, si tiene almacenado el dato: segundoValor se ejecutar la Instruccin 2 y as sucesivamente. Si la variable $opcion no contiene ningunos de los valores predefinidos, se ejecutarn las
Instrucciones situadas despus de la palabra default. La palabra clave break, es necesaria colocarla en cada opcion, porque de no ser as, se ejecutaran todas las Instrucciones de los dems case, sin verificarse los valores que toma la variable. Ejemplo Prctico: Permitir seleccionar el nmero de mes en un objeto select y mostrar el nombre del mes que le corresponde. <Html> <Title> Ejemplo del switch: Ej3.php </Title> <Body> <?PHP if ($_REQUEST[boton] != "" ) { $N = $_REQUEST[Numero]; echo "<H2>"; echo "Coresponde a: "; switch ($N) { case 1: echo "Enero"; break; case 2: echo "Febreo"; break; case 3: echo "Marzo"; break; case 4: echo "Abril"; break; case 5: echo "Mayo"; break; case 6: echo "Junio"; break; case 7: echo "Julio"; break; case 8: echo "Agosto"; break; case 9: echo "Septiembre"; break; case 10: echo "Octubre"; break; case 11: echo "Noviembre"; break; case 12: echo "Diciembre"; break; } } else { ?> <H2> <FORM ACTION="Ej3.php" METHOD="POST"> Nombre del Mes <Hr> <Table Border="0" width="100%"> <tr> <td width="40%">
<p align="Center"> Ingrese el Nmero de Mes : </td> <td witth="60%"> <Select size=1 Name="Numero"> <option value= "1"> 1 </option> <option value= "2"> 2 </option> <option value= "3"> 3 </option> <option value= "4"> 4 </option> <option value= "5"> 5 </option> <option value= "6"> 6 </option> <option value= "7"> 7 </option> <option value= "8"> 8 </option> <option value= "9"> 9 </option> <option value="10"> 10 </option> <option value="11"> 11 </option> <option value="12"> 12 </option> </Select> </td> </tr> <tr> <td> <p align="Center"> <Input type="Submit" Name="boton" value="Ver Resultado"> </td> </tr> </Table> <?PHP } ?> </Body> </Html>
echo ("Aqui, dentro de la funcion, la variable N tiene el valor de: $N"); } Mostrar(); echo "<Br>"; echo ("Aqui, fuera de la funcion, la variable N tiene el valor de: $N"); ?> </Body> </Htm>
<Htm> <Body> <?PHP if ($_REQUEST[Boton] != "" ) { echo "El apellido Ingresado es : $_REQUEST[Apellido]"; } else { ?> <FORM ACTION = "Form1.php" METHOD = "POST"> <INPUT TYPE = "TEXT" NAME="Apellido">
<INPUT TYPE = "SUBMIT" NAME="Boton" VALUE="Ejecutar"> </FORM> <?PHP } ?> </Body> </Htm>
El pasaje de los valores del formulario se puede realizar por dos mtodos distintos, que son METHOD = "GET" y METHOD = "POST". Cuando se utiliza el mtodo GET, todos los valores son pasados en la URL del navegador y pueden ser observados en la misma. Al utilizar el mtodo POST los valores son enviados por la entrada estndar STDIO y no son visibles en la URL del navegador. Ejemplo Prctico: Ingresar por medio de un formulario el nombre de un producto y el peso que le corresponde. Posteriormente mostrar las leyendas segn los siguientes puntos:
Si el peso es menor o igual a 10, mostrar "Peso Deficiente". Si el peso es mayor a 10 y menor o igual a $20, mostrar "Peso Normal". Si el peso es mayor a 20, mostrar "Excedido de Peso" <Html> <Body> <?PHP if ( $_REQUEST[boton] != "" ) { if ($_REQUEST[Peso]<=10) echo "Peso Deficiente"; elseif ($_REQUEST[Peso]>10 && $_REQUEST[Peso]<=20) echo "Peso Normal"; else echo "Excedido de Peso"; } else { ?> <FORM ACTION="Form2.php" METHOD="POST"> Nombre: <INPUT TYPE="TEXT" NAME="Nombre" size="25"> <Br> Peso: <INPUT TYPE="TEXT" NAME="Peso" size="10"> <Br> <INPUT TYPE="SUBMIT" NAME="boton" VALUE="Ingresar Datos"> </FORM> <?PHP } ?> </Body> </Html>
Nota: Tener en cuenta que para que el programa funcione correctamente, debe ser grabado como Form2.php, ya que ese es el nombre que se dio en el FORM ACTION. En muchos casos se debe tener la seguridad de que el usuario halla ingresado los datos al presionar el botn de entrada, para ello se debe comprobar que los campos estn completos. Hay varias formas de realizar esto, lo mas sencillo es disponer de dos formularios, uno para el ingreso
de los datos y el otro para mostrar una leyenda (indicando que falta completar los datos) y un botn para retornar al formulario de ingreso de datos, como se muestra en el siguiente ejemplo.
$Nombre = $_REQUEST[Nombre]; $Dni = $_REQUEST[Dni]; $Sueldo = $_REQUEST[Sueldo]; if ($Nombre=="" || $Dni=="" ) { echo "<H3>"; echo "Falta ingresar algn dato <Br>"; echo "Los datos marcados con (*) son obligatorios<Br>"; echo "Pulse el boton para volver al formulario de Ingreso<Br>"; ?> <FORM ACTION="Form3.php" METHOD="POST"> <INPUT TYPE="SUBMIT" NAME="boton2" VALUE="Volver"> <?PHP } else { // Procesar de los datos echo "<H2>"; if ($Sueldo>2000) echo "$Nombre tiene un Sueldo Eficiente"; else echo "$Nombre tiene un Sueldo Ineficiente"; } } else { ?> <H2> Formulario de Ingreso de Datos <Hr> <FORM ACTION="Form3.php" METHOD="POST"> (*)Nombre: <INPUT TYPE="TEXT" NAME="Nombre" size="25"> <Br> (*)DNI: <INPUT TYPE="TEXT" NAME="Dni" size="20"> <Br> Sueldo: <INPUT TYPE="TEXT" NAME="Sueldo" size="15"> <Br><Br> Los campos marcados con (*) son obligatorios. <Br><Br> <INPUT TYPE="SUBMIT" NAME="boton1" VALUE="Ingresar Datos"> </FORM> <?PHP } ?>
</Body> </Html> Comentario: Al comienzo del programa se pregunta si la instruccin $_REQUEST[boton] tiene asignado algn valor, en este caso, por ser la primera vez que se ejecuta esta pgina, ser falso, por lo tanto el programa se transfiere al else del if, mostrando el formulario de carga de datos. Una vez ingresado los datos y presionado el botn1, la pgina se llama a s misma y la pregunta inicial ser verdadera, ya que la instruccin $_REQUEST[boton] tendr ahora asignado un valor. Se contina con la asignacin a cada una de las variables de los respectivos campos y comprobando que los campos estn completos, esto se logra utilizando la lnea: if ($Nombre=="" || $Dni=="" ) la cual verifica si el nombre o el dni no contienen datos. De ser as, se enva una leyenda indicando tal situacin y que deben completarse, luego se realiza un pequeo formulario que llama a la misma pgina y que contiene un botn nicamente. Al presionarse el botn2, se ejecuta nuevamente la pgina desde el principio realizndose la pregunta inicial. Si la pregunta inicial es verdadera y los campos estn completos, el programa se transfiere a procesar los datos ingresados, en este caso, se utiliza nicamente el sueldo, emitiendo las leyendas correspondientes, de acuerdo al enunciado del problema.
Controles Visuales en Formularios (1-7)
Control Radio
Estos tipos de controles permiten la seleccin de un nico valor. Ejemplo Prctico: Desarrollar un programa que permita en el servidor realizar la suma, resta, multiplicacin o divisin de dos enteros. Pantalla solicitada:
Proceso: Incluir los dos text para la carga de los dos enteros, cuatro controles de tipo radio para permitir la seleccin de la operacin y el botn submit para el envo de los datos al servidor. Implementacin (Radio.htm): <html> <head> </head> <body> <form name="form1" method="post" action="Radio.php"> Ingrese primer valor: <input type="text" name="text1"> <br> Ingrese segundo valor: <input type="text" name="text2"> <br> <input type="radio" name="radio1" value="sumar"> Sumar <br> <input type="radio" name="radio1" value="restar"> Restar <br>
<input type="radio" name="radio1" value="multiplicar"> Multiplicar <br> <input type="radio" name="radio1" value="dividir"> Dividir <br> <input type="submit" name="boton1" value="operar"> </form> </body> </html> Explicacin: En el formulario los controles de tipo radio se definen: <input type="radio" name="radio1" value="sumar"> <input type="radio" name="radio1" value="restar"> etc. Lo importante es notar que todos los objetos de tipo radio tienen el mismo nombre, con ello se indica que cuando el operador selecciona uno, se debe desmarcar el seleccionado actualmente. Si queremos que uno de los radios comience seleccionado, al mismo, le agregamos la palabra checked: <input type="radio" name="radio1" value="sumar" checked>
if ($_REQUEST['radio1']=="restar") $resultado=$_REQUEST['text1']-$_REQUEST['text2']; if ($_REQUEST['radio1']=="multiplicar") $resultado=$_REQUEST['text1']*$_REQUEST['text2']; if ($_REQUEST['radio1']=="dividir") $resultado=$_REQUEST['text1']/$_REQUEST['text2']; echo "El resultado es: $resultado"; ?> </body> </html> if (isset($_REQUEST['radio1'])) { if ($_REQUEST['radio1']=="sumar") $resultado=$_REQUEST['text1']+$_REQUEST['text2']; . . . } else { echo "Debe seleccionar una operacion"; } La funcin isset retorna true si esta definida dicha componente en el vector.
Procesos: Incluir los dos text para la carga de los dos enteros, cuatro controles de tipo checkbox para permitir la seleccin de las operaciones y el botn submit para el envo de los datos al servidor. Implementacin (Checkbox.htm): <html> <head> </head> <body> <form name="form1" action="Checkbox.php" method="post"> Ingrese primer valor: <input type="text" name="text1"> <br> Ingrese segundo valor: <input type="text" name="text2"> <br> <input type="checkbox" name="checkbox1"> Sumar <br> <input type="checkbox" name="checkbox2"> Restar <br>
<input type="checkbox" name="checkbox3"> Multiplicar <br> <input type="checkbox" name="checkbox4"> Dividir <br> <input type="submit" name="boton1" value="operar"> </form> </body> </html> Explicacin: En el formulario, los controles de tipo checkbox se definen como: <input type="checkbox" name="checkbox1"> <input type="checkbox" name="checkbox2"> etc. Pgina que efectua las operaciones (Checkbox.php) Objetivo: Verificar que checkbox ha sido seleccionado y realizar la operacin correspondiente. Mostrar los resultados de las operaciones seleccionadas. Procesos: Con una serie de condiciones verificar que checkbox estan seleccionados. Implementacin (Checkbox.php): <html> <head> </head> <body> <?php if (isset($_REQUEST['checkbox1'])) { $suma=$_REQUEST['text1']+$_REQUEST['text2']; echo "La suma es $suma <br>"; } if (isset($_REQUEST['checkbox2'])) { $dif=$_REQUEST['text1']-$_REQUEST['text2']; echo "La diferencia es $dif <br>"; } if (isset($_REQUEST['checkbox3'])) { $mul=$_REQUEST['text1']*$_REQUEST['text2'];
echo "La multiplicacion es $mul <br>"; } if (isset($_REQUEST['checkbox4'])) { $div=$_REQUEST['text1']/$_REQUEST['text2']; echo "La division es $div <br>"; } ?> </body> </html> Explicacin: En el vector $_REQUEST se define una componente por cada checkbox seleccionado en el formulario.
Procesos: Incluir los dos text para la carga de los dos enteros, un select para la seleccin de la operacin y el botn submit para el envo de los datos al servidor. Implementacin (Select.htm): <html> <head> </head> <body> <form name="form1" action="Select.php" method="post"> Ingrese primer valor: <input type="text" name="text1"> <br> Ingrese segundo valor: <input type="text" name="text2"> <br> Seleccione la operacion: <select name="select1"> <option value="sumar">sumar</option> <option value="restar">restar</option> <option value="multiplicar">multiplicar</option> <option value="dividir">dividir</option> </select>
<br> <input type="submit" name="boton1" value="operar"> </form> </body> </html> Explicacin: Para disponer un select se utiliza la marca: <select name="select1"> Los distintos item que tendr el select, se los indican con las marcas: <option value="sumar">sumar</option> <option value="restar">restar</option> El texto que va fuera de las marcas es el que se muestra en el formulario, y la propiedad value es la que se enva al formulario y se debe consultar en la pgina php que procesa el formulario. Por defecto aparece seleccionada la primera opcin, si se quiere que aparezca otra seleccionada, se debe agregar el comando selected en la marca option correspondiente: <option value="multiplicar" selected>multiplicar</option>
Controles Visuales en Formularios (5-7) Pgina que efectua la operacin (Select.php)
Verificar que opcin ha sido seleccionada y realizar la operacin correspondiente. Procesos: Con una serie de condiciones verificar que operacin realizar. Implementacin (Select.php): <html> <head> </head> <body> <?php
if ($_REQUEST['select1']=="sumar") { $suma=$_REQUEST['text1']+$_REQUEST['text2'];
echo "La suma es $suma <br>"; } if ($_REQUEST['select1']=="restar") { $dif=$_REQUEST['text1']-$_REQUEST['text2']; echo "La diferencia es $dif <br>"; } if ($_REQUEST['select1']=="multiplicar") { $mul=$_REQUEST['text1']*$_REQUEST['text2']; echo "La multiplicacion es $mul <br>"; } if ($_REQUEST['select1']=="dividir") { $div=$_REQUEST['text1']/$_REQUEST['text2']; echo "La division es $div <br>"; }
?> </body> </html> Explicacin: En el vector $_REQUEST se crea una componente que almacena la propiedad value de la opcin seleccionada en el formulario. Con una serie de if se verifica cual valor se cumple: if ($_REQUEST['select1']=="sumar")
Procesos: Incluir los dos text para la carga de los dos enteros, un select para la seleccin de las operaciones y el botn submit para el envo de los datos al servidor
<html> <head> </head> <body> <form name="form1" action="Multiple.php" method="post"> Ingrese primer valor: <input type="text" name="text1"> <br> Ingrese segundo valor: <input type="text" name="text2"> <br> Seleccione las operaciones: <select name="select1[]" size="4" multiple> <option value="sumar">sumar</option> <option value="restar">restar</option> <option value="multiplicar" selected>multiplicar</option>
<option value="dividir" selected>dividir</option> </select> <br> <input type="submit" name="boton1" value="operar"> </form> </body> </html> Explicacin: Para disponer un select con mltiples selecciones: <select name="select1[]" size="4" multiple> Adems de agregar la palabra clave multiple el nombre del control debe tener los caracteres [] (esto indica que se debe crear un vector) Las opciones que queremos que aparezcan seleccionadas se disponen de la siguiente manera: <option value="multiplicar" selected>multiplicar</option> y las que no queremos que aparezcan inicialmente seleccionadas: <option value="sumar">sumar</option> Pgina que efectua la operacin (Multiple.php) Verificar que opciones han sido seleccionadas y realizar las operaciones correspondientes. Procesos: Con una serie de condiciones verificar que operacin realizar. Implementacin (Multiple.php): <html> <head> </head> <body>
<?php foreach($_REQUEST['select1'] as $valor) { if ($valor=="sumar") { $suma=$_REQUEST['text1']+$_REQUEST['text2']; echo "La suma es $suma <br>"; } if ($valor=="restar") { $dif=$_REQUEST['text1']-$_REQUEST['text2']; echo "La diferencia es $dif <br>";
} if ($valor=="multiplicar") { $mul=$_REQUEST['text1']*$_REQUEST['text2']; echo "La multiplicacion es $mul <br>"; } if ($valor=="dividir") { $div=$_REQUEST['text1']/$_REQUEST['text2']; echo "La division es $div <br>"; } } ?> </body> </html>
Explicacin: La componente $_REQUEST['select1'] se crea con una serie de componentes (es decir es un vector de vectores) Recorremos este vector interno con el comando foreach: foreach($_REQUEST['select1'] as $valor) En cada ejecucin del foreach se almacena en la variable $valor el contenido del atributo value del select. Disponemos dentro del foreach un if para cada valor posible: if ($valor=="sumar") ... if ($valor=="restar") ...
Vista preliminar:
Implementacin (Textarea.htm): <html> <head> </head> <body> <form name="form1" action="Textarea.php" method="post"> Titulo: <input type="text" name="titulo" size="50"> <br> Comentario: <br> <textarea rows="10" cols="40" name="comentario"></textarea> <br> <input type="submit" name="boton1" value="enviar"> </form>
</body> </html> Explicacin: El cdigo html es muy sencillo. La parte nueva es la incorporacin del textarea: <textarea rows="10" cols="40" name="comentario"></textarea> Las propiedades rows y cols le dan el tamao relativo al cuadro de carga de datos (textarea) Si queremos que se inicie con un texto cargado: <textarea rows="10" cols="40">este texto aparece inicialmente</textarea>
Pgina que efectua la operacin (Textarea.php)
Mostrar los datos cargados previamente. Procesos: Extraer del vector asociativo los valores cargados en el formulario e imprimirlos en la nueva pgina. Implementacin (Textarea.php): <html> <head> </head> <body> <?php echo "Libro recomendado"; echo "<br>"; echo "<br>"; echo "Titulo:".$_REQUEST['titulo']."<br>"; echo "Comentario:".$_REQUEST['comentario']."<br>"; ?> </body> </html> Estructuras Repetitivas (1) Son estructuras basadas en reiterar una o un grupo de instrucciones "n" veces y dependen de una variable de control del ciclo. PHP propone varios tipos de estructuras repetitivas o ciclos, cada uno con caractersticas especificas distintas.
Estructura while
Esta instruccin ejecuta un bloque de programa mientras se cumpla una cierta condicin. Si la condicin es verdadera, ingresa en el ciclo del while, y ejecuta la porcin de programa
incluida. Cuando deja de cumplirse la condicin, sale del ciclo y contina ejecutndose el resto del programa. Si por el contrario, la condicin no se cumple de entrada, las lneas en el interior del while no se ejecutarn ni una vez. El formato es el siguiente: while (Condicin) { Instruccin_1; Instruccin_2; : Instruccin_N; } Ejemplo Prctico: Mostrar en una pgina los distintos tipos de tamao de letras que existen e html. <Html> <Title> Letras.php </Title> <Body> <?PHP $size=1; while ($size<=7) { echo "<font size=$size> Tamao $size </font> <br>"; $size++; } ?> </Body> </Html> Comentario del programa: En primer lugar se asigna a la variable $size el valor inicial de uno, (es muy comn olvidarse de colocar este valor inicial), que corresponde a la letra ms pequea. La siguiente lnea, while ($size<=7), muestra la creacin del ciclo, que significa: mientras el valor de la variable $size sea menor o igual a 7 ingresar al ciclo. Dentro de este ciclo o estructura, se encuentra la lnea encargada de modificar el font de cada texto mostrado. La primera vez, con la variable $size en el valor 1, la lnea quedara como: echo "<font size=1> Tamao 1 </font> <br>"; Posteriormente se incrementa el valor de la variable $size en una unidad y nuevamente se retorna a la condicin. El tamao del mensaje vara a medida que aumenta el valor de la variable $size. Se continua el ciclo hasta que el valor de la variable $size sea de 8, con este valor la condicin ser falsa y sale del ciclo. Lo que se obtiene es una pgina como la siguiente:
Se observa que en este ciclo while, si la condicin es falsa de entrada, las lneas en el interior del ciclo no se procesan, por lo tanto, esta estructura ejecuta las instrucciones en su interior de cero a n veces.
Estructuras Repetitivas (2)
Ejemplo Prctico: Imprimir los mltiplos de cuatro comenzando en el valor 100 y terminando en el valor 400.
El programa quedara de la siguiente manera: <Html> <Title> Multiplos de 4 </Title> <Body> <H2> Mltiplos de 4 de 100 a 400 <Hr> <?PHP $m=100; // Valor Inicial while ($m<=800) { echo "$m - "; $m = $m+4; } ?> </Body> </Html>
Estructuras Repetitivas (3)
Ejemplo Prctico: Ingresar dos valores por medio de un formulario y mostrar posteriormente todos los nmeros pares comprendidos entre ellos. Vista Preliminar:
El programa sera el siguiente: <Html> <Title> Numeros Pares </Title> <Body> <?PHP if ($_REQUEST['boton'] != "") { $a = $_REQUEST['a']; $b = $_REQUEST['b']; echo "<H4>"; echo "Numeros pares comprendido entre $a y $b"; echo "<Hr>"; if ($a%2==0) $a=$a+2; else $a=$a+1; while ($a<$b) {
echo "$a - "; $a = $a+2; } } else { ?> <FORM ACTION="Pares.php" METHOD="POST"> <H4> Ingrese el intervalo para los nmeros pares <Hr> Valor 1:  <INPUT TYPE="TEXT" NAME="a" SIZE="10"> <Br> Valor 2:  <INPUT TYPE="TEXT" NAME="b" SIZE="10"> <Br><Br> <INPUT TYPE="SUBMIT" NAME="boton" VALUE="Ingresar Datos"> <?PHP } ?> </Body> </Html> Comentario del programa: Se comienza el programa con la pregunta: if ($_REQUEST['boton'] != "") verificando si se ha pulsado el botn del formulario. La primera vez que se ejecuta la pgina, la condicin resulta falsa, por lo tanto el programa contina con la instruccin else, mostrando el formulario. Con la lnea: <FORM ACTION="Pares.php" METHOD="POST"> se crea el formulario con la posibilidad de llamar a la misma pgina, esto se logra con : ACTION="Pares.php". Con la marca <H4> se consigue modificar el tamao de la letra, posteriormente se escribe la leyenda: Ingrese el intervalo para los nmeros pares y con <Hr> se realiza una lnea horizontal. Luego se muestra la leyenda Valor 1:, y con la marca   se consigue dejar un espacio en blanco. Con la instruccin: <INPUT TYPE="TEXT" NAME="a" SIZE="10"> Se muestra un editor de campo llamado "a" con capacidad para almacenar 10 caracteres. Con <Br> se deja un rengln en blanco y luego se repite el proceso para ingresar el valor 2. Con la lnea: <INPUT TYPE="SUBMIT" NAME="boton" VALUE="Ingresar Datos"> se muestra un botn cuyo rtulo es precisamente: "Ingresar Datos". Una vez ingresados los datos y presionado el botn, la pgina se llama a s misma, pero ahora la condicin inicial ser verdadera, por lo tanto contina procesando las lneas
siguientes. Mediante las lneas: $a = $_REQUEST['a']; $b = $_REQUEST['b']; se almacenan en las variables $a y $b los datos enviados del formulario. Luego se cambia el tamao de la letra a H4 y se imprime la leyenda: "Nmeros pares comprendidos entre $a y $b" La segunda condicin: if ($a%2==0), verifica si el Resto de dividir el valor de $a con el factor 2 es igual a cero. Si esto es cierto, significa que el valor de $a es un nmero par, por lo tanto se lo incrementa en dos, de lo contrario se lo incrementa en uno, en ambos casos, es para comenzar con el primer nmero par comprendido. Posteriormente se ingresa al ciclo while con la condicin de que el valor de la variable $a sea menor que el valor de la variable $b, de ser as, se muestra el valor de $a y un guin, luego se incrementa en dos unidades y se retorna a la condicin. El ciclo contina hasta que el valor de $a sea superior al valor de $b, con lo que la condicin ser falsa y finaliza la repeticin, terminando tambin la ejecucin del programa. Una vez aceptado los valores, la pantalla se vera de la siguiente manera:
: instruccin_n; } while (condicin); En este caso se observa que las instrucciones dentro del ciclo se procesan al menos una vez, ya sea que la condicin sea falsa o verdadera. Por lo tanto, en este ciclo, las instrucciones se procesarn de uno a n veces. Ejemplo Prctico: Mostrar en pantalla todos los nmeros divisibles por 7 entre 100 y 400. <Html> <Body> <Title> Divisibles por 7 </Title> <H3> Nmeros divisibles por 7 entre 100 y 400 <Hr> <?PHP $n=100; do { if ($n % 7 == 0) { echo "$n - "; } $n++; } while ($n<400); ?> </Body> </Html>
: Intruccin_n; } Esta instruccin for consta de tres parmetros, que son: 1. Inicializacin de la variable que se utilizar en la condicin. 2. Condicin que se debe cumplir para permanecer en el ciclo. 3. Modificacin de la variable puesta en juego. Ejemplo Prctico: Desarrollar una tabla que contenga el nmero, su cuadrado y su cubo. El cdigo sera el siguiente: <Html> <Title> Tabla de Cuadrados y Cubos </Title> <Body> <?PHP echo "<Table align=Center Border=2 width=60%>"; echo"<Tr>"; echo"<th>"; echo " Nmero "; echo"</Th>"; echo"<th>"; echo " Cuadrado "; echo"</Th>"; echo"<th>"; echo " Cubo "; echo"</Th>"; echo"</Tr>"; for ($i=1; $i<=15; $i++) { $cuadrado= $i * $i; $cubo = $i * $i * $i; echo"<Tr>"; echo"<td align=Center>"; echo ($i); echo"<td align=Center>"; echo ($cuadrado); echo"<td align=Center>"; echo ($cubo); echo"</Tr>"; } echo "</Table>"; ?> </Body> </Html> En este caso se ejecuta el bloque de la estructura for mientras el valor de la variable $i, sea menor o igual al valor de 15. Se calculan en forma independiente el cuadrado y el cubo y luego se lo muestra en una tabla.
Funciones en PHP
Las funciones son fragmentos de cdigo independientes, que pueden ser invocados desde otra parte del programa. La ventaja principal que tiene el uso de las funciones es que permite realizar un programa modular y no tener que repetir el cdigo varias veces en distintas partes del programa, o inclusive, en otros programas. Decir que permite realizar un programa modular, significa que se puede realizar un programa en mdulos independientes, es decir, fracciones de programa en los cuales cada uno cumple una misin especfica, por lo tanto cada funcin debe tener una tarea bien determinada. Un programa se dice que es estructurado, cuando es fragmentado en mdulos que cumplan con una accin precisa. Una funcin consta de un nombre y argumentos, llamados comnmente parmetros. Formato: function Nombre_Funcion (parametro1, parametro2, ... parmetro n) { Instrucciones; <return valor> } Los parmetros son opcionales, ya sea que una funcin acepte o no valores, lo mismo que la instruccin return, dependiendo de que la funcin retorne algn valor o no. Ejemplo Prctico 1: Realizar una funcin que acepte dos nmeros y devuelva el producto de ambos. Cargar los dos valores a travs de un formulario. <Html> <TITLE> Producto.php </TITLE> <Body> <?PHP function Producto($a, $b) { $p = $a * $b; return $p; } // Programa principal if ( $_REQUEST['Boton'] != "" ) { $V1 = $_REQUEST['Valor1']; $V2 = $_REQUEST['Valor2']; echo ("<H3>"); echo (" El producto de $V1 y $V2 es: " . Producto($V1, $V2)); } else
{ ?> <FORM ACTION="Producto.php" METHOD="POST"> <H2> Ingrese Primer valor : <Input Type="Text" Name="Valor1" Size="5"> <Br> Ingrese Segundo valor: <Input Type="Text" Name="Valor2" Size="5"> <Br><Br> <Input Type="Submit" Name="Boton" Value="Ingresar Datos"> </Form> <?PHP } ?> </Body> </Html> Comentario: Al cargarse la pgina, se visualiza el formulario para el ingreso de los dos valores, ya que al no haber sido presionado el Botn, la condicin del if en el programa principal, es falsa.
Una vez cargado el formulario y presionado el botn "Ingresar Datos", la pgina se llama a s misma y ahora la condicin del if es verdadera, continuando el programa con la asignacin de las variables $V1 y $V2, a travs respectivamente de la instruccin $_REQUEST. La lnea: echo("<H3>"); nicamente ajusta el tamao de la letra. Para llamar a la funcin, se puede realizar de dos maneras, una sera asignndole el valor devuelto por la misma, a una variable y la otra es utilizarla directamente dentro de la sentencia echo o dentro de cualquier estructura. En este caso la funcin es llamada dentro de la impresin, concatenada con la leyenda correspondiente.
Cuando es llamada la funcin, se verifica en primera instancia, si la cantidad de parmetros que tiene la definicin coincide con la cantidad de parmetros de la llamada. En caso de coincidir, realiza la transferencia de contenidos de variables, en este caso, el contenido de la variable $V1 es enviado a la variable $a y el contenido de la variable $V2, es enviado a la variable $b, es decir que la transferencia se realiza en el orden en la cual se encuentran. Una vez transferidos los valores, el programa contina ejecutando las instrucciones dentro de la funcin, en este caso se calcula el producto y se lo asigna a la variable $p. Por ltimo, por medio de la instruccin return se retorna el valor contenido en la variable $p al programa principal dentro de la instruccin echo, terminando la ejecucin del programa. Nota: Las variables $a y $b, son locales a la funcin, fuera de ella, no existen, adems, en este caso, el paso de parmetros, es decir, los valores enviados a la funcin a las variables $a y $b, se denominan paso por Valor, y significa que si se cambia el valor del argumento dentro de la funcin, no afectar a las variables fuera de ellas. Por lo tanto, si dentro de la funcin, se cambiara el contenido de la variable $a o $b, no causar ningn cambio en las variables $V1 y $V2.
Funciones en PHP
Ejemplo Prctico 2: Realizar una funcin que permita determinar si un nmero pasado como parmetro, es par o impar. <Html> <TITLE> Par.php </TITLE> <Body> <?PHP function Par($n) { if ($n % 2 == 0) return true; else return false;
} // Programa principal if ( $_REQUEST['Boton'] != "" ) { $V = $_REQUEST['Valor']; echo ("<H2>"); echo (" El valor $V es: "); if (Par($V)) echo ("Par"); else echo ("Impar"); } else { ?> <FORM ACTION="Par.php" METHOD="POST"> <H3> Ingrese un valor : <Input Type="Text" Name="Valor" Size="5"> <Br><Br> <Input Type="Submit" Name="Boton" Value="Ingresar Dato"> </Form> <?PHP } ?> </Body> </Html> Comentario: Se observa que en este caso, que la funcin devuelve un tipo Boolean, es decir true o false, segn corresponda. En el programa principal, la funcin es llamada directamente dentro de la estructura if. Observar adems, que no hace falta colocar == true, ya que lo toma por defecto. Funciones en PHP Ejemplo Prctico 3: Realizar una funcin que acepte un nmero, y retorne la suma de todos los nmeros inferiores a l, incluido dicho nmero. Si el nmero ingresado es 5, deber devolver: 1+2+3+4+5 <Html> <TITLE> Suma.php </TITLE>
<Body> <?PHP function Suma($n) { $s=0; for ($i=1; $i<=$n; $i++) { $s=$s+$i; } return $s; } // Programa principal if ( $_REQUEST['Boton'] != "" ) { $V = $_REQUEST['Valor']; echo ("<H2>"); echo (" El valor de la suma de los inferiores a $V es: "); $Resultado = Suma($V); echo ($Resultado) ; } else { ?> <FORM ACTION="Suma.php" METHOD="POST"> <H2> Ingrese un valor : <Input Type="Text" Name="Valor" Size="5"> <Br><Br> <Input Type="Submit" Name="Boton" Value="Ingresar Dato"> </Form> <?PHP } ?> </Body> </Html> Comentario: Aqu el valor devuelto por la funcin es asignado a la variable $Resultado y luego se imprime. Tambin se la podra haber involucrado dentro de la instruccin echo. Por defecto, todos los parmetros pasados a las funciones son por valor, en cambio si se necesitaran que los parmetros enviados a la funcin, modifiquen su valor, se deberan
pasar por referencia, esto se logra anteponiendo un & (ampersand) delante del parmetro que se desea pasar por referencia.
Funciones en PHP
Ejemplo Pctico 4: Desarrollar una funcin que acepte una cadena de caracteres y la convierta en mayscula. <Html> <TITLE> Mayuscula.php </TITLE> <Body> <?PHP function Mayuscula( &$cadena ) { $cadena = strtoupper($cadena); } // Programa principal if ( $_REQUEST['Boton'] != "" ) { $N = $_REQUEST['Nombre']; Mayuscula($N); echo ("<H2>"); echo ("El nombre en mayuscula es es: " . $N); } else { ?> <FORM ACTION="Mayuscula.php" METHOD="POST"> <H2> Ingrese Apellido y Nombre : <Input Type="Text" Name="Nombre" Size="40"> <Br><Br> <Input Type="Submit" Name="Boton" Value="Ingresar Dato"> </Form> <?PHP } ?> </Body> </Html> Ejemplo Prctico 5: Realizar una funcin que acepte el lado de un cuadrado y calcule su permetro y su superficie (No imprimir dentro de la funcin).
<Html> <TITLE> Cuadrado.php </TITLE> <Body> <?PHP function Calcular( $Lado, &$Perimetro, &$Superficie ) { $Perimetro = $Lado * 4; $Superficie = $Lado * $Lado; } // Programa principal if ( $_REQUEST['Boton'] != "" ) { $P=0; $S=0; $L = $_REQUEST['Lado']; Calcular($L, $P, $S); echo ("El valor del permetro es: $P"); echo ("<Br>"); echo ("El valor de la superficie es: $S"); } else { ?> <FORM ACTION="Cuadrado.php" METHOD="POST"> <H2> Ingrese El valor del Lado de un Cuadrado : <Input Type="Text" Name="Lado" Size="5"> <Br><Br> <Input Type="Submit" Name="Boton" Value="Ingresar Dato"> </Form> <?PHP } ?> </Body> </Html>
Comentario: En este caso, cuando se llama a la funcin Calcular, se lo realiza utilizando la variable $L como parmetro valor, ya que no cambia su valor, y las variables $P y $S se las especifica como parmetro por referencia, esto se consigue anteponiendo el smbolo & a las variables Perimetro y Superficie, porque es necesario que cambien sus valores de acuerdo con el clculo requerido.
Se reitera que: PHP individualiza a una variable que es por referencia cuando contiene el smbolo &(ampersand) delante de la variable.
Funcion : isset
Permite saber si una variable est definida. La funcin isset recibe como parmetro la variable a verificar, devolviendo un valor TRUE si la variable est definida, de lo contrario devuelve FALSE. Ejemplo: $Precio = 27.54; if (isset($Precio)) echo("La variable est definida"); else echo("La variable no est definida"); En este caso se imprimir la leyenda: La variable est definida. Tambin se puede utilizar la funcin isset con objetos, como por ejemplo, para saber si se ha pulsado un botn o no. Ejemplo Prctico 1: Ingresar dos valores en un formulario, y mostrar todos los nmeros comprendidos. <Html> <Title> Numeros.php </Title> <Body> <?PHP if (isset($_REQUEST[boton])) { $a=$_REQUEST[a]; $b=$_REQUEST[b]; echo "Nmeros comprendidos entre $a y $b"; echo "<Hr>"; for ($i=$a+1; $i<$b; $i++) { echo ("$i - "); } } else {
?> <FORM ACTION="Numeros.php" METHOD="POST"> <H2> Ingrese el intervalo para los nmeros pares <Hr> Valor 1:  <INPUT TYPE="TEXT" NAME="a" SIZE="10"> <Br> Valor 2:  <INPUT TYPE="TEXT" NAME="b" SIZE="10"> <Br><Br> <INPUT TYPE="SUBMIT" NAME="boton" VALUE="Ingresar Datos"> <?PHP } ?> </Body> </Html> Comentario: En primera instancia, mediante la funcin isset, se evala si el botn est definido con algn valor, es decir, si se ha pulsado. Para la primera vez que se ejecute la pgina, la condicin if (isset($_REQUEST[boton])) ser falsa (FALSE), por lo tanto se ejecutar el formulario. Una vez ingresado los valores y presionado el botn, la pgina se llama a si misma, pero ahora la condicin: if (isset($_REQUEST[boton])) ser verdadera (TRUE). El resto del programa simplemente ejecuta lo requerido en el enunciado.
Funcion : unset
Esta funcin, destruye la variable que se le pasa como parmetro. Devuelve un valor TRUE si la variable es destruida, de lo contrario devuelve FALSE. Ejemplo: $Precio = 27.54; unset($Precio); if (isset($Precio)) echo ("La variable est definida"); else echo("La variable no est definida"); En este caso, se imprimir la leyenda: La variable no est definida.
Funcion : is_numeric
Permite saber si el contenido de una variable es un nmero o una cadena. En caso de que el valor de la variable a verificar sea un nmero, devolver un valor
Funcion : is_int
Determina si una variable es un entero o no. En caso de que el valor de la variable a verificar sea un nmero entero, devolver un valor TRUE, en caso contrario, devolver FALSE. Ejemplo: $Edad = 25; if (is_int($Edad)) echo("El contenido es un Entero"); else echo("El contenido no es un Entero");
Funcion : is_double
Evala si una variable pasada como parmetro, contiene un valor numrico con punto decimal. Si el contenido de la variable es un nmero con decimales, la funcin devolver un valor TRUE, en caso contrario, devolver FALSE. Ejemplo: $Sueldo = 1285.43; if (is_double($Sueldo)) echo("El contenido es un double"); else echo("El contenido no es un double");
Funcion : is_string
Verifica si el contenido de una variable es una cadena de caracteres o nmero. Si es una cadena devolver un valor TRUE, en caso contrario, devolver FALSE. Ejemplo: $Frase = "Hoy es Sbado"; if (is_string($Frase))
Funcion : is_null
Determina si el valor de una variable es nulo o no. Si es nulo devolver un valor TRUE, en caso contrario, devolver FALSE. Ejemplo: $Valor = 0; if (is_null($Valor)) echo("El contenido es nulo"); else echo("El contenido no nulo");
Funcion : is_array
Permite averiguar si una variable es un array. Devuelve el valor TRUE si la variable pasada como parmetro es un array o FALSE si no lo es. Ejemplo: $Nombre[0] = "Marcelo"; $Nombre[1] = "Javier"; $Nombre[2] = "Ricardo"; if (is_array($Nombre)) echo("La variable es un array"); else echo("La variable no es un array");
Funcion : intval
Esta funcin permite obtener el valor entero de una variable de tipo double. Ejemplo: $Promedio = 5.37; $Entero = intval ($Promedio); echo ("El valor entero del promedio es: $Entero");
Arreglos en PHP
Se define a un arreglo como un grupo de elementos relacionados entre s por medio de ndices. Los arreglos pueden ser de una o ms dimensiones, los de una dimensin, son llamados comnmente "vectores". A diferencia con el lenguaje C, en PHP, un vector puede tener elementos de distintos tipos. Para hacer referencia a un elemento del vector, se utiliza un ndice, que indica la direccin en donde se encuentra un determinado valor. El ndice en un arreglo comienza siempre por cero. (Mas adelante se ver que el ndice de un vector, no necesariamente debe ser un nmero entero, sino que tambin puede ser un texto). Ejemplo Prctico 1: Almacenar los nombres de los das de la semana en un vector y luego imprimirlos uno debajo de otro. <Html> <Title> Ejmeplo 1 </Title> <Body> <?PHP // Inicializacion del Vector $dia[0] = "Domingo"; $dia[1] = "Lunes"; $dia[2] = "Martes"; $dia[3] = "Mircoles"; $dia[4] = "Jueves"; $dia[5] = "Viernes"; $dia[6] = "Sbado"; // Impresion del vector for($i=0; $i<7; $i++) { echo ($dia[$i] . "<Br>") ; } ?> </Body> </Html> Comentario: Se inicializa el vector indicando el nmero que le corresponde a cada posicin entre corchetes [ ] y asignando el valor que se desea almacenar en dicha posicin. Un vector, en PHP, puede contener elementos de distintos tipos de datos, es decir, un elemento puede ser un nmero entero, otro una cadena, otro un nmero con decimales, etc. Un modelo de este caso se puede observar en el siguiente ejemplo.
Ejemplo Prctico 2: Almacenar en un vector los datos personales de un empleado y luego mostrarlos en pantalla. <Html> <Title> Ejemplo 2 </Title> <Body> <?PHP // Inicializacion del Vector $Empleado[0] = 4371; $Empleado[1] = "Martinez Leandro"; $Empleado[2] = "27.643.742"; $Empleado[3] = 1429.54; $Empleado[4] = "Arquitecto"; // Impresion del vector echo ("Legajo: " . $Empleado[0] . "<Br>"); echo ("Nombre: " . $Empleado[1] . "<Br>"); echo ("DNI : " . $Empleado[2] . "<Br>"); echo ("Sueldo: " . $Empleado[3] . "<Br>"); echo ("Profesion: " . $Empleado[4] . "<Br>"); ?> </Body> </Html> Existen varias maneras de inicializar vectores en PHP. A continuacin se describen algunos ejemplos. Pais[] = "Argentina"; Pais[] = "Uruguay"; Pais[] = "Brasil"; Pais[] = "Chile"; En este caso se observa que no es necesario colocar el nmero de ndice, ya que PHP lo asigna automticamente para cada valor, comenzando siempre desde cero. Otra forma de inicializar un vector, es a travs del constructor array, como se muestra en el siguiente ejemplo: Pais =array("Argentina","Uruguay","Brasil","Chile"); Tambin se puede definir un arreglo asociando explcitamente el ndice a un valor, como se indica a continuacin:
$Frutas = array(0 => "Manzana", 1 => "Naranja", 2 => "Pera", 3 => "Anan"); Adems, los ndices, pueden no ser obligatoriamente consecutivos, ni tampoco comenzar de cero, ni tampoco ser un nmero. (Ver ejemplos mas adelante). Se puede conocer la cantidad de elementos que tiene un vector, para ello se utiliza la funcin count(vector). Esta funcin acepta como parmetro el nombre del vector y devuelve la cantidad de elementos del mismo. Ejemplo Prctico 3: Cargar en un vector artculos de librera y luego imprimir la cantidad de ellos. <Html> <Title> Ejemplo 3 </Title> <Body> <?PHP // Inicializacion del Vector $Articulos =array("Lpis","Goma","Hoja","Tinta"); // Impresion del vector $Cantidad = count($Articulos); echo ("La cantidad de Artculos son: " . $Cantidad); ?> </Body> </Html> Un vector en PHP puede tener elementos en cualquier posicin, por lo tanto, se puede cargar un vector con posiciones no consecutivas, sino en forma totalmente aleatoria. Para poder recorrer este tipo de vectores se utilizan las funciones next() y prev(). Ejemplo Prctico 4: Cargar los nombres de personas en cualquier posicin. <Html> <Title> Ejemplo 4 </Title> <Body> <?PHP // Inicializacion del Vector $Nombre[10] = "Marcelo"; $Nombre[20] = "Alicia";
$Nombre[15] = "Alejandra"; $Nombre[35] = "Mario"; $Nombre[12] = "Alberto"; // Impresion del vector reset($Nombre); echo ("<H2>" . "Vector de Nombres"); echo ("<H3>" . "<Hr>"); do { // Buscar Posicion especificada $i = key($Nombre); // Buscar Contenido en esa posicion $Valor = current($Nombre); echo ("Posicin: " . $i . " - "); echo ("Contenido: " . $Valor); echo ("<Br>"); } while (next($Nombre)); ?> </Body> </Html> Comentario: Aqu se observa que los nombres fueron cargados en posiciones aleatorias. Con la funcin reset(), se logra llevar el puntero al principio del vector y para poder encontrar la posicin de un elemento se utiliza la funcin key(), la cual acepta como parmetro el vector y devuelve la posicin. Luego para poder obtener el contenido en esa posicin se utiliza la funcin current(), que acepta el vector y devuelve el valor almacenado. La funcin next() avanza el puntero a la posicin siguiente, si se ha llegado al final del vector, esta funcin devuelve false.
En caso de querer imprimir los datos del vector en forma invertida, solamente se debe cambiar la instruccin reset($Nombre) por: end($Nombre) y la instuccin: while (next($Nombre)) por : while (prev($Nombre)). Como se dijo anteriormente, las funciones next() y prev() devuelven false al llegar al final y principio del vector respectivamente, pero tambien devuelven false cuando el valor de un elemento es cero. La salida quedar de la siguiente forma:
La funcin end() lleva el puntero al final del vector y con la funcin prev(), se retrocede el puntero hasta el anterior. Cuando se lleg al principio del vector, la funcin prev() devuelve false y sale del ciclo. Otra forma de recorrer un vector de estas caracterstica es utilizando las funciones list() y each(), de la siguiente manera: Ejemplo Prctico 5: Cargar Legajos de personas con sus respectivos Nombres <Html> <Title> Ejemplo5.php </Title> <Body> <?Php // Inicializacion del Vector $Nombre[100] = "Javier"; $Nombre[200] = "Cintia"; $Nombre[150] = "Ricardo"; $Nombre[350] = "Ral"; $Nombre[120] = "Guillermo"; // Impresion del vector reset($Nombre);
echo "<H2>"."Vector de Nombres"; echo "<H3>"."<Hr>"; while (list($i,$Valor)=each($Nombre)) { echo "Legajo: " . $i . " - "; echo "Nombre: " . $Valor; echo "<Br>"; } ?> </Body> </Html> La funcin list(), almacena en los parmetros ($i, $Valor), el ndice y el valor devuelto por la funcin each(), que tiene como parmetro el vector puesto en juego. Adems, la funcin list(), avanza automticamente el puntero al siguiente elemento del vector, y en caso de que el vector haya llegado al final, la funcin devuelve false.
echo "Posicin: " . $i . " - "; echo "Contenido: " . $Valor; echo "<Br>"; } ?> </Body> </Html> La salida obtenida es:
<Body> <?Php // Inicializacion del Vector $Nombres = array("Maria", "Luis", "Alberto", "Cesar", "Adriana"); // Ordenamiento del vector sort($Nombres); echo "<H2>"."Vector de Nombres ordenados"; echo "<H3>"."<Hr>"; while (list($i,$Valor)=each($Nombres)) { echo "Posicin: " . $i . " - "; echo "Contenido: " . $Valor; echo "<Br>"; } ?> </Body> </Html>
Nota: Si se utiliza la funcin sort() con ndices de texto, se observa que, una vez ordenado, ha cambiado los ndices de texto por nmeros, comenzando de cero en adelante.
Para salvar este inconveniente se utiliza la funcin asort(). Funcin asort() Esta funcin permite ordenar arreglos con ndices de texto, manteniendo el valor de sus ndices. Tiene como parmetro el vector, y el ordenamiento es de menor a mayor. Ejemplo 2: Ordenar alfabticamente de menor a mayor el vector de ciudades del mundo del ejemplo Nro. 6. de la pgina anterior. <Html> <Title> Ejemplo2-Asort..php </Title> <Body> <?Php // Inicializacion del Vector $Ciudad = array("Par" => "Paris", "Lon" => "Londres", "Ate" => "Atenas", "Ber" => "Berlin", "Lim" => "Lima"); asort($Ciudad); echo "<H2>"."Vector de Ciudades ordenado"; echo "<H3>"."<Hr>"; while (list($i,$Valor)=each($Ciudad)) { echo "Posicin: " . $i . " - "; echo "Contenido: " . $Valor; echo "<Br>"; } ?> </Body> </Html>
Funcin rsort() Es la inversa de la funcin sort(). Permite ordenar un vector pasado como parmetro en forma descendente, es decir de mayor a menor. Ejemplo 3: Modificar el ejemplo anterior para mostrar el vector de nombres de personas en forma descendente. <Html> <Title> Ejemplo3-Rsort.php </Title> <Body> <?Php // Inicializacion del Vector $Nombres = array("Maria", "Luis", "Alberto", "Cesar", "Adriana"); // Ordenamiento del vector descendente rsort($Nombres); echo "<H2>"."Vector de Nombres ordenados en forma descendente "; echo "<H3>"."<Hr>"; while (list($i,$Valor)=each($Nombres)) {
echo "Posicin: " . $i . " - "; echo "Contenido: " . $Valor; echo "<Br>"; } ?> </Body> </Html>
Funcin arsort() Es la inversa de la funcin asort(). Permite ordenar un vector con ndices de texto pasado como parmetro en forma descendente, es decir de mayor a menor. Ejemplo 4: Modificar el ejemplo 2 para mostrar el vector de ciudades en forma descendente. <Html> <Title> Ejemplo4-Arsort.php </Title> <Body> <?Php // Inicializacion del Vector $Ciudad = array("Par" => "Paris", "Lon" => "Londres", "Ate" => "Atenas", "Ber" => "Berlin",
"Lim" => "Lima"); arsort($Ciudad); echo "<H2>"."Vector de Ciudades ordenado en forma descendente"; echo "<H3>"."<Hr>"; while (list($i,$Valor)=each($Ciudad)) { echo "Posicin: " . $i . " - "; echo "Contenido: " . $Valor; echo "<Br>"; } ?> </Body> </Html>
Funcin ksort() Permite ordenar un arreglo por el ndice del mismo, sin tener encuenta los elementos. Ejemplo 5: Cargar nombres de paises como ndices con sus respectivas monedas y mostrarlos ordenados por los ndices.
<Html> <Title> Ejemplo5-Ksort.php </Title> <Body> <?Php // Inicializacion del Vector $Ciudad = array("Francia" => "Franco", "Japon" => "Yen", "Brasil" => "Real", "Italia" => "Lira", "Argentina" => "Peso"); arsort($Ciudad); ksort($Ciudad); echo "<H2>"."Vector ordenado por paices "; echo "<H3>"."<Hr>"; while (list($i,$Valor)=each($Ciudad)) { echo "Posicin: " . $i . " - "; echo "Contenido: " . $Valor; echo "<Br>"; } ?> </Body> </Html>
Funcin krsort() Ordena un arreglo de acreudo al ndice del mismo en orden descendente, es decir de mayor a menor. Ejemplo 6: Mostrar en orden inverso el listado del vector del ejemplo nmero 5. <Html> <Title> Ejemplo6-Krsort.php </Title> <Body> <?Php // Inicializacion del Vector $Ciudad = array("Francia" => "Franco", "Japon" => "Yen", "Brasil" => "Real", "Italia" => "Lira", "Argentina" => "Peso"); arsort($Ciudad); krsort($Ciudad);
echo "<H2>"."Vector de ordenado por paices en forma descendente"; echo "<H3>"."<Hr>"; while (list($i,$Valor)=each($Ciudad)) { echo "Posicin: " . $i . " - "; echo "Contenido: " . $Valor; echo "<Br>"; } ?> </Body> </Html>
Funcin shuffle() Permite mezclar los elementos de un arreglo, es decir, que cambie en forma aleatoria el orden de los elementos del arreglo que se le pase como parmetro. Ejemplo 7: Mezclar los elementos del vector del ejercicio 5. <Html> <Title> Ejemplo7-Shuffle.php </Title> <Body> <?Php // Inicializacion del Vector
$Ciudad = array("Francia" => "Franco", "Japon" => "Yen", "Brasil" => "Real", "Italia" => "Lira", "Argentina" => "Peso"); arsort($Ciudad); shuffle($Ciudad); echo "<H2>"."Vector ordenado en forma aleatoria "; echo "<H3>"."<Hr>"; while (list($i,$Valor)=each($Ciudad)) { echo "Posicin: " . $i . " - "; echo "Contenido: " . $Valor; echo "<Br>"; } ?> </Body> </Html>
Nota: Se observa en este caso que las posiciones han cambiado automticamente a valores numricos. Comenzando por la posicin cero. Si se vuelve a ejecutar el programa, se obtiene otro orden de contenido.
Funcin range() Con esta funcin, se puede asignar a los elementos de un arreglo los valores comprendidos en un determinado rango. Acepta como parmetros los valores de inicio y fin de los datos a almacenar. Ejemplo 8: Generar un vector con todos los valores comprendidos entre 100 y 150. Posteriormente imprimirlos uno a lado del otro. <Html> <Title> Ejemplo8-Range.php </Title> <Body> <?Php // Inicializacion del Vector $Numeros = range(100,150); echo "<H2>"."Vector Generado"; echo "<H3>"."<Hr>"; while (list($i,$Valor)=each($Numeros)) { echo $Valor . " - "; } ?> </Body> </Html>
Esta funcin, tambin permite definir un rango entre letras. (nicamente letras, si se pusiera una cadena, tomara la primer letra). Ejemplo 9: Asignar a un vetor las letras comprendidas entre c y p, y luego mostrarlas una al lado de la otra. <Html> <Title> Ejemplo9-Letras.php </Title> <Body> <?Php // Inicializacion del Vector $Letras = range("c","w"); echo "<H2>"."Letras Generadas"; echo "<H3>"."<Hr>"; while (list($i,$Valor)=each($Letras)) { echo $Valor . " - "; } ?> </Body> </Html>
Tambin se puede generar valores en orden inverso para almacenarlos en un vector, simplemente colocando en el primer parmetro de la funcin range(), un valor superior al segundo parmetro. Funcin array_fill() Permite almacenar en un arreglo (Vector), un dato que se va a repetir consecutivamente una cierta cantidad pasada como parmetro. Los parmetros que acepta son tres, y tiene el siguiente formato: $Vector = array_fill(Indice, Cantidad, Dato); Indice indica cual ser el primer elemento. Cantidad indica cuantos elementos se generarn. Dato es el valor con que se llenar el vector Ejemplo 10: <Html> <Title> Ejemplo10-Array_fill.php </Title> <Body> <?Php // Inicializacion del Vector $Vector=array_fill(10,5,"PHP"); echo "<H2>"."Vector generado"; echo "<H3>"."<Hr>"; while (list($i,$Valor)=each($Vector)) { echo "Posicin: " . $i . " - "; echo "Contenido: " . $Valor; echo "<Br>"; } ?> </Body> </Html>
En este ejemplo se defini un arreglo que comience en el ndice 10, que contenga 5 elementos y almacene PHP como dato. Funcin in_array() Mediante esta funcin, se puede buscar un dato dentro de un arreglo. Si el dato existe dentro del arreglo, la funcin devuelve verdadero, de lo contrario devuelve falso. Ejemplo 11: Cargar los das de la semana en un vector y luego almacenar en una variable un da cualquiera. Imprimir el vector y determinar si el cotenido de la variable se incuentra incluido en el vector. <Html> <Title> Ejemplo11-In_Array.php </Title> <Body> <?Php // Inicializacion del Vector $Dias=array("Domingo","Lunes","Martes","Mircoles","Jueves","Viernes","Sbado"); $D = "Martes"; echo "<H2>"."Vector de Das"; echo "<H3>"."<Hr>";
while (list($i,$Valor)=each($Dias)) { echo $Valor. " "; } echo "<Br>"; echo "<Br>"; if (in_array($D,$Dias)) echo "$D existe en el vector Dias"; else echo "$D no existe en el vector Dias"; ?> </Body> </Html>
Procesamiento de Cadenas
El lenguaje PHP ofrece una serie de herramientas para el procesamiento de cadenas, que es muy utilizado en mostrar datos con un cierto formato o en almacenar en una base de datos informacin de una manera determinada. A continuacin se detallan algunas funciones para el manejo de cadenas:
Funciones: echo y print() Estas dos instrucciones se utilizan para mostrar una o varias cadenas en la
pantalla. Generalmente se ha venido utilizando la instruccin echo en los ejemplos realizados, pero tambin es posible utilizar la funcin print(), con la diferencia de que en esta funcin, la cadena a imprimir debe estar entre parntesis, cosa que con la instruccin echo, no es necesario. Ejemplo: echo $Nombre; print ($Domicilio);
Funcion: printf() Esta funcin es similar a la funcin print(), pero permite dar un cierto formato a lo que se desea imprimir. La Sintaxis de esta funcin es:
printf("Formato", $cadena); Formato debe ser una letra permitida. $cadena es la variable a imprimir. Los tipos de formatos permitidos, son los siguientes: Letra de Formato b c d f o s x X Especificacin de lo que realiza Expresa a la variable como nmero binario Expresa a la variable como carcter ASCII Expresa a la variable como nmero decimal Expresa a la variable como nmero de punto flotante Expresa a la variable como nmero octal Expresa a la variable como un string (cadena) Expresa a la variable como nmero hexadecimal en minsculas Expresa a la variable como nmero hexadecimal en Maysculas
Para establecer que la letra es un formato de impresin, se debe colocar delante de ella el signo de porcentaje (%). Ejemplo 1: Este ejemplo almacena el valor del sueldo en la variable $Sueldo, y luego lo muestra de diferente forma: <Html> <Title> Ejemplo1-Printf.php </Title> <Body> <?Php $Sueldo = 2947.3262;
printf($Sueldo . "<Br>"); printf("%f", $Sueldo); printf("<Br>"); printf("$ %7.2f",$Sueldo); printf("<Br>"); ?> </Body> </Html>
Ejemplo 2: Asignar a una variable, una determinada cadena y posteriormente mostrarla en todos los formatos descriptos. <Html> <Title> Ejemplo2-Formatos.php </Title> <Body> <?Php $cadena = "76.9 minutos"; printf("Resultado en formato binario: "); printf("%b", $cadena); printf("<Br>"); printf("Resultado segn la tabla ASCII: "); printf("%c", $cadena); printf("<Br>"); printf("Resultado en formato decimal: "); printf("%d", $cadena); printf("<Br>"); printf("Resultado en formato float: "); printf("%f", $cadena); printf("<Br>"); printf("Resultado en formato octal: "); printf("%o", $cadena);
printf("<Br>"); printf("Resultado en formato string: "); printf("%s", $cadena); printf("<Br>"); printf("Resultado en formato hexadecimal (minscula): "); printf("%x", $cadena); printf("<Br>"); printf("Resultado en formato hexadecimal (mayscula): "); printf("%X", $cadena); ?> </Body> </Html>
Funcion: sprintf() Es similar a la funcin printf, con la diferencia de que no imprime el resultado en el navegador, sino que se utiliza para almacenar una cadena en una variable. La sintaxis es la siguiente:
variable = sprintf ("Formato", cadena); En este caso, sprintf, devuelve en la variable el valor de la cadena transformado de acuerdo al Formato indicado. El Formato puede ser cualquier letra de las descriptas para la funcin printf. Ejemplo 3: IDEM al ejemplo 2 utilizando sprintf.
<Html> <Title> Ejemplo3-Sprintf.php </Title> <Body> <?Php $cadena = "76.9 minutos"; // Transformacion a binario $variable = sprintf("%b<Br>",$cadena); // Transformacin a caracteres $variable .= sprintf("%c<Br>", $cadena); // Transformacin a decimal $variable .= sprintf("%d<Br>", $cadena); // Transformacin a float $variable .= sprintf("%f<Br>", $cadena); // Transformacin a octal: "); $variable .= sprintf("%o<Br>", $cadena); // Transformacin a string $variable .= sprintf("%s<Br>", $cadena); // Transformacin a hexadecimal (minscula) $variable .= sprintf("%x<Br>", $cadena); // Transformacin a hexadecimal (mayscula) $variable .= sprintf("%X<Br>", $cadena); echo $variable; ?> </Body> </Html>
Funcion: strtoupper() Esta funcin permite transformar una cadena a maysculas.
Ejemplo 4: Almacenar una frase en una variable y posteriormente mostrarla en maysculas. <Html> <Title> Ejemplo4-StrToUpper.php </Title> <Body> <?Php $frase = "Hoy es un da soleado."; echo "<H3>"; echo "Frase ingresada: " . $frase; echo "<Br><Br>"; echo "Frase en Maysculas: " . strtoupper($frase); ?> </Body> </Html>
Funcion: strtolower() Es la inversa de la funcin anterior, es decir que transforma una cadena en minsculas. Ejemplo 5: Almacenar una frase en una variable y posteriormente mostrarla en minsculas.
<Html> <Title> Ejejemplo5-StroLower.php </Title> <Body> <?Php $frase = "ESTE APUNTE ES DE PHP"; echo "<H3>"; echo "Frase ingresada: " . $frase; echo "<Br><Br>"; echo "Frase en Minsculas: " . strtolower($frase); ?> </Body> </Html>
Funcion: ucwords() Convierte el primer carcter de cada palabra en maysculas. Ejemplo 6: Inicializar una variable con el nombre y apellido de una persona y posteriormente mostrarla con sus primeros caraceteres en maysculas.
<Html> <Title> Ejemplo6-UcWords.php </Title> <Body> <?Php $nombre = "marcelo rodriguez"; echo "<H3>"; echo "Cadena original: " . $nombre; echo "<Br><Br>"; echo "Cadena convertida: " . ucwords($nombre); ?> </Body> </Htm>
Funcion: trim() Mediante esta funcin, se eliminan los espacios en blanco al inicio y al final de una cadena.. Tambin elimina los caracteres de control: \n, \r, \t y \0.
Ejemplo 7: <Html> <Title> Ejemplo7-Trim.php </Title> <Body> <?Php $profesion = "\n\r\tTcnico Constructor \n\n"; echo "<H3>"; echo "Cadena original: " . $profesion; echo "<Br><Br>"; echo "Cadena convertida: " . trim($profesion); ?> </Body> </Html> Al ejecutar este ejemplo, no se observarn diferencias al visualizarlo en el navegador, pero si se observarn diferencias si se visualiza el cdigo generado por el programa.
Funciones: ltrim() y chop() Funcionan de forma similar a trim(), con la diferencia de que ltrim(), elimina espacios en blanco al principio de la cadena, mientras que chop(), elimina espacios en blanco al final de la cadena.
Funcion: strlen() Esta funcin permite obtener la longitud de una cadena de caracteres pasada como parmetro.
Ejemplo 8: Almacenar en una variable una cadena de caracteres y luego mostrar la cantidad de caracteres que la constituyen. <Html> <Title> Ejemplo8-Strlen.php </Title> <Body> <?Php $cadena = "PHP es un lenguaje de programacin."; echo "<H3>"; echo "Cadena : " . $cadena; echo "<Br><Br>"; echo "Cantidad de caracteres: " . strlen($cadena); ?> </Body> </Html>
Funcion: chr() La funcin chr() recibe un valor numrico y devuelve el carcter de la tabla ASCII que le corresponde
Ejemplo 9: Imprimir la tabla ASCII desde el cdigo 30 en adelante. <Html> <Title> Ejemplo9-Chr.php </Title>
<Body> <?Php echo "<H3>"; echo "<Table border=2 align=Center width=100%>"; $c=30; for ($i=1; $i<24; $i++) { echo "<tr>"; for ($j=1; $j<=10; $j++) { echo "<th align=Center>" . $c . "</th>"; echo "<td align=Center>". chr($c) . "</td>"; $c++; } echo "</tr>"; } echo "</Table>" ; ?> </Body> </Html>
Funcion: ord() Es la funcin inversa a la chr(), es decir que dado un carcter como parmetro, la funcin ord(), devuelve el valor del cdigo que le corresponde.
Ejemplo 10: Asignar a una variable un carcter y posteriormente mostrar el cdigo que le corresponde: <Html> <Title> Ejemplo10-Ord.php </Title> <Body> <?Php echo "<H3>"; $c = "L"; echo "El caracter: $c tiene como cdigo: " .ord($c); ?> </Body> </Html>
Funcion: number_format() La funcin number_format permite dar un formato deseado a un valor numrico determinado. La sintaxis es la siguiente:
Separador de decimales, Separador de Miles) ; Ejemplo 11: Dado un cierto valor numrico, imprimirlo con dos decimales separados por una coma, mostrando tambin los miles separados por puntos. <Html> <Title> Ejercicio11-NumberFormat.php </Title> <Body> <?Php echo "<H3>"; $valor = 8546921546.4875; echo "El valor corresponde a: "; echo number_format($valor,2,",","."); ?> </Body> </Html>
Funcion: substr() Permite extraer una porcin de texto de la cadena pasada como parmetro. Su sintaxis es la siguiente:
substr(cadenaOriginal, lugarInicial, cantidadDeCaracteres) cadenaOriginal: Es la cadena de donde se extraer el texto. lugarInicial: Representa la posicin desde donde se comenzarn a extraer el texto. CantidadDeCaracteres: Indica cuantos caracteres se extraern. (Opcional). Ejemplo 12:
<Html> <Title> Ejemplo12-Subsrt.php </Title> <Body> <?Php echo "<H3>"; $cadena = "Alicia Martinez"; echo "Cadena Original: " . $cadena; echo "<Br>"; echo "Tres primeros caracteres: "; echo substr($cadena,0,3); echo "<Br>"; echo "Seis caracteres a partir del octavo: "; echo substr($cadena,7,6); echo "<Br>"; echo "Cuatros caracteres comenzando desde el ltimo: "; echo substr($cadena,-4); ?> </Body> </Html>
Funcion: ereg() Permite buscar una cadena dentro de otra cadena, devolviendo un valor verdadero si encontr coincidencia, de lo contrario, devuelve falso.
<?Php echo "<H3>"; $cadena = "Carlos Javier Robles"; echo "Cadena Original: " . $cadena; echo "<Br>"; $clave = "Javier"; echo "<Br>"; if (ereg($clave, $cadena)) { echo "La palabra $clave existe en $cadena"; } else { echo "La palabra $clave No existe es $cadena"; } ?> </Body> </Html>
Funcion: eregi() Es similar a la funcin anterior, con la diferencia de que eregi() ignora las maysculas y minsculas. Funcion: ereg_replace() Esta funcin ereg_replace permite buscar una cadena dentro de otra y reemplazar la cadena encontrada con una cadena definida.
La sintaxis es la siguiente:
nuevaCadena = ereg_replace(claveBuscada, nuevoDato, cadenaOriginal); Ejemplo 14: En el ejemplo anterior, buscar y reemplazar el nombre Javier por Martn. <Html> <Title> Ejemplo14-EregReplace.php </Title> <Body> <?Php echo "<H3>"; $cadena = "Carlos Javier Robles"; echo "Cadena Original: " . $cadena; echo "<Br>"; $clave = "Javier"; $nuevoNombre = "Martn"; $nuevaCadena = ereg_replace($clave, $nuevoNombre, $cadena); echo "<Br>"; echo "Nuevo Nombre: " . $nuevaCadena ; ?> </Body> </Html>
Funcion: eregi_replace() Es similar a la funcin anterior, con la diferencia de que eregi_replace() no tiene en cuenta las maysculas y minsculas.
Funcion: split() Permite separar una cadena de caracteres, pasndole como parmetro el carcter que actuar como separador. La cadena separada es almacenada en un arreglo. La sintaxis es la siguiente:
vector = split(caracter, cadena, cantidadDeElementos) carcter: Es el carcter que actuar como separador. cadena: Es la cadena original. cantidadDeElementos: Es opcional, y determina cuantos elemento contendr el vector generado. En caso de no indicarse, ajusta la cantidad automticamente. Ejemplo 15: Dada una cadena de caracteres, generar un arreglo (vector) que contenga como elementos a cada una de las palabras de la cadena. <Html> <Title> Ejemplo15-Split.php </Title> <Body> <?Php echo "<H3>"; $cadena = "El invierno es muy fro"; echo "Cadena Original: " . $cadena; echo "<Br><Br>"; $separador = " "; $v = split($separador, $cadena); $cantidad = count($v); for ($i=0; $i<$cantidad; $i++) { echo "Elemento [$i]: $v[$i] <Br>"; } ?> </Body> </Html>
Ejemplo 16: Idem al anterior, pero guardando nicamente tres elementos en el vector. <Html> <Title> Ejemplo16-Split.php </Title> <Body> <?Php echo "<H3>"; $cadena = "El invierno es muy fro"; echo "Cadena Original: " . $cadena; echo "<Br><Br>"; $separador = " "; $v = split($separador, $cadena, 3); $cantidad = count($v); for ($i=0; $i<$cantidad; $i++) { echo "Elemento [$i]: $v[$i] <Br>"; } ?> </Body> </Html>
Funcion: ucfirst() Permite pasar a mayscula el primer carcter de una cadena. La funcin ucfirst() es til cuando se desea imprimir nombres propios.
Ejemplo 17: <Title> Ejemplo17-Ucfirst.php </Title> <Body> <?Php echo "<H3>"; $cadena = "alejandra"; echo "Cadena Original: " . $cadena; echo "<Br><Br>"; echo "Cadena procesada: " . ucfirst($cadena); echo "<Br><Br>"; ?> </Body> </Html>
Funcion: ucwords() Premite cambiar a maysculas el primer carcter de todas las palabras de una cadena.
<?Php echo "<H3>"; $cadena = "javier es buen alumno"; echo "Cadena Original: " . $cadena; echo "<Br><Br>"; echo "Cadena procesada: " . ucwords($cadena); echo "<Br><Br>"; ?> </Body> </Html>
Retorna cero si las dos cadenas son exactamente iguales. Retorna mayor a cero si <string1> es mayor alfabticamente. Retorna menor a cero en caso contrario $cadena1="lorena"; $cadena2="analia"; if (strcmp($cadena1,$cadena2)>0) { echo $cadena1." es mayor alfabticamente que ".$cadena2; } De todos modos para comparar si dos string son iguales est permitido utilizar el operador == if ($cadena1=="lorena") {
echo 'La variable $cadena1 almacena la cadena lorena'; } Se imprime: La variable $cadena1 almacena la cadena lorena (Recordar que si utilizamos las comillas simples, las variables no se sustituyen por el contenido de las mismas) La funcin strcmp es sensible a maysculas y minsculas, si queremos ver si dos cadenas son iguales insensible a maysculas y minsculas debemos emplear la funcin strcasecmp.
Funcion: strpos() Esta funcin devuelve la posicin que se encuentra en una cadena fuente una cadena clave. La sintaxis es la siguiente:
$Pos = strpos(cadenaFuente, cadenaClave, comienzo); cadenaFuente: Es la cadena que ser recorrida. cadenaClave: Es la cadena buscada. comienzo: Es opcional, y determina de que posicin comenzar a explorar. Si se ignora, comienza desde el principio, posicin cero. Ejemplo 19: Almacenar en una cadena, una frase y luego una palabra clave a buscar su posicin. Imprimir la posicin que le corresponde. <Html> <Title> Ejemplo19-Strpos.php </Title> <Body> <?Php echo "<H3>"; $cadena = "En un ecosistema conviven diversos tipos de organismos"; $clave = "eco"; echo "Cadena Original: " . $cadena; echo "<Br><Br>"; echo "Clave buscada: " . $clave; echo "<Br><Br>"; $p = strpos($cadena, $clave); if ($p!="") { echo "La clave se encuentra en la posicin: $p" ; } else { echo "No existe la clave en la cadena fuente"; } ?> </Body> </Html>
Administracin de Archivos
Abrir Archivos
Para abrir archivos, se utiliza la funcin fopen, cuya sintaxis es la siguiente: fopen (nombre_archivo, modo); En donde: nombre_archivo: el nombre del archivo que se quiere abrir o crear. modo: indica de que forma se proceder a la apertura del archivo. Los distintos modos se comentan en los ejemplos siguientes: fopen (archivo.txt, a) Abre el archivo en modo de agregar informacin. Los datos que se ingresen se agregarn al final del mismo, sin eliminar el contenido que tuviera. En este modo, si el archivo no existe, lo crear en ese momento. fopen (archivo.txt, a+) Abre el archivo en modo de agregar informacin y adems leerlo. Los datos que se ingresen se agregarn al final del mismo, sin eliminar el contenido que tuviera. En este modo, si el archivo no existe, lo crear en ese momento. fopen (archivo.txt, r) Abre el archivo en modo lectura solamente. El archivo debe existir.
fopen (archivo.txt, r+) Abre el archivo en modo lectura y escritura. La informacin que se agregue, ser insertada al principio del archivo. fopen (archivo.txt, w) Abre el archivo en modo escritura solamente. Si el archivo no existe, lo crea, y si existe con algn contenido, elimina toda su informacin, dejndolo en blanco. fopen (archivo.txt, w+) Abre el archivo en modo escritura y lectura. Si el archivo no existe, lo crea, y si existe con algn contenido, elimina toda su informacin, dejndolo en blanco.
Cerrar Archivos
Luego de abrir un archivo y realizar las operaciones necesarias en l, se debe cerrarlo. Para cerrar un archivo se utiliza la funcin fclose() que recibe como parmetro la variable del archivo que se est utilizando. Ejemplo: $f = fopen("archi.txt", r); fclose($f);
Escritura en un Archivo
Para guardar informacin en un archivo de texto se utilizan las funciones fputs() y fwrite(), que se detallan a continuacin:
Funcin fputs()
Permite escribir en un archivo. Recibe tres parmetros, de los cuales los dos primeros son obligatorios y el tercero es opcional. La sintaxis es la siguiente: fputs ( variable_fichero, texto, largo) El primer parmetro es el puntero al archivo, es decir la variable de trabajo. El segundo parmetro es el texto que se desea escribir. El tercer parmetro es el largo de la cadena, si no se coloca, se grabar la cadena entera. Ejemplo 1: El siguiente ejemplo muestra un pequeo programa que graba una cadena de texto en un archivo llamado Texto1.txt.
<Htm> <Title> Ejemplo01-Fputs.php </Title> <Body> <?Php $Texto="La materia se transforma consumiendo o liberando energa."; $f = fopen("Texto1.txt",w); fputs($f, $Texto); echo "Texto almacenado correctamente"; fclose($f); ?> </Body> </Htm> Al mismo resultado se hubiera llegado utilizando la funcin fwrite(), es decir, si en el ejemplo anterior se reemplaza fputs() por fwrite(), el resutado del programa no se alterara.
Lectura de un Archivo
Para poder ver el contenido de un archivo de texto se pueden utilizar varias funciones:
Funcin fpassthru()
Permite ver el contenido completo de un archivo. Tiene como parmetro la variable archivo utilizada para abrirlo. Ejemplo 2: El siguiente ejemplo lee el archivo de texto grabado en el ejemplo 1. <Htm> <Title> Ejemplo02-Fpassthu.php </Title> <Body> <?Php $nombre="Texto1.txt"; $f = @fopen($nombre,r) or die("Error al abrir el archivo: $nombre"); echo "Texto:" . "<Br>"; fpassthru($f); echo "<Br><Br>"; echo "El texto se ha ledo correctamente"; fclose($f); ?> </Body> </Htm> En primera instancia, se abre el archivo en modo lectura (r) y se utiliza la instruccin die()
para poder imprimir un mensaje de error cuando el fichero a leer no exista. Con la instruccin fpassthru() se lee y se muestra el archivo.
Funcin fread()
Permite leer parte de un archivo abierto. Esta funcin tiene dos parmetros y su sintaxis es la siguiente: fread(variable_fichero, cantidad); variable_fichero: es el puntero al archivo abierto de trabajo. cantidad: es la cantidad de caracteres que se pretende leer. Ejemplo 3: En el prximo ejemplo se leen los primeros 24 caracteres del texto grabado en el ejemplo 1. <Htm> <Title> Ejemplo03-Fread.php </Title> <Body> <?Php $nombre="Texto1.txt"; $f = @fopen($nombre,r) or die("Error al abrir el archivo: $nombre"); echo "<H3>"; echo "Texto leido:" . "<Br>"; echo fread($f,24); echo "<Br><Br>"; echo "Se han ledo los 24 primeros caracteres"; fclose($f); ?> </Body> </Htm>
Funcin fgetc()
Permite leer un archivo de texto carcter por carcter, tambin se puede recorrer el archivo parcial o totalmente. Ejemplo 4: En este ejemplo se lee el archivo completo utilizando la funcin fgetc(), mediante un ciclo leyendo carcter por carcter. <Htm> <Title> Ejemplo04-Getc.php </Title> <Body> <?Php $nombre="Texto1.txt"; $f = @fopen($nombre,r) or die("Error al abrir el archivo: $nombre"); echo "<H3>"; echo "Texto leido:" . "<Br>"; while (!feof($f)) { echo fgetc($f); } echo "<Br><Br>"; echo "Texto ledo completamente"; fclose($f); ?> </Body> </Htm> Para el ciclo se utiliz la estructura while(), que tiene como condicin a la funcin feof(). Esta funcin significa fin de fichero (end of file), y se encarga de indicar si se lleg al final del archivo o no. En el ejemplo, la funcin est negada con el smbolo de admiracin delante, por lo tanto, la lnea se lee de la siguiente manera: Mientras no sea el fin del fichero, procese. Lo que procesar ser la funcin fgetc(), que leer caracteres hasta que se termine en archivo, saliendo del ciclo while(). El resultado de este ejemplo es el siguiente:
Funcin fgets()
Permite leer una cadena de texto de un archivo, tiene dos parmetros y su sintaxis es la siguiente: fgets (variableFichero, longitud); variable_Fichero: es el puntero al archivo abierto de trabajo. longitud: Es opcional, y es la cantidad de caracteres 1, que se pretende leer. Es decir que si se pretende leer 24 caracteres por ejemplo, la longitud debera ser de 25. Ejemplo 5: <Htm> <Title> Ejemplo05-Fgets.php </Title> <Body> <?Php $nombre="Texto1.txt"; $f = @fopen($nombre,r) or die("Error al abrir el archivo: $nombre"); echo "<H3>"; echo "Texto leido:" . "<Br>"; echo fgets($f,25); fclose($f); ?> </Body> </Htm>
Funcin file()
Esta funcin permite almacenar un texto en un vector. El almacenamiento se producir lnea por lnea, es decir que cada elemento del vector contendr una lnea de texto.
Ejemplo 6: Guardar en un archivo, un determinado texto y posteriormente almacenarlo lnea por lnea en un vector. <Htm> <Title> Ejemplo06-File.php </Title> <Body> <?Php // Almacenamiento del Texto $Texto="En el universo hay materia y energa, la materia se halla en ciertos cuerpos llamados cuerpos celestes. Algunos cuerpos son frios y no emiten energa, otros son calientes y emiten luz y calor."; $f = fopen("Texto2.txt",w); fwrite($f, $Texto); fclose($f); // Generacin del vector $nombre="Texto2.txt"; $f = @fopen($nombre,r) or die("Error al abrir el archivo: $nombre"); fclose($f); $v = file($nombre); $cantidad = count($v); echo "<H3>"; echo "Vector Generado:" . "<Br>"; for ($i=0; $i<$cantidad; $i++) { echo "Posicin [$i]: $v[$i]" . "<Br>"; } ?> </Body> </Htm>
Recorrido de un Archivo
Las siguientes funciones muestran como se posiciona en el archivo en un lugar determinado, leer una porcin de texto y tomar la posicin de donde se encuentra el puntero en el archivo.
Funcin rewind()
La funcin rewind() mueve el puntero al inicio del archivo. Recibe como parmetro a la variable fichero que se abri previamente.
Funcin fseek()
La funcin fseek() permite situar el puntero en un lugar especfico. Tiene dos parmetros, el primero es la variable fichero, y el segundo es el nmero de carcter donde se quiere posicionar. (Tener presente de que el primer carcter es el nmero 0). Ejemplo 7: El siguiente ejemplo, se posiciona en el carcter nmero 19 y lee los 18 caracteres siguientes del Texto2.txt, luego en el prximo rengln, se posiciona en el carcter nmero 15 y lee los siguientes 4 caracteres y por ltimo, se posiciona al principio con la funcin rewind() y se leen los primeros 14 caracteres. <Htm> <Title> Ejemplo07-Fseek.php </Title> <Body> <?Php $nombre="Texto2.txt"; $f = @fopen($nombre,r) or die("Error al abrir el archivo: $nombre");
echo "<H3>"; fseek($f, 19); echo fread($f, 18); echo "<Br>"; fseek($f, 15); echo fread($f, 4); echo "<Br>"; rewind($f); echo fread($f, 14); fclose($f); ?> </Body> </Htm>
Funcin ftell()
Permite obtener la posicin de donde est el puntero en el archivo. Recibe como parmetro la variable fichero y devuelve el valor numrico de la posicin en que est el puntero. Ejemplo 8: Leer un archivo y mostrar la posiciones de cada uno de los caracteres que lo constituyen. <Htm> <Title> Ejjemplo08-Ftell.php </Title> <Body> <?Php $nombre="Texto1.txt";
$f = @fopen($nombre,r) or die("Error al abrir el archivo: $nombre"); echo "<H3>"; echo "Archivo: "; echo fgets($f); echo "<Br>"; rewind($f); while (!feof($f)) { echo " Posicin (" . ftell($f) . ") : "; echo fgetc($f); echo "<Br>"; } fclose($f); ?> </Body> </Htm>
Funcin copy()
Esta funcin permite realizar una copia de un archivo determinado. Necesita dos parmetros, que son: el nombre del archivo origen y el nombre del archivo destino. Si la copia se realiza con xito devuelve verdadero, de lo contrario devuelve falso. Ejemplo 9: Realizar una copia del archivo Texto1.txt en el archivo Texto1.bak. <Htm> <Title> Ejemplo09-Copy.php </Title> <Body> <?Php $origen="Texto1.txt"; $f = @fopen($origen,r) or die("Error al abrir el archivo: $origen"); echo "<H3>"; echo "Archivo: "; echo fgets($f); echo "<Br>"; fclose($f); $destino="Texto1.bak"; if (copy($origen, $destino)) { echo "La copia se realiz con xito"; } else { echo "No se pudo realizar la copia"; } ?> </Body> </Htm>
Funcin file_exists()
La funcin file_exists() permite determinar la existencia o no del archivo pasado como parmetro. Devuelve verdadero en caso de existir el archivo, en caso contrario devuelve falso. Generalmente se utiliza esta funcin cuando se pretende borrar el archivo, renombrarlo o simplemente abrirlo. Ejemplo 10: Verificar si el archivo Texto1.txt existe o no. <Htm> <Title> Ejemplo10-File_Exists.php </Title> <Body> <?Php $nombre="Texto1.txt";
if (file_exists($nombre)) { echo "El $nombre existe"; } else { echo "El $nombre no existe"; } ?> </Body> </Htm>
Funcin rename()
Permite cambiar el nombre a un archivo. Acepta dos parmetros, el primero es el nombre actual del archivo y el segundo es el nombre nuevo que se le quiere dar. Ejemplo 11: Cambiar el nombre del archivo Texto1.bak por Archi1.txt. <Htm> <Title> Ejemplo11-Rename.php </Title> <Body> <?Php $nombreActual="Texto1.bak"; $nombreNuevo ="Archi1.txt"; if (file_exists($nombreActual)) { rename($nombreActual, $nombreNuevo); echo "El nombre se cambi correctamente"; } else { echo "No se encontro el archivo $nombreActual"; } ?> </Body> </Htm>
Funcin unlink()
Esta funcin se utiliza para borrar un archivo. Recibe como parmetro el nombre del archivo a borrar. Ejemplo 12: Borrar el archivo Archi1.txt.
<Htm> <Title> Ejemplo12-Unlink.php </Title> <Body> <?Php $nombre="Archi1.txt"; if (file_exists($nombre)) { unlink($nombre); echo "El archivo $nombre se borr correctamente"; } else { echo "No se encontro el archivo $nombre"; } ?> </Body> </Htm>
fileatime() y filemtime()
La funcin fileatime() devuelve la ltima fecha de acceso a un archivo determinado y la funcin filemtime(), devuelve la ltima fecha de modificacin de un archivo. Ambas reciben como parmetro el nombre del archivo. Ejemplo 13: Mostrar las ltimas fechas de acceso y de modificacin del archivo Texto2.txt. <Htm> <Title> Ejemplo13-Filetime.php </Title> <Body> <?Php $nombre="Texto2.txt"; echo "<H3>"; if (file_exists($nombre)) { echo "Archivo: $nombre" ; echo "<Br><Br>"; echo "ltima fecha de acceso: "; echo date("d/m/Y",fileatime($nombre)); echo "<Br><Br>"; echo "ltima fecha de modificacin: "; echo date("d/m/Y",filemtime($nombre)); } else { echo "No se encontro el archivo $nombre"; }
?> </Body> </Htm> En este ejemplo tambin se utiliz la funcin date(), que tiene por finalidad darle un formato a la fecha mostrada. Tiene dos parmetros, el primero es el formato y el segundo es un nmero entero, que en este caso es el valor devuelto por las funciones fileatime() y filemtime().
Funcin date()
Permite darle un format a una fecha o a una hora. Su sintasix es la siguiente: date( Formato, Fecha_Hora ); Las opciones de Formato que se pueden emplear, son las siguientes: Opcin a A d D F h H g G i j l L m M s S t U w Y y z Z Formato am o pm AM o PM Da del mes, 2 dgitos con ceros a la izquierda Da de la semana en texto (Ingles) con 3 letras . Ej : Fri Mes en texto completo (Ingls). Ej : January Hora de 01 a 12 Hora de 00 a 23 Hora sin ceros de 1 a 12 Hora sin ceros de 0 a 23 Minutos de 00 a 59 Da del mes sin cero de 1 a 31 Da de la semana en texto completo (Ingls). Ej: Friday 1 o 0 segn el ao sea bisiesto o no Nmero de mes de 01 a 12 Mes en texto (Ingls) tres letras. Ej: Jan Segundos de 00 a 59 Sufijo ordinal en Ingls en texto. Ej: th o nd Nmero de das del mes dado de 28 a 31 Segundos Da de la semana en nmero, de 0(Domingo) a 6(Sbado) Ao cuatro cifras. Ejemplo: 2005 Ao dos cifras. Ejemplo: 05 Da del ao entre 0 y 365 Diferencia horaria en segundos (de -43200 a 43200
Ejemplo 14: Mostrar la fecha y la hora actual. <Htm> <Title> Ejemplo14-Date.php </Title> <Body> <?Php function nombreMes($m) { switch ($m) { case 1: return "Enero"; case 2: return "Febrero"; case 3: return "Marzo"; case 4: return "Abril"; case 5: return "Mayo"; case 6: return "Junio"; case 7: return "Julio"; case 8: return "Agosto"; case 9: return "Septiembre"; case 10: return "Octubre"; case 11: return "Noviembre"; case 12: return "Diciembre"; } } echo "<H3>"; echo "La fecha actual en formato (dd/mm/aaaa) es: "; echo date("d/m/Y"); echo "<Br><Br>"; $dia = date("j"); $mes = nombreMes(date("m")); $anio = date("Y"); $fecha = $dia." de ".$mes." de ".$anio; echo "La fecha actual en formato literal es: " ; echo $fecha . "<Br><Br>"; echo "La hora actual es: " . date("H:i:s A"); echo "<Br><Br>"; echo "Han transcurrido: "; echo date("z"). " das del ao " . date("Y"); ?> </Body> </Htm>
Funcin filesize()
Esta funcin devuelve el tamao del archivo que se le pasa como parmetro. El valor devuelto es en cantidad de caracteres. Ejemplo 15: Determinar la cantidad de caracteres que contiene el archivo llamado Texto1.txt. <Htm> <Title> Ejemplo15-Filesize.php </Title> <Body> <?Php $nombre="Texto1.txt"; echo "<H3>"; if (file_exists($nombre)) { echo "Tamao de $nombre: "; echo filesize($nombre); } else { echo "No se encontro el archivo $nombre"; } ?> </Body> </Htm>
La mayora de los sitios web, que generalmente manejan un volumen de informacin importante, utilizan base de datos para poder almacenar informacin y modificarla o borrarla en tiempo real.
interfaz. La ventaja de usar una Base de Datos Genrica, es que se puede cambiar de Base de Datos fcilmente sin realizar cambios en el programa. PHP soporta interface tanto con Base de Datos nativas como genricas.
Para el diseo de una Base de Datos, se sugiere dedicar un tiempo al anlisis de los datos y al tipo de aplicacin a desarrollar, adems tambin se debe prestar inters a la relacin entre los datos de las diferentes tablas. El anlisis no es algo que se aprende en un instante, sino que requiere ejercitacin y prctica. La interaccin con la Base de Datos se realiza a travs del lenguaje SQL (Structured Query Language) que es el estndar para el acceso y manipulacin de informacin de una Base de Datos Relacional. SQL es soportado por la mayora de las Base de Datos Relacionales, aunque cada una tiene sus particularidades.
Relaciones
En el mtodo de Base de Datos Relacionales, las Tablas se vinculan entre s mediante una o ms columnas cuyos valores son iguales en una y otra Tabla. Cada relacin une dos Tablas de tres formas distintas, que son: 1. Uno a uno: Cada fila de la primera tabla se corresponde con una fila de la segunda. Por ejemplo, se tiene una tabla con la informacin de pilotos y otra tabla con la informacin de automviles. La relacin es que a cada fila de la tabla de pilotos le corresponde solo una de la tabla de automviles, de esta manera se puede saber que automvil le corresponde a cada piloto. 2. Uno a muchos: Cada fila de la primera tabla se corresponde con una o ms filas de la segunda tabla. Por ejemplo una tabla de Rubros de artculos y otra tabla con los
artculos. A cada fila de la primera, es decir, a cada fila de Rubros, le corresponde varias de filas artculos que pertenecen a un mismo rubro. 3. Muchos a Muchos: Varias filas de la primera tabla se corresponde con varias de la segunda. Un ejemplo sera una tabla de recetas de cocina y una tabla de ingredientes, cada receta lleva varios ingredientes y a su vez cada ingrediente puede pertenecer a varias recetas.
Querys
Un query es una consulta que se le pasa a una Base de Datos para que esta ejecute dicha consulta. Los query se escriben en lenguaje SQL. Por ejemplo si se tuviera un programa del tipo Agenda que permitiera guardar los nombres de personas con sus telfonos y direcciones, cuando se busque algn telfono o nombre, lo que se est haciendo es un simple query (consulta) a la Base de Datos del programa. En forma sencilla una consulta tendra los siguientes pasos: 1. 2. 3. 4. Ingresar la consulta, por ejemplo a travs de un formulario. Conectarse a la Base de Datos, donde se encuentra la informacin. Ejecutar la consulta en la Base de Datos. Mostrar los Resultados.
Estos seran los pasos a seguir en cualquier sistema para realizar la consulta. Para realizar estas operaciones hay varias formas. En este tutorial se ver como se realizan las consultas utilizando la base de datos de Mysql.
PhpMyAdmin
Es uno de los preferidos por la mayora de los desarrolladores de pginas web, se lo puede bajar de los sitios: http://phpmyadmin.uptodown.com/ en su seccin carga externa gratuita. http://www.phpmyadmin.net en la seccin download.
Una vez bajado, se debe llevar la carpeta completa de PhpMyAdmin a la carpeta donde lee el servidor apache de php. Si todo result correcto, iniciar Apache y abrir la pgina index.php de la carpeta PhpMyAdmin, se deber mostrar una pantalla como la siguiente:
SQLyog
Es uno de los Administradores de de Base de Datos mas simple de aprender y trabajar. Se lo puede descargar de la pgina: http://sqlyog-community-edition.softonic.com/ Es una interfaz grfica diseada especialmente para trabajar de forma ms rpida y cmoda con el servidor de base de datos MySQL. Para utilizarlo, es necersario que se encuentre en ejecucin el servidor Apache y el servidor MySql. Al ejecutar SQLyog se observa la primer ventana de configuracin:
En el campo MySQL Host Address, colocar localhost, En UserName, colocar root. El Password dejarlo en blanco y el Port dejar el valor por defecto. Al presionar el boton Connect, mostrar la pantalla principal del Administrador SQLyog.
Como ejemplo de uso, crearemos una Base de Datos llamada Comercio y dentro de ella una tabla llamada Personas. Para ello, se debe acceder al Men en la opcin: DB y luego seleccionar: [Create DataBase], con lo cual, mostrar una ventana pidiendo el nombre a dar a la base de datos. Colocar: "comercio" y presionar el botn: [Create]. Si se cre correctamente, el nombre comercio debe aparecer en el panel de la izquierda. Ahora se proceder a crear una tabla en la base de datos comercio. Se debe posicionar en la base de datos comercio y presionar el botn derecho del Mouse, con lo cual aparecer un men en donde se debe seleccionar: [Create Table]. A continuacin, colocar los campos necesarios, como por ejemplo:
Tener en cuenta que no se deben colocar acentos en los nombres de los campos. Las dems columnas pueden quedar en blanco. Una vez colocados todos los campos, presionar el botn [Create Table], se mostrar un mensaje pidiendo especificar el nombre de la tabla. Colocamos personas y presionamos el botn OK. Luego preguntar si se necesita crear mas tablas, presionar el botn [No] y saldr del editor de campos. Ya est la base de datos comercio creada con la tabla personas.
vaca. Esta funcin devuelve un identificador de conexin que es positivo si tiene xito o falso si detecta un error, adems tiene gran importancia en caso de trabajar con varias conexiones a la vez. Un ejemplo de uso sera el siguiente: if(!($idCone =mysql_connect(localhost,Eduardo,ISSD))) { echo Error conectando el servidor; exit(); } echo Conexin realizada con xito; Con el if se controla si no se realiz la conexin, se ser as, se enva una leyenda y luego termina la ejecucin con exit (), de lo contrario contina con el programa.
fichero llamado Conexin.php cuya finalidad sea realizar la conexin con el servidor MySqL y la seleccin de la Base de Dato Comercio. <?php // Fichero: Conexion.php function conexion() { $host = "Localhost"; $usuario = "root"; $clave = ""; $BaseDeDato = "comercio"; $idCone = mysql_connect ($host, $usuario, $clave) or die ("Error conectando al servidor $host con el nombre de usuario $usuario"); mysql_select_db ($BaseDeDato, $idCone) or die ("Error seleccionando la base de datos"); return $idCone; } ?> Este fichero debe ser grabado en la carpeta destinada para las pginas de php, por ejemplo, en la carpeta C:\wamp\www\Base de Datos.
Se realizarn dos ficheros, uno para la introduccin de los datos y el otro para la grabacin en la base de datos. El primero, llamado "AltasDePersonas.htm" es el siguiente: <html> <Title> Altas de Personas </Title> <Body> <H2> Agregar Datos Personales </H2> <Hr> <Br> <Form name="Alta" action="AltasDePersonas.php" method="post"> <Table Border="3" align="Center"> <TR> <TD Align="Center" width="20%">Nombre: <TD><Input Type="Text" name="Nombre" size=60> </TR> <TR> <TD Align="Center">Direccion: <TD><Input Type="Text" name="Direccion" size=60> </TR> <TR> <TD Align="Center">Mail: <TD><Input Type="Text" name="Mail" size=60> </TR> <TR> <TD Align="Center">Telefono: <TD><Input Type="Text" name="Telefono" size=60> </TR> </Table> <BR> <p Align="Center"> <Input Type="Submit" name="BotonEnviar" value="Enviar"> </Form> </Body> </Html> Este fichero solamente consta de editores de textos para el ingreso de los datos y un botn [Enviar] para enviar los datos al otro fichero para su posterior grabacin.
{ echo "<P>Se ha producido un error para $Nombre</P>"; } mysql_close($idCone); ?> </Body> </Html>
Explicacin:
Una vez llenado el formulario, al presionar el botn enviar se se llama al fichero AltasDePersonas.php, que est descripto en la propiedad "Action" del "Formulario". Al ingresar al fichero AltasDePersonas.php, nos encontramos con las instrucciones: require ("conexion.php"); $idCone = conexion(); las cuales abren la conexin con el servidor MySQL. La primera lnea especifica que se utilizar el archivo "conexin.php" (que fue realizado anteriormente), el cual tiene realizada la funcin de conexin(). La segunda linea llama a dicha funcin conexin(), y esta devuelve un nmero identificador de conexin, que es almacenado en la variable $idCone. Con las lneas: $Nombre = $_REQUEST[Nombre]; $Direccion = $_REQUEST[Direccion]; $Mail = $_REQUEST[Mail]; $Telefono = $_REQUEST[Telefono]; se almacenan en las variables respectivas los valores rescatados del formulario, para ello se utiliza la funcin $_REQUEST. Se contina con la generacin de la sentencia SQL para grabar los contenidos de las variables del formulario en la base de datos, esto se logra con las palabras INSERT INTO. $SQL = "INSERT INTO Personas (Nombre, Direccion, Mail, Telefono) VALUES ('$Nombre', '$Direccion', '$Mail', '$Telefono')"; Esta lnea significa lo siguiente: Inserte dentro de la tabla Personas, en los campos Nombre, Direccion, Mail y Telfono, los valores contenidos en las variables $Nombre, $Direccion, $Mail y $Telefono.
Toda esta instruccin est conformada como una cadena de caracteres (observar las comillas dobles al principio y al final), la cual es almacenada en la variable $SQL. La instruccin: mysql_query (Sentencia) enva una Sentencia a la base activa del servidor del ltimo enlace abierto. En este caso la sentencia ha sido generada en la variable $SQL. Esta instruccin devuelve True o False, para indicar si la sentencia se ejecut correctamente o no. Un valor True, indica que la sentencia era correcta y pudo ser ejecutada por el servidor, de lo contrario se ha producido un error en ella. La forma de uso de la instruccin mysql_query es la indicada: if (mysql_query ($SQL)) Que significa: Si el valor devuelto por mysql_query ($SQL) es verdadero (True) se enva una leyenda de xito, de lo contrario una leyenda de error. Una vez realizada la insercin de los datos, se cierra el enlace con la base MySQL asociada al identificador de conexin utilizando la instruccin: mysql_close($idCone); Aqu finaliza la ejecucin de esta pgina.
Ejemplo:
Realizar un Listado completo de la Tabla Personas incluida en la Base de Datos Comercio. En este programa tambin se utilizar la funcin conexin(), realizada anteriormente, por este motivo se realiza nuevamente la instruccin : require ("conexion.php");
<?php // " LISTADO GENERAL" require ("conexion.php"); $idCone = conexion(); echo "<H2>". "Listado Completo"; echo "<HR>"; echo "<Table border=1 Align=Center width=90%>"; echo "<TR>"; echo "<TH>" . "Nro"; echo "<TH>" . "Nombre"; echo "<TH>" . "Direccin"; echo "<TH>" . "Mail"; echo "<TH>" . "Telfono"; echo "</TR>"; $contador = 0; $SQL = "SELECT Nombre, Direccion, Mail, Telefono FROM personas"; $Registro = mysql_query($SQL,$idCone); while($Fila = mysql_fetch_array($Registro)) { $contador++; echo "<Tr>"; echo "<Td align=Center>" . $contador; echo "<Td>" . $Fila[Nombre]; echo "<Td>" . $Fila[Direccion]; echo "<Td align=Center>" . $Fila[Mail]; echo "<Td align=Center>" . $Fila[Telefono]; echo "<Tr>"; } echo "</Table>"; mysql_free_result ($Registro); mysql_close($idCone); ?> La ejecucin de este programa dar como resultado la siguiente pantalla:
en ella se seleccionan los campos que se desean visualizar en el listado, en este caso se han seleccionado todos los campos de la tabla personas. Luego se la ejecuta con la instruccin mysql_query, y se almacenan los registros en la variable $Registro. $Registro = mysql_query ($SQL, $idCone); Posteriormente, se entra en un ciclo while, estableciendo que mientras la variable $Fila tenga algun registro, imprima sus campos. Por ultimo con la instruccin: mysql_free_result ($Registro); se liberan de memoria los recursos asociados. Es decir que toda la memoria del resultado especificado en el parmetro se libera automticamente. Luego se procede a cerrar la conexin con: mysql_close($idCone);
Ejemplo Realizar una Consulta por Nombre, mostrando todos los registros que coincidan con el nombre ingresado. Como se muestra a continuacin:
ConsultasDePersonas.htm
<html> <Title> Consultas de Personas </Title> <Body> <H2> Consulta por Nombre </H2> <Hr> <Br> <Table Border="3" align="Center" width=65%"> <Form name="Consultas" action="ConsultasDePersonas.php" method="post"> <TR> <TH>Ingrese Nombre a Buscar : <TD><Input Type="Text" name="NomX" size=45 > </TR> </Table> <BR> <table border="3" Align="Center"> <TR><TD> <Input Type="Submit" name="BotonEnviar" value="Buscar"> </TD></TR> </Table> </Form> </Body> </Html>
echo "<TH>" . "Nombre"; echo "<TH>" . "Direccin"; echo "<TH>" . "Mail"; echo "<TH>" . "Telfono"; echo "</TR>"; $contador = 0; $Registro = mysql_query($SQL,$idCone); while($Fila = mysql_fetch_array($Registro)) { $contador++; echo "<Tr>"; echo "<Td align=Center>" . $contador; echo "<Td>" . $Fila[Nombre]; echo "<Td>" . $Fila[Direccion]; echo "<Td align=Center>" . $Fila[Mail]; echo "<Td align=Center>" . $Fila[Telefono]; echo "<Tr>"; } echo "</Table>"; mysql_free_result ($Registro); mysql_close($idCone); ?> </Body> </Html> Las instrucciones son similares a los programas anteriores, por este motivo se comentarn las sentencias no vistas hasta el momento. $SQL = "SELECT Nombre, Direccion, Mail, Telefono FROM personas Where (Nombre LIKE '$NomX%' )"; Esta sentencia establece la seleccin de los datos a mostrar cuando se localice a la persona buscada. La lnea se lee de la siguiente manera: Asignar a la variable $SQL la seleccin de los campos: Nombre, Direccin, Mail y Telfono de la tabla Personas, donde el campo Nombre comience con los caracteres contenidos en la variable $NomX. La utilizacin del carcter % al lado de la variable $NomX, indica que se deber tener en cuenta nicamente los primeros caracteres del campo Nombre que coincidan con los de la variable $NomX. En caso de no figurar el smbolo %, se tendr en cuenta la totalidad de los caracteres del campo Nombre para la coincidencia.
Ejemplo:
Realizar un programa que permita dar de "Baja" a una persona ingresada por teclado. El nombre ingresado por teclado debe estar completo para ser encontrado.
El formulario para solicitar el nombre de la persona a dar de baja, es similar al de Consultas de Personas. El programa llamado "BajaDePersonas.htm"; es el siguiente: <html> <Title> Bajas de Personas </Title> <Body> <H2> Bajas por Nombre </H2> <Hr> <Br> <Table Border="3" align="Center" width=65%"> <Form name="Bajas" action="BajasDePersonas.php" method="post"> <TR> <TH>Ingrese Nombre a dar de Baja : <TD><Input Type="Text" name="NomX" size=45 > </TR> </Table> <BR> <table border="3" Align="Center"> <TR><TD> <Input Type="Submit" name="BotonEnviar" value="Buscar"> </TD></TR> </Table> </Form> </Body> </Html>
<?php require ("conexion.php"); $idCone = conexion(); $NomX = $_REQUEST[NomX]; $SQL = "SELECT Nombre, Direccion, Mail,Telefono FROM Personas Where (Nombre LIKE '$NomX' )"; echo "<H2>". "Bajas por Nombre"; echo "<HR>"; echo "<Table border=1 Align=Center width=90%>"; echo "<TR>"; echo "<TH>" . "Nro"; echo "<TH>" . "Nombre"; echo "<TH>" . "Direccin"; echo "<TH>" . "Mail"; echo "<TH>" . "Telfono"; echo "</TR>"; $contador = 0; $Registro = mysql_query($SQL,$idCone); if($Fila = mysql_fetch_array($Registro)) { $contador++; echo "<Tr>"; echo "<Td align=Center>" . $contador; echo "<Td>" . $Fila[Nombre]; echo "<Td>" . $Fila[Direccion]; echo "<Td align=Center>" . $Fila[Mail]; echo "<Td align=Center>" . $Fila[Telefono]; echo "<Tr>"; echo "</Table>"; mysql_free_result ($Registro); $SQL = "DELETE FROM Personas Where (Nombre LIKE '$NomX' )"; $Registro = mysql_query ($SQL, $idCone); echo "<BR>"; echo "<H3>"; echo "<p Align=Center>"; echo "La persona: " . $NomX . " ha sido eliminada de la Base de Datos"; } else {
echo "</Table>"; echo "<h2>"; echo "<p Align=Center>"; echo "No existe ".$NomX." en la Base de Datos"; } mysql_close($idCone); ?> </Body> </Html> Tener en cuenta que, a diferencia con la pgina de Consultas, en este programa se debe ingresar el nombre completo de la persona a buscar para poder ser localizada, esto es as debido a que no se encuentra el signo % luego del nombre de la variable $NomX. Si se quisiera que buscara por los caracteres ingresados se debera colocar $NomX%. En este programa, la nica linea desconocida es la instruccin encargada de eliminar un registro : $SQL = "DELETE FROM Personas Where (Nombre LIKE '$NomX' )"; Esta linea se lee de la siguiente manera: Borrar de la tabla Personas donde el contenido del campo Nombre coincida con el contenido de la variable $NomX. Se debe tener cuidado con la sentencia DELETE, ya que esta orden no pregunta la confirmacin de la baja, sino que elimina el registro directamente.
El programa para el ingreso de la persona a modificar los datos (ModificacionDePersonas.htm), es similar al de Consultas y al de Bajas:
____________________________________________________________________ <html> <Title> Modificacion de datos Personales </Title> <Body> <H2> Modificacion por Nombre </H2> <Hr> <Br> <Table Border="3" align="Center" width="65%"> <Form name="Modificacion" action="ModificacionDePersonas.php" method="post"> <TR> <TH width="40%">Ingrese el Nombre de la persona a Modificar los datos : <TD><Input Type="Text" name="NomX" size=55 > </TR> </Table> <BR> <table border="3" Align="Center"> <TR><TD> <Input Type="Submit" name="BotonEnviar" value="Buscar"> </TD></TR> </Table> <Br><Br> <P Align="Center"> <a Href="ListadoDePersonas.php"> Ver Listado </a> </Form> </Body> </Html>
Una vez ingresado el nombre a buscar, en caso de existir en la base de datos, se debern mostrar todos lo datos personales para su actualizacin, quedando la siguiente pantalla.
El programa para llevar a cabo esta accin se llama ModificacionDePersonas.php y su cdigo es el siguiente: ____________________________________________________________________ <Htm> <Title> Modificaciones de Personas </Title> <Body> <?Php require ("conexion.php"); $idCone = conexion(); $NomX = $_REQUEST[NomX]; $SQL = "SELECT Nombre, Direccion, Mail, Telefono FROM Personas Where (Nombre LIKE '$NomX' )"; $Registro = mysql_query ($SQL, $idCone);
if($Fila = mysql_fetch_array($Registro)) { // Asignar Datos a las variables $Nombre= $Fila[Nombre]; $Direccion = $Fila[Direccion]; $Mail = $Fila[Mail]; $Telefono = $Fila[Telefono]; // Imprimir Formulario y Modificar los datos ?> <H2> Actualizacin de Datos Personales </H2> <Hr> <Br> <Table Border="3" align="Center" width="40%"> <Form name="Modi" action="Actualizar.php" method="Post"> <Input Type="hidden" name="NombreAnterior" size=50 value="<?Php echo $Nombre?>"> <TR> <TD>Nombre: <TD><Input Type="Text" name="Nombre" size=50 value="<?Php echo $Nombre?>"> </TR> <TR> <TD>Direccion: <TD><Input Type="Text" name="Direccion" size=50 value="<?Php echo $Direccion?>"> </TR> <TR> <TD>Mail: <TD><Input Type=Text" name="Mail" size=50 value="<?Php echo $Mail?>"> </TR> <TR> <TD>Telefono: <TD><Input Type="Text" name="Telefono" size=50 value="<?Php echo $Telefono?>"> </TR> </Table> <BR> <table border="3" Align="Center"> <TR> <TD><Input Type="Submit" name="BotonGrabar" value="Actualizar"> <TD><Input Type="Submit" name="BotonCancelar" value="Cancelar"> </TR> </Table> </Form> <?Php } else
{ echo "<h2>"; echo "No existe " . $NomX; echo " en la Base de Datos"; ?> <Form name="Volver" action="ModificacionDePersonas.htm" method="Post"> <P Align = "Center"> <Input Type="Submit" name="Volver" value="Otra Busqueda"> </Form> <?Php } mysql_free_result ($Registro); mysql_close($idCone); ?> </Body> </Htm> ____________________________________________________________________ En este proceso, se comienza por rescatar el nombre proveniente del formulario anterior en la variable $Nomx y acontinuacin, se procede a la bsqueda de dicho nombre creando la consulta: $SQL = "SELECT Nombre, Direccion, Mail, Telefono FROM Personas Where (Nombre LIKE '$NomX' )"; conjuntamente con la lnea: $Registro = mysql_query ($SQL, $idCone); Tener en cuenta que el nombre a buscar debe estar completo para poder localizarlo. En caso de encontrarlo la variable $Registro almacenar los registros que cumplan con la condicin y en $Fila queda el primer registro de los almacenados, de esta manera se estar en condiciones de mostrar todos los datos para su modificacin.. En primer medida, se deben asignar los valores a las variables de los campos, esto se logra con las lneas : $Nombre= $Fila[Nombre]; $Direccion = $Fila[Direccion]; $Mail = $Fila[Mail]; $Telefono = $Fila[Telefono]; Una vez asignadas las variables, se muestra el formulario con los datos incluidos para su modificacin. La lnea: <Input Type="hidden" name="NombreAnterior" size=50 value="<?Php echo $Nombre?>">
es para guardar el nombre de bsqueda y no perderlo en caso de modificar el nombre en este formulario. De esta manera, al campo NombreAnterior se le asigna el valor que contiene la variable $Nombre. Con las lneas siguientes, se asignan a cada uno de los campos el contenido de las variables que le corresponden, luego se colocan dos botones en las lneas: <TD><Input Type="Submit" name="BotonGrabar" value="Actualizar"> <TD><Input Type="Submit" name="BotonCancelar" value="Cancelar"> las cuales se utilizan para grabar los cambios realizados o para ignorar los mismos. Cuando se pulsa el botn grabar, se llama a la pgina Actualizar.php descripta en la propiedad "action" del formulario.
echo $NombreAnterior; echo "<Br><Br>"; } else { echo "<H2>"; echo "<p Align=Center>"; echo "Actualizacin Cancelada"; echo "<Br><Br>"; } ?> <Form name="Volver" action = "ModificacionDePersonas.htm" method="Post"> <p Align="Center"> <Input Type="Submit" name="Volver" value="Otra Busqueda"> </Form> ____________________________________________________________________ Se comienza por preguntar si se presion el "BotonGrabar", en caso de ser verdadero, se abre la conexin y se rescatan los datos actualizados. Una vez rescatados los datos, se regraban los cambios con las lneas: $SQL = "UPDATE Personas SET Nombre ='$Nombre', Direccion='$Direccion', Mail ='$Mail', Telefono ='$Telefono' Where (Nombre LIKE '$NombreAnterior' )" ; mysql_query ($SQL, $idCone); Esto significa: Adapte en la tabla personas, al conjunto de campos: Nombre con el contenido de la variable $Nombre, Direccion con el contenido de la variable $Direccion, Mail con el contenido de la variable $Mail y Telefono con el contenido de la variable $Telefono, donde el dato del campo Nombre sea igual que el valor almacenado en la variable $NombreAnterior.
Si en lugar de haber pulsado el botn grabar, se hubiera pulsado el botn cancelar, se procede a colocar la leyenda "Actualizacin Cancelada".