Curso PHP Academia Usero

8,681 views
8,528 views

Published on

Curso PHP para introducirte en la programación desde el principio

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
8,681
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
35
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Curso PHP Academia Usero

  1. 1. @INTE ACADEMIA Curso de PHP Sesión 1. Instalar el servidor y probarlo1.1. Instalar servidor Para aprender PHP lo primero que tenemos que hacer es instalar un servidorweb en nuestro ordenador, de modo que podamos ejecutar nuestros programas enPHP antes de subirlos a un servidor. Una buena opción que instala todo lo necesario para empezar a trabajar eseasyphp. Vamos a instalarlo.1. Entre en la siguiente dirección: www.easyphp.org2. Haga clic en el enlace Descargas. 1/195 ACADEMIA USERO
  2. 2. @INTE ACADEMIA Curso de PHP3. Descargue la última versión disponible. En la realización de estos apuntes estaba vigente la versión 1.84. Seleccione uno de los mirrors para descargar el programa.5. Una vez descargado el programa, instálelo haciendo doble clic sobre el icono del programa y siguiendo las instrucciones. 2/195 ACADEMIA USERO
  3. 3. @INTE ACADEMIA Curso de PHP1.2. Reiniciar y probar el servidor Una vez instalado el programa, una de las operaciones más comunes a realizares reiniciar el servidor, ya que puede haber veces que modifiquemos algunosparámetros del mismo y queramos que estén activos.1. Una vez que arranca EasyPHP, tiene un icono en la barra de tareas y, si hace clic, una ventana en el Escritorio con información sobre PHP. Si hace clic en el icono de EasyPHP, obtiene el siguiente menú, desde donde puede Reiniciar los servidores.2. Una vez reiniciado el servidor, vamos a probar si está correctamente instalado el programa. Abra Internet Explorer.3. En el cuadro de dirección, escriba la siguiente dirección: http://localhost4. Cuando pulse Intro, obtendrá la siguiente ventana, donde se indica que se muestran las carpetas en la carpeta raíz del servidor. Se puede borrar el archivo de esta página y siempre obtener una copia en index-safe.php. 3/195 ACADEMIA USERO
  4. 4. @INTE ACADEMIA Curso de PHP1.3. La carpeta del servidor Vamos a probar la carpeta del servidor para comprobar que, efectivamente, elservidor está bien instalado y funcionan nuestras páginas.1. Si todo ha ido bien y ha instalado EasyPHP, la carpeta donde se guardan los archivos de las webs es la siguiente: C:Archivos de programaEasyPHP1-8www2. Entre en esta carpeta.3. Observe como hay un solo archivo index.php, desde donde puede cargar la página de inicio.4. Cree un nuevo archivo en el bloc de notas con el siguiente contenido y guárdelo con el nombre prueba.htm:<HTML><HEAD><TITLE>Página de prueba</TITLE></HEAD><BODY>Esta es la página de prueba</BODY></HTML> 4/195 ACADEMIA USERO
  5. 5. @INTE ACADEMIA Curso de PHP5. Abra este archivo en el navegador para probarlo.1.4. El primer programa en PHP Ya que sabemos donde tenemos que poner el archivo para que funcione, vamosa escribir nuestro primer programa en PHP y vamos a probarlo.1. Cree un nuevo archivo llamado primero.php con el bloc de notas y guárdelo en la carpeta C:Archivos de programaEasyPHP1-8www2. Escriba el siguiente contenido en ese archivo:<HTML><HEAD><TITLE>Página de prueba 1 en PHP</TITLE></HEAD><BODY><?print("Hola, esto es PHP");?></BODY></HTML>3. Guarde el archivo y ábralo en su navegador. Observe el contenido del mismo. 5/195 ACADEMIA USERO
  6. 6. @INTE ACADEMIA Curso de PHP¡¡¡Muy bien!!! Ya ha escrito su primer programa en PHP.1.5. SintaxisObserve como las ordenes de PHP están encerrados entre los signos <? Y ¿>.Además, la única orden que hemos escrito en PHP termina en ; como todos loscomandos que usemos en PHP.1.6. Tomar datos de formulariosPara poder trabajar en posteriores sesiones, vamos a aprender a tomar datos deformularios.1. Entre en el bloc de notas y cree una página web con el siguiente formulario.<HTML><HEAD><TITLE>Formulario 1</TITLE></HEAD><BODY>Formulario 1<form action="nombre.php" method="POST">Nombre: <input type= text name=nombre>Edad: <input type=text name=edad><input type=submit></BODY></HTML> 6/195 ACADEMIA USERO
  7. 7. @INTE ACADEMIA Curso de PHP2. Ahora entre en el bloc de notas y cree un archivo llamado nombre.php con el siguiente código PHP:Hola <?php echo $_POST[nombre];?>. Tu tienes <?php echo $_POST[edad];?>años .3. Abra el formulario y pruébelo. Sesión 2. Instrucciones condicionales2.1. La instrucción IF Sea lo que sea que haga, habrá ocasiones en las que sus programas tomarándecisiones. Por ejemplo, puede decidir cargar una página si el navegador es InternetExplorer u otra página si el navegador es Mozilla. PHP incorpora varias opciones de control de flujo de programa, entre ellas IF.Vamos a hacer un pequeño programa para aprender su funcionamiento.1. Cree un formulario con el siguiente aspecto. Observe como tiene un campo de texto donde puede introducir el nombre del color:<HTML><HEAD><TITLE>Formulario Color</TITLE></HEAD> 7/195 ACADEMIA USERO
  8. 8. @INTE ACADEMIA Curso de PHP<BODY>Formulario Color<form action="webcolor.php" method="POST">Escribe tu color favorito: <input type= "text" name="color"><input type="submit"></BODY></HTML>2. Ahora cree un archivo llamado webcolor.php que va a ser la página de respuesta a los datos del formulario:<HTML><HEAD><TITLE>Página con color de fondo en PHP</TITLE></HEAD><BODY BGCOLOR=<?print("#FFAABB");?></BODY></HTML>3. En principio, hemos hecho una página que solo pone el color de fondo de la página entera en la propiedad BGCOLOR del tag BODY. Pruebe el formulario y vea el color de fondo. 8/195 ACADEMIA USERO
  9. 9. @INTE ACADEMIA Curso de PHPTABLA DE COLORES WEBhttp://es.wikipedia.org/wiki/Colores_HTML_(2)4. Ahora vamos a cambiar el código de modo que, según el contenido del cuadro, se muestre un color de fondo u otro. Dentro de la parte de código PHP, borre la orden print y escriba lo siguiente.$varcolor=$_POST[color];if ($varcolor=="rojo") { print("FF0000"); } else { print("ADFF2F"); }5. ORDEN DE ASIGNACIÓN: Lo primero que se hace es crear una variable llamada varcolor y se le asigna eltexto que hemos escrito en el formulario: varcolor lo que sea6. Anatomía de un IF:La orden IF comienza con la palabra if, que significa SI, el condicional. Luego hay queponer una condición entre paréntesis. Una condición en PHP compara dos valores yda una respuesta negativa o positiva. En este caso se compara el valor de la variablevarcolor con la constante de texto “rojo”. La variable de texto varcolor contiene el textolo que sea y, como no es igual (==) que rojo, pues se ejecute todo lo que está entrellaves detrás del else (en otro caso).IF POSITIVO: se cumple la condición IF NEGATIVO: no se cumple la condición$varcolor=”rojo” $varcolor=”lo que sea”$varcolor=$_POST[color]; $varcolor=$_POST[color];if ($varcolor=="rojo") { se cumple if ($varcolor=="rojo") { NO se 9/195 ACADEMIA USERO
  10. 10. @INTE ACADEMIA Curso de PHP print("FF0000"); cumple } else { print("FF0000"); print("ADFF2F"); } else { } print("ADFF2F"); }7. Pruebe el formulario con el texto rojo escrito en el cuadro de texto del formulario para comprobar que funciona.2.2. Otras condiciones Vamos a crear un formulario que haga cosas distintas dependiendo de la edadintroducida.1. Cree un formulario con el siguiente aspecto y guárdelo con el nombre formedad.htm.<HTML><HEAD><TITLE>Formulario Edad</TITLE></HEAD><BODY> 10/195 ACADEMIA USERO
  11. 11. @INTE ACADEMIA Curso de PHPFormulario Edad<form action="webedad.php" method="POST">Escriba su edad: <input type= "text" name="edad"><input type="submit"></BODY></HTML>2. Cree un archivo con el siguiente código PHP y guárdelo como webedad.php:<HTML><HEAD><TITLE>Página con color de fondo en PHP</TITLE></HEAD><BODY><?$varedad=$_POST[edad];if ($varedad>=18) { print("Puedes ver esta bonita página"); } else { print("Eres menor y no puedes ver esta página"); }?></BODY></HTML> 11/195 ACADEMIA USERO
  12. 12. @INTE ACADEMIA Curso de PHP3. Este código presenta dos grandes diferencias con respecto al anterior. En este caso, el código está dentro del BODY, por tanto, lo que se imprima se imprimirá dentro de la página. Segundo, la condición ya no tiene un igual, sino un mayor o igual. Este programa primero toma la edad que hemos introducido en el formulario y la introduce en una variable. Luego, dependiendo del valor de esta variable, imprime una cosa u otra en la página.4. Abra el archivo y pruébelo para comprobar que, efectivamente, según la edad que introduzca, se muestra un dato u otro. Sesión 3. Condiciones SWITCH y Bucles8.1. ELSEIFSi tiene muchos colores, ha de disponer de una condición múltiple que, dependiendodel color escrito, muestre un color de fondo u otro.1. Cree un formulario para escribir el color y llámele formcolor3.htm2. Modifique este formulario de modo que ejecute el archivo elseif.php cuando sea enviado.3. Ahora escriba el siguiente código en el nuevo archivo elseif.php:<HTML><HEAD><TITLE>Página con color de fondo en PHP</TITLE></HEAD> 12/195 ACADEMIA USERO
  13. 13. @INTE ACADEMIA Curso de PHP<BODY BGCOLOR=<?$varcolor=$_POST[color];if ($varcolor=="rojo") { print("FF0000");} elseif ($varcolor=="blanco") { print("FFFFFF");} elseif ($varcolor=="negro") { print("000000");} elseif ($varcolor=="verde") { print("00FF00");} else { print("9966FF");};?>>Que color tan bonito...</BODY></HTML>4. Observe como la instrucción elseif permite añadir nuevas condiciones al mismo if, de forma que se pueda comparar el valor del cuadro con más nombres de colores. Así, podemos poner el fondo de más colores. Si no se cumple ninguna de las condiciones, hemos añadido un else al final, por si el usuario no escribe un color válido, que salga la página con un color de fondo morado.8.2. La instrucción SWITCH Imagine que tiene una lista con un montón de colores. Tiene que hacer un IF conun montón de ELSEIF y un ELSE. Hay una instrucción más elegante para hacer lomismo, es la instrucción SWITCH. 13/195 ACADEMIA USERO
  14. 14. @INTE ACADEMIA Curso de PHP La instrucción SWITCH depende del valor de una variable. Según lo que valgaesa variable se ejecutará una acción u otra. Vamos a hacer un ejemplo para ver comofunciona:1. Cree un formulario para escribir el color y llámele formcolor4.htm2. Modifique este formulario de modo que ejecute el archivo switch.php cuando sea enviado.3. Escriba este nuevo archivo switch.php<HTML><HEAD><TITLE>Página con color de fondo en PHP</TITLE></HEAD><BODY BGCOLOR=<?$varcolor=$_POST[color];switch ($varcolor) {case "rojo": print("FF0000"); break;case "blanco": print("FFFFFF"); break;case "negro": print("000000"); break;case "verde": print("00FF00"); break;default: 14/195 ACADEMIA USERO
  15. 15. @INTE ACADEMIA Curso de PHP print("9966FF"); break;};?>>Que color tan bonito...</BODY></HTML>4. Este programa hace exactamente los mismo que el anterior. Observe como cada conjunto de instrucciones termina con un break, que para la ejecución del switch. Si el valor de la variable no coincide con ninguna de las opciones anteriores, se ejecutan las instrucciones que están detrás de default.8.3. Bucles Vamos a hacer un programa que repita la misma instrucción varias veces.Imagine que tiene que hacer un programa que pida el nombre de usuario y lacontraseña de un usuario. Si el usuario introduce el dato una sola vez y se equivoca,no podemos permitirlo entrar. Para hacer un programa que pregunte varias veces losdatos del usuario hasta que sean correctos necesitamos un bucle, algo que se repitahasta que se cumpla una cierta condición.1. Cree un nuevo archivo llamado while.php con el siguiente código:<HTML><HEAD><TITLE>While</TITLE></HEAD><BODY><?$contador=0; 15/195 ACADEMIA USERO
  16. 16. @INTE ACADEMIA Curso de PHPwhile ($contador<=10) { print($contador."<br>"); $contador=$contador+1; }?></BODY></HTML>2. Ábralo en su navegador. El resultado es el siguiente:3. Un bucle WHILE tiene el siguiente aspecto:$contador=0;while ($contador<=10) { print($contador."<br>"); $contador=$contador+1; } La primera orden asigna a una variable llamada contador el valor 0. Esto es unoperador de asignación. La orden while tiene siempre una condición entre paréntesis. En este caso, lacondición es que la variable contador debe ser menor que 10. Luego hay dos órdenes,un print que imprime en la página el valor de la variable que hemos creado, y unincrementador, que suma uno a la variable que hemos creado. Vamos a hacer un recorrido por el programa para ver como funciona. 16/195 ACADEMIA USERO
  17. 17. @INTE ACADEMIA Curso de PHP Instrucción a ejecutar Valor de la variable ¿Qué pasa? Pantalla contador $contador=0 0 While ($contador<=10) 0 Se compara el valor de la variable contador 0, con 10, y, como es menor, se ejecuta lo que está dentro de las llaves print($contador."<br>"); 0 Se imprime el valor de la 0 variable contador, 0$contador=$contador+1; 1 Se incrementa el valor de 0 la variable en 1 While ($contador<=10) 1 Se compara el valor de la 0 variable contador, 1, con 10 y, como es menor, se ejecuta lo que está dentro de las llaves print($contador."<br>"); 1 Se imprime el valor de la 0 variable contador, 1 1$contador=$contador+1; 2 Se incrementa el valor de 0 la variable en 1 1 Se repite la comparación, el print y el incremento del contador hasta que… While($contador<=10) 11 Se compara el valor de la 0 variable contador, 11, con 10 y como es mayor, 1 salimos del bucle 2 3 4 5 6 7 8 9 17/195 ACADEMIA USERO
  18. 18. @INTE ACADEMIA Curso de PHP 1‟ FIN DEL PROGRAMAEjercicios. 1. Cree un programa que haga un bucle que cuente de 10 a 1. 2. Cree un programa que haga un bucle que cuente de 1 al número que el usuario introduzca en un formulario. 3. Cree un programa que haga un bucle que imprima la tabla del 2. 18/195 ACADEMIA USERO
  19. 19. @INTE ACADEMIA Curso de PHP Sesión 4. DO…WHILE, FOR, Comentarios, pedido 19/195 ACADEMIA USERO
  20. 20. @INTE ACADEMIA Curso de PHP4.1. DO…WHILEPuede usar la sentencia DO…WHILE si quiere ejecutar el bucle por lo menos unavez. En este caso, se ejecuta el bucle al menos una vez y luego se comprueba lacondición.5. Cree un formulario para escribir el color y llámele formcolor3.htm6. Modifique este formulario de modo que ejecute el archivo elseif.php cuando sea enviado.7. Cree un nuevo archivo llamado dowhile.php con el siguiente código:<HTML><HEAD><TITLE>DO WHILE</TITLE></HEAD><BODY><?$contador=0;do{ print($contador."<br>"); $contador=$contador+1; }while ($contador<=10);?></BODY></HTML> 20/195 ACADEMIA USERO
  21. 21. @INTE ACADEMIA Curso de PHP8. Este programa funciona igual que el que tenía el bucle WHILE.9. ¿Cómo funcionará el siguiente programa?<HTML><HEAD><TITLE>DO WHILE</TITLE></HEAD><BODY><?$contador=56;do{ print($contador."<br>"); $contador=$contador+1; }while ($contador<=10);?></BODY></HTML> 21/195 ACADEMIA USERO
  22. 22. @INTE ACADEMIA Curso de PHP4.2. FORLa instrucción FOR permite ejecutar una serie de acciones un número determinado deveces.1. Cree un nuevo archivo llamado FOR.PHP con el siguiente contenido.<HTML><HEAD><TITLE>DO WHILE</TITLE></HEAD><BODY><?for ($contador=0;$contador<=10;$contador++){ print($contador."<br>"); }?></BODY></HTML>2. La sintaxis del FOR es más compacta, ya que se hace la inicialización de la variable, se define la condición y se hace el incremento en una sola línea. La estructura es la siguiente: for (inicialización variable; condición; incremento o decremento) { 22/195 ACADEMIA USERO
  23. 23. @INTE ACADEMIA Curso de PHP instrucción 1; instrucción 2; …. }3. También puede hacer una lista con los números pares usando este programa:<HTML><HEAD><TITLE>DO WHILE</TITLE></HEAD><BODY><?for ($contador=0;$contador<=20;$contador=$contador+2){ print($contador."<br>"); }?></BODY></HTML> 23/195 ACADEMIA USERO
  24. 24. @INTE ACADEMIA Curso de PHP4.3. Comentarios Los comentarios nos permiten añadir texto donde podemos escribir que es lo quehace una línea de código y otra información. Hay tres tipos de comentarios: Comentarios con barra doble (//): permiten hacer comentarios de una sola línea //esto es un comentario Comentarios con almohadilla (#): permiten hacer comentarios de una sola línea con almohadilla #esto es un comentario Comentario con varias líneas (/* */): /* este comentario tiene varias líneas */4.4. Operadores Ya sabemos un poco de PHP así que vamos a hacer un pequeño programa quecalcule cuanto cuesta el pedido de un usuario.1. Para empezar, cree el siguiente formulario (solo hemos añadido el texto del formulario). 24/195 ACADEMIA USERO
  25. 25. @INTE ACADEMIA Curso de PHP<form id="formpedido" name="formpedido" method="post" action="procesarpedido.php"><table width="25%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="48%">Producto</td> <td width="52%">Cantidad</td> </tr> <tr> <td>DVD</td> <td><label> <input name="ndvd" type="text" id="ndvd" size="10" /> </label></td> </tr> <tr> <td>CD</td> <td><input name="ncd" type="text" id="ncd" size="10" /></td> </tr> <tr> <td>DVD regrabable </td> <td><input name="ndvdreg" type="text" id="ndvdreg" size="10" /></td> </tr> <tr> <td><label> <input type="submit" name="Submit" value="Enviar" /> </label></td> 25/195 ACADEMIA USERO
  26. 26. @INTE ACADEMIA Curso de PHP <td>&nbsp;</td> </tr> </table></form>El formulario se llama formpedido, llama al archivo procesarpedido.php y tiene 3cuadros de texto con los nombres ndvd, ncd y ndvdreg.2. Ahora tenemos que crear el archivo procesarpedido.php que tiene que tomar los datos del formulario, procesarlos y dar una respuesta. Empezamos por lo más fácil, cree el siguiente archivo que toma los datos del formulario y los mete en variables, además de escribir la fecha del código:<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>Pedido procesado</title></head><body> 26/195 ACADEMIA USERO
  27. 27. @INTE ACADEMIA Curso de PHP<p>Pedido procesado el<?echo date("H:i , j S F");?></p><p> <?$varndvd=$_POST[ndvd];$varncd=$_POST[ncd];$varndvdreg=$_POST[ndvdreg];print($varndvd);print("<br>");print($varncd);print("<br>");print($varndvdreg);print("<br>");?></p></body></html>3. La nueva orden que hay aquí es la que da la fecha del sistema. Para aprender más sobre como funciona DATE, busque en la siguiente página: es.php.net/date 27/195 ACADEMIA USERO
  28. 28. @INTE ACADEMIA Curso de PHP4. Ahora vamos a definir los precios de cada artículo. Para definir unos número que no van a cambiar durante el programa, se usan constantes. Escriba las siguientes 3 líneas de código al final, que definen 3 constantes en el programa. define(“PRECIODVD”,1); define(“PRECIOCD”,2); define(“PRECIODVDREG,3);5. Ahora vamos a calcular cuanto cuesta en total la compra. Para calcular definimos una nueva variable llamada total y le asignamos la suma de todos los importes de todos los artículos comprados. Escriba la siguiente línea de código:$total =$varndvd*PRECIODVD+$varncd*PRECIOCD+$varndvdreg*PRECIODVDREG;print $total;6. El resultado será similar al siguiente:7. Puede embellecer el programa. Haga lo necesario para que se muestra como ahora: 28/195 ACADEMIA USERO
  29. 29. @INTE ACADEMIA Curso de PHP Sesión 5. Funciones5.1. Funciones Una función permite escribir un bloque de código que puede ser usado distintasveces dentro de un programa. Vamos a ver un ejemplo de uso de las funciones dentrode un pequeño programa. Vamos a hacer un pequeño programa que nos calcule elcuadrado de un número y lo ponga en un cuadro.1. Cree el siguiente formulario: 29/195 ACADEMIA USERO
  30. 30. @INTE ACADEMIA Curso de PHP2. Este formulario llamará al archivo cuadrado.php, cuyo código PHP es el siguiente:<?function cuadrado($n) { $resultado = $n * $n; return $resultado;}$varnumero=$_POST[numero];print ("Cuadrado:".cuadrado($varnumero));?>3. Aquí esta la función. Para empezar, toda función tiene que tener un nombre, que en este caso es cuadrado. Después, entre paréntesis aparece el argumento, que es una variable: el argumento es el número que hay darle a la función para que calcule el cuadrado. Cabecera de una función: function nombredefuncion(argumentos) { cuerpo de la función }4. En el cuerpo de la función tenemos dos órdenes: la primera calcula el cuadrado del número y lo mete en una variable llamada resultado $resultado = $n * $n; 30/195 ACADEMIA USERO
  31. 31. @INTE ACADEMIA Curso de PHP5. La segunda y más importante, devuelve el valor de la función. Lo que hace es devolver el contenido de la variable que calculamos anteriormente y que contiene el cuadrado del número.6. La palabra function lo único que hace es definir la función, luego la tenemos que usar. Esto es lo que se produce en la parte principal del programa. Primero se toma el contenido del formulario y se introduce en una variable: $varnumero=$_POST[numero];7. Luego se llama a la función cuadrado pasando como argumento el contenido de la variable y el resultado se imprime en la pantalla: print ("Cuadrado:".cuadrado($varnumero));8. El resultado del programa será similar al siguiente:Ejercicios. 1. Cree una función que eleve un numero a otro y úselo con un formulario como si fuera un calculadora FORMULARIO: <body> <p>Potencia</p> <form id="form1" name="form1" method="post" action="potenciaf.php"> <p>Base <label> <input name="base" type="text" id="base" /> </label> </p> 31/195 ACADEMIA USERO
  32. 32. @INTE ACADEMIA Curso de PHP <p>Exponente <label> <input name="exponente" type="text" id="exponente" /> </label> </p> <p> <label> <input type="submit" name="Submit" value="Enviar" /> </label></p> </form> <p>&nbsp; </p> </body> </html> PHP SIN FUNCIÓN <? $varbase=$_POST[base]; $varexponente=$_POST[exponente]; $resultado=$varbase; for ($contador=1;$contador<$varexponente;$contador++) { $resultado=$resultado*$varbase; }; print($resultado); 32/195 ACADEMIA USERO
  33. 33. @INTE ACADEMIA Curso de PHP ?> PHP CON FUNCIÓN <? function potencia($b,$e) { $resultado=$b; for ($contador=1;$contador<$e;$contador++) { $resultado=$resultado*$b; }; return($resultado); } $varbase=$_POST[base]; $varexponente=$_POST[exponente]; print(potencia($varbase,$varexponente)); ?> 33/195 ACADEMIA USERO
  34. 34. @INTE ACADEMIA Curso de PHP 2. Cree una función que imprima en la pantalla un texto un número determinado de veces. El formulario debe contener dos cuadros: uno para la palabra y otro para el número de veces que queremos que salga la palabra. Sesión 6. Funciones y tablas8.1. Funciones y tablas Vamos a crear una función que haga una tabla con tantas filas como indique elnúmero que pasamos como argumento.1. Cree el siguiente formulario:2. El siguiente fichero PHP crea una tabla con el número de filas indicado en el cuadro de texto Nº de filas:<?$varnfilas=$_POST[nfilas];print("<table border=1>");for($i=1;$i<=$varnfilas;$i++) {print("<tr><td>Fila " . $i . "</td></tr>");}print("</table>");?> 34/195 ACADEMIA USERO
  35. 35. @INTE ACADEMIA Curso de PHP3. La orden print(“<table border=1>”); imprime en la página el código HTML necesario para que comience un tabla.4. Luego comienza un bucle cuyo contador es la variable i. Se repite tantas veces como indica la variable $varnfilas. Luego el contador i se incrementa en uno.5. Dentro del bucle se produce la impresión de la celda en sí. Además, se introduce dentro de la celda la palabra fila y el número del contador, de modo que sabemos el número de la fila.6. ¿Cómo cambiaríamos esto para que la impresión de una fila fuera una función? Observe el siguiente código:<?function crearTabla($filas) { print("<table border=1>"); for($i=1;$i<=$filas;$i++) { print("<tr><td>Fila " . $i . "</td></tr>"); } print("</table>");}$varnfilas=$_POST[nfilas];crearTabla($varnfilas);?> 35/195 ACADEMIA USERO
  36. 36. @INTE ACADEMIA Curso de PHP7. Ahora tenemos una función crearTabla que contiene todo el código necesario para insertar la tabla en la página web.6.2. Tablas con varias columnasVamos a hacer un pequeño programa que cree una tabla insertando el número de filasy columnas.1. Cree el siguiente formulario:2. El código necesario para que se imprima una tabla es el siguiente:<?function crearTablaDoble($filas,$columnas) { print("<table border=1>"); for($i=1;$i<=$filas;$i++) { print("<tr>"); for($j=1;$j<=$columnas;$j++) { print("<td>Fila " . $i . " Columna " . $j ."</td>"); } print("</tr>"); } print("</table>"); 36/195 ACADEMIA USERO
  37. 37. @INTE ACADEMIA Curso de PHP}$varnfilas=$_POST[nfilas];$varncolumnas=$_POST[ncolumnas];crearTablaDoble($varnfilas,$varncolumnas);?>3. Observe como hay un bucle dentro de otro en la función crearTablaDoble. Esto es anidación de bucles. Primero imprimimos el código TR para que comience una fila. Luego introducimos un bucle para que se impriman todas las celdas de esa fila. Luego terminamos el código TR para terminar la fila y comenzamos con la siguiente fila.Ejercicio. Cree una función que imprima la tabla de multiplicar del número quese introduzca en un formulario. 37/195 ACADEMIA USERO
  38. 38. @INTE ACADEMIA Curso de PHP Sesión 7. Arrays7.1. Arrays Si vendemos 3 artículos nos puede servir un formulario con 3 filas y ya está,pero, ¿y si vendemos mil artículos? ¿Cómo hacemos para apuntar todos los artículosque vamos a vender? Vamos a usar arrays. Un array es una variable que puede contener muchos números. Cada númeroocupa una posición dentro del array y puede ser accedido por un número o índice. Array de amigos Posición Amigos 0 Pedro 1 Juan 2 Miguel 3 Antonio 38/195 ACADEMIA USERO
  39. 39. @INTE ACADEMIA Curso de PHP Vamos a crear un pequeño programa que defina este array y luego lo imprima enpantalla:8. Cree el siguiente documento PHP y guárdelo con el nombre array.php:<?$amigos[0]="Pedro";$amigos[1]="Juan";$amigos[2]="Miguel";$amigos[3]="Antonio";$i=0;do { print($amigos[$i]."<br>"); $i++;} while ($i<=3);?>9. Observe como se definen los valores del array: $nombredelarray[número]=valor; Se define el nombre del array y, entre corchetes, el número del índice, esto es, laposición que se va a buscar dentro del array.10. Luego hemos puesto un bucle desde el que se van imprimiendo los elementos del array. El resultado del programa debe ser similar al siguiente: 39/195 ACADEMIA USERO
  40. 40. @INTE ACADEMIA Curso de PHP7.2. Contar los elementos del array A continuación tiene una modificación del mismo programa donde añadimos unafunción que permite contar cuantos elementos tiene el array. Eso se define para luegousarlo como límite para el bucle FOR. <? $amigos[0]="Pedro"; $amigos[1]="Juan"; $amigos[2]="Miguel"; $amigos[3]="Antonio"; $nelementos=count($amigos); for($i=0;$i<$nelementos;$i++) { print($amigos[$i]."<br>"); }; ?>7.3. Sesión 8. Arrays 40/195 ACADEMIA USERO
  41. 41. @INTE ACADEMIA Curso de PHP8.1. Foreach La función FOREACH nos permite recorrer un array de la forma más eleganteposible.<?$jugadores["portero"]="Casillas";$jugadores["defensa"]="Pujol";$jugadores["medio"]="Alonso";$jugadores["delantero"]="Reyes";reset($jugadores);foreach($jugadores as $value) { print($value."<br>");}?>8.2. Ordenar un array: sortPodemos usar la función sort para ordenar los elementos de un array. Pruebe elsiguiente programa para observar el resultado:<? 41/195 ACADEMIA USERO
  42. 42. @INTE ACADEMIA Curso de PHP$jugadores["portero"]="Casillas";$jugadores["defensa"]="Pujol";$jugadores["medio"]="Alonso";$jugadores["delantero"]="Reyes";sort($jugadores);reset($jugadores);foreach($jugadores as $value) { print($value."<br>");}?>El único problema de sort es que los índices de tipo string se cambian por índicesnuméricos, de modo que si después de ejecutar el código intentamos acceder a$jugadores[“portero”], no obtendremos ningún resultado.8.3. Ordenar un array con índices: asortPara evitar este problema puede usar el comando asort, que ordena el array junto conlos índices. Pruebe el siguiente programa y compruebe el resultado:<?$jugadores["portero"]="Casillas";$jugadores["defensa"]="Pujol";$jugadores["medio"]="Alonso";$jugadores["delantero"]="Reyes"; 42/195 ACADEMIA USERO
  43. 43. @INTE ACADEMIA Curso de PHPasort($jugadores);reset($jugadores);foreach($jugadores as $value) { print($value."<br>");}print($jugadores["portero"]);?>8.4. Orden inversoPuede usar las funciones rsort() y arsort() para ordenar un formulario de forma inversa.Pruebe a cambiar la orden asort por arsort y compruebe el resultado.8.5. Ordenar por el índiceAhora cambie la orden asort por la orden ksort(). Esta orden le permite ordenar unarray según el índice. 43/195 ACADEMIA USERO
  44. 44. @INTE ACADEMIA Curso de PHPEjercicio. Haz un programa que calcule el número mayor de una lista de 5números introducidos en un formulario.<?$numeros[0] =$_POST[n1];$numeros[1] =$_POST[n2];$numeros[2] =$_POST[n3];$numeros[3] =$_POST[n4];$numeros[4] =$_POST[n5];reset($numeros);foreach($numeros as $value) { print($value."<br>");}$mayor=$numeros[0];foreach($numeros as $value) { if ($value>$mayor) { $mayor=$value; }} 44/195 ACADEMIA USERO
  45. 45. @INTE ACADEMIA Curso de PHPprint($mayor);?> Sesión 9. Email con PHP9.1. Email Es bien fácil enviar un email a través de PHP. Lo único que tenemos que teneren cuenta es que debemos modificar el fichero PHP.INI para especificar el nombre delservidor SMTP que usaremos para enviar el correo.1. Para modificar el fichero PHP.INI haga clic en el icono de EASYPHP en la barra de tareas.2. Haga clic en el submenú Configuración.3. Haga clic en PHP.4. Vaya a la línea SMTP, donde puede definir el servidor de correo. En nuestro caso, estamos usando el de la academia. 45/195 ACADEMIA USERO
  46. 46. @INTE ACADEMIA Curso de PHP5. Guarde este archivo.9.2. El formularioAhora cree un formulario con un par de campos de texto cuya acción sea el archivoemail.php.9.3. Email.phpObserve el código email.php que procesa los datos de lformulario.<?$correo="jluserovilchez@hotmail.com";$asunto="Este es el asunto";$redireccion="gracias.html";$mensaje=""; 46/195 ACADEMIA USERO
  47. 47. @INTE ACADEMIA Curso de PHPforeach($_POST as $key=>$value) { $mensaje.=$key.":".$value; $mensaje.="n";}print($mensaje);if (mail($correo,$asunto,$mensaje)) { //header("Location:$redireccion"); print("Mensaje enviado correctamente");}else{ print("No de ha podido enviar el mensaje. Use el botón atrás paraprobar de nuevo.");}?>9.4. Como funciona el comando mail() Para el comando mail() necesitamos tener la dirección de la persona a la quequeremos enviar el email, el asunto y el mensaje que queremos enviar. Por ello,hemos definido las variables correo y asunto. Luego para el cuerpo del mensaje hemos usado un bucle FOREACH que vatomando todos los valores del formulario que están dentro de la variable $_POST. Una vez llena la variable mensaje, podemos ejecutar el comando mail dentro deun IF. ¿Por qué? Porque el comando mail devuelve un valor booleano indicando si el 47/195 ACADEMIA USERO
  48. 48. @INTE ACADEMIA Curso de PHPenvío ha sido correcto o no. Aprovechamos esto para imprimir en la página derespuesta del envío si el mensaje ha sido correctamente enviado. Sesión 10. Funciones de cadena10.1. Funciones de cadena: substr Habrá ocasiones en que tenga que comprobar o modificar algunos datosintroducidos en el formulario para que se ajusten a sus necesidades. La función substr devuelve un trozo de una cadena de texto. Tiene 3argumentos: substr(string cadena, int posicionInicial, int longitudcadenadevuelta) Cadena: cadena que introducimos para obtener una parte. PosicionInicial: donde queremos que empiece. Longitudcadenadevuelta: longitud de la cadena que se va a devoler.1. Cree un formulario con el siguiente aspecto.2. Cree un archivo PHP con el siguiente código:<?$varpalabra=$_POST[palabra]; 48/195 ACADEMIA USERO
  49. 49. @INTE ACADEMIA Curso de PHPprint(substr($varpalabra,4));?>3. Este código saca todas las letras a la derecha del carácter 4. Si escribimos juliancito, el programa devuelve ancito.10.2. La función trim() Elimina al principio y al final los espacios en blanco, tabulaciones y caracteres delínea nueva. Esto puede ser útil para quitar los errores que pueda cometer el cliente alescribir sus datos. Por ejemplo, la orden:print(trim($varpalabra));imprime el contenido de la variable $varpalabra, quitando todos los caracteressobrantes a la izquierda y a la derecha.10.2. La función strlen() Da la longitud de la cadena de caracteres. Por ejemplo: Print(strlen($varpalabra) Imprimir la longitud de la cadena de caracteres.10.3. Las funciones strtolower() y strtoupper() Convierten la cadena de texto a minúsculas y mayúsculas. 49/195 ACADEMIA USERO
  50. 50. @INTE ACADEMIA Curso de PHP Print(strtolower($varpalabra); Print(strtoupper($varpalabra);10.4. Las funciones ereg() y eregi() Ereg() devuelve el valor trae si una cadena dada ha sido encontrada dentro deotra cadena. Por ejemplo, puede usar esta función para comprobar si existe la arroba cuandoun usuario escribe los datos de un correo electrónico. ereg(“@”,$email) Sesión 11. Enviar archivos al servidor11.1. El formulario Cree el siguiente formulario. El formulario tiene un nuevo tipo de entrada deformulario, una entrada de tipo file que permite seleccionar un archivo, para ello añadeun botón Examinar. 50/195 ACADEMIA USERO
  51. 51. @INTE ACADEMIA Curso de PHP11.2. PHPEl código PHP que hay que añadir al fichero de respuesta es el siguiente:<?$target_path="";$target_path = $carpetadestino . basename( $_FILES[fichero][name]);if(move_uploaded_file($_FILES[fichero][tmp_name], $target_path)) { echo "El fichero ". basename( $_FILES[fichero][name]). " ha sido subido";} else{ echo "Hubo un error. Inténtelo otra vez";}?> 51/195 ACADEMIA USERO
  52. 52. @INTE ACADEMIA Curso de PHP11.3. ¿Dónde acaba el fichero?El fichero termina en la carpeta apache dentro de la carpeta donde tenga instaladoEASYPHP. Sesión 13. Enviar archivos a un servidor FTP13.1. El formulario Cree el siguiente formulario. El formulario tiene un nuevo tipo de entrada deformulario, una entrada de tipo file que permite seleccionar un archivo, para ello añadeun botón Examinar. 52/195 ACADEMIA USERO
  53. 53. @INTE ACADEMIA Curso de PHP13.2. PHPPedazo de script. Vamos a ver que hace.<?PRIMERO COJO LAS VARIABLES DEL FORMULARIO Y LAS METO ENVARIABLES CON NOMBRES QUE TENGAN SENTIDO$servidor = $_POST[servidor];$usuario = $_POST[usuario];$contrasena = $_POST[contrasena];DEJO QUE LA CARPETA DE TRABAJO SEA LA CARPETA RAIZ DEL SERVIDOR$carpetatrabajo="";DEFINO LA CARPETA TEMPORAL COMO AQUELLA QUE ESPECIFICA ELSERVIDOR HTTP (el apache)$carpetatemporal=basename($_FILES[fichero][tmp_name]);SUBO EL FICHERO AL SERVIDOR HTTP 53/195 ACADEMIA USERO
  54. 54. @INTE ACADEMIA Curso de PHPmove_uploaded_file($_FILES[fichero][tmp_name],$carpetatrabajo."/".$carpetatemporal) or die("No puedo subir el fichero a la carpeta de trabajo");AHORA EMPIEZA EL FTPCREO LA CONEXIÓN FTP$conexion = ftp_connect($servidor) or die ("No puedo conectarme al host");ME CONECTO AL SERVIDOR FTP USANDO LOS DATOS QUE HE METIDO EN ELFORMULARIOftp_login($conexion, $usuario, $contrasena) or die("Los datos de usuario y contraseñaestán bien");DEFINO LA CONEXIÓN FTP COMO PASIVA: ESTO ES MUY IMPORTANTEftp_pasv( $conexion, true );LE DIGO QUE SUBA EL FICHERO CON LA ORDEN FTP_PUT, ESPECIFICANDOCOMO FICHERO EL QUE SE SUBIÓ ANTES AL SERVIDOR HTTP$cargar=ftp_put($conexion,$_FILES[fichero][name],$carpetatrabajo."/".$carpetatemporal,FTP_BINARY);LA VARIABLE CARGAR ES VERDADERA SI SE HA SUBIDO EL ARCHIVOCORRECTO Y SI NO PUES SE AVISA DE QUE NO SE HA PODIDO SUBIRif (!$cargar) { print "No puedo subir el fichero";} else { print "Subida exitosa"; 54/195 ACADEMIA USERO
  55. 55. @INTE ACADEMIA Curso de PHP}CIERRO LA CONEXIÓNftp_close($conexion);?> Sesión 14. Escribir y leer datos en ficheros14.1. Un caso Cuando los datos son enviados mediante un formulario, podemos hacer queestos sean enviados a un correo electrónico. Esto supone una larga lista de mensajesque responder en el correo. Vamos a hacer que todos los mensajes se escriban en un archivo de texto: estearchivo de texto puede despues ser procesado por un software de respuestaautomática.14.2. Cree el formulario Cree el siguiente formulario. Observe como hay un campo de área de texto. 55/195 ACADEMIA USERO
  56. 56. @INTE ACADEMIA Curso de PHP14.3. El código para escribir Escribir en un fichero es muy fácil. Observe el siguiente código.<?//cogemos los datos$nombre=$_POST[nombrepers]; 56/195 ACADEMIA USERO
  57. 57. @INTE ACADEMIA Curso de PHP$opinion=$_POST[opinion];//ponemos nombre al fichero$fichero="opiniones.txt";//la orden fopen abre un fichero, la a significa que lo abre en modo add,esto es, añadir al finalif($fp=fopen($fichero,"a")) {//si se abre correctamente se escribe en la variable fichero fp el contenidode la variable nombre//rn es un salto de línea fwrite($fp,$nombre."rn");//también se escribe la opinión fwrite($fp,$opinion."rn");}//y luego se cierra el ficherofclose($fp);?>El contenido del fichero opiniones.txt ,que está en el directorio raiz del servidor es elsiguiente:ecececrhnnqsvsrvrvrveccec 57/195 ACADEMIA USERO
  58. 58. @INTE ACADEMIA Curso de PHPdfdfdef14.4. El código para leer El fichero está escribo en nuestro servidor. ¿Cómo leerlo desde PHP? Para ellovamos a abrir el fichero con la orden fopen en modo “r”, de forma que solo se lea elfichero. Luego usaremos un bucle cuya condición es que no se haya llegado al final delfichero. Dentro del bucle introduciremos una roden que irá leyendo cada una de laslíneas del fichero y poniéndolas en la página.<?//especificamos el nombre del fichero a abrir$fichero="opiniones.txt";//lo abrimos en modo solo lectura$fp=fopen($fichero,"r");//el bucle tiene la condición de que no termine el ficherowhile (!feof($fp)) { //se lee una línea del fichero y se imprime en pantalla print(fgets($fp)); //se imprime una línea print("<br>");}//y luego se cierra el ficherofclose($fp); 58/195 ACADEMIA USERO
  59. 59. @INTE ACADEMIA Curso de PHP?> Sesión 15. Base de datos MySQL15.1. MySQL Al instalar EasyPHP, instalamos el compilador de PHP y además, un gestor debase de datos como MySQL. Vamos a crear una pequeña base de datos en MySQLpara gestiona el acceso a una página web.15.2. Entrar en PHPMyAdmin y crear la tabla PHPMyAdmin nos permite gestionar las bases de datos y las tablas de lasmismas. Vamos a ver como se entra.1. Haga clic con el botón derecho del ratón sobre el icono de EasyPHP en la barra de tareas.2. En el menú objeto, haga clic en el submenú Configuración. 59/195 ACADEMIA USERO
  60. 60. @INTE ACADEMIA Curso de PHP3. Haga clic en la opción PhpMyAdmin.4. Se abre la ventana de Internet Explorer con la dirección 127.0.0.1/mysql/. Este es el gestor phpMyAdmin.5. Vamos a crear una base de datos. Escriba en el cuadro Crear nueva base de datos la palabra control.6. Haga clic en el botón Crear para crear la nueva base de datos. 60/195 ACADEMIA USERO
  61. 61. @INTE ACADEMIA Curso de PHP7. En la zona inferior de la siguiente ventana se muestra el resultado exitoso de la creación de la base de datos.8. En la zona inferior de la ventana se nos permite crear una nueva tabla dentro de la base de datos. En el cuadro Nombre escriba la palabra usuarios y en Campos escriba 2. Para terminar, haga clic en el botón Continúe.9. Se muestra una ventana donde puede especificar los campos de la base de datos:10. Introduzca los siguientes valores para los dos campos de la tabla: el nombre del primer campo será IDUSUARIO de tipo VARCHAR con un tamaño máximo de 15 y será la clave de la tabla, es decir, el valor que no se puede repetir. El otro campo tiene como nombre contrasena y puede almacenar como máximo 8 caracteres. 61/195 ACADEMIA USERO
  62. 62. @INTE ACADEMIA Curso de PHP11. Una vez terminado, haga clic en el botón Grabar.12. Observe como se han añadido los dos campos a la tabla.15.3. Introducir datos Ahora puede insertar algunos datos en la tabla.1. Haga clic en el enlace Insertar en la zona superior de la ventana.2. Ahora va a insertar algunos datos. Haga clic en el cuadro Valor del campo idusuario y escriba u1. También haga clic en el cuadro Valor del campo contrasena y escriba cu1. 62/195 ACADEMIA USERO
  63. 63. @INTE ACADEMIA Curso de PHP3. Luego haga clic en la opción Insertar nuevo registro y haga clic en el botón Continúe.4. Siga insertando dos registros más para dos nuevos usuarios con los datos: u2 y cu2, u3 y cu3.5. Vamos a ver los datos que hemos introducido. Haga clic en el botón Examinar.6. Observe como puede ver los datos que ha introducido.15.4. Crear el formularioCree el siguiente formulario de entrada: el usuario introducirá los datos en el formularioy si sus datos son correctos, saltaremos a otra página. 63/195 ACADEMIA USERO
  64. 64. @INTE ACADEMIA Curso de PHP15.5. Validar los datos Para validar los datos, vamos a conectarnos a la base de datos, abrir la tabla yvamos a buscar los datos que hemos escrito en la tabla. Si aparecen, dejamos queentre el usuario, si no, pues no lo dejamos.<?//empezar la sesiónsession_start();// estos son los datos de entrada en la base de datos MYSQL// por defecto el nombre de usuario es ROOT y la contraseña PASSWORD$db_usuario = root;$db_contrasena = ;//leer los datos en variables$usuario=$_POST[usuario];$contrasena=$_POST[contrasena];//print($usuario);//print($contrasena); 64/195 ACADEMIA USERO
  65. 65. @INTE ACADEMIA Curso de PHP//nos conectamos a la base de datos$conexion = mysql_connect(localhost, $db_usuario, $db_contrasena) ordie(mysql_error());//seleccionamos la base de datosºmysql_select_db(control, $conexion) or die(mysql_error());//se crea la cadena de consulta SQL$consulta = "SELECT * FROM usuarios WHERE idusuario=$usuario ANDcontrasena=$contrasena";print($consulta);print("<br>");//se ejecuta la consulta$resultado = mysql_query($consulta, $conexion) or die(Error haciendoconsulta);$filasdevueltas=mysql_num_rows($resultado);//si hay una fila, es que está dado de alta, si no, es que no es un usuarioif($filasdevueltas == 1) { print Validado; } else { print No validado; }?> Sesión 16. Insertar y eliminar 65/195 ACADEMIA USERO
  66. 66. @INTE ACADEMIA Curso de PHP16.1. Insertar un registro Si tenemos una tabla, tenemos que permitir al usuario introducir datos. Cree elsiguiente formulario:Él código PHP que introduce los datos del formulario en la tabla es el siguiente:<?//empezar la sesiónsession_start();// estos son los datos de entrada en la base de datos MYSQL// por defecto el nombre de usuario es ROOT y la contraseña PASSWORD$db_usuario = root;$db_contrasena = ;//leer los datos en variables$usuario=$_POST[usuario];$contrasena=$_POST[contrasena];//nos conectamos a la base de datos$conexion = mysql_connect(localhost, $db_usuario, $db_contrasena) ordie(mysql_error());//seleccionamos la base de datosºmysql_select_db(control, $conexion) or die(mysql_error()); 66/195 ACADEMIA USERO
  67. 67. @INTE ACADEMIA Curso de PHP//se crea la cadena de consulta SQL$insercion = "INSERT INTO usuarios SETidusuario=$usuario,contrasena=$contrasena";print($insercion);print("<br>");//se ejecuta la consulta$resultado = mysql_query($insercion, $conexion) or die(Error insertandoregistro);?> El código es similar al que nos permite entrar en nuestra página. La diferenciaestá en la consulta SQL. La consulta INSERT permite introducir datos en una tabla.Hay que decir en que tabla queremos introducir los datos, y luego especificar el valorde cada uno de los campos de la tabla.16.2. Eliminar un registro También puede eliminar un registro fácilmente.El código PHP que nos permite eliminar un registro el el siguiente.<?//empezar la sesiónsession_start(); 67/195 ACADEMIA USERO
  68. 68. @INTE ACADEMIA Curso de PHP// estos son los datos de entrada en la base de datos MYSQL// por defecto el nombre de usuario es ROOT y la contraseña PASSWORD$db_usuario = root;$db_contrasena = ;//leer los datos en variables$usuario=$_POST[usuario];$contrasena=$_POST[contrasena];//nos conectamos a la base de datos$conexion = mysql_connect(localhost, $db_usuario, $db_contrasena) or die(mysql_error());//seleccionamos la base de datosºmysql_select_db(control, $conexion) or die(mysql_error());//se crea la cadena de consulta SQL$eliminacion="DELETE FROM usuarios WHERE idusuario=$usuario ANDcontrasena=$contrasena";print($eliminacion);print("<br>");//se ejecuta la consulta$resultado = mysql_query($eliminacion, $conexion) or die(Error insertando registro);?> Sesión 17. Buscar17.1. Buscar datos: crear la base de datos Vamos a crear un formulario que busque los datos de una agenda de personasen una base de datos. Cree una base de datos llamada agenda. Dentro de la misma 68/195 ACADEMIA USERO
  69. 69. @INTE ACADEMIA Curso de PHPcree una tabla con el nombre persona. Añada a él los campos nombre y teléfono.Inserte en la tabla los siguientes datos.17.2. Crear el formularioAhora cree un formulario para buscar los datos. Vamos a crear un formulario dondepodamos introducir los datos y se nos busque automáticamente el teléfono de lapersona buscada.17.3. El código de búsquedaEste es el código que realiza la búsqueda:<?// estos son los datos de entrada en la base de datos MYSQL// por defecto el nombre de usuario es ROOT y la contraseñaPASSWORD$db_usuario = root;$db_contrasena = ; 69/195 ACADEMIA USERO
  70. 70. @INTE ACADEMIA Curso de PHP//leer los datos en variables$nombre=$_POST[nombre];//nos conectamos a la base de datos$conexion = mysql_connect(localhost, $db_usuario,$db_contrasena) or die(mysql_error());//seleccionamos la base de datosºmysql_select_db(agenda, $conexion) or die(mysql_error());//se crea la cadena de consulta SQL$busqueda="SELECT * FROM persona WHERE nombre=$nombre";print($busqueda);print("<br>");//se ejecuta la consulta$resultado = mysql_query($busqueda, $conexion) or die(Errorbuscando);//contamos las filas devueltas$filasdevueltas=mysql_num_rows($resultado);//si no hay filas devueltas es que no se ha encontradoif ($filasdevueltas==0) { print ("No se ha encontrado a la persona en la base dedatos");} else { 70/195 ACADEMIA USERO
  71. 71. @INTE ACADEMIA Curso de PHP//si hay filas devueltas es que la hemos encontrado//así que metemos el resultado de la consulta en un array $fila=mysql_fetch_array($resultado); //e imprimirmos el campo teléfono del array print($fila["telefono"]);}?>17.4. Nuevos códigosMysql_fetch_array extrae los resultados de la sentencia SQL como una matrizasociativa. En una matriz asociativa cada fila tiene un nombre, en este caso losnombres son los nombre de los campos. nombre juan telefono 952555555Una vez obtenidos los datos del array podemos acceder a estos datos como en unarray. El código $fila[“telefono”] permite imprimir el teléfono. Sesión 18. Headers18.1. ¿Qué son los headers?Son cabeceras de las páginas que permiten especificar ciertos datos sobre lasmismas. Observe como, al crear una nueva página web con Dreamweaver, se añadenalgunos headers a la página.<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">Estos headers definen propiedades de la página. 71/195 ACADEMIA USERO
  72. 72. @INTE ACADEMIA Curso de PHP18.2. Headers en PHPLa sintaxis de un header en PHP es la siguiente:Header (nombrecabecer;valorcabecera);18.3.Ejemplo: enviar a otra páginaCuando creamos el programa que comprobaba si un usuario podía entrar en un sitio,podrías haber hecho que se abriera una página de error si introducía mal los datos. Elsiguient código envía al usuario a otra página:<?header("Location: http://localhost/bonita.html");?>Este código nos conduce automáticamente a la URL que indiquemos18.4. Ejemplo: tipo de documentoPodemos establecer el tipo de documento que será enviado al navegador. Este valorhace referencia a una página HTML de la forma:header(“Content-Type:text/html”);Así podemos indicar al navegador el tipo de página que le vamos a enviar.18.5. Ejemplo: obligar a guardar un documentoPodemos hacer que el usuario, al descargar un archivo, tenga un cuadro de diálogodonde se le pregunte que nombre quiere dar al archivo que quiere guardar.En el siguiente caso, enviamos un archivo PDF con la orden readfile y obligamos aque se muestre el cuadro de diálogo con el header Content-Disposition. 72/195 ACADEMIA USERO
  73. 73. @INTE ACADEMIA Curso de PHPPrimero hemos creado un archivo con dos enlaces, el primero un enlace a la páginadespdf.php que contiene las cabeceras indicadas anteriormente y otro enlace normalal archivo archivo.pdf. Si hacemos clic en el segundo enlace, se nos abre el archivoPDF dentro del navegador si tenemos instalada la aplicación Acrobat Reader.El archivo despdf.php tiene el siguiente aspecto:<?php// enviaremos un tipo de archivo PDFheader(Content-type: application/pdf);// Se va a llamar archivo.pdfheader(Content-Disposition: attachment;filename="descarga.pdf");// La fuente del PDF se encuentra en original.pdfreadfile(archivo.pdf);?>Cuando hacemos clic en el primer enlace, se nos muestra la siguiente ventana: 73/195 ACADEMIA USERO
  74. 74. @INTE ACADEMIA Curso de PHP18.6. Evitar que una página sea cacheadaPuede evitar que una página sea cacheada usando el siguiente código:<?// From PHPLib library (http://phplib.netuse.de/. Released underLGPL)header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");header("Cache-Control: no-cache");header("Pragma: no-cache");?>18.7. EsperarLa siguiente página espera 3 segundos para cargar otra página y muestra un mensajede espera:<?phpheader( refresh: 3; url=http://www.nba.com );echo <h1>Espera 3 segundos</h1>;?> 74/195 ACADEMIA USERO
  75. 75. @INTE ACADEMIA Curso de PHPHeaders Already Sent” ErrorYou may encounter an error message that looks like this:Warning: Cannot modify header information - headers already sent by (output startedat C:Program FilesApache GroupApache2testheadererror.php:1) in C:ProgramFilesApache GroupApache2testheadererror.php on line 2This is a common error when working with sessions and cookies. It can occur if you try to set them afteryou have sent HTML code to the server. The server has to deal with these before any HTML output issent to the server, which means that these lines must be the first in the code before any HTML code orecho statement. If you have even a trailing leading space before your first <?php line of code, you willsee this error.590Chapter 17If you need to set cookie or session variables within the body of your code, you need to rethink yourlogic to accommodate this limitation. As we discuss in Chapter 2, those variables need to be addressed atthe beginning of your code for them to be parsed correctly by the PHP server.There are ways to get around this error, using the output buffer to suppress these errors. The outputbuffer is used to store all HTML output in a buffer until you are ready to send it to the browser. Thecommand ob_start is used to begin the output buffering process, and ob_end_flush will send all ofthe stored HTML output to the browser, empty the buffer, and end the output storing process. This willlet you cheat the system and store session and cookie variables in the body of the code, as well as allowyou to use the header(“location:”) function in the body of the code. While this is not recommendedfor beginners, as it is more important for you to learn to code well, and according to the “rules,” this canbe a useful set of functions for a more experienced programmer. If you would like to learn more aboutthe output buffer functions, you can find a complete list of them in Appendix C, or visit www.php.net. Sesión 19. Cookies 75/195 ACADEMIA USERO
  76. 76. @INTE ACADEMIA Curso de PHP19.1. ¿Qué son las cookies?Según Wikipedia, una cookie es:Una cookie es un fragmento de información que se almacena en el disco duro delvisitante de una página web a través de su navegador, a petición del servidor de lapágina. Esta información puede ser luego recuperada por el servidor en posterioresvisitas.Las principales utilidades de una cookie son: Controlar los usuarios que entran en una página Dar opciones de diseño a los usuarios19.2. Introducir el nombrePor ejemplo, podemos hacer una cookie que recuerde nuestro nombre. Cree elsiguiente formulario.19.3. Guardar el dato introducidoLa siguiente página guarda el nombre introducido en una cookie. Observe comohemos usado el método GET en el formulario.<?php setcookie("usuario",$_GET[nombre]);?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 76/195 ACADEMIA USERO
  77. 77. @INTE ACADEMIA Curso de PHP<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>Documento sin t&iacute;tulo</title></head><body>Hola, tu nombre es<?print $_GET[nombre];?></body></html>19.4. Recuperar el valorLa siguiente página recuperar el valor de la cookie y la muestra en el navegador:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>Documento sin t&iacute;tulo</title> 77/195 ACADEMIA USERO
  78. 78. @INTE ACADEMIA Curso de PHP</head><body>Tiene una cookie llamada NOMBRE y su valor es<?print ($_COOKIE["usuario"]);?></body></html>19.5. Color de fondoLas siguientes páginas permiten cambiar el color de fondo de las páginas según unacookie establecida:Formulario para seleccionar el colorScript que graba la cookie con el color<?php setcookie("fondo",$_GET[fondo]);?> 78/195 ACADEMIA USERO
  79. 79. @INTE ACADEMIA Curso de PHP<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>Documento sin t&iacute;tulo</title></head><body>Has elegido el color<?print $_GET[fondo];?></body></html>Script que usa el color para el fondo de la página<BODY BGCOLOR=<?print ($_COOKIE["fondo"]);?>>Está bien</body></html> Sesión 20. Require e include 79/195 ACADEMIA USERO
  80. 80. @INTE ACADEMIA Curso de PHP20.1. Require Require() se sustituye a sí misma con un archivo que se especifique. Cuando un archivo se requiere con require(), el intérprete sale del modo PHP yentra en modo HTML al principio del archivo requerido, después vuelve al modo PHPal final. Así, los códigos dentro del archivo requerido que deban ser ejecutados comoPHP deben ser encerrados dentro de etiquetas de comienzo y fin de PHP. Una sentencia condicional no afecta a require(): un require() siempre lee elarchivo referenciado, incluso si la línea en que se encuentra no se ejecuta nunca. Si sequiere incluir condicionalmente un archivo, se usa include(). Lo mismo ocurre con los bucles: aunque el código contenido en el archivoreferenciado esté en un bucle, el require() sólo se ejecuta una vez. No se puede ponerun require() en una estructura de bucle y esperar que incluya un archivo distinto encada iteración. Puede usar include() para ello.20.2 Crear el sitio1. Como quiera que ya podemos empezar a hacer cositas, vamos a crear un nuevo sitio en Dreamweaver que use tecnología PHP. Cree un nuevo sitio en Dreamweaver.2. Escriba un nombre para el sitio.3. Seleccione como tecnología de servidor PHP MySQL. 80/195 ACADEMIA USERO
  81. 81. @INTE ACADEMIA Curso de PHP4. Cree una carpeta dentro de la carpeta del servidor de PHP y selecciónela para almacenar los archivos del sitio.5. La URL del navegador de prueba será algo similar a la siguiente: http://localhost/nombredetucarpeta6. No usaremos un servidor remoto. 81/195 ACADEMIA USERO
  82. 82. @INTE ACADEMIA Curso de PHP7. Para terminar, haga clic en el botón Finalizar.20.3. Crear la cabecera y el pieUsando las imágenes cabecera.jpg y pie.jpg cree las siguientes páginas. 82/195 ACADEMIA USERO
  83. 83. @INTE ACADEMIA Curso de PHP20.4 Crear la página centralUse Dreamweaver para crear el contenido de la página que irá en el centro y guárdelacon el nombre cuerpo.html.Es en esta página donde introducirá el código PHP para insertar cabecera y pie.<body><table width="600" border="1" cellspacing="0" cellpadding="0"> <tr> <? require("cabecera.html");?> </tr> <tr> 83/195 ACADEMIA USERO
  84. 84. @INTE ACADEMIA Curso de PHP <td><p>Este es el contenido de la p&aacute;gina. Aqu&iacute;puedo dise&ntilde;ar con total libertad.</p> <p>a</p> <p>c</p> <p>d</p> <p>&nbsp; </p></td> </tr> <tr> <? require("pie.html");?> </tr></table>20.5. IncludePuede usar include() con un array y un bucle para incluir varios archivos en una páginaweb.Observe el siguiente ejemplo:$ficheros = array(„a1.htm‟,‟a2.htm‟,‟a3.htm‟);for ($i=0; $i<count($ficheros),$i++) { include $ficheros[$i];}Esta orden crea una página con el contenido de los archivos primero.inc, segundo.incy tercero.inc. 84/195 ACADEMIA USERO
  85. 85. @INTE ACADEMIA Curso de PHPLa diferencia entre include y require es que include se vuelva a calcular cada vez quese encuentra.El código es muy similar al anterior:<body><table width="600" border="1" cellspacing="0" cellpadding="0"> <tr> <? include("cabecera.html");?> </tr> <tr> <td><p>Este es el contenido de la p&aacute;gina. Aqu&iacute;puedo dise&ntilde;ar con total libertad.</p> <p>a</p> <p>c</p> <p>d</p> <p>&nbsp; </p></td> </tr> <tr> <? include("pie.html");?> 85/195 ACADEMIA USERO
  86. 86. @INTE ACADEMIA Curso de PHP </tr></table> Sesión 21. Sesiones21.1. Sesiones Las sesiones nos permiten mantener información entre las páginas cuando unusuario está navegando. Esto nos permite, por ejemplo, guardar las compras que haceen una tienda virtual para cobrarle al final. Las sesiones permiten guardar algunos datos mientras el usuario está activo, demodo que podamos identificarlo conforme va navegando por nuestra página. Los datos de una sesión se guardan todos en la misma sección del servidor,junto con todos los datos de la misma.21.2. Un primer ejemploEl siguiente código permite crear un contador que vaya indicando cuantas páginashemos visitado en un sitio:<?session_register(contador);//$contador=0;print("Contador vale:". ++$_SESSION[contador]);?>Lo primero que se hace es abrir la sesión. Esto se puede conseguir de dos maneras,con session_start(), que comienza una sesión o con sessión_register(), que comienzauna sesión y crea una variable de sesión nueva.es2.php.net 86/195 ACADEMIA USERO
  87. 87. @INTE ACADEMIA Curso de PHPsession_start() crea una sesión (o la continúa basandose en el session idpasado por GET o mediante una cookie).Si desea usar una sesión con un nombre en concreto, debe llamar asession_name() antes de llamar a session_start()session_register() acepta un número variable de argumentos, cualquiera de loscuales puede ser o una cadena que contiene el nombre de una variable, o una matrizque consista de nombres de variables u otras matrices. Para cada nombre,session_register() registra la variable global con ese nombre en la sesión actual.21.3. La ID de sesiónLa SID o identificador de sesión nos permite acceder a un identificador único que tienecada sesión dentro del servidor.A continuación puede ver un pequeño programa que crea una sesión, nos imprime elnúmero y luego la destruye.session_destroy() destruye todos los datos asociados con la sesión actual. Nodestruye ninguna de las variables globales asociadas a la sesión ni la cookie.<?session_start();echo SID;session_destroy();?>21.4. Guardar campos de formulariosA continuación tiene los códigos de tres páginas llamadas 01nombre.php,02apellidos.php, 03resultado.php. 87/195 ACADEMIA USERO
  88. 88. @INTE ACADEMIA Curso de PHP01nombre.php<?session_start();echo SID;?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>Documento sin t&iacute;tulo</title></head><body><p>Escribe tu nombre</p><form id="form1" name="form1" method="post"action="02apellidos.php"> Nombre <label> <input name="cnombre" type="text" id="cnombre" /> </label> <p> <label> <input type="submit" name="Submit" value="Enviar" /> </label> 88/195 ACADEMIA USERO
  89. 89. @INTE ACADEMIA Curso de PHP </p></form><p>&nbsp;</p></body></html>02apellidos.php<?session_register(nombrecillo);$nombrecillo=$_POST[cnombre];$_SESSION["nombrecillo"] = $nombrecillo;print($nombrecillo);?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>Documento sin t&iacute;tulo</title></head><body><p>Muy bien <? 89/195 ACADEMIA USERO
  90. 90. @INTE ACADEMIA Curso de PHPprint($nombrecillo);?>hemos guardado tu nombre. Ahora mete tu apellido.</p><form id="form1" name="form1" method="post"action="03resultado.php"> <p>Apellidos <label> <input name="capellidos" type="text" id="capellidos" /> </label> </p> <p> <label> <input type="submit" name="Submit" value="Enviar" /> </label></p> </form></body></html>03resultado.php<?session_register(apellidos);$nombrecillo=$_SESSION[nombrecillo];$apellidos=$_POST[capellidos];print($apellidos);?> 90/195 ACADEMIA USERO
  91. 91. @INTE ACADEMIA Curso de PHP<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>Documento sin t&iacute;tulo</title></head><body>Muy bien. Tu nombre es<?echo "$nombrecillo";?>y tu apellido es<?print($apellidos);?></body></html>La primera página comienza la sesión de PHP con SESSION_START.Luego se crea un formulario donde el usuario introducirá su nombre. Este formulariollama al archivo 02apellidos.php. Aquí lo primero que se hace es procesar el nombre eintroducirlo en una variable de sesión llamada nombrecillo.session_register(nombrecillo); 91/195 ACADEMIA USERO
  92. 92. @INTE ACADEMIA Curso de PHP$nombrecillo=$_POST[cnombre];$_SESSION["nombrecillo"] = $nombrecillo;Una vez guardada esta variable, ponemos otro formulario para introducir los apellidos.La respuesta a este formulario introduce los datos en otra variable de sesión llamadaapellidos.Además, necesitamos la orden $_SESSION[nombrecillo]; para recuperar el valorde la variable de sesión nombrecillo y poder introducirla en la página.session_register(apellidos);$nombrecillo=$_SESSION[nombrecillo];$apellidos=$_POST[capellidos];print($apellidos); Sesión 22. GD22.1. GD GD es una librería que permite generar imágenes a partir de PHP. Para instalar soporte GD en EasyPHP siga los siguientes pasos:1. Haga clic en el icono de EasyPHP en la barra de tareas junto al reloj.2. Haga clic en Configuración.3. Haga clic en Extensiones PHP. 92/195 ACADEMIA USERO
  93. 93. @INTE ACADEMIA Curso de PHP4. En la ventana de configuración de extensiones de PHP, active la opción php_gd2.5. Haga clic en el botón Aplicar.6. Ahora gd2 está instalado. Para comprobarlo escriba la siguiente página web y créela en su navegador. <?phpinfo()?>7. Esta página muestra toda la información de la instalación de PHP. Una de sus secciones será GD que tendrá el siguiente aspecto. 93/195 ACADEMIA USERO
  94. 94. @INTE ACADEMIA Curso de PHPLas sesiones nos permiten mantener informEstaación entre las páginas cuando unusuario está navegando. Esto nos permite, por ejemplo, guardar las compras que haceen una tienda virtual para cobrarle al final. Las sesiones permiten guardar algunos datos mientras el usuario está activo, demodo que podamos identificarlo conforme va navegando por nuestra página. Los datos de una sesión se guardan todos en la misma sección del servidor,junto con todos los datos de la misma.22.2. Un primer ejemplo<?phpheader("Content-Type: image/jpeg");$imagen=imagecreate(200,200);$maroon = ImageColorAllocate($imagen,123,9,60);$white = ImageColorAllocate($imagen,255,255,255);$black = ImageColorAllocate($imagen,0,0,0); 94/195 ACADEMIA USERO
  95. 95. @INTE ACADEMIA Curso de PHPImageFilledRectangle($imagen,0,0,99,99,$maroon);ImageFilledRectangle($imagen,100,100,199,199,$white);imagejpeg($imagen);imagedestroy($imagen);?>22.3. Texto en una imagenEl siguiente código crea texto en la imagen:<?php$im = imagecreate (250, 28);$black = ImageColorAllocate ($im, 0, 0, 0);$yellow = ImageColorAllocate ($im, 235, 235, 51);ImageTTFText ($im, 20, 0, 10, 20, $yellow,"/WINDOWS/Fonts/IMPACT.ttf", "Muy bien");ImagePNG($im);?>22.4. Imagen dentro de páginaSi queremos que nuestra página genere una imagen no tenemos más quellamar al archivo PHP dentro del TAG: 95/195 ACADEMIA USERO
  96. 96. @INTE ACADEMIA Curso de PHP<body><img src="textogd.php"></body></html>22.5. Pasar parámetrosPodemos pasar parámetros a un archivo PHP que cree una imagen, para porejemplo, cambiar el color de fondo de la misma.Esta es la llamada:Y esta es la respuesta:<?$imColor = hex2int(validHexColor($_REQUEST[color]));$im = imageCreate(50,50);$background = imageColorAllocate($im, $imColor[r], $imColor[g],$imColor[b]);header(Content-type: image/png);imagePNG($im);imageDestroy($im);function hex2int($hex) { return array( r => hexdec(substr($hex, 0, 2)), // 1st pair of digits 96/195 ACADEMIA USERO

×