Вы находитесь на странице: 1из 24

Obtener registros de una base de datos MySQL utilizando PHP es una de las tareas mas comunes que se le presenta

a todo desarrollador web, por ello les presentamos un pequea gua para consultar registros utilizando PHP. Creando la Base de datos Obviamente para este ejemplo necesitamos una base de datos que la llamaremos dem o, dentro crearemos un tabla llamada empresa la cual tendr los siguientes campos: idemp, nombre, direccion,telefono, imagen. Para los menos experimentados les dejo el script SQL para crear esta tabla. Conectando PHP y MySQL Para obtener los datos desde MySQL necesitamos una conexin (una forma de enlazar o comunicarse), la cual nos permitir extraer datos de la misma. Para ello PHP tiene una serie de funciones exclusivamente para interactuar con mysql. Entonces para la conexin utilizaremos la funcinmysql_connect y luego mysql_select_ db el cual nos permite definir a que base de datos del servidor deseamos conectarnos. 1. $conexion = mysql_connect("localhost", "usuario", "clave"); 2. mysql_select_db("demo", $conexion); Obteniendo registros de la Base de Datos Una vez que tenemos una conexin lo siguiente es extraer los datos, esto lo hacemo s enviando consultas SQL mediante la funcin mysql_query. Tambin obtenemos el numero total de registros devueltos por nuestra consulta. 1. $queEmp = "SELECT * FROM empresa ORDER BY nombre ASC"; 2. $resEmp = mysql_query($queEmp, $conexion) or die(mysql_error()); 3. $totEmp = mysql_num_rows($resEmp); Mostrando los resultados. Finalmente mostramos los resultados obtenidos de nuestra consulta, para ello ext raemos cada resultado utilizando la funcin mysql_fetch_assoc la cual devuelve una matriz asociativa utilizando los nombres de los campos de l a tabla. 1. if ($totEmp> 0) { 2. while ($rowEmp = mysql_fetch_assoc($resEmp)) { 3. echo "".$rowEmp['nombre'].""; 4. echo "Direccion: ".$rowEmp['direccion'].""; 5. echo "Telefono: ".$rowEmp['telefono'].""; 6. } 7. } Notese que primero hemos verificado si existen resultados y luego verificamos en cada pasada de la sentencia While si existe el siguiente resultado para luego mostrarlo. Asi como hemos consultado registros, podemos insertar, edi tar y eliminar registros enviando sentencias SQL a la base de datos. Para finalizar les dejo el ejemplo funcionando y tambin los archivos para descarg ar.

************************************************************************ Programacin WEB con PHP Y MySQL (IT Tapachula) PHP - MySQL Objetivo Utilizar PHP para integrar informacin de MySQL en las pginas Web. 1/1

Programacin WEB con PHP Y MySQL (IT Tapachula) PHP y MySQL Funciones de PHP para interactuar con MySQL PHP cuenta con varias funciones para contectarse con MySQL, entre las ms comunes estn las siguientes: mysql_connect() Establece una conexin con el servidor de MySQL, utiliza tres parmetros: mysql_conn ect(servidor-mysql, usuario, password) Si se conecta con el servidor regresa un identificador de la conexin, de lo contr ario regresa un NULL, ejemplo: $conexion = mysql_connect("locahost", "root", "digitever"); mysql_close() Regularmente al terminarse de ejecutar la pagina php las conexiones abiertas con MySQL se cierran automaticamente; si queremos cerrar la conexin antes podemos utilizar esta funcin. Regresa un true si la conexin se cierra, false de lo contrario. Su sintaxis es la siguiente: mysq l_close($conexion); mysql_select_db() Selecciona una bases de datos, regresa true si logra utilizar la base de datos, false de lo contrario. La sintaxis es: mysql_select_db("base-datos", $conexion); mysql_query() Envi estatutos SQL al servidor de MySQL, para estatutos diferentes al SELECT regr esa un true o false.Para los estatutos SELECT regresa un identificador con los r esultados del estatuto. La sintaxis es: $registros = mysql_query("estatuto sql", $conexion); mysql_affected_rows() Regresa el numero de registros que fueron afectados por los estatutos INSERT, UP DATE o DELETE. La sintaxis es: mysql_affected_rows($conexion); mysql_num_rows() Regresa el numero de registros que regresa el estatuto SELECT. La sintaxis es: m ysql_num_rows($registros); 2/2

