PHP Mysql Nivel 1
PHP Mysql Nivel 1
PHP Mysql Nivel 1
MySQL
Nivel 1
Universidad Central de Venezuela, Facultad de Ciencias, Edif. III, Av. Los Ilustres, Los Chaguaramos, Caracas, Venezuela
Tlf. (58 212) 605-13-14 693-47-38 (telfax) correo ceneac@ciens.ucv.ve www.ceneac.com.ve
CENEAC - PHP MySQL Nivel 1
ÍNDICE
1. INTRODUCCIÓN … 1
1.1 ¿Qué es PHP? … 1
1.2. Breve historia de PHP … 1
1.3. Requisitos para ejecutar aplicaciones PHP … 2
1.4. ¿Qué se puede hacer con PHP? … 2
1.5. Instalación de PHP … 2
Instalación del servidor Apache sobre Windows … 3
Instalación del PHP … 8
Instalación del MySQL … 12
2. PROGRAMACIÓN EN PHP … 14
2.1. Tipos de Datos … 15
Booleanos o Lógicos … 16
Enteros … 16
Números en Punto flotante … 16
Cadenas … 16
2.2 Variables … 17
2.3. Constantes … 17
2.4. Operadores … 18
Aritméticos … 18
De Cadenas … 19
De Comparación … 19
Lógicos … 19
De Asignación … 19
2.5. Estructuras de control … 21
If…else … 21
If….elseif…else … 21
Switch….case….default … 22
While … 23
Do while … 23
For … 24
2.6. Arreglos y matrices … 25
2.7. Funciones … 27
Instrucción Return … 28
Funciones con parámetros … 29
2.8. Como ahorrar líneas de código … 30
2.9. Funciones para la manipulación de cadenas … 32
2.10. Funciones para la manipulación de fecha y hora … 36
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor.
CENEAC - PHP MySQL Nivel 1
3. FORMULARIOS … 40
3.1. Etiqueta Formulario ( form) … 40
3.2. Cuadro de texto ( input text ) … 41
3.3. Cuadro de texto con desplazamiento ( textarea ) … 42
3.4. Casilla de verificación ( checkbox ) … 43
3.5. Botón de opción ( radio button) … 44
3.6. Menú desplegable ( select ) … 45
3.7. Campo oculto ( input hidden ) … 47
3.8. Campo archivo ( file ) … 47
3.9. Ejemplos de formularios… 47
4. MANEJO DE ARCHIVOS … 56
4.1. Envío de archivos a través de un formulario … 56
4.2. Funciones para el manejo de archivos … 58
6. TALLERES DE EJERCICIOS … 74
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor.
CENEAC - PHP MySQL Nivel 1
TEMA 1.
INTRODUCCIÓN A PHP
Desde hace algunos años, ha surgido un conjunto de tecnologías para el desarrollo de aplicaciones para el Web, entre
ellas ASP, JSP y PHP. Esta última está tomando mucha fuerza en este campo, por sus prestaciones, entre otras: es
totalmente gratuito, puede ejecutarse tanto en servidor web Apache de Linux, como en Internet Information Server de
Microsoft en sus distintas versiones para Windows 98, Me, 2000, XP y Vista.
La sintaxis de sus instrucciones es muy parecida a la programación en C, siendo bastante simple la creación de
aplicaciones en PHP, así como también el desarrollo por parte del programador de objetos específicos; otra de sus
características es su natural integración con el manejador de Bases de Datos MySql (el cual es gratuito), la cual permite
ejecutar procesos de automatización de datos eficientemente en tiempo, al no necesitar de controladores adicionales ODBC
para la conexión con la base de datos del proyecto Web.
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 1
CENEAC - PHP MySQL Nivel 1
Para conocer cómo se instala PHP en los distrintos servidores disponibles según el sistema operativo se puede
consultar el apartado de documentación en la página oficial.
La elección del programa servidor tendrá mucho que ver con el sistema operativo que este corriendo en el
computador. Estas serían algunas posibilidades de sistemas operativos y servidores disponibles:
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 2
CENEAC - PHP MySQL Nivel 1
Usualmente se recomienda el uso del servidor Apache, ya que corre sobre ambos tipos de sistemas operativos, es
gratuito y cuenta con un gran número de documentación y soporte en la red.
Una vez seleccionado e instalado el servidor, se debe instalar el PHP. Bajo Windows, se puede instalar rápidamente a
través de un Wizard o programa instalador. Para instalaciones bajo UNIX, se necesita la compilación del código fuente.
2. Se aceptan los términos y condiciones de la licencia y se hace clic en el botón “Next” (Siguiente):
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 3
CENEAC - PHP MySQL Nivel 1
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 4
CENEAC - PHP MySQL Nivel 1
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 5
CENEAC - PHP MySQL Nivel 1
Para poner a funcionar el servidor se debe ir al escritorio de Windows, y luego buscar la ubicación del menú de inicio
Inicio >> Todos los Programas >> Apache HTTP Server 2.2 >> Control Apache Server >> Start,
o por el contrario en la ubicación que se haya indicado durante la instalación. Al ejecutarlo quedará abierta una ventana
MS-DOS en la cual estará corriendo el servidor.
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 6
CENEAC - PHP MySQL Nivel 1
También por defecto el Apache está configurado para que abra el archivo index.html que se encuentre en el
directorio que se indicó. Por lo tanto cuando en el navegador se coloque la dirección http://127.0.0.1 el explorador
cargará la página index.html del directorio C:\Archivos de programa\Apache Software
Foundation\Apache2.2\htdocs.
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 7
CENEAC - PHP MySQL Nivel 1
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 8
CENEAC - PHP MySQL Nivel 1
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 9
CENEAC - PHP MySQL Nivel 1
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 10
CENEAC - PHP MySQL Nivel 1
Para terminar la configuración de php sobre el servidor web apache, se debe editar el archivo “httpd.conf” que se
encuentra en el directorio C:\Archivos de programa\Apache Software Foundation\Apache2.2\conf\ de la
siguiente manera:
Se debe buscar la línea: DirectoryIndex index.html
Y la cambiamos por: DirectoryIndex index.html index.php
Se reinicia el servidor Apache para que reconozca el soporte a PHP.
Para probar que se ha instalado PHP correctamente se crea un script o archivo con el nombre “ prueba.php” y
siempre se deben almacenar en el directorio “C:\Archivos de programa\Apache Software
Foundation\Apache2.2\htdocs\”, a menos que se cambien los parámetros de configuración. El archivo “prueba.php”
tendrá el siguiente contenido:
<?php
echo “El PHP está funcionando correctamente!”;
?>
Luego se debe abrir el navegador y colocar como URL: http://localhost/prueba.php. Entonces se debe ver en
pantalla el mensaje “El PHP está funcionando correctamente!”. En caso contrario, hubo un error u omisión de alguno de los
pasos de la instalación.
Si se desea visualizar los mensajes de error al momento de ejecutar el script php, se debe editar el archivo “php.ini”,
el cual se encuentra bajo Windows en el directorio “C:\Archivos de programa\PHP”.
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 11
CENEAC - PHP MySQL Nivel 1
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 12
CENEAC - PHP MySQL Nivel 1
Más adelante se explicará como se crea y utiliza una base de datos MySQL.
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 13
CENEAC - PHP MySQL Nivel 1
TEMA 2.
PROGRAMACIÓN EN PHP
Una vez instalado PHP, y configurado el servidor, podemos comenzar a escribir nuestro primer script en PHP. Para
crear páginas PHP es suficiente con un editor de texto, como el Block de notas, no obstante se puede utilizar un editor de
código HTML como EditPlus o HomeSite, los cuales permiten escribir código PHP de manera más fácil ya que identifican
los bloque de código que son distinguidos con los delimitadores, una de las ventajas de estos editores es que funcionan
muy bien en equipos de bajo rendimiento. Si requerimos un editor de páginas tipo WYSWYG (What you see, What you get),
se pueden utilizar herramientas como Adobe Dreamweaver o Microsoft Frontpage.
El mecanismo de solicitud y entrega de una página php al navegador web es la siguiente: el navegador solicita al
servidor cierta página con extensión .php, luego el PHP en el servidor interpreta el contenido del archivo, dejando el código
HTML intacto y ejecutando el código en lenguaje PHP, el cual da como resultado código HTML. Por lo tanto, el código PHP
se encuentra embebido en el código HTML.
El código resultante en HTML es enviado de vuelta al navegador. Es por esto que el PHP es independiente del
navegador que se esté utilizando, siempre se va a poder ver el resultado, ya que el mismo está constituido sólo por código
HTML, el cual el navegador puede interpretar sin problemas.
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 14
CENEAC - PHP MySQL Nivel 1
Una vez escrito se almacena en un archivo con la extensión php, y lo colocamos en el directorio creado para la
ejecución de las páginas PHP. Para ejecutar el script, cargamos el URL http://localhost/directorio/prueba.php en
el navegador y veremos el texto siguiente en el cuerpo de la página:
Hola. Este es mi primer script en PHP
Lo primero que apreciamos en el script son sus delimitadores. En la primera línea del script se observa <?php que nos
indica que comienza un conjunto de instrucciones en lenguaje PHP, y en la última ?> para indicar el final. Hay que destacar
que todas las líneas que se encuentre entre estos delimitadores terminan en punto y coma, excepto las sentencias de
control (if, switch, while, for, entre otras).
Como en toda programación, es importante poner comentarios. Para indicar como comentario una sola línea se debe
colocar al principio de la línea //, si lo que se quiere es comentar varias utilizaremos los delimitadores /* y */ al principio y al
final.
La instrucción echo, permite enviar texto al navegador que solicitó la página, aunque también podemos utilizar printf
de uso similar al del C o Perl.
Finalmente, se observa en el script que la palabra myvar comienza con el signo dólar ($) este símbolo le indica a PHP
que es una variable. Nosotros le hemos asignado un texto a esta variable, pero también pueden contener números o
arreglos. Es importante destacar que todas las variables comienzan con el signo dólar.
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 15
CENEAC - PHP MySQL Nivel 1
Si la cadena está encerrada entre dobles comillas ( " ), las variables que estén dentro de la cadena serán expandidas
(sujetas a ciertas limitaciones de interpretación). Como en C y en Perl, el carácter de barra invertida ( " \ " ) se puede usar
para especificar caracteres especiales.
Caracteres protegidos
Carácter Descripción Carácter Descripción
\n Nueva línea \\ Barra invertida
\r Retorno de carro \$ Símbolo Dólar
\t Tabulación horizontal \” Comillas dobles
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 16
CENEAC - PHP MySQL Nivel 1
2.2. Variables
Como se ha observado anteriormente todas la variables deben ser precedidas por el signo dólar ($), y le asignamos el
contenido con el signo igual (=). PHP es un lenguaje “Case Sensitive”, distingue entre mayúsculas y minúsculas, por lo que
no es lo mismo $myvar que $Myvar, éstas son dos variables totalmente distintas. Se debe comenzar el nombre de la
variable con una letra o una raya (underscore), y luego puede ser seguido de cualquier cantidad de números, letras y rayas.
Ejemplo 3: Nombre del archivo: varia.php
<html>
<body>
<?php
$myvar = "SEVILLA <br>";
$Myvar = "MADRID <br>";
echo $myvar; // imprime SEVILLA
echo $MyVar; // esto es un error, POR QUE?
?>
</body>
</html>
2.3. Constantes
Las constantes son similares a las variables, con la salvedad, de que no llevan el signo dólar delante, y sólo la
podemos asignar una vez. Para definir una constantes usaremos la función define como se muestra en el siguiente ejemplo:
Ejemplo 4:
Nombre del archivo: const.php
<html>
<body>
<?php
define ("FRASE", "Hola Mundo");
echo FRASE; // imprimirá por pantalla “Hola Mundo”
?>
</body>
</html>
PHP define varias constantes y proporciona un mecanismo para definir aun más en tiempo de ejecución. Las
constantes son como las variables, salvo por las dos circunstancias de que las constantes deben ser definidas usando la
función define(), y que no pueden ser redefinidas más tarde con otro valor.
La siguiente tabla describe algunas de las constantes predefinidas en PHP
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 17
CENEAC - PHP MySQL Nivel 1
PHP_VERSION La cadena que representa la versión del analizador de PHP en uso en la actualidad.
PHP_OS El nombre del sistema operativo en el cuál se ejecuta el analizador PHP.
TRUE Valor verdadero.
FALSE Valor falso.
E_ERROR Denota un error distinto de un error de interpretación del cual no es posible recuperarse.
E_WARNING Denota una condición donde PHP reconoce que hay algo erróneo, pero continuará de todas formas;
pueden ser capturados por el propio archivo de comandos.
E_* Constantes se usan típicamente con la función error_reporting() para configurar el nivel de informes
de error.
2.4. Operadores
Operador Descripción
$a = 'Hola'; La variable $c contiene la
$b = "Mundo"; concatenación del contenido de la
variable $a con el de $b
$c = $a . $b;
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 18
CENEAC - PHP MySQL Nivel 1
Operador Descripción
$a < $b $a menor que $b
$a > $b $a mayor que $b
$a <= $b $a menor o igual que $b
$a >= $b $a mayor o igual que $b
$a == $b $a igual que $b
$a != $b $a distinto que $b
$a === $b $a es idéntico a $b (coinciden en contenido y tipo de datos)
Operador Descripción
$a AND $b Verdadero si ambos son verdadero
$a && $b Verdadero si ambos son verdadero
$a OR $b Verdadero si alguno de los dos es verdadero
$a || $b Verdadero si alguno de los dos es verdadero
$a XOR $b Verdadero si sólo uno de los dos es verdadero
!$a Verdadero si $a es falso, y recíprocamente
Para demostrar el uso de algunos operadores, se mostrarán a continuación algunos ejemplos en PHP:
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 19
CENEAC - PHP MySQL Nivel 1
Ejemplo 7: Programa en PHP que calcula el área de un triangulo cuya formula es a = ( b*h ) / 2
Nombre del archivo: area.php
<html>
<body>
<?php
$Base=15; $Altura=12;
$Area = ($Base * $Altura)/2;
printf ("El área del triángulo es: $Area");
?>
</body >
</html>
Ejemplo 8: Programa que dados 2 números calcula la suma, resta, multiplicación, división y módulo.
Nombre del archivo: operacionesbasicas.php
<html>
<body>
<?php
$Num1=8;
$Num2=5;
echo "La suma de $Num1 y $Num2 es: ".($Num1+$Num2). "<br>";
echo "La resta de $Num1 y $Num2 es: ".($Num1-$Num2) . "<br>";
echo "La multiplicación de $Num1 y $Num2 es: “.($Num1*$Num2) . "<br>";
echo "La división de $Num1 y $Num2 es: ".($Num1/$Num2) . "<br>";
echo "El módulo de $Num1 y $Num2 es: ".($Num1 % $Num2) . "<br>";
/* La etiqueta HTML <br> se refiere a un salto de línea, en PHP se pueden mandar a imprimir
etiquetas HTML dentro del texto */
?>
</body >
</html>
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 20
CENEAC - PHP MySQL Nivel 1
2.5.1. if...else
La instrucción if...else permite ejecutar un bloque de instrucciones si la condición es Verdadera y otro bloque de
instrucciones si ésta es Falsa. Es importante tener en cuenta, que la condición que evaluemos ha de estar encerrada entre
paréntesis (esto es aplicable a todas las sentencias de control). Si la cantidad de instrucciones que están dentro del if o en
la cláusula else excede a 1 entonces deben estar encerradas entre llaves {…}
if (condición) {
…
Este bloque se ejecuta si la condición es VERDADERA
…
} else {
…
Este bloque se ejecuta si la condición es FALSA
…
}
2.5.2. if...elseif...else
La instrucción if…elseif…else permite ejecutar varias condiciones en cascada.
Ejemplo 10:
Nombre del archivo: sisno.php
<?php
$nombre = "Eva";
if ($nombre == "")
echo "Tu no tienes nombre";
elseif (($nombre == "eva") OR ($nombre == "Eva"))
echo "Tu nombre es EVA";
else
echo "Tu nombre es " . $nombre;
?>
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 21
CENEAC - PHP MySQL Nivel 1
2.5.3. switch...case...default
Una alternativa a if...elseif...else, es la instrucción switch, la cuál evalúa y compara por igual la expresión con cada
caso de la estructura, si se recorren todos los casos de la lista y no se encuentra una comparación que sea Verdadera,
ejecuta el código del bloque que haya en el caso por defecto: “default”. Si se encuentra una comparación que sea
verdadera se ejecutarán las instrucciones desde el inicio de ese caso y hasta ejecutar una instrucción “break”, de lo
contrario ejecutará todas las instrucciones hasta el final del switch.
switch (expresion) {
case valor 1: …
…
break;
case valor N: …
…
break;
default: …
…
}
Veamos un ejemplo.
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 22
CENEAC - PHP MySQL Nivel 1
2.5.4. while
La instrucción while ejecuta un bloque de código mientras se cumpla una determinada condición. Si el bloque de
código contiene una sola instrucción, no es necesario colocar las llaves.
Ejemplo 12. Uso de la estructura While.
Nombre del archivo: While.php
<?php
$num = 1;
while ($num <= 5) {
echo $num;
$num++;
}
?>
Podemos terminar un ciclo while antes de haber alcanzado la condición de parada utilizando la sentencia break.
2.5.5. do...while
Esta sentencia es similar a while, salvo que primero se ejecuta el bloque de código y después se evalúa la condición,
por lo que las instrucciones se ejecuta siempre al menos una vez. Si el bloque de código contiene una sola instrucción, no
es necesario colocar las llaves.
Ejemplo 14. Uso de la estructura do while.
Nombre del archivo: doWhile.php
<?php
$num = 10;
do {
echo $num;
$num--;
} while ($num > 5);
?>
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 23
CENEAC - PHP MySQL Nivel 1
2.5.6. for
El ciclo for no es estrictamente necesario, cualquier ciclo for puede ser sustituido usando while. Sin embargo, este ciclo
resulta muy útil cuando se debe ejecutar un bloque de código a condición de que una variable se encuentre entre un valor
mínimo y otro máximo. El ciclo for también se puede romper mediante la sentencia break.
Sintaxis del ciclo for:
for ($v = valor_inicial; $v <= Valor_final; $v++)
{… }
La variable $v es inicializada con valor_inicial y ejecutara el ciclo hasta que se cumpla la condición de que $v sea
menor o igual a Valor_final, la variable es incrementada en una unidad cada vez que se repite el ciclo.Si el bloque de código
contiene una sola instrucción, no es necesario colocar las llaves.
Ejercicios:
1. Listar los números del 1 al 100. (Nombre del archivo: numeros.php)
2. Listar los números pares del 1 al 100.(Nombre del archivo: pares.php)
3. Mostrar la tabla de multiplicar de un número n asignado a una variable. (Nombre del archivo: tablas.php)
4. Mostrar el factorial de un número que se encuentra almacenado en una variable (Nombre del archivo: factorial.php)
5. Listar los número primos entre dos valores, estos se encuentran almacenados en dos variables (Nombre del archivo:
Primos.php)
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 24
CENEAC - PHP MySQL Nivel 1
Al no especificar una posición dentro de los corchetes, el arreglo inicia en la posición cero. Otra forma de crear el
arreglo sería especificando el valor de la posición del elemento dentro de los corchetes:
<?php
$ciudad[2] = "Venezuela";
$ciudad[0] = "México";
$ciudad[1] = "Roma";
echo "Yo vivo en " . $ciudad[0] . "<br>"; // México
echo "Mis padres viven en ".$ciudad[2]; // Venezuela
?>
Esta es una manera de asignar elementos a un arreglo, pero una manera más formal es utilizando la función array:
<?php
$ciudad = array("París", "Roma", "Sevilla", "Londres");
Sino se especifica, el primer índice es el cero, pero podemos utilizar el operador => para especificar el índice inicial.
$ciudad = array (1=>"París", "Roma", "Sevilla", "Londres");
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 25
CENEAC - PHP MySQL Nivel 1
Utilizando el método clásico de índices, cada día de la semana se representaría por un entero, 0 para lunes, 1 para
martes, 2 para miércoles, etc.
$visitas[0] = 200;
$visitas[1] = 186;
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 26
CENEAC - PHP MySQL Nivel 1
Recorrer una tabla con las funciones anteriores se hace un poco enredado, para ello se recomienda utilizar la función
each(), la cual devuelve el valor del elemento actual y su índice, y desplaza el puntero al siguiente elemento, cuando
llega al final devuelve falso. La función each() devuelve un arreglo de cuatro (4) elementos con los siguientes indices: 0, 1,
key y value. Los elementos 0 y key contienen el nombre del índice del elemento de la matriz, y 1 y value contienen los
datos. Otra función que complementa el uso de la función each es la función list(), la cual se comporta como un operador
de asignación: asigna valores a una lista de variables. Esta función solo funciona con matrices numéricas y asume que el
índice numérico empieza en 0.
Ejemplo 17: Recorrido de un arreglo unidimensional.
Nombre del archivo: arreglo_unidimensional.php
<?php
$visitas = array("lunes" =>200, "martes"=>186, "miércoles"=>190, "jueves"=>175);
reset($visitas);
Arreglos multidimensionales
Los arreglos multidimensionales son simplemente arreglos unidimensionales en las cuales cada elemento es a su vez
otro arreglo.
Ejemplo 18: Recorrido de un arreglo bidimensional.
Nombre del archivo: arreglo_bidimensional.php
<?php
$calendario[] = array (1, "enero", 31);
$calendario[] = array (2, "febrero", 28);
$calendario[] = array (3, "marzo", 31);
$calendario[] = array (4, "abril", 30);
$calendario[] = array (5, "mayo", 31);
while (list($clave, $valor) = each($calendario))
{
$cadena = $valor[1];
$cadena .= " es el mes número " . $valor[0];
$cadena .= "y tiene " . $varlor[2] . " días<BR>";
echo $cadena;
}
?>
2.7. Funciones
Muchas veces, cuando trabajamos en el desarrollo de una aplicación, surge la necesidad de ejecutar un mismo bloque
de código en diferentes partes de nuestra aplicación. Una Función no es más que la ejecución de un bloque de
instrucciones al que se le pasa una serie de parámetros y retorna o no un valor. Como todos los lenguajes de programación,
PHP tiene una gran cantidad de funciones para nuestro uso.
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 27
CENEAC - PHP MySQL Nivel 1
Para declarar una función se debe utilizar la instrucción function seguido de su nombre, y después entre paréntesis
la lista de argumentos separados por comas, también pueden existir funciones que no tengan argumentos.
Cualquier instrucción válida de PHP puede aparecer en el cuerpo (lo que antes hemos llamado bloque de código) de
una función, incluso otras funciones y definiciones de clases.
En PHP no podemos redefinir una función previamente declarada, pero si es posible definir la función en cualquier
parte de la página, ya sea antes o después de que esta sea invocada.
<?php
function mayor ($x, $y) {
if ($x > $y)
return $x." es mayor que ".$y;
else
return $y." es mayor que ".$x;
}
?>
<?php
function mayor ($x, $y) {
$msg = "";
if ($x > $y)
$msg = $x." es mayor que ".$y;
else
$msg = $y." es mayor que ".$x;
return $msg;
}
?>
Con la instrucción return puede devolverse cualquier tipo de valor, incluyendo arreglos y objetos. PHP solo permite a
las funciones devolver un valor.
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 28
CENEAC - PHP MySQL Nivel 1
En PHP podemos definir valores por defecto para los parámetros de una función. Estos valores tienen que ser una
expresión constante, y no una variable o miembro de una clase. Además cuando usamos parámetros por defectos, éstos
deben estar a la derecha de cualquier parámetro sin valor por defecto, de otra forma PHP nos devolverá un error.
<?php
function suma ($y, $x=1) {
$x = $x + 1;
return $x+$y;
}
?>
En una función pueden existir variables estáticas (static) y globales (global). Las variables estáticas se inicializan
sólamente la primera vez que es llamada dicha función, y preservan su valor para posteriores llamadas.
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 29
CENEAC - PHP MySQL Nivel 1
Las variables globales, se declaran dentro de una función, para hacer referencia a una variable que ha sido declarada
fuera de la función, tomando el valor que tenga en ese momento, pudiendo se modificado en la función.
Ejemplo 21: Variable global.
Nombre del archivo: variable_global.php
<?php
$a = 1;
function ver_a() {
global $a;
echo $a."<BR>"; // imprimirá el valor de $a
$a++; // sumamos 1 a $a
}
ver_a(); // imprimirá 1
ver_a(); // imprimirá 2
$a = 7;
ver_a(); // imprimirá 7
ver_a(); // imprimirá 8
?>
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 30
CENEAC - PHP MySQL Nivel 1
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 31
CENEAC - PHP MySQL Nivel 1
strtoupper string strtoupper ( string Devuelve la cadena con todas sus letras en mayúsculas.
cadena) <?php strtoupper("HoLa"); // retorna HOLA ?>
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 32
CENEAC - PHP MySQL Nivel 1
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 33
CENEAC - PHP MySQL Nivel 1
<?php
$texto = "El veloz murciélago lindo comía feliz semillas
y pan.";
wordwrap($texto, 20, "<br />\n");
/* retorna:
El veloz murciélago <br/> lindo comía feliz<br/>
semillas y pan. */
?>
nl2br string nl2br ( string cadena) Devuelve la cadena con '<BR>' insertados antes de cada
nueva línea.
<?php
nl2br("hola como\n estas");
// retorna “hola como<br>\n estas”
?>
ord int ord ( string cadena) Devuelve el valor ASCII del primer carácter de cadena. Esta
función complementa a chr().
<?php
echo ord("hola como estas");
// retorna el número 104
?>
chop string chop ( string cad) Devuelve la cadena argumento sin los espacios sobrantes,
incluyendo los saltos de línea.
<?php
echo chop("hola como estas\n \r");
// retorna “hola como estas”
?>
strip_tags string strip_tags ( string cad Esta función intenta eliminar todas las etiquetas HTML y PHP
[, string etiq_permitidas]) de la cadena dada. Causa error por precaución en caso de
etiquetas incompletas o falsas.
<?php
strip_tags("<p><b>hola como estas</b></p>");
// retorna “hola como estas”
strip_tags("<p><b>hola como estas</b></p>",
"<b>");
// retorna “<b>hola como estas</b>”
?>
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 34
CENEAC - PHP MySQL Nivel 1
<?php
strpos("abcdef abcdef" , "a"); // retorna 0
strpos("abcdef abcdef" , "a", 1); // retorna 7
?>
strrchr string strrchr ( string cadena, Esta función devuelve una subcadena del primer parametro
string texto) “cadena” que comienza en la última aparición del segundo
parámetro “texto” en la cadena y continúa hasta el final de la
misma.
Devuelve FALSE si el “texto” no es encontrado.
Si el “texto” contiene más de un carácter, sólo se usará el
primero.
Si el “texto” no es una cadena, se convierte a entero y se usa
como código de un carácter ASCII.
<?php
strrchr("/direccion/del/archivo/archivo.php", "/");
// retorna "/archivo.php"
?>
substr_count int substr_count ( string Devuelve el número de veces que la subcadena “texto” se
cadena, string texto) encuentra en la cadena “cadena”.
<?php
substr_count("tres tristes tigres comen trigo", "tr");
//retorna 3
substr_count("tres tristes tigres comen trigo",
"tr",13,6); // retorna 0
?>
split array split ( string patrón, Devuelve un arreglo de cadenas, cada una de las cuales es
string cadena [, int limite] ) una subcadena formada al dividir esta en los límites formados
por la expresión regular patrón. Si ocurre un error, devuelve
un valor falso.
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 35
CENEAC - PHP MySQL Nivel 1
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 36
CENEAC - PHP MySQL Nivel 1
http://ve2.php.net/manual/es/function.date.php
Para ver algunos ejemplos supongamos que hoy es 31 de marzo de 2009 y que son las 14 horas 30 minutos y 22
segundos:
date("d-m-Y") -> 31-03-2009
date("H:i:s") -> 14:30:22
date("Y") -> 2009
date("YmdHis") -> 20090331143022
date("d/m/Y h:i a") -> 31/03/2009 2:30 pm
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 37
CENEAC - PHP MySQL Nivel 1
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 38
CENEAC - PHP MySQL Nivel 1
Para el ejemplo anterior nos daría que la fecha es incorrecta, febrero nunca tiene un día 31.
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 39
CENEAC - PHP MySQL Nivel 1
TEMA 3.
FORMULARIOS
Los formularios no forman parte del lenguaje PHP, sino del lenguaje HTML, pero es necesario conocer sus elementos
básicos, ya que después que un usuario interactúa con una página Web, el procesamiento de la información colocada en
los campos de un formulario será a través de PHP. Es decir, la manera en la que un usuario introduce datos de entrada a la
aplicación generalmente es por medio del uso de formularios HTML.
Nota: Antes de empezar a conocer la sintáxis del formulario y sus objetos, es necesario recordar que en una página
web se debe especificar la codificación de caracteres (charset) que soportará la misma, a fin de que acepte ciertos
caracteres como los acentos. En nuestros ejemplos no colocamos la etiqueta que define la codificación y por esta razón en
verán algunos simbolos html que sustituyen a los caracteres acentuados para su correcta visualización.
En el parámetro action indicamos a que página o script van a ser enviados los datos recopilados en el formulario
para que sean procesados. El parámetro method indica la manera como serán enviados los datos. Puede ser por medio
de dos métodos: GET y POST.
En el método GET, los datos son enviados al servidor mediante un query string, es decir, son enviados por el URL
siguiendo un formato predeterminado, por ejemplo:
http://www.dominio.com/index.php?variable1=valor1&variable2=valor2&...&variableN=valorN
Tiene la restricción de solo aceptar un número finito de caracteres en el URL, y su principal uso es el de facilitar la
navegación de las páginas en los links.
En el método POST, los datos son enviados al servidor en la negociación entre el cliente y el servidor, no en el URL.
Esta es la forma más segura de enviar información ya que no se muestran al usuario datos que pueden llegar a ser
delicados.
Existen ciertas variables predeterminadas de PHP que nos permiten manejar los datos enviados por un formulario.
Estas variables son los arreglos $_GET, $_POST y $_REQUEST.
Si en un formulario se usa el método GET, las variables son colocadas en el arreglo $_GET.
Si en un formulario se usa el método POST, las variables son colocadas en el arreglo $_POST.
El arreglo $_REQUEST obtiene las variables pasadas por ambos métodos.
Por ejemplo, consideremos el siguiente ejemplo donde recogemos los datos “nombre” y “email” en un formulario y
estos son impresos en la siguiente página:
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 40
CENEAC - PHP MySQL Nivel 1
Atributos de la etiqueta:
type: indica que su tipo es texto
name: nombre que se le da al campo
value: valor por defecto que tendrá el campo
size: tamaño que tendrá el campo
maxlength: cantidad máxima de caracteres que pueden ser ingresados
readonly: atributo de sólo lectura
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 41
CENEAC - PHP MySQL Nivel 1
Se debe poner atención al parámetro name de un elemento del formulario ya que es el mismo nombre con el que se
referenciará la variable en PHP, como se pudo observar en el ejemplo anterior, el elemento <input type=”text”
name=”equipo”> se maneja en PHP como $_POST[“equipo”]. De la misma manera se trabaja con todos los elementos
de formularios.
Atributos de la etiqueta:
name: nombre que se le da al campo Es de color rojo
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 42
CENEAC - PHP MySQL Nivel 1
Ejemplo 28: Programa PHP que pide al usuario sus sitios web favoritos y los muestra como salida.
Nombre del archivo: sites.html
<html>
<head>
<title>Sitios Web Favoritos</title>
</head>
<body>
<form method="post" action="sites.php">
Indica tus sitios web favoritos:
<br>
<textarea name="websites" cols="50" rows="5">
http://
http://
http://
</textarea>
<input type="submit" name="Enviar" value="Enviar">
</form>
</body>
</html>
Atributos de la etiqueta:
type: indica que su tipo es checkbox
name: nombre que se le da al campo
value: valor que se envía cuando la opción se encuentra seleccionada
checked: indica que la casilla de verificación aparecerá seleccionada por defecto.
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 43
CENEAC - PHP MySQL Nivel 1
Ejemplo 29: Programa que pregunta lo que haces al levantarte y lo despliega como salida.
Nombre del archivo: checkboxes.html
<html>
<head>
<title>Tareas al levantarse</title>
</head>
<body>
<form method="post" action="checkboxes.php">
Qué haces cuando te levantas?<br><br>
<input name="sel1" type="checkbox" value="Lavarme la cara">
Lavarme la cara
<input name="sel2" type="checkbox" value="Cepillarme los dientes">
Cepillarme los dientes
<input name="sel3" type="checkbox" value="Desayunar">
Desayunar <br><br>
<input type="submit" name="Enviar" value="Enviar">
</form>
</body>
</html>
Todas las opciones del mismo conjunto deben llamarse de la misma forma
Atributos de la etiqueta:
type: indica que su tipo es radio
name: nombre que se le da al campo
value: valor de la opción
checked: si aparece escrito, le indica al botón que la opción ha sido seleccionada
Por ejemplo, si se quiere colocar dos botones de opción para representar los valores Masculino y Femenino, las
instrucciones serían:
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 44
CENEAC - PHP MySQL Nivel 1
Ejemplo 30: Programa que presenta una suma, y se debe elegir la respuesta entre tres opciones posibles y la salida
muestra la opción seleccionada e indica si es la correcta.
Nombre del archivo: radio.html
<html>
<head>
<title>Suma</title>
</head>
<body>
<form method="get" action="checkboxes.php">
Cuál es el resultado de 2+2?<br><br>
<input name="resp" type="radio" value="44">44<br>
<input name="resp" type="radio" value="22">22<br>
<input name="resp" type="radio" value="4">4<br><br>
<input type="submit" name="Enviar" value="Enviar">
</form>
</body>
</html>
Atributos de la etiqueta:
name: nombre que se le da al campo
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 45
CENEAC - PHP MySQL Nivel 1
Ejemplo 31: Programa que pregunta opciones para armar una computadora y despliega las opciones elegidas
Nombre del archivo: lista.html
<html>
<head>
<title>Partes de Computadora</title>
</head>
<body>
<form method="get" action="lista.php">
Elige la computadora a comprar<br><br>
<select name="compu">
<option value="Pentium 4">Pentium 4</option>
<option value="Core 2 Duo">Core 2 Duo</option>
<option value="MAC">MAC</option>
</select>
<br><br>Selecciona los dispositivos de la computadora:<br><br>
<select name="dispo[]" multiple>
<option value="Kit Multimedia">Kit Multimedia</option>
<option value="Quemadora">Quemadora</option>
<option value="Web Cam">Webcam</option>
</select>
<input type="submit" name="Enviar" value="Enviar">
</form>
</body>
</html>
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 46
CENEAC - PHP MySQL Nivel 1
La información de este archivo se almacena en un arreglo predeterminado del PHP llamado $_FILES. Cuyos campos
principales son:
name: nombre del archivo con extensión ( $_FILES[“name”] )
tmp_name: nombre del archivo luego de haber sido cargado por el browser y colocado en el temporal
( $_FILES[“tmp_name”] )
error: indica si hubo error en la operación ( $_FILES[“error”] )
size: tamaño del archivo ( $_FILES[“size”] )
type: tipo de archivo ( $_FILES[“type”] )
Es importante destacar que para el correcto funcionamiento de este campo, se debe colocar un atributo adicional
enctype="multipart/form-data" en la etiqueta form, la cual debe quedar así:
<form action="pagina.php" name="form1" method="post" enctype="multipart/form-data">
Ejemplo 32: Para el uso del ciclo FOR un programa para créditos bancarios
Nombre del archivo: banco.html
<html>
<head>
<title>Crédito bancario</title>
</head>
<body>
<form method="post" action="banco.php">
¿Cuál de estos paquetes te interesa tomar?<br><br>
<input name="valor" type="radio" value="1000">
Paquete de Bs. 100 con el 5.0% de interés <br>
<input name="valor" type="radio" value="5000">
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 47
CENEAC - PHP MySQL Nivel 1
while ($_POST["valor"]>0) {
$duracion=$duracion+1;
$mensualmente = $_POST["pagomes"]-($_POST["valor"]*$interes/100);
if ($mensualmente<=0) {
echo "¡Tu necesitas hacer pagos de mayor monto!";
break;
}
$_POST["valor"] = $_POST["valor"] - $mensualmente;
}
if ($mensualmente>0)
echo "La duración es de: $duracion meses con un interes del $interes %";
?>
</body>
</html>
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 48
CENEAC - PHP MySQL Nivel 1
Ejemplo 33: El siguiente programa demuestra como se pueden trabajar los arreglos como elementos hash
Nombre del archivo: estados.php
<html>
<head>
<title>Estados de Venezuela</title>
</head>
<body>
<form method="post" action="capital.php">
¿De qué estado te gustaría conocer su capital?<br><br>
<select name="estado">
<?php
$estados=array("Carabobo","Nueva Esparta","Bolívar");
for ($counter=0;$counter<count($estados);$counter++) {
echo "<option value=$counter>$estados[$counter]</option>";
}
?>
</select>
<input type="submit" name="Enviar" value="Pulse aquí para calcular">
</form>
</body>
</html>
Como se puede observar, ambos archivos tienen extensión .php, esto se debe a que es necesario ejecutar código PHP en
los dos, para poder formar dinámicamente las dos páginas. A continuación se trabajará con un ejemplo en donde se
manejan varios elementos de formulario juntos.
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 49
CENEAC - PHP MySQL Nivel 1
Ejemplo 34: Programa en PHP que le pide al usuario el nombre (text box), apellido (text box), edad (text box), domicilio
(text area), que seleccione el rango de sueldo que le gustaría ganar (list box) y que seleccione como considera su
desempeño laboral (radio button).
El programa deberá destacar como “no convenientes a nuestros requisitos” las opciones donde se elija un sueldo muy bajo,
un sueldo extremo o si la persona considera su desempeño laboral como pésimo.
Nombre del archivo: minicu.html
<html>
<head>
<title>MiniCurriculum</title>
</head>
<body>
<form method="post" action="minicu.php">
Nombres: <input type="text" name="nombres"><br>
Apellidos: <input type="text" name="apellidos"><br>
Edad: <input type="text" name="edad"><br>
Dirección: <textarea name="domicilio" rows="4" cols="40"></textarea>
<br>
¿Qué salario quieres ganar?
<select name="salario">
<option value=0>Menos de Bs. 1,000</option>
<option value=1000>Entre Bs. 1,000 y Bs. 3,000</option>
<option value=3000>Entre Bs. 3,000 y Bs. 5,000</option>
<option value=5000>Más de Bs. 5,000</option>
</select>
<br>
¿Cómo consideras tu desempeño?<br>
<input name="desempe" type="Radio" value="Pesimo">Pésimo<br>
<input name="desempe" type="Radio" value="Regular">Regular<br>
<input name="desempe" type="Radio" value="Excelente">Excelente<br>
<input type="submit" value="Presione cuando este listo(a)" name="Enviar">
<input type="reset" value="Borrar" >
</form>
</body>
</html>
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 50
CENEAC - PHP MySQL Nivel 1
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 51
CENEAC - PHP MySQL Nivel 1
Se hace de la misma manera para el campo año, diferenciando el rango en el cual va a iterar el ciclo FOR
(por ejemplo, desde el año 1950 hasta el año actual).
<select name="ano">
<?php
for ($i=1950; $i<=date("Y"); $i++) {
echo "<option value='$i'>$i</option> \n";
}
?>
</select>
g. Guardar la página.
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 52
CENEAC - PHP MySQL Nivel 1
Formulario registro_usuario.php
2. Creación de la página procesar_registro.php que procesa la información colocada por el usuario en la página
registro_usuario.php.
d. Sustituir las etiquetas de los campos, por el código que se encuentra en negrita en el código siguiente:
<body>
<table width="60%" border="0" align="center" cellpadding="0" cellspacing="5">
<tr>
<td colspan="2" align="center">Registro de Usuario</td>
</tr>
<tr>
<td width="32%"> Cédula:</td>
<td width="68%"><?php echo trim(strtoupper($_POST["cedula"])); ?></td>
</tr>
<tr>
<td>Nombre:</td>
<td><?php echo trim(strtoupper($_POST["nombre"])); ?></td>
</tr>
<tr>
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 53
CENEAC - PHP MySQL Nivel 1
<td>Apellido:</td>
<td><?php echo trim(strtoupper($_POST["apellido"])); ?></td>
</tr>
<tr>
<td>Estado donde nació:</td>
<td>
<?php
switch ($_POST["estado"]) {
case 0: echo "No selecciono estado."; break;
case 1: echo "Aragua"; break;
case 2: echo "Carabobo"; break;
case 3: echo "Distrito Capital"; break;
case 4: echo "Miranda"; break;
case 5: echo "Mérida"; break;
case 6: echo "Trujillo"; break;
case 7: echo "Zulia"; break;
}
?>
</td>
</tr>
<tr>
<td>Dirección:</td>
<td><?php echo trim(strtoupper($_POST["direccion"])); ?></td>
</tr>
<tr>
<td>Fecha de Nacimiento:</td>
<td><?php
$fecha = mktime (0, 0, 0, $_POST["mes"], $_POST["dia"], $_POST["ano"]);
setLocale (LC_TIME,"esp");
echo strftime ("Naciste el día %A, %d de %B de %Y", $fecha);
?>
</td>
</tr>
<tr>
<td>Sexo:</td>
<td> <?php
if (isset($_POST["sexo"])) {
if ($_POST["sexo"]=="F")
echo "Femenino";
if ($_POST["sexo"]=="M")
echo "Masculino";
} else
echo "No selecciónó su sexo";
?> </td>
</tr>
<tr>
<td>Pasatiempos:</td>
<td><?php
if (isset($_POST["h1"])) echo strtoupper($_POST["h1"])." <BR>";
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 54
CENEAC - PHP MySQL Nivel 1
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 55
CENEAC - PHP MySQL Nivel 1
TEMA 4.
MANEJO DE ARCHIVOS
Un usuario puede enviar a través de un formulario un archivo de texto ó binario, para que luego este pueda ser
almacenado en el servidor. El PHP posee la capacidad de manejar estos archivos, pudiendo acceder a sus principales
atributos como lo son el nombre, el tamaño, el tipo de archivo, entre otros.
También se pueden acceder archivos de texto o binarios, que se encuentren en un directorio especifico, para
manipularlos con distintas funciones predeterminadas del PHP, las cuales se presentarán más adelante.
Repasando lo expuesto en el capítulo anterior, la información referente al archivo enviado se almacena en un arreglo
predeterminado del PHP llamado $_FILES, cuyos índices principales son:
name: nombre del archivo con extensión ( $_FILES[“name”] )
tmp_name: nombre del archivo luego de haber sido cargado por el navegador y colocado en la carpeta temporal
del servidor. ( $_FILES[“tmp_name”] )
error: indica si hubo error en la operación ( $_FILES[“error”] )
size: tamaño del archivo en bytes ( $_FILES[“size”] )
type: tipo de archivo MIME ( $_FILES[“type”] )
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 56
CENEAC - PHP MySQL Nivel 1
Luego de que se envía la información del formulario, el archivo enviado es colocado en directorio como archivo
temporal. Para poder pasarlo a una ubicación definitiva dentro del servidor, se debe utilizar la siguiente función:
bool move_uploaded_file(string archivo, string destino)
Esta función realiza un chequeo para asegurar que el archivo indicado por archivo haya sido cargado a través del
mecanismo de carga HTTP POST de PHP. Si el archivo es válido, será movido al nombre de archivo dado por destino.
Una función que puede complementar el uso de esta función es: is_uploaded_file ().
bool is_uploaded_file (string archivo)
Devuelve TRUE si el archivo dado por archivo fue cargado a través de HTTP POST.
Ejemplo 36: Página que contiene un formulario que envía un archivo a otra página que procesa la información y
dependiendo de ciertos requerimientos se almacena en el servidor (el archivo debe ser de tipo jpg y no pesar más de
500Kb).
Nombre del archivo: captura_archivo.php
<html>
<head>
<title>Envío de archivos</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form action="procesar_archivo.php" method="post" enctype="multipart/form-data">
Seleccione el archivo a enviar:
<input name="archivo" type="file" id="archivo">
<input type="submit" name="Submit" value="Continuar">
</form>
</body>
</html>
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 57
CENEAC - PHP MySQL Nivel 1
Modo Descripción
r Abre el archivo para sólo lectura, sitúa el apuntador al principio
r+ Abre el archivo para lectura y escritura, sitúa el apuntador al principio
w Abre el archivo para sólo escritura, sitúa el apuntador al principio y trunca la longitud a cero, si no existe trata de
crearlo
w+ Abre el archivo para lectura y escritura, sitúa el apuntador al principio y trunca la longitud a cero, si no existe
trata de crearlo
a Abre el archivo para sólo escritura, sitúa el apuntador al final, si no existe trata de crearlo
a+ Abre el archivo para lectura y escritura, sitúa el apuntador al final, si no existe trata de crearlo
x Crea y abre el archivo para sólo escritura, sitúa el apuntador al principio, si existe devuelve falso, si no existe
trata de crearlo
x+ Crea y abre el archivo para lectura y escritura, sitúa el apuntador al principio, si existe devuelve falso, si no
existe
b Se incluye aparte de las demás letras. Abre el archivo en modo binario, donde esté disponible.
Escribe el contenido de datos en el archivo apuntado por apuntador. Si long está definido, escribira tantos
caracteres lo indique o hasta que se alcance el final de datos (lo que ocurra primero).
Lee de un archivo apuntado por apuntador tantos bytes indicados por long. La lectura acaba cuando se
alcanzan long bytes o se llega al final del archivo EOF.
El lenguaje PHP cuenta con otras funciones para el manejo de archivos, se recomienda revisar la sintaxis de
cada una de ellas en la documentación encontrada en la página oficial http://www.php.net:
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 58
CENEAC - PHP MySQL Nivel 1
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 59
CENEAC - PHP MySQL Nivel 1
TEMA 5.
MYSQL: CREACIÓN Y MANEJO DE BASES DE DATOS
Hoy en día son muchas las aplicaciones que necesitan acceder a datos, los cuales deben ser almacenados en algún
medio de manera permanente, y las aplicaciones deben disponer de una herramienta para acceder a ellos. De esta manera
surgen entonces los Sistemas Manejadores de Bases de Datos (SMBD), los cuales proporcionan una interfaz entre las
aplicaciones y Sistema Operativo, logrando que el acceso a los datos se realice de una manera mas eficiente, más fácil de
implementar y sobre todo más segura.
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 60
CENEAC - PHP MySQL Nivel 1
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
Donde se ubica el directorio bin, en el directorio mysql, y se ejecuta el archivo mysql.exe, pasándole como parámetros
–-user [nombre del usuario] –-password [contraseña]. Luego de ejecutarse la autenticación del usuario en el sistema,
aparecerá el prompt del mysql, y es ahí donde se escribirán las instrucciones ó comandos a ejecutar.
Para desconectarse del servidor:
mysql> QUIT
Bye
C:\mysql\bin>
$cfg['blowfish_secret'] = 'ba17c1ec07d65003';
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 61
CENEAC - PHP MySQL Nivel 1
$i = 0;
$i++;
/* tipo de autenticación */
$cfg['Servers'][$i]['auth_type'] = 'cookie';
Es posible crear el archivo config.inc.php a partir del archivo config.sample.inc.php el cual tiene una
configuración por defecto. Para mas detalle sobre la configuración de las directivas consulte el siguiente enlace:
http://www.phpmyadmin.net/documentation/
Luego de haber ejecutado los pasos anteriores, se puede comenzar a utilizar la herramienta. Se debe escribir en el
navegador el siguiente URL: http://localhost/phpmyadmin y aparecerá una pantalla como la siguiente, en la que
debemos suminstrar un usuario válido con su contraseña con los privilegios de acceso adecuado al SMBD:
Nota: Para los efectos de este curso, utilice como usuario: php y como contraseña: php.
Al iniciar la sesión en phpmyadmin, se mostrará la página principal, en donde encontraremos multiples opciones para
administrar nuestra base de datos:
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 62
CENEAC - PHP MySQL Nivel 1
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 63
CENEAC - PHP MySQL Nivel 1
Al finalizar de copiar los atributos de los campos se hace clic en el botón “Grabar” y aparecerá la siguiente ventana:
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 64
CENEAC - PHP MySQL Nivel 1
Seleccionar todos los campos de un registro dado SELECT * FROM editoriales WHERE id=2
Seleccionar campos especificos de un registro dado SELECT nombre, direccion FROM editoriales WHERE
id=2
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 65
CENEAC - PHP MySQL Nivel 1
Ejemplo 38: Conexión con el SMBD y lectura de un registro de una tabla almacenada en una base datos.
Nombre del archivo: conexion_mysql.php
<?php
/* Conexión al servidor MySQL */
// se abre la conexión
$link = mysql_connect ('localhost', 'php', 'php');
if (!$link) {
die ('No se pudo realizar la conexión con el servidor MySQL: ' . mysql_error());
}
Las funciones para MySQL utilizadas son las necesarias para hacer operaciones básicas en la Base de Datos desde
PHP. A continuación se analiza la sintaxis de cada una de estas funciones:
mysql_connect (servidor, usuario, password)
Abre una conexión al servidor MySQL. En caso de ser exitosa, devuelve un identificador de la conexión, de lo
contrario devuelve FALSE.
mysql_select_db (nombre_bd, identificador_conexion)
Selecciona la Base de Datos con la cual se va a trabajar. Devuelve TRUE si todo se ha llevado a cabo
correctamente, FALSE en caso contrario.
mysql_query(query, identificador_conexion)
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 66
CENEAC - PHP MySQL Nivel 1
En caso de que el query SQL sea SELECT, SHOW, DESCRIBE o EXPLAIN, la función devuelve un elemento
resource en caso exitoso, y FALSE en caso contrario.
Si el query es un UPDATE, DELETE, DROP, la función devuelve TRUE en caso exitoso y FALSE en caso de error.
Esta función también fallará y retornará FALSE si el usuario no tiene la permisología necesaria para accesar la o
las tablas referenciadas en la consulta.
mysql_result (resource, numero_fila, campo)
Los elementos resource son creados al ser ejecutado un query. Por ejemplo:
"SELECT * FROM editorial"
Esta consulta devuelve todos los registros, con todos los campos de la tabla editorial:
id nombre direccion
1 Grupo Santillana Venezuela Av. Rómulo Gallegos, Edificio Zulia, PB, Sector Monte
Cristo, Boleíta. Caracas – Venezuela
2 Editorial Norma C.A. Calle 8 Edificio Lance, Piso 2, Urbanización La Urbina. -
Gran Caracas - Caracas - Venezuela
Por lo tanto, esta información es retornada en un elemento resource, el cual no es más que una matriz, de 2 filas
con 4 columnas (id, nombre, direccion).
Si se ejecuta la siguiente instrucción:
$ci = mysql_result ($res, 0, "nombre"),
Devuelve las filas o los registros que se encuentran almacenados en el elemento resource como una tabla
asociativa, en donde los índices del arreglo resultante son los nombre de las columnas de la consulta ejecutada.
Esta función retorna un solo registro moviéndose hacia el siguiente luego de realizar la operación. Cuando no hay
mas registros que retornar devuelve FALSE. El segundo argumento opcional, es una constante y puede tomar los
siguientes valores: MYSQL_ASSOC, MYSQL_NUM, y MYSQL_BOTH. Usando MYSQL_BOTH, usted obtendrá
una matrix con índices asociativos y numéricos. Usando MYSQL_ASSOC, usted solo tendrá índices asociativos,
usando MYSQL_NUM, solo obtendrá los índices numéricos.
Si se ejecuta la siguiente instrucción:
$registro = mysql_fetch_array ($res, MYSQL_ASSOC);
echo $registro ["nombre"];
Cierra la conexión al servidor MySQL identificada por el parámetro identificador_conexion. Devuelve TRUE si la
conexión se ha cerrado correctamente y FALSE en caso contrario.
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 67
CENEAC - PHP MySQL Nivel 1
Ejemplo 39: Se tiene una primera página donde se seleccionará un usuario para posteriormente actualizar sus datos.
Nombre del archivo: listar_usuario.php
El código fuente para generar este listado de manera dinámica desde el contenido de la tabla “usuario” de la base de
datos MySQL es el siguiente:
<?php
/* Conexión al servidor MySQL */
// se abre la conexión
$link = mysql_connect ('localhost', 'php', 'php');
if (!$link) {
die('No se pudo realizar la conexión con el servidor MySQL: ' . mysql_error());
}
// Se selecciona la base de datos a utilizar
$db_sel = mysql_select_db ('php_libreria', $link);
if (!$db_sel) {
die ('No se pudo seleccionar la base de datos: ' . mysql_error());
}
// Se ejecuta el query SQL
// Se seleccionan todos los registros existentes en la tabla usuarios
$query = "SELECT * FROM usuario";
$res = mysql_query ($query, $link);
?>
<html>
<head>
<title>Listar Usuarios</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body><br />
<div align="center"><b>Seleccione el usuario a modificar: </b></div>
<form name="form1" method="post" action="modificar_usuario.php">
<table width="25%" border="0" align="center" cellpadding="2" cellspacing="2">
<?php
// Se recorre el elemento resource para imprimir su contenido
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 68
CENEAC - PHP MySQL Nivel 1
Ejemplo 40: Se muestra en un formulario los datos asociados al usuario seleccionado (ejemplo 38), para que puedan ser
modificados y almacenados nuevamente en la base de datos.
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 69
CENEAC - PHP MySQL Nivel 1
<?php
// se capturan los parametros
$id = $_POST["id"];
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 70
CENEAC - PHP MySQL Nivel 1
Ejemplo 41: En la siguiente página se muestra un mensaje confirmando el cambio de los datos, en el caso de que no se
haya podido efectuar el cambio se muestra un mensaje de error.
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 71
CENEAC - PHP MySQL Nivel 1
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 72
CENEAC - PHP MySQL Nivel 1
El procedimiento para insertar o eliminar registros de la tabla es similar, lo único que cambia es la sintaxis de la
instrucción o query SQL. En los siguientes ejercicios se practicará como realizar estos procedimientos.
Ejercicios:
1. A partir de las siguientes estructuras, cree las diferentes tablas en MySQL que integrarán la base de datos.
Usuario:
Campo Tipo de dato Tamaño Extra
Id (PK) int 20 auto-incrementable
nombre varchar 40
apellido varchar 40
login varchar 20
password varchar 20
Editorial:
Campo Tipo de dato Tamaño Extra
Id (PK) int 20 auto-incrementable
nombre varchar 40
RIF varchar 40
direccion varchar 200
Libro:
Campo Tipo de dato Tamaño Extra
Id (PK) int 20 auto-incrementable
titulo varchar 100
autor1 varchar 50
autor2 varchar 50
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 73
CENEAC - PHP MySQL Nivel 1
TALLERES DE
EJERCICIOS
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 74
CENEAC - PHP MySQL Nivel 1
PARTE 1. CREACIÓN DE LOS SCRIPTS DE CONEXIÓN A LA BASE DE DATOS (inicio y fin de la conexión PHP)
1. Dentro de la carpeta scripts agregue dos archivos y escriba en ellos los siguientes códigos utilizados para establecer las
operaciones de configuración, conexión y desconexión a la base de datos utilizada en este proyecto Web:
Archivo: conexion.php
<?php
// este archivo contiene las funciones para abrir la conexión, ejecutar el query u operación y cerrar conexión
require ("config.ini.php"); // archivo donde se especifican los parámetros de conexión para este sitio Web
$id_c = false;
// identificador de la conexión, lo inicializamos asumiendo conexión cerrada
// la declaramos aqu'i para poder usar como variable global de todas las funciones
function abrirConexion()
// 1. abrir la conexión al smbd y probar que es exitosa la conexión
// 2. se selecciona la bdd a utilizar y se verifica el éxito en la selección
{
global $id_c; // para poder usar una variable global dentro de esta función
if (!mysql_select_db(_bd, $id_c))
// no seleccionó la bdd, p.e., falta de permiso al usuario definido en el config de mySQL
return false;
return true;
}
function ejecutarQuerySQL($sql)
// 3. se ejecuta el query pasado en el parámetro $sql
{
global $id_c;
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 75
CENEAC - PHP MySQL Nivel 1
function cerrarConexion()
// 4. se cierra y libera la conexión
{
global $id_c;
function getNumFilas($res)
{ // indica cantidad de filas obtenidos en la consulta $res
return @mysql_num_rows($res);
}
function getFila($res)
{ // devuelve los datos de una fila en particular como una tabla o arreglo asociativo,
// automáticamente avanza al siguiente registro del resultado
return @mysql_fetch_array($res);
}
?>
Archivo: config.ini.php
<?php
// parámetros de conexión al SMBD localhost
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 76
CENEAC - PHP MySQL Nivel 1
// 1. abrir la conexión
$link = abrirConexion();
if (!$link) {
die("No se pudo realizar la conexión con el servidor MySQL. <br> Error:" .mysql_error());
}
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 77
CENEAC - PHP MySQL Nivel 1
<?php
// 3. se consultan nuevamente los productos almacenados en la bdd
$query = "SELECT codProducto, nombre, precio, imagen FROM productos ORDER BY precio";
$res = ejecutarQuerySQL($query);
$total = getNumFilas($res); // funcion que obtiene cantidad de filas de la consulta
if ($total == 0)
echo "<br / >No hay productos disponibles. <br / >";
else { ?>
<table width="90%" border="0" cellspacing="0" cellpadding="8" id="listado">
<?php
$i=0;
echo "<tr>";
while ($i < $total)
{
$actual = getFila($res); // se obtiene la información de cada producto
// guardando el valor de cada campo en una variable
$imagen = $actual['imagen']; $nombre = $actual['nombre'];
$codProducto= $actual['codProducto']; $precio = $actual['precio'];
echo "<td>";
echo "<img src='imagenes/$imagen' height='80' /> <br />";
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 78
CENEAC - PHP MySQL Nivel 1
// 1. abrir la conexión
$link = abrirConexion();
if (!$link) {
die("No se pudo realizar la conexión con el servidor MySQL. <br> Error:" .mysql_error());
}
?>
<?php
// se recupera el codigo del producto pasado por el URL
$cod = $_GET['cod'];
$total = getNumFilas($res);
if ($total == 0)
echo "Disculpe, no disponemos de un producto con el Cód. $cod <br / >";
else
{
// se muestran los datos actuales del producto
$actual = getFila($res); // se obtiene la información del producto
$nombre = $actual['nombre'];
$precio = $actual['precio'];
$codFabricante = $actual['codFabricante'];
?>
<label>
Cód. Producto:
<input name="codProducto" type="text" id="codProducto" size="2" readonly="readonly"
value="<?php echo $cod; ?>" />
</label>
<br />
<label>Nombre:
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 79
CENEAC - PHP MySQL Nivel 1
</label>
<br />
<label>Precio Bs:
<input name="precio" type="text" id="precio" size="20" value="<?php echo $precio; ?>" />
</label>
<br />
<label>Código Fabricante:
<input name="codFabricante" type="text" id="codFabricante" size="2"
value="<?php echo $codFabricante; ?>" />
</label>
<?php
} // fin del else
?>
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 80
CENEAC - PHP MySQL Nivel 1
<?php
// 4. se confirma la modificación
echo "<p> El siguiente producto ha sido modificado exitosamente: </p>";
echo "<b>";
echo "$nombre (Cód: $cod), precio Bs.: $precio, Cód. Fabricante: $codFabricante";
echo "</b>";
echo "<br /> <br /><br /><br />";
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 81
CENEAC - PHP MySQL Nivel 1
<?php
// 2. Rescatamos la información enviada desde el formulario de modificación
$cod = $_GET["cod"];
$total = getNumFilas($res);
if ($total == 0)
echo "Disculpe, no disponemos de un producto con Cód. $cod <br / >";
else
{
// 4. eliminamos la información del producto en la BDD
$query = "DELETE FROM productos WHERE codProducto = $cod";
$res = ejecutarQuerySQL($query);
// 5. se confirma la eliminación
echo "<b> <center>El producto con Cód. $cod ha sido eliminado exitosamente.
</center> </b>";
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 82
CENEAC - PHP MySQL Nivel 1
<?php
if ( !isset($_POST['enviar']) )
{
// estamos entrando por primera vez al registro
?>
</form>
</td>
</tr>
</table>
<br />
<?php
}
else
{
// se enviaron los datos del registro, se agrega o inserta el usuario en la bdd
Material elaborado por CENEAC Producciones, C.A. Prohibida su reproducción total o parcial sin autorización del Autor. 83