Programacin WEB con PHP Y MySQL (IT Tapachula) PHP y MySQL mysql_result() Se utiliza para obtener el valor de un solo campo proveniente de mysql_query(). mysql_result($registros,numero-de-registro, campo ); Se utiliza para obtener el valor de un solo campo proveniente de mysql_query(). mysql_result($registros,num ero-de-registro, campo ); mysql_fetch_object() Crea un objeto cuyas propiedades corresponden a los campos de los registros, cua ndo ya no hay mas registros regresa un false. mysql_fetch_object($registros); mysql_fetch_row() Similar a mysql_fetch_object() pero regresa los valores de los campos en un arre glo indexado numricamente. mysql_fetch_row($registros); mysql_fetch_assoc() Similar a mysql_fetch_row() pero regresa los valores de los campos en un arreglo indexado por nombre. mysql_fetch_assoc($registros); mysql_free_result() Libera los recursos que utilizados por los registros obtenidos, si no se utiliza esta funcin los recursos son liberados automaticamente al terminar de procesar l a pagina. mysql_free_result($registros); mysql_insert_id() Un campo con el atributo AUTO_INSERT se incrementa automaticamente cuando se ins erta un nuevo registro en la tabla mysql_insert_id() regresa el valor generado. mysql_insert_id($conexion); 3/3

Programacin WEB con PHP Y MySQL (IT Tapachula) PHP y MySQL Ejemplos Conectarse con el servidor y seleccionar base de datos $conexion = mysql_connect("localhost","root","digitever"); $seleccionaBD = mysql _select_db("cursophp", $conexion); Ejecutar un estatuto SELECT $registros = mysql_query("select claveCategoria, categoria from categorias", $co nexion); $numeroRegistros = mysql_num_rows($registros); while ($registro = mysql _fetch_assoc($registros)) { echo $registro["claveCategoria"] . " " . $registro[" categoria"] . ""; } Ejecutar un estatuto INSERT $sql = "insert categorias (categoria, notas, urlImagen) values ('Nueva categoria ', 'Nueva descripcion', 'Nuevo URL')"; $registros = mysql_query($sql, $conexion) ; if ($registros) {//codigo...} Ejecutar un estatuto UPDATE $sql = "update categorias set categoria = 'Modificada' where claveCategoria = $c laveNuevaCategoria"; $registros = mysql_query($sql, $conexion); if ($registros) {//codigo...} Ejecutar un estatuto DELETE $sql = "delete from categorias where claveCategoria = $claveNuevaCategoria"; $re gistros = mysql_query($sql, $conexion); if ($registros) {//codigo...} Cdigo Fuente Cdigo Fuente Puerto 80 Puerto 80 Puerto 8080 Puerto 8080 Puerto 8085 Puerto 8085 4/4

Programacin WEB con PHP Y MySQL (IT Tapachula) PHP y MySQL Distintas maneras de ejecutar un estatutos SELECT Cuando se ejecuta un estatuto SELECT y se obtiene un conjunto de registros MySQL ofrece 4 maneras de accesar dichos registros: mysql_fetch_assoc() mysql_fetch_o bject() mysql_fetch_row() mysql_result() Veamos como varia el procesamiento de l a informacin al ejecutar el siguiente estatuto: $registros = mysql_query("select claveCategoria, categoria from categorias", $conexion); mysql_fetch_assoc() Para procesar los registros comnmente se utiliza un while, y se le asigna el regi stro a una variable en forma de un arreglo. El arreglo cuenta con el nombre del campo y su respectivo valor, cuando ya no hay registros regresa un false. El arr eglo se forma de esta manera: $registros = array("campo1" => valor1, "campo2" => valor2, "campoN" => valorN) while ($registro = mysql_fetch_assoc($registros)) { echo "Clave:" . $registro["claveCategoria"] . " - " . $registro["categoria"] . ""; } En este caso cuando no haya mas registros el while se interpreta de esta m anera y se termina el ciclo: while (false) {//cdigo...} 5/5

Programacin WEB con PHP Y MySQL (IT Tapachula) PHP y MySQL mysql_fetch_object() Utiliza comnmente se utiliza con un while, le asigna el registro a un objeto. Las propiedades del objeto corresponden a los campos, cuando ya no hay registros re gresa un false. El objeto se forma de esta manera: var campo1 = valor-del-campo; var campo2 = valor-del-campo2; var campoN = valor-del-campoN; Accesar las propi edades del objeto se hace de esta manera: $variable->campo while ($registro = my sql_fetch_object($registros)) { echo "Clave:" . $registro->claveCategoria . " " . $registro->categoria . ""; } En este caso cuando no haya mas registros el wh ile se interpreta de esta manera y se termina el ciclo.: while (false) {//cdigo.. .} mysql_fetch_row() Para procesar los registros comnmente se utiliza un while, y se le asigna el regi stro a una variable en forma de un arreglo. El arreglo esta organizado numricamen te, el primer campo es el elemento 0 del arreglo, el segundo es el elemento 1 y as sucesivamente. Cuando ya no hay registros regresa un false. 0 => '1', 1 => 'Be bidbas' El arreglo se forma de esta manera: $registros = array(0 => valorCampo1, 1=> valorCampo2, N => valorCampoN); while ($registro = mysql_fetch_row($registr os)) { echo "Clave:" . $registro[0] . " - " . $registro[1] . ""; } En este caso cuando no haya mas registros el while se interpreta de esta manera y se termina el ciclo.: while (false) {//cdigo...} 6/6

Programacin WEB con PHP Y MySQL (IT Tapachula) PHP y MySQL mysql_result() A diferencia de los otros mecanismos este nicamente puede regresarnos los valores de un solo registro y de un solo campo a la vez. mysql_result($registros, 5, "c laveCategoria"); Cdigo Fuente Cdigo Fuente Puerto 80 Puerto 80 Puerto 8080 Puerto 8080 Puerto 8085 Puerto 8085 7/7

Programacin WEB con PHP Y MySQL (IT Tapachula) PHP y MySQL Ejercicio - Llenar una lista con los valores de una tabla En este ejercicio se va a generar una lista HTML a partir del siguiente estatuto : select claveCategoria, categoria from categorias order by categoria Cdigo Fuent e Cdigo Fuente Puerto 80 Puerto 80 Puerto 8080 Puerto 8080 Puerto 8085 Puerto 808 5 Ejercicio - Generar una En este ejercicio se va : select claveProducto, to Cdigo Fuente Codigo 8085 Puerto 8085 tabla HTML con los valores de una tabla a generar una tabla HTML a partir del siguiente estatuto producto, existencia from productos order by claveProduc Fuente Puerto 80 Puerto 80 Puerto 8080 Puerto 8080 Puerto

Ejercicio - Generar Querystrings En este ejercicio se va a generar un listado de clientes a partir del siguiente estatuto: select claveCliente, cliente from clientes order by claveCliente El ca mpo se convierte en una liga que nos lleva a la pagina detalles-cliente.php,a es ta liga se le agrega la clave del cliente en el querystring: ?claveCliente=CACTU El estatuto para obtener el detalle del cliente es el siguiente: select * from clientes where claveCliente = 'la-clave-del-cliente' Cdigo Fuente Cdigo Fuente Puerto 80 Puerto 80 Puerto 8080 Puerto 8080 Puerto 8085 Puerto 8085 8/8

Programacin WEB con PHP Y MySQL (IT Tapachula) PHP y MySQL Ejercicio - Altas, bajas, cambios y consultas de una tabla Cdigo Fuente Cdigo Fuente Puerto 80 Puerto 80 Puerto 8080 Puerto 8080 Puerto 8085 Puerto 8085 9/9 ******************************************************************************** **** Tutorial de PHP y MySQL (LuCAS) Pgina 1 de 54 Tutorial de PHP y MySQL COMPLETO 1. Instalacin de Apache+PHP+MySQL Instalacin en Windows Instalacin en Linux/Unix o o 5. Comenzando con MySQL 2. Sintaxis en PHP o o o o o o o o o Mi primer script Variables y Operadores Seriables y Operadores Sentencias de Con trol Las Tablas Las Funciones Include() y require() Tiempo y fecha Las Clases en PHP 6. o o o o o o o MySQL Funciones PHP de acceso a MySQL Conectar a MySQL desde PHP Creacin de una B ase de Datos en MySQL Importar bases de datos desde MS Access Mostrar los datos de una consulta Un buscador para nuestra base de datos Operaciones con registros o o o o Aadir registros Modificar registros Borrar registros Todo a la vez 3. Formularios o o Los Formularios Descarga de archivos desde un formulario 7. Conexin a MySQL con ODBC

4. Ficheros o o o o Instalacin de MyDOBC Conexin remota a MySQL con MS Access Exportar tablas desde MS Access a MySQL Importar tablas desde MySQL a MS Access o Funciones de acceso a ficheros Instalacin de Apache+PHP+MySQL en Windows En este captulo describiremos el proceso de instalcin de la base de datos MySQL, d e un servidor web Apache con PHP, en una mquina con sistema operativo Windows. Lo primero que debemos hacer es conseguirnos los programas necesarios, y que mejor para ello que diriguirnos a las pginas web (o cualquiera de sus mirros) de los p rogramas en cuestin: cualquiera de sus mirros) de los programas en cuestin: o o o Apache: www.apache.org apache_1_3_x_win32.exe MySQL: www.mysql.com mysql-sharewa re-3.22.34-win.zip PHP: www.php.net php-3.0.x-win32.zip NOTA: La versin para sistemas Windows de MySQL no es gratuita. Por lo que usaremo s la versin shareware que est limitada a 30 das. La instalacin de estos programas es muy fcil, PHP y MySQL vienen comprimidos en formato ZIP y slo los tenemos que des comprimir en una carpeta, mientras que Apache es autoejecutable: o Descomprimimos PHP en "C:\php3"

Tutorial de PHP y MySQL (LuCAS) Pgina 2 de 54 o Descomprimimos MySQL en "C:\mysql " o Hacemos "doble click" en el fichero de Apache y aceptamos el directorio de i nstalacin por defecto "C:\Archivos de Programas\Apache Group\Apache". Ya tenemos instalados los programas, ahora slo nos queda hacer unos pequeos ajuste de configuracin: APACHE de configuracin: APACHE Editamos el fichero de configuracin http.conf que se halla en C:\Archivos de Programas\Apache Group\Apache\conf" Buscamos la lnea donde pone: #ServerName n ew.host.name Quitamos el comentario (#) y la cambiamos por: ServerName http://lo calhost Indicamos el directorio de PHP: ScriptAlias /php3 "C:\php3" Definimos la extencin de los script PHP: AddType application/x-httpd-php3 .php3 AddType appli cation/x-httpd-php3 .php AddType application/x-httpd-php3 .phtml Y asignamos la aplicacin para las extensiones PHP: Action application/x-httpd-php3 "/php3/php.ex e" Por defecto los ficheros que son accesibles desde el navegador se encuentran el la carpeta htdocs del directorio de Apache, pero la podemos cambiar: Document Root "C:\www" ...... PHP Para configurar PHP, primero buscamos el fichero php3 .ini-distphp3.ini-dist y lo renombramos a php.ini, despus lo editamos y le hacemo s los siguientes cambios: Buscamos la expresin "extension_dir" y la cambiamos por : extension_dir = C:\php3 Para aadir el soporte para MySQL busca la lnea: ; extens ion = php3_mysql.dll Cmbiala por: extension = php3_mysql.dll

Tutorial de PHP y MySQL (LuCAS) Copia el fichero php3.ini en "C:\windows" Pgina 3 de 54 Ejecucin de los programas: Pues bien, ya solo nos queda arrancar los programas: C :\Archivos de Progrmas\Apache Group\Apache\apache.exe C:\mysql\bin\mysqld.exe #P ara la versin shareware C:\mysql\bin\mysqld-shareware.exe Tambin podemos arrancar el servidor Apache desde el men de inicio: Inicio->Progrmas->Apache Web Server->S tart Para comprobar nuestra instalacin crea un fichero llamado test.php3 con la s iguiente linea: Colcalo en el directorio de documentos de Apache y llmalo desde e l navegadentos de Apache y llmalo desde el navegador. Si lo hemos hecho todo bien nos saldr una pgina con todas las variables de PHP. NOTA: Cabe destacar que lo qu e hemos echo es una instalacin bsica, por lo que recomendamos leer los manuales de las distintas aplicaciones para obtener ms detalles sobre la instalacin de stas. Instalacin de Apache+PHP+MySQL en Linux/Unix En este captulo describiremos el proceso de instalcin de la base de datos MySQL, d e un servidor web Apache con PHP, en una mquina con sistema operativo Linux o Uni x. Lo primero que debemos hacer es conseguirnos los paquetes necesarios, y que m ejor para ello que diriguirnos a las pginas web (o cualquiera de sus mejor para e llo que diriguirnos a las pginas web (o cualquiera de sus mirros) de los programa s en cuestin:

Apache: www.apache.org o o o apache-1.3.x.tar.gz mysql-3_22_22_tar.gz php-3.0.x.tar-gz MySQL: www.mysql.com PHP: www.php.net Para poder realizar todo el proceso de instalacin has de tener acceso como root a la mquin Linux. Lo primero que debemos hacer un directorio de instalacin, aunque lo normal sera que lo hicieramos en /usr/local, /urs/src, o bien en /opt. Como ha y que escoger uno, yo voy ha escoger el primero, /usr/local, aunque el proceso s era el mismo si nos declinramos por cualquier otro. Supongamos que ya nos hemos co nseguido los paquetes y los tenemos en el directorio /root/install, lo primiero que hacemos es descomprimirlos: cd /usr/local tar zxvf /root/install/apache-1.3. x.tar.gz tar zxvf /root/instal/mysql-3.22.x.tar.gz toot/instal/mysql-3.22.x.tar. gz tar zxvf /root/instal/php-3.0.x.tar-gz

Tutorial de PHP y MySQL (LuCAS) Creamos enlaces sencillos (blandos) a cdigo fuente ln -s /usr/local/apache-1.3.x /usr/local/apache ln -s /usr/local/mysql-3.22.x /usr/local/mysql ln -s /usr/loca l/php-3.0.x /usr/local/php Preparamos la fuentes par al compilacin de Apache cd / usr/loca/apache ./configure --prefix=/usr/local/apache Compilamos e instalamos M ySQL cd /usr/local/mysql ./configure --witout-debug --prefix=/usr/local/mysql ma ke make install cp /usr/local/support-files/mysql.server /etc/rc.d/init.d/mysql chmod 755 /etc/rc.d/init.d/mysql Creamos la bases del datos del sistema MySQL /u sr/local/mysql/bin/mysql_install_db Arrancamos el servidor MySQL /etc/rc.d/init. d/mysql start/etc/rc.d/init.d/mysql start Asignamos la password del adminstrador (root ) de MySQL /usr/local/mysql/bin/mysqladmin -u root password "clave" Ya he mos terminado con MySQL, ahora compilaremos PHP como mdulo de Apache. cd /usr/loc al/php ./configure --with-mysql=/usr/local/mysql \ --with-apache=/usr/local/apac he \ --enable-track-vars make make install #cp php3.ini-dist /usr/local/lib/php3 .ini Compilamos Apache cd /usr/local/apache ./configure --prefix=/usr/local/apac he \ --activate-module=src/modules/php3/libphp3.a # si hemos compilado PHP4 util izaremos #--activate-module=src/modules/php4/libphp4.a # quitar los comentarios para habilitar el mdulo de proxy #--activate-module=src/modules/proxy/libproxy.a< proxy modules> make make install Pgina 4 de 54 Para definir las extenciones de los scripts PHP, hay que aadir las siguientes lin eas en el fichero de configuracin de apache (httpd.conf): AddType application/x-httpd-php3 .php3 AddType application/x-httpd-php3 .php Add Type application/x-httpd-php3 .phtml Ahora ya slo nos queda arrancar el servidor, pero primero copiamos el script de arranque en /etc/rc.d/init.d

Tutorial de PHP y MySQL (LuCAS) cp /usr/local/apache/bin/apachecte /etc/rc.d/init.d/apache /etc/rc.d/init.d/apac he start Para comprobar nuestra instalacin crea un fichero llamado test.php3 con la siguiente linea: Pgina 5 de 54 Colcalo en el directorio de documentos de Apache y llmalo desde el navegador. Si l o hemos hecho todo bien nos saldr una pgina con todas las variables de PHP. NOTA: Cabe destacar que lo que hemos echo es una instalacin bsica, por lo que recomendam os leer los manuales de las distintas aplicaciones para obtener ms detalles sobre la instalacin de stas. Mi primer script Una vez que ya tenemos instalados PHP y MySQL, y el servidor Apache configurado para usarlos, podemos comenzar a escribir nuestro primer script en PHP. Ejemplo script php Pgina 9 de 54 WHILE La sentencia WHILE ejecuta un bloque de cdigo mientras se cumpla una determ inada condicin. Podemos romper un bucle WHILE utilizando la sentencia BREAK. DO...WHILE Esta sentencia es similar a WHILE, salvo que con esta sentencia prime ro ejecutamos el bloque de cdigo y despus se evala la condicin, por lo que el bloque de cdigo se ejecuta siempre al menos una vez. FOR El bucle FOR no es estrictamente necesario, cualquier stituido fcilmente por otro WHILE. Sin embargo, el bucle o debemos ejecutar un bloque de cdigo a condicin de que entre un valor mnimo y otro mximo. El bucle FOR tambin sentencia BREAK. Las tablas Pgina 10 de 54 Las tablas (o array en ingls), son muy importantes en PHP, ya que generalmente, l as funciones que devuelven varios valores, como las funciones ligadas a las base s de datos, lo hacen en forma de tabla. En PHP disponemos de dos tipos de tablas . El primero sera el clsico, utilizando ndices: Esta es una forma de asignar eleme ntos a una tabla, pero una forma ms formal es utilizando la funcin array Sino ?> Sino se especifica, el primer ndice es el cero, pero podemos utilizar el operador => para especificar el indice inicial. $ciudad = array(1=>"Pars", "Roma", "Sevil la", "Londres"); Un segundo tipo, son las tablas asociativas, en las cules a cada elemento se le asigna un valor (key) para acceder a l. Para entenderlo, que mejo r que un ejemplo, supongamos que tenemos una tabla en al que cada elemento almac ena el nmero de visitas a nuestra web por cada da de la semana. Utilizando el mtodo clsico de ndices, cada da de la semana se representara por un entero, 0 para lunes, 1 para martes, etc. $visitas[0] = 200; $visitas[1] = 186; si usamos las tablas asociativas sera $visitas["lunes"] = 200; $visitas["martes"] = 186; o bien, bucle FOR puede FOR resulta muy una variable se se puede romper ser su til cuand encuentre mediante la

Tutorial de PHP y MySQL (LuCAS) $visitas = array("luodigo">$visitas = array("lunes"=>200; "martes"=>186); Pgina 11 de 54 Ahora bien, recorrer una tabla y mostrar su contenido es sencillo utilizando los ndices, pero cmo hacerlo en las tablas asociativas?. La manipulacin de las tabas as ociativas se a hace travs de funciones que actan sobre un puntero interno que indi ca la posicin. Por defecto, el puntero se situa en el primer elemento aadido en la tabla, hasta que es movido por una funcin: current pos reset end next prev count - devuelve el valor del elemento que indica el puntero - realiza la misma funcin que current - mueve el puntero al primer elemento de la tabla - mueve el punter o al ltimo elemento de la tabla - mueve el puntero al elemento siquiente - mueve el puntero al elemento anterior - devuelve el nmero de elementos de una tabla. Veamos un ejemplo de las funciones anteriores: Recorrer una tabla con las funci ones anteriores se hace un poco lioso, para ello se recomienda utilizar la funcin each(). La funcin each()devuelve el valor del elemento actual, en este caso, el valor de l elemento actual y su clave, y desplaza el puntero al siguiente, cuando llega a l final devuelve FALSO, y termina el bucle while(). Tablas multidimensionales Las tablas multidimensionales son simplemente tablas e n las cuales cada elemento es a su vez otra tabla. Pgina 12 de 54 La funcin list() es ms bien un operador de asignacin, lo que hace es asignar valore s a unas lista de variables. En este caso los valores son extraidos de una tabla por la funcin each(). Las funciones Muchas veces, cuando trabajamos en el desarrolo de una aplicacin, nos surge la ne cesidad de ejectar un mismo bloque de cdigo en diferentes partes de nuestra aplic acin. Una Funcin no es ms que un bloque de cdigo al que le pasamos una serie de parme tros y nos devuelve un valor. Como todos los lenguaje de programacin, PHP trae un a gran cantidad de funciones para nuestro uso, pero las funciones ms gran cantida d de funciones para nuestro uso, pero las funciones ms importantes son las que no sotros creamos. Para declara una funcion debemos utilizar la instruccin function seguido del nombre que le vamos a dar, y despus entre parentesis la lista de argu mentos separados por comas, aunque tambin habr funciones que no recogan ningn argum ento. function nombre_de_funcion (arg_1, arg_2, ..., arg_n) { bloque de cdigo } C ualquier instruccin vlida de PHP puede aparecer en el cuerpo (lo que antes hemos l lamado bloque de cdigo) de una funcin, incluso otras funciones y definiciones de c lases. En PHP no podemos redefinir una funcin previamente declarada, y adems en PH P3, las funciones deben definirse siempre antes de que se invoquen, en PHP4 este requerimiento ya no existe. La instruccin RETURN Cuando invocamos una funcin, la ejecucin del programa pasa a ejecutar las lneas de cdigo que contenga la funcin, y u na vez terminado, el programa continua su ejecucin desde el punto en que fu llamad a la funcin. Existe una manera de terminar la ejecucin de la funcin aunque an haya cd igo por ejecutar, mediante el u haya cdigo por ejecutar, mediante el uso de la in strucin return terminamos la ejecucin del cdigo de una funcin y devolvemos un valor. Podemos tener varios return en nuestra funcin, pero por lo general, cuantos ms re turn tengamos menos reutilizable ser nuestra funcin. Aunque quedari mejor: Pgina 13 de 54 Con la instrucin return puede devolverse cualquier tipo de valor, incluyendo tabl as y objetos. PHP solo permite a las funciones devolver un valor, y para solvent

ar este pequeo problema, si queremos que nuestra funcin devuelva varios tenemos qu e utilizar una tabla (array). Parmetros de las funciones Existen dos formas de pasar los parmetros a una funcin, por valor o por referencia. Cuando pasamos una variable por valor a una funcion, ocurra lo que ocurra en sta en nada modificar el contenido de la variable. Mientr as que si lo hacemos por referencia, cualquier cambio acontecido en la funcin sob re la variable lo har para siempre. E variable lo har para siempre. En PHP, por de fecto, las variables se pasan por valor. Para hacerlo por referencia debemos ant eponer un ampersand (&) a la variable. Si queremos que un parmetro de una funcin se pase siempre por referencia debemos anteponer un ampersand (&) al nombre del parmetro en la definicin de la funcin. En PHP podemos definir valores por defecto para los parmetro de una funcin. Estos valores tienen que ser una expresin constante, y no una variable o miembro de una clase. Adems cuando usamos parmetros por defectos, stos deben estar a la derecha d e cualquier parmetro sin valor por defecto, de otra forma PHP nos devolver un erro r.

Tutorial de PHP y MySQL (LuCAS) Pgina 14 de 54 Si ejecutarmos esta funcin nos dara error, ya que hemos dado a $x el valor 1 por d efecto y la hemos colocado a la izquierda de un parmetro que no tiene valor por d efecto. La forma correcta es: Cabe destacar que PHP3 no soporta un nmero variables de parmetros, pero PHP4 s. Ll egados a este punto, damos un paso atrs y volvemos a las variables, para distingu ir entre variables estticas (static) y globales (global). Las variables estticas s e definen dentro de una funcin, la primera vez que es llamada dicha funcin la vari able se inicializa, guardando su valor para posteriores llamadas. Las variables globales, no se pueden declarar dentro de una funcin, lo que hacemos el llamar a una variable que ya ha sido declarada, tomando el valor que tenga en ese moment o, pudiendo se modificado en la funcin. $a 1 2 7 8 Funciones Variable PHP soporta el concepto de funciones variables, esto es signi fica que si una variable tiene unos parentesis aadidos al final, PHP buscar un fun cin con el mismo nombre que el contenido de la variable, e intentar ejecutarla. R ecursin PHP t>Recursin Pgina 15 de 54 PHP tambin permite la recursin, es decir, una funcin se puede llamar as misma. Para aclarar el concepto de recursin, vamos a crear una funcin que comprueba si un nmero es entero o no. Un nmero que no sea entero (7'4), tiene una parte entera y otra decimal (comprendida entre 0 y 1), lo que vamos a hacer para comprobar si un nmer o es entero o no, ser restarle 1 al nmero en cuestin hasta que nos que demos sin pa rte entera, y entoces comprobaremos si tiene parte decimal (un poco lioso todo st o). Cmo ahorrarnos lneas de cdigo En las lecciones anteriores hemos aprendido el u so bsico de las funciones de PHP para trabajar con MySQL. En esta leccin y sucesiv as vamos a ver nuevas funciones que nos facilitan y potencian nuestras pginas web . Por lo general, todos nuestros script tienen partes de cdigo iguales, las funcin es include() y require() nos van ahorrar muchas de estas lineas de cdigo. Ambas f unciones hacen una llamada a un determinado fichero pero de dos maneras diferent es, con include(), insertamos lo que contenga el fichero que llamemos de manera literal en nuestro script, mientras que con require(), le decimos que el script necesitar parte de cdigo de se encuentra en el fichero que llama require(). Como t odo esto es un poco lioso, veamos unos ejemplos que nos lo aclar. Si tenemos enc uenta que el fichero header.inc contiene: "Es 0 un nmero entero? ".esEntero(0)." \n"; "Es 3.5 un nmero entero? ".esEntero(3.5)."\n"; "Es -7 un nmero entero? ".esEnte ro(-7)."\n"; "Es -9.2 un nmero entero? ".esEntero(9.2)."\n";

Tutorial de PHP y MySQL (LuCAS) y el fichero footer.inc contiene: Nuestro script sera equivalente a: Ahora veamos el script de ejemplo para la funcin require(): Donde el fichero config.i nc tendra algo como sto: Pgina 16 de 54 Tiempo y fecha En esta leccin vamos a ver como algunas funciones relacionadas con el tiempo y la fecha, as como algunos ejemplos prcticos. time Devuelve el numero de segundos transcurridos desde el 1 de Enero de 1970. A esta forma de expresar fecha y hora se le denomina tmestamp. date(formato, timestamp) La funci date devuelve una cte(formato, timestamp) La fu nci date devuelve una cadena formateada segn los cdigo de formato. Si no le pasamos la variable timestamp nos devuelve la cadena formateada para la fecha y la hora actual. Los cdigos de formato para la funcin date son: CODIGO a A d D F DESCRIPCIN am o pm AM o PM Da del mes con ceros Abreviatura del da de la semana (ingls) Nombre del mes (ingls)

Tutorial de h H i j l m s sin ceros dos Ao con

PHP y MySQL (LuCAS) M s y Y z Hora en formato 1-12 Hora en formato 0-23 Minutos Da del me Dia de la semana Nmero de mes (1-12) Abreviatura del mes (ingls) Segun 2 dgitos Ao con 4 dgitos Dia del ao (1-365)

Pgina 17 de 54 Para ver algunos ejemplos supongamos que ahora es el 7 de abril de 200 Para ver algunos ejemplos supongamos que ahora es el 7 de abril de 2000 a las 14 horas 30 minutos y 22 segundos:

date("d-m-Y") -> 07-04-2000 date("H:i:s") -> 14:30:22 date("Y") -> 2000 date("Ym dHis") -> 20000407143022 date("d/m/y H:i a") -> 07/04/00 14:30 pm date(d-m-Y H:i , time()) -> el momento actual mktime(hora, min, seg, mes, dia, ao) La funcion mktime devuelve una variable de t ipo timestamp a partir de las coordenadas dadas. La principal utilidad de esta f uncion es la de aadir o quitar una determinada cantidad de fecha u horas a una da da. restarDias(5).""; chekdate (mes, dia, ao) La funcin chekdate comprueba si una fecha es vlida, si es a s devuelve TRUE y si no lo es FALSE. Una fecha se considera vlida si el ao est entre 1900 y 32767, el mes entre 1 y 12, y el dia es menor o igual que nmero de das tot al del mes en cuestin.

Tutorial de PHP y MySQL (LuCAS) Para el ejemplo anterior nos dara que la fecha es incorrecta, febrero nunca tiene un da 31. Pgina 18 de 54 Las clases Las Clases son mximo exponente de la Programacin Orientada a Objetos (POO). PHP no es un lenguaje orientad a objeto, pero implementa las caractersticas que permite n definir las clases. Pero, qu son las Clases y para que sirven?, empecemos por lo s segundo, sirven hacer el cdigo ms legible, y lo que es ms importante, reutilizabl e. Escribir una Clase es sin duda ms largo que escribir el cdigo directamente, per o a la larga es ms rentable por su portabilidad a otras , pero a la larga es ms re ntable por su portabilidad a otras aplicaciones y su mantenimiento. Las Clases n o son ms que una serie de variables y funciones que describen y actan sobre algo. Por ejemplo, vamos a crear la clase automvil, la cual tendr diversas variables, $c olor, $modelo, $marca, $potencia, $matricula y habr una serie de funciones que ac tuarn sobre la clase automvil como Precio(), Acelerar(), Frenar(), Girar()y Repara r(). Como ejemplo vamos a crear la clase mysql, que nos servir para realizar cons ultas a las bases de datos MySQL. Como habreis observado, para crear una clase utilizamos la sentencia class, y adems hemos creado una funcin con el mismo nombre que la clase, a esa funcin se le llama constructor y se ejecutar cada vez que def inamos una

Tutorial de PHP y MySQL (LuCAS) Pgina 20 de 54 variable de esa clase. No es obligatorina variable de esa clase. No es obligator io crear un constructor en una definicin de clase. Otra cosa importante en las cl ases es el operador ->, con el que indicamos una variable o mtodo (parte derecha del operador) de una clase (parte izquierda del operador). Para hacer referencia a la clase que estamos creando dentro de su definicin, debemos utilizar this. Y ahora veamos un ejemplo de la clase que hemos creado, y supongamos que el cdigo a nterior lo hemos guardado en un fichero llamado clase_mysql.inc.php. Los fo rmularios Los Formularios no forman parte de PHP, sino del lenguaje estnder de In ternet, HTML, pero como stos van a aperecer muchas veces durante el curso, vamos a dedicar esta algunas lneas a ellos. Lo que viene a continuacin es HTML y no PHP. Todo formulario comienza con la etiqueta . Con . Con ACTION indicamos el script que va procesar la informacin que recogemos en el formulario, mientras que METHO D nos indica si el usuario del formulario va ha enviar datos (post) o recogerlos (get). La etiqueta indica el final del formulario. A partir de la etiqueta vi enen los campos de entrada de datos que pueden ser: Cuadro de texto: Cuadro de texto con barras de desplazamiento: Es de color rojo Casilla de verificacin: Botn de opcin: Men desplegable: lunes martes miercoles Boton de comando:

Tutorial de PHP y MySQL (LuCAS) Campo oculto: Pgina 21 de 54 Este ltimo tipo de campo resulta especialmente til cuando que remos pasar datos oc ultos en un formulario. Como habrs observado todos lo tipos de campo tienen un mo dicador llamado name, que no es otro que el nombre de la variable con la cual re cogeremos los datos en el script indicado por el modificador ACTION de la etique ta FORMFORM, con value establecemos un valor por defecto. A continuacin veamos un ejemplo, para lo cual crearemos un formulario en HTML como el que sigue y lo ll amaremos formulario.htm: Tu nombre Tu sistema favorito Linux Unix Macintos h Windows Te gusta el futbol ? Cual es tu sexo? Hombre Mujer Aficiones Y ahora creemos el script PHP llamado desde le formulario mis_datos.php: "> Tu nombre Tu sistema favorito Linux Unix Macintosh Windows Te gusta el futbol ? Cual es tu sexo? Hombre ="codigo" style="margin-left: 100">Mujer Aficiones La variable de entorno $PHP_SELF, es una variable de entorno que nos devuel ve el nombre del script que estamos ejecutando. Y por ltimo, hacer notar el uso d e la funcin nl2br(), nl2br(), con la cul sustituimos los retornos de carro del tex to, los cules no reconocen los navegadores, por la etiqueta . Descarga de archivos

Tutorial de PHP y MySQL (LuCAS) Pgina 23 de 54 Vamos a ver un caso especial, como descargar un archivo desde un formulario. Par a ello utilizaremos una etiqueta INPUT de tipo FILE, soportada a partir de las v ersiones de los navegadores Nestcape Navigato 2.0 e Internet Explorer 4.0. El formulario debe usar el mtodo post, y el atributo post, y el atributo enctype debe tener el valor multipart/form-data. Adems al formulario debemos aadirle un ca mpo oculto de nombre MAX_FILE_SIZE, al cul le daremos el valor en byte del tamao mx imo del archivo a descargar. Cuando el formulario es enviado, PHP detectara r automaticamente que se est descargando un archivo y lo colocar en un directorio t emporal en el servidor. Dicho directorio ser que el que est indicado en el archivo de configuracin php3.ini, o en su defecto en el directorio temporal del sistema. Cuando PHP dectecta que se est descargando un archivo crea varias variables con el prefijo del nombre del archivo pero con distintas terminaciones. La variable terminada en _name contiene el nombre original del archivo, la terminad en _size el tamao en bytes de ste, y la variable terminada en _type nos indicar el tipo de archivo si ste es ofrecido por el navegador. Si el proceso de descarga no ha sido correcto la variable archivo tomar el valor none y _size ser 0, y si el proceso h a sido correcto, pero la variable teminada en _size da 0, quiere decir que el ar chivo a descarga supera el tamao mximo indicado por MAX_FILE_SIZE. Una vez descarg ado el archivo, lo primero que debemos hacer es moverlo a otro lugar, pues sino se hace nada con l, cuando acabe la ejecucin de la pgina se borrar. Veamos un ejempl o de todo lo dicho. ">Aadir un registro "> Direccin:"> Email:

Вам также может понравиться