You are on page 1of 44

Separata preparada para el desarrollo del curso de:

Lenguaje de Programacin I

Cuarta Unidad Temtica: USO DE FUNCIONES EN PHP

Facultad de Ingeniera de Sistemas

TERCER CICLO

Semestre: 2013-II

2013

INDICE
PRIMERA UNIDAD TEMATICA USO DE FUNCIONES EN PHP DECIMA TERCERA SEMANA MARCO TEORICO FUNCIONES DE FECHA Y DE CADENA Funciones de Fecha...................................................................................... 4 Funciones de Cadena...................................................................................... 12 MARCO PRACTICO Actividades....................................................................................................................... 15 DECIMA CUARTA SEMANA MARCO TEORICO FUNCIONES DE ARREGLO Y DE PRESENTACIN DE DATOS Manejo de Arreglos...................................................................................... 17 Funciones de Presentacin de Datos................................................................................. 23 MARCO PRACTICO Actividades....................................................................................................................... 25 DCIMA QUINTA SEMANA MARCO TEORICO VALIDACION DE DATOS A NIVEL CLIENTE/SERVIDOR Validacin usando cdigo cliente...................................................................................... 26 Validacin con cdigo de servidor.................................................................................... 29 MARCO PRACTICO Actividades........................................................................................................................ 32 DCIMA SEXTASEMANA MARCO TEORICO FUNCIONES DE MANEJO DE BASE DE BASE DE DATOS MySQL Funciones de Base de Datos de MySQL en PHP.................................................... Caso Practico...........................................................

33 41

DCIMA SEMANA Marco Terico


Logro Que el participante conozca y utilice las funciones de fecha para el manejo de datos cronolgicos y las funciones de cadena para el trabajo con datos de tipo cadena. Resumen Existen diversas funciones que nos permiten trabajar con datos cronolgicos tales como: date(), checkdate() y strtotime(). Adicionalmente tambin PHP nos ofrece una serie de funciones para procesar datos de tipo cadena.

Funciones de Fecha y de Cadena


Los datos cronolgicos son aquellos que representan un instante de tiempo (Fecha y/o Hora), los datos cronolgicos en PHP estn expresados en marcas de tiempo en una recta cronolgica expresada en segundos la cual comienza el 01 de Enero de 1970 a las 00:00.00 Hrs, asociado a la marca de tiempo 0, a partir de este punto inicial, la recta cronolgica se extiende de segundo en segundo, asi que el 02 de Enero de 1970 a las 00:00.00 hrs , est asociada a la marca de tiempo 86400, y el 03 de Enero de 1970 a las 00:00.00 hrs , est asociada a la marca de tiempo 172800 y as sucesivamente. A las marcas de tiempo tambin se le llama timespan. Para conocer la marca de tiempo de una fecha: El timespan o marca de tiempo de una fecha corresponde a la cantidad de segundos transcurridos desde el 01/01/1970 00:00.00 hrs (GMT), hasta una determinada fecha. Todos los datos cronolgicos tienen un timespan.
<? echo strtotime("31 December 2008"); echo strtotime("26 May 2008 08:00:00"); echo strtotime("now"); //Marca de tiempo actual ?>

Para mostrar una fecha a partir de una marca de tiempo: date(formato,timespan) Esta funcin visualiza una fecha de acuerdo a la marca de tiempo, si no se especifica la fecha, se asumir la fecha actual.
$n=strtotime(12 oct 1989); //Obtenemos la marca de tiempo $fn=date(d/m/y,$n); //Obtenemos la fecha a partir de la marca tiempo echo $fn; //Visualizamos la fecha anterior en formato d/m/y

Para establecer los formatos en la funcin date, utilice los siguientes valores: Valores a A d D F h H g G i j l L m M n s S t U w Y y z Ejemplo:
echo date(d/M/y); //Muestra la fecha actual en formato 01/01/08 echo date(d/F/y,strtotime(28 February 2008));

Descripcin a.m o p.m A.M. o P.M Da del mes con dos dgitos (de 01 a 31) Da de la semana con tres caracteres Nombre del mes Hora en formato 01 a 12 Hora en formato 00 a 23 Hora en formato 1 a 12 (sin cero) Hora en formato 0 a 23 (sin cero) Minutos de 00 a 59 Da del mes en formato 1 a 31 Da de la semana, en texto completo 1: si es ao bisiesto; 0: si no es un ao bisiesto Mes de 01 a 12 Mes con tres caracteres Mes de 1 a 12 (sin cero inicial) Segundos de 00 a 59 Sufijo ordinal en ingls (th, nd) Nmero de dias del mes dado, de 28 a 31 Segundos transcurridos desde el valor de inicio (01-011970) Da de la semana de 0 (domingo) a 6 (sbado) Ao con cuatro digitos Ao con dos digitos Da del ao de 0 a 365

Validar una fecha checkdate(mes,dia,ao) Esta funcin valida la fecha de acuerdo a los parmetros recibidos, si la fecha es correcta, esta funcin devuelve true, en caso contrario devuelve false.
if(checkdate(13,14,2008)) else { echo "Fecha invalida"."<br>"; } //mm,dd,aa

{ echo "Fecha valida"."<br>"; }

Nota: En este caso, el valor devuelto por la funcin checkdate es false (o vacio).

Incrementar una cantidad de tiempo a una fecha La funcin strtotime tambin nos permite incrementar una cantidad de tiempo a la fecha especificada. La cadena de incremento debe obedecer las normas del GNU. Para ms informacin acuda a: http://www.gnu.org/software/tar/manual/html_chapter/tar_7.html Ejemplos:
//Agregar 20 das a la fecha de 28/05/2008 $x=strtotime("+20 days",strtotime("28 May 2008")); $nf1=date("d/M/y h:i.s",$x); echo $nf1."<br>"; //Agregar 2 aos a la fecha de 28/05/2008 $x=strtotime("+20 years",strtotime("28 May 2008")); $nf1=date("d/M/y h:i.s",$x); echo $nf1."<br>"; //Agregar 2 semanas a la fecha de 28/05/2008 $x=strtotime("+2 weeks",strtotime("28 May 2008")); $nf1=date("d/M/y h:i.s",$x); echo $nf1."<br>"; //Hallar la fecha que corresponde a la prxima semana de 28/05/2008 $x=strtotime("next week",strtotime("28 May 2008")); $nf1=date("d/M/y h:i.s",$x); echo $nf1."<br>";

EJEMPLOS PRACTICOS a. Determinar la cantidad de tiempo transcurrido


1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2. <html xmlns="http://www.w3.org/1999/xhtml"> 3. <head> 4. <meta 1" /> 5. <title>Documento sin t&iacute;tulo</title> 6. </head> 7. <body> 8. <? 9. //Crear la fecha de hoy 10. $fechaactual=date("D d-m-Y H:i:s"); http-equiv="Content-Type" content="text/html; charset=iso-8859-

11. //Visualizar la fecha 12. echo $fechaactual."<br>"; 13. //Averiguar su marca (timespan) en la lnea de tiempo 14. $vfechaactual=strtotime("now"); 15. echo "Marca de tiempo : ".$vfechaactual."<br>"; 16. //Crear una fecha especifica 17. $fn=strtotime("20 jun 1991 1:15.12"); 18. echo "Marca de tiempo : ".$fn."<br>"; 19. //Formatear la fecha de nacimiento 20. echo date("D d/m/Y h:i.s",$fn)."<br>"; 21. //Calcular el tiempo transcurrido entre ambas fechas 22. $edseg=$vfechaactual-$fn; 23. echo "La edad en segundos es ".number_format($edseg,2,".",",")."<br>"; 24. $edmin=$edseg/60; 25. echo "La edad en minutos es ".number_format($edmin,2,".",",")."<br>"; 26. $edhoras=$edmin/60; 27. echo "La edad en horas es ".number_format($edhoras,2,".",",")."<br>"; 28. $eddias=$edhoras/24; 29. echo "La edad en dias es ".number_format($eddias,2,".",",")."<br>"; 30. ?> 31. </body> 32. </html>

b. Agregar a una fecha especfica una cierta cantidad de tiempo. Visualizar la nueva fecha. AgregarFecha.php
1. <? 2. $meses=array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","A gosto","Septiembre","Octubre","Noviembre","Diciembre"); 3. $mesabr=array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct ","Nov","Dec"); 4. $tiempos=array("Dias","Semanas","Meses","Aos"); 5. $times=array("Days","Weeks","Months","Years"); 6. //capturar valores 7. $dia=$_POST["cbodia"]; 8. $mes=$_POST["cbomes"]; 9. $year=$_POST["cboyear"]; 10. $tipo=$_POST["cbotipo"]; 11. $unidad=$_POST["cbounidad"]; 12. $cant=$_POST["txtcant"]; 13. $benviar=$_POST["btnenviar"]; 14. if($benviar!="") { 15. //Hallar la marca de tiempo de la fecha seleccionada 16. $x=strtotime($dia." ".$mes." ".$year); 17. //Agregar la cantidad de tiempo 18. $y=strtotime($tipo.$cant." ".$unidad,$x); 19. //convertir a formato convencional 20. $nuevafecha=date("D d/m/Y",$y); 21. }

22. ?> 23. 24. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 25. <html xmlns="http://www.w3.org/1999/xhtml"> 26. <head> 27. <meta http-equiv="Content-Type" content="text/html; charset=iso-88591" /> 28. <title>Documento sin t&iacute;tulo</title><style type="text/css"> 29. <!-30. .Estilo1 { 31. font-size: 16px; 32. color: #FF0000; 33. } 34. --> 35. </style></head> 36. <link rel="stylesheet" type="text/css" href="css/estilo.css"> 37. <body> 38. <h1>Agregar un espacio de tiempo </h1> 39. <form id="form1" name="form1" method="post" action=""> 40. <table width="346" border="1" align="center"> 41. <tr> 42. <td width="111" class="tablaTitulo"><div align="center"><strong>Dia</strong></div></td> 43. <td width="84" class="tablaTitulo"><div align="center"><strong>Mes </strong></div></td> 44. <td width="129" class="tablaTitulo"><div align="center"><strong>A&ntilde;o</strong></div></td> 45. </tr> 46. <tr> 47. <td><div align="center"> 48. <select name="cbodia" id="cbodia"> 49. <option>Dia</option> 50. <? for($i=1;$i<32;$i++) { ?> 51. <option value=<?=$i?>><?=$i?></option> 52. <? } ?> 53. </select> 54. </div></td> 55. <td><div align="center"> 56. <select name="cbomes" id="cbomes"> 57. <option>Mes</option> 58. <? for($i=0;$i<12;$i++) { ?> 59. <option value=<?=$mesabr[$i]?>><?=$meses[$i]?></option> 60. <? } ?> 61. </select> 62. </div></td> 63. <td><div align="center"> 64. <select name="cboyear" id="cboyear"> 65. <option>A&ntilde;o</option> 66. <? for($i=1980;$i<2001;$i++) { ?> 67. <option value=<?=$i?>><?=$i?></option> 68. <? } ?> 69. </select> 70. </div></td> 71. </tr> 72. <tr> 73. <td>Tipo de incremento </td>

74. <td colspan="2"><select name="cbotipo" id="cbotipo"> 75. <option value="+">Ascendente</option> 76. <option value="-">Descendente</option> 77. </select> </td> 78. </tr> 79. <tr> 80. <td>Unidad de Tiempo </td> 81. <td><select name="cbounidad" id="cbounidad"> 82. <option value="">Seleccione Unidad de tiempo</option> 83. <? for($i=0;$i<4;$i++) { ?> 84. <option value=<?=$times[$i]?>><?=$tiempos[$i]?></option> 85. <? } ?> 86. </select></td> 87. <td>&nbsp;</td> 88. </tr> 89. <tr> 90. <td>Cantidad de Tiempo </td> 91. <td><input name="txtcant" type="text" id="txtcant" /></td> 92. <td>&nbsp;</td> 93. </tr> 94. <tr> 95. <td colspan="3"><div align="center"> 96. <input name="btnenviar" type="submit" class="boton" id="btnenviar" value="Enviar" /> 97. </div></td> 98. </tr> 99. </table> 100. </form> 101. <? if($benviar!="") { ?> 102. <div id="datos"> 103. <div align="center"><strong><span class="Estilo1"><?=$nuevafecha? ></span></strong></div> 104. </div> 105. <? } ?> 106. <p>&nbsp;</p> 107. </body> 108. </html>

c. Determinar la cantidad de tiempo transcurrido entre 2 fechas


1. 2. 3. <? $meses=array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio", "Agosto","Septiembre","Octubre","Noviembre","Diciembre"); $mesabr=array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","O ct","Nov","Dec"); //Capturar los valores $dia=$_REQUEST["cbodia"]; $mes=$_REQUEST["cbomes"]; $year=$_REQUEST["cboyear"]; $dia2=$_REQUEST["cbodia2"]; $mes2=$_REQUEST["cbomes2"]; $year2=$_REQUEST["cboyear2"]; $benviar=$_REQUEST["btnenviar"]; //Validar ambas fechas if(checkdate($mes+1,$dia,$year) and checkdate($mes2+1,$dia2,$year2)) { $n1=strtotime($dia." ". $mesabr[$mes]." ".$year); $n2=strtotime($dia2." ". $mesabr[$mes2]." ".$year2);

4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.

16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77.

if($n1<$n2){ //La fecha1 es menor que la fecha2 $dif=$n2-$n1; $dias=$dif/86400; //Convertimos los segundos en dias } else { $rpta="Lo sentimos la fecha 1 debe ser menor que la fecha 2"; } } else { $rpta="Lo sentimos una de las fechas no es vlida..."; } ?> <!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-88591" /> <title>Documento sin t&iacute;tulo</title> <style type="text/css"> <!-.Estilo1 {color: #0000FF} --> </style> </head> <link rel="stylesheet" type="text/css" href="css/estilo.css"> <body> <h1><strong>Diferencia de Fechas</strong></h1> <form id="form1" name="form1" method="post" action=""> <table width="200" border="1" align="center"> <tr> <th scope="col">Dia</th> <th scope="col">Mes</th> <th scope="col">A&ntilde;o</th> </tr> <tr> <td><select name="cbodia" id="cbodia"> <option>Dia</option> <? for($i=1;$i<32;$i++) { ?> <option value="<?=$i?>"> <?=$i?> </option> <? } ?> </select> </td> <td><select name="cbomes" id="cbomes"> <option>Mes</option> <? for($i=0;$i<12;$i++) { ?> <option value="<?=$i?>"> <?=$meses[$i]?> </option> <? } ?> </select></td> <td><select name="cboyear" id="cboyear"> <option>A&ntilde;o</option> <? for($i=1980;$i<2001;$i++) { ?> <option value="<?=$i?>"> <?=$i?> </option> <? } ?> </select></td> </tr> <tr> <td><select name="cbodia2" id="cbodia2"> <option>Dia</option>

78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124.

<? for($i=1;$i<32;$i++) { ?> <option value="<?=$i?>"> <?=$i?> </option> <? } ?> </select></td> <td><select name="cbomes2" id="cbomes2"> <option>Mes</option> <? for($i=1;$i<32;$i++) { ?> <option value="<?=$i?>"><?=$meses[$i]?></option> <? } ?> </select></td> <td><select name="cboyear2" id="cboyear2"> <option>A&ntilde;o</option> <? for($i=1980;$i<2001;$i++) { ?> <option value="<?=$i?>"> <?=$i?> </option> <? } ?> </select></td> </tr> <tr> <td colspan="3"><div align="center"> <input name="btnenviar" type="submit" class="boton" id="btnenviar" value="Enviar" /> </div></td> </tr> </table> </form> <? if($benviar!="") { ?> <div id="datos"> <table width="200" border="1" align="center"> <tr> <th scope="col">Dias Transcurrido </th> </tr> <tr> <? if($rpta==""){ ?> <td><div align="center" class="Estilo1"><?=number_format($dias,0,"."," ")?></div></td> <? } else { ?> <td><div align="center" class="Estilo1"><?=$rpta?></div></td> <? }?> </tr> </table> </div> <? } ?> <p>&nbsp;</p> </body> </html>

d. Validar el ingreso de una fecha


1. <? 2. $meses=array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","A gosto","Septiembre","Octubre","Noviembre","Diciembre"); 3. //Capturar los valores 4. $dia=$_REQUEST["cbodia"]; 5. $mes=$_REQUEST["cbomes"]; 6. $year=$_REQUEST["cboyear"]; 7. $benviar=$_REQUEST["btnenviar"]; 8. ?> 9. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 10. <html xmlns="http://www.w3.org/1999/xhtml"> 11. <head>

12. <meta http-equiv="Content-Type" content="text/html; charset=iso-88591" /> 13. <title>Documento sin t&iacute;tulo</title><style type="text/css"> 14. <!-15. .Estilo1 {color: #0000FF} 16. --> 17. </style></head> 18. <link rel="stylesheet" type="text/css" href="css/estilo.css"> 19. <body> 20. <h1>Validar Fechas</h1> 21. <form id="form1" name="form1" method="post" action=""> 22. <table width="200" border="1" align="center"> 23. <tr> 24. <th scope="col">Dia</th> 25. <th scope="col">Mes</th> 26. <th scope="col">A&ntilde;o</th> 27. </tr> 28. <tr> 29. <td><select name="cbodia" id="cbodia"> 30. <option>Dia</option> 31. <? for($i=1;$i<32;$i++) { ?> 32. <option value="<?=$i?>"><?=$i?></option> 33. <? } ?> 34. </select> </td> 35. <td><select name="cbomes" id="cbomes"> 36. <option>Mes</option> 37. <? for($i=0;$i<12;$i++) { ?> 38. <option value="<?=$i?>"><?=$meses[$i]?></option> 39. <? } ?> 40. </select></td> 41. <td><select name="cboyear" id="cboyear"> 42. <option>Ao</option> 43. <? for($i=1980;$i<2001;$i++) { ?> 44. <option value="<?=$i?>"><?=$i?></option> 45. <? } ?> 46. </select></td> 47. </tr> 48. <tr> 49. <td colspan="3"><div align="center"> 50. <input name="btnenviar" type="submit" class="boton" id="btnenviar" value="Enviar" /> 51. </div></td> 52. </tr> 53. </table> 54. </form> 55. <? if($benviar!="") { 56. if(checkdate($mes+1,$dia,$year)) { 57. $rpta="Fecha correcta..."; 58. } 59. else { 60. $rpta="Fecha incorrecta..."; 61. } 62. ?> 63. <div id="datos"> 64. <table width="200" border="1" align="center"> 65. <tr> 66. <th scope="col">Respuesta de la validaci&oacute;n </th> 67. </tr> 68. <tr> 69. <td><div align="center"><strong><span class="Estilo1"><?=$rpta? ></span></strong></div></td> 70. </tr> 71. </table> 72. </div> 73. <? } ?>

74. <p>&nbsp;</p> 75. </body> 76. </html>

Funciones de Cadena
1. INTRODUCCION Para realizar trabajos con cadenas de textos, PHP nos provee de un conjunto de funciones de cadena que realizan procesos especficos. 2. FUNCIONES DE CADENA Funcin strtoupper: Devuelve el contenido de la cadena en Maysculas. Ejemplo: $login=$_POST[txtlogin]; if(strtoupper($login)) { echo Usuario Admitido); } Explicacin: Si el contenido de la variable login es igual a PEPE, saldr un mensaje con el contenido Usuario Admitido, no interesar si el usuario haya ingresado el texto en minscula o mayscula porque la funcin strtoupper siempre lo convertir a maysculas. Funcin strtolower: Devuelve el contenido de la cadena en Minsculas. Ejemplo: $login=$_POST[txtlogin]; if(strtolower($login)) { echo Usuario Admitido); } Funcin count(): Devuelve la longitud de la cadena. Ejemplo: if (count($dni)!=8) { echo ERROR: No es un nmero de DNI vlido; } Funcin strpos(): Devuelve la posicin de la primera ocurrencia del carcter dado. Ejemplo 1: $ape=Torres Huamn; $c=strpos($ape, );

echo El espacio en blanco est situado en la posicin .$c; Funcin trim() : Elimina los espacios en blanco a la izquierda o derecha de la cadena. Ejemplo: $ape=$_POST[txtape]; if(trim($ape)==) { echo El dato no puede ser vaco; } Funcin str_pad() : string str_pad(string cadena_original, int longitud_relleno [, string cadena_relleno [, int tipo_relleno]] ) Rellena una cadena con un carcter especificado. El tipo de relleno puede ser: STR_PAD_LEFT para Rellenar a la izquierda, STR_PAD_RIGHT para Rellenar a la derecha, STR_PAD_BOTH rellenar en la izquierda y la derecha (dato centrado). Ejemplo: $monto=234.23; echo "S/.".str_pad($monto,12,"*",STR_PAD_LEFT ); Funcin str_repeat() : str_repeat($caracter,n) Repite una cadena o carcter, n veces Funcin str_replace() : str_replace($dato) Reemplaza una subcadena por otra dentro de una cadena. Ejemplo: $cadena="el alumno Ronald"; echo str_replace("alumno","ingeniero",$cadena); Funcin ucfirst() : ucfirst($cadena) Convierte el primer carcter a mayscula. Funcin ucwords() : ucwords($cadena) Convierte el primer carcter de cada palabra a mayscula. Funcin substr() : substr($cadena,inicio,longitud) Consigue una subcadena. Funcin chr: Devuelve el cdigo ASCII de un determinado carcter. Ejemplo:

$ape=Casas; for($i=0;$i<count($ape);$i++) //Recorremos los caracteres de la cadena { $car=substr($ape,$i,1); //Obtenemos un carcter de la cadena $x=chr($car); // Obtenemos el cdigo ASCII del carcter capturado if($x==97) //Se pregunta si el Codigo ASCII es igual a 97 (a minscula) { $c++; } //Contamos la cantidad de veces en que aparece la letra a } echo La vocal a se repite $c veces; //Visualizamos la cantidad Explicacin: Se hace un recorrido por todos los caracteres de la cadena usando la estructura for, empezando desde la primera posicin (cero) hasta la ltima posicin 4, en cada vuelta se toma el carcter que corresponde a la variable i y se convierte dicho carcter a su equivalente ASCII, luego se pregunta si dicho carcter es igual al carcter a (Cdigo ASCII 97), si es as, se contabilizar la cantidad de veces en que aparece dicho carcter Funcin strrpos() : strrpos($cadena,$subcadena) Retorna la posicin de la subcadena dentro de la cadena. (Solo de la ltima ocurrencia). Ejemplo: $cadena="el alumno Ronald"; echo strpos($cadena,"alumno"); Funcin strrev() : strrev($cadena) Devuelve la cadena invertida. Funcin str_repeat() : str_repeat($caracter,n) Repite una cadena o carcter, n veces Funcin str_replace() : str_replace($dato) Reemplaza una subcadena por otra dentro de una cadena. Ejemplo: $cadena="el alumno Ronald"; echo str_replace("alumno","ingeniero",$cadena);

Actividad
Objetivo: Que el alumno cree aplicaciones basadas en la POO utilizando datos cronolgicos. Crear cada una de las siguientes aplicaciones con su respectiva clase. 1. Crear una aplicacin que luego de ingresar la fecha de nacimiento de una persona nos devuelva el nombre de la estacin en la que naci. 2. Crear una aplicacin que luego de ingresar la fecha de nacimiento nos devuelva la edad de la persona expresada en: Aos, meses, semanas, das, horas, minutos y segundos. 3. Crear una aplicacin que nos permita ingresar dos fechas (Fecha inicial y fecha final). Determinar dentro de este rango de dos fechas Cuantos domingos existen? 4. Crear una aplicacin que recepcione el monto de la deuda, la fecha del ltimo da de pago y la fecha de cancelacin. Calcule la cantidad de das de retraso en el pago y la mora correspondiente, si se sabe que por cada da de retraso se aplica una inters moratorio del 1% sobre el monto de la deuda. Considere que si la persona cancela antes de la fecha del ltimo da de pago la mora es 0. 5. Realizar una aplicacin PHP que recepcione dos fechas y demuestre un listado de las fechas comprendidas en ese rango, mostrando los domingos de color ROJO.

Universidad Privada Telesup DCIMA CUARTA SEMANA Marco Terico


Logro El alumno manejar los arreglos a travs de las funciones de PHP y asi mismo manejar las funciones de presentacin de datos. Resumen Los arreglos son estructuras de datos estticas que almacenan un conjunto de datos, existen arreglos escalares (ndices numricos) y arreglos asociativos (ndices descriptivos). Adicionalmente las funciones de presentacin de datos permiten mostrar los datos de manera personalizada.

16

Funciones de Arreglos y Funciones de Presentacin de Datos Manejo de Arreglos


Arreglo Es una estructura de datos esttica que almacena un conjunto de datos, cada dato puede ser accedido por un ndice. Tipos de arreglos en PHP a. Arreglo Escalar Este arreglo tiene ndices numricos en serie secuencial. Ejemplo: Arreglo Ventas de tipo Escalar 1000 0 b. Arreglo Asociativo 2356 1 1598 2 2542 3 1982 4

Este arreglo tiene ndices descriptivos Ejemplo: Arreglo Ventas de tipo Asociativo 1000 Lunes Cargar un Arreglo Escalar 1ra. forma
$distritos=array(Ate,Barranco,Brea,Carabayllo,Comas);

2356 Martes

1598 Miercoles

2542 Jueves

1982 Viernes

2da. forma
$ciudades[]=Lima; $ciudades[]=Cajamarca; $ciudades[]=Huaraz;

Asignatura: Laboratorio de Programacin I

Universidad Privada Telesup


$ciudades[]=Tacna;

17

3ra. forma
$asig[0]=Matematica; $asig[1]=Fisica; $asig[2]=Quimica; $asig[3]=Investigacin Operativa;

Recorrer los datos de un arreglo escalar


<? for($i=0;$i<count($asig);$i++){ echo $asig[$i].<br>; } ?>

Cargar un Arreglo Asociativo


<? $cuentas[Enero]=1233; $cuentas[Febrero]=1233; $cuentas[Marzo]=1233; $cuentas[Abril]=1233; ?>

Recorrer los datos de un arreglo escalar


<? foreach($cuentas as $pos=>$dato){ echo $pos. : .$dato.<br>; } ?>

FUNCIONES PARA EL MANEJO DE ARREGLOS


pos($arreglo) actual del puntero. current($arreglo) key($arreglo) reset($arreglo) el dato de dicha posicin Es idntico al anterior Devuelve el nmero de la posicin actual donde se encuentra el puntero Enva el puntero al principio del arreglo y devuelve Devuelve el dato que se encuentra en la posicin

Asignatura: Laboratorio de Programacin I

Universidad Privada Telesup


end($arreglo) next($arreglo) prev($arreglo) count($arreglo) sort($arreglo) asort($arreglo) array_reverse($arreglo) inverso array_count_values($arreglo) in_array($dato, $arreglo) shuffle($arreglo) Devuelve un arreglo con la frecuencia con las cuales se repiten los elementos en el arreglo Devuelve verdadero si el dato existe en el arreglo Esparce fortuitamente los elementos de arreglo. Enva el puntero al final del arreglo y devuelve el dato de dicha posicin Enva el puntero al siguiente elemento y devuelve el dato de dicha posicin Enva el puntero al siguiente elemento y devuelve el dato de dicha posicin Devuelve el nmero total de elemento del arreglo Ordena ascendentemente el contenido de los datos del arreglo Ordena descendentemente el contenido de los datos del arreglo Devuelve un arreglo con el contenido en orden

18

CASOS PRACTICOS a. Cargar una lista desplegable con datos de un arreglo


1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. <? $lista[0]="Pedro"; $lista[1]="Liseth"; $lista[2]="Juan"; $lista[3]="Carla"; $lista[4]="Victor"; $lista[5]="Santiago"; $lista[6]="Smith"; $nuevalista=array_reverse($lista); sort($nuevalista); //Ordenar el array

//Visualizar el array ?> <select name="cbolista"> <option value="">Seleccionar Nombre</option> <? for($i=0;$i<count($nuevalista);$i++){?> <option value="<?=$nuevalista[$i]?>"><?=$nuevalista[$i]? ></option> 16. <? }?> 17. </select>

b. Demostrativo de cmo funcionan las funciones de arreglos Arreglos.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">

Asignatura: Laboratorio de Programacin I

Universidad Privada Telesup


<head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Documento sin t&iacute;tulo</title> </head> <body bgcolor="beige"> <h1>Arreglos</h1> <hr /> <? //cargar los arreglos $amigos=array("Luis","Jorge","Victor","Carlos"); $amigas=array("Mara","Carmen","Sofia","Carla"); $edades=array(19,18,18,17,20,18,18,18,20,21,20,21,18,19,20,19,15,19,20,20,19 ,16,20); //Invertir el contenido del arreglo $arreglo1=array_reverse($amigos); $arreglo2=array_reverse($amigas); //Conseguir el anlisis de datos $analisis=array_count_values($edades); echo "Amigos: <br>"; foreach($analisis as $x=>$dato) { echo "$x : $dato"."<br>"; } echo "<br><br>"; echo "Amigas: <br>"; foreach($arreglo2 as $x=>$dato) { echo "$x : $dato"."<br>"; } //Se encuentra un dato en el arreglo? if(in_array("Ana",$amigas)) { echo "Si se encuentra"; } else { echo "No se encuentra"; } ?> </body> </html>

19

c. Demostrativo de cmo funcionan las funciones de arreglos Arreglos2.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> <style type="text/css"> <!-.Estilo1 { font-family: Arial, Helvetica, sans-serif; font-weight: bold;

Asignatura: Laboratorio de Programacin I

Universidad Privada Telesup


} --> </style> </head> <body bgcolor="#BBDAFD"> <span class="Estilo1">Arreglos</span> <hr /> <p>&nbsp;</p> </body> </html> <?php //Cargar un arreglo $amigos[0]="Carlos"; $amigos[1]="Rocio"; $amigos[2]="Victor"; //Dimension Dinamica $ventas[0]=344; $ventas[1]=300; $ventas[3]=34; $ventas[]=1200; $ventas[]=1800; $ventas[]=200; $ventas[]=600; foreach ($ventas as $clave=>$dato) { echo "La posicion $clave tiene al dato $dato<br>"; } echo "<p>"; //Cargar un arreglo en el momento de su declaracion $notas=array(15,9,10,12,8,7); $academico=array("Luna","LPOO",17.25); foreach ($notas as $clave=>$dato) { echo "La posicion $clave tiene al dato $dato<br>"; } echo "<p>"; foreach ($academico as $clave=>$dato) { echo "La posicion $clave tiene al dato $dato<br>"; } $alumnos=array(2=>"Baylon",0=>"Luna",3=>"Gonzales","Andrade","Mori"); echo "<p>"; foreach ($alumnos as $clave=>$dato) { echo "La posicion $clave tiene al dato $dato<br>"; } //ARREGLOS ASOCIATIVOS //Cargar el arreglo (1 Dimension) $telesup["Codigo"]="T007100404"; $telesup["Apellido"]="Balbn"; $telesup["Edad"]=17; $telesup["Sexo"]="M";

20

Asignatura: Laboratorio de Programacin I

Universidad Privada Telesup


$telesup["Codigo"]="T007100395"; $telesup["Apellido"]="Andrade"; $telesup["Edad"]=15; $telesup["Sexo"]="M"; echo "<p>"; foreach ($telesup as $clave=>$dato) { echo "La posicion $clave tiene al dato $dato<br>"; } //Cargar el arreglo asociativo (2 Dimension) $aula["ALUMNO1"]["Codigo"]="T007100404"; $aula["ALUMNO1"]["Apellido"]="Bayln"; $aula["ALUMNO1"]["Edad"]=17; $aula["ALUMNO1"]["Sexo"]="M"; $aula["ALUMNO2"]["Codigo"]="T007100395"; $aula["ALUMNO2"]["Apellido"]="Andrade"; $aula["ALUMNO2"]["Edad"]=15; $aula["ALUMNO2"]["Sexo"]="M"; echo "<p>"; for($i=1;$i<=2;$i++) { echo $aula["ALUMNO$i"]["Codigo"]."<br>"; echo $aula["ALUMNO$i"]["Apellido"]."<br>"; echo $aula["ALUMNO$i"]["Edad"]."<br>"; echo $aula["ALUMNO$i"]["Sexo"]."<br>"; } //FUNCIONES DE ARREGLOS echo "Cantidad de elementos del arreglo amigos : ". count($amigos)."<br>"; echo "Avanza al siguiente elemento : ". next($amigos)."<br>"; echo "Avanza al siguiente elemento : ". next($amigos)."<br>"; echo "Retrocede un elemento : ". prev($amigos)."<br>"; echo "Retrocede un elemento : ". prev($amigos)."<br>"; echo "Muestra el ltimo elemento : ". end($amigos)."<br>"; echo "Avanza al siguiente elemento : ". next($amigos)."<br>"; echo "Muestra el primer elemento : ". reset($amigos)."<br>"; ?>

21

d. Ejercicios con Shuffle (Distribuir los datos del array aleatoriamente)


<!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> <? $amigas=array("Mara","Carmen","Sofia","Carla"); echo "Antes del Shuffle<br>"; foreach($amigas as $x=>$dato) { echo "$x : $dato"."<br>"; } shuffle($amigas);

Asignatura: Laboratorio de Programacin I

Universidad Privada Telesup


echo "<br><br>"; echo "La ganadora es: $amigas[0]"; $numeros=array(0,1,2,3,4,5,6,7,8,9); shuffle($numeros); echo "El numero ganador es: ".$numeros[0].$numeros[1].$numeros[2];

22

$frutas1=array("fruta1.jpg","fruta2.jpg","fruta3.jpg","fruta4.jpg","fruta5.j pg"); $frutas2=array("fruta1.jpg","fruta2.jpg","fruta3.jpg","fruta4.jpg","fruta5.j pg"); $frutas3=array("fruta1.jpg","fruta2.jpg","fruta3.jpg","fruta4.jpg","fruta5.j pg"); shuffle($frutas1);shuffle($frutas2);shuffle($frutas3); ?> <table border=0 align="center"> <tr> <td><img src=<? echo $frutas1[0] ?> <td><img src=<? echo $frutas2[0] ?> <td><img src=<? echo $frutas3[0] ?> </tr> </table> <body> </body> </html> width=100 height=100></td> width=100 height=100></td> width=100 height=100></td>

FUNCIONES DE PRESENTACION DE DATOS printf($cadena_con_patrones,dato1,dato2,dato3,) Visualiza la cadena formateada de acuerdo a los patrones especificados. Patrones
Smbolo % b codificacin binaria. c cuyo cdigo ASCII se corresponde con el valor. d codificacin decimal sin parte fraccionaria f como un El argumento se trata como un n de tipo double y se representa El argumento se trata como n entero y se representa en El argumento se trata como n entero y se muestra el caracter Significado Representa el smbolo del porcentaje El argumento se trata como n entero y se representa en

Asignatura: Laboratorio de Programacin I

Universidad Privada Telesup


decimal sin coma flotante o El argumento se trata como un n entero y se representa en codificacin octal s caracteres x codificacin hexadecimal en minsculas X codificacin hexadecimal en maysculas El argumento se considera un n entero y se representa en El argumento se considera un n entero y se representa en El argumento se trata y representa como una cadena de

23

Ejemplo:
//Visualiza solo la parte entera $numero=2.895555; printf("El numero es : %d ",$numero); echo "<br>"; //Visualiza el numero con una aproximacin 2 decimales printf("El numero es : %.2f ",$numero); echo "<br>"; //Visualiza el numero como si fuera una cadena de texto printf("El nmero es : %s ",$numero); echo "<br>"; //Visualiza el nmero en su equivalente ASCII printf("El nmero es : %c ",64); echo "<br>"; // Visualiza el nmero en su equivalente binario printf("El nmero es : %b ",$numero); echo "<br>"; // Visualiza el nmero en su equivalente Octal printf("El nmero es : %o ",9); echo "<br>"; // Visualiza el nmero en su equivalente Hexadecimal printf("El nmero es : %x ",18); echo "<br>";

sprintf($cadena_con_patrones,dato1,dato2,dato3,) Devuelve una cadena formateada de acuerdo a los patrones especificados. Su uso es similar a printf.

Asignatura: Laboratorio de Programacin I

Universidad Privada Telesup


Ejemplo: $resultado=sprintf("El numero es : %.2f ",$numero); echo "<br>"; print($resultado); number_format(dato_numerico,cant_decimales,"carac_decimal","sep_ decim"); Formatea un dato numrico con una cierta cantidad de decimales, se especifica el tipo de carcter decimal y separador de miles. Ejemplo: echo number_format(123121312.956666,2,".",",");

24

Actividad
1. Crear un programa que solicite una cadena de texto y luego que la muestre de manera invertida. 2. Leer un carcter y deducir si est situado antes o despus de la letra M en orden alfabtico. 3. Solicitar un nmero telefnico fijo de la ciudad de Lima, luego verificar si dicho nmero es correcto o no. 4. Indique cuantos constantes, vocales y palabras existen dentro de una frase ingresada. 5. Ingresar el primer nombre y el primer apellido de una persona. Luego mostrar solo el primer apellido de manera separada

Asignatura: Laboratorio de Programacin I

Universidad Privada Telesup DECIMA QUINTA SEMANA Marco Terico


Logro El alumno aprende a validar utilizando cdigo cliente y cdigo de servidor Resumen La validacin cliente consiste en validar los datos ingresados en un formulario antes de ser enviados al servidor web, se utiliza cdigo JavaScript. La validacin en servidor web consiste en validar los datos enviados al servidor por un formulario HTML utilizando cdigo dinmico de PHP

25

VALIDACION DE ENTRADA DE DATOS Consiste en evaluar si los datos ingresados son correctos o consistentes.

Tipos de Validacin
1. Validacin de Cliente: Cuando la validacin se realiza en la mquina del cliente o usuario, se usa cdigo JavaScript. Esta validacin se lleva a cabo hasta de que ocurra el submit en el formulario de datos, si el proceso de validacin es true, los datos son enviados, en caso contrario, se notifica del error. 2. Validacin de Servidor: Este tipo de validacin se realiza en el servidor Apache, luego que los datos fueron enviados, para este tipo de validacin se utilizan funciones de validacin. El proceso de validacin ocurre en el servidor. La ventaja de utilizar este tipo de validacin es la de poder utilizar recursos del lenguaje PHP para consistenciar los datos.

Validacin usando cdigo de Cliente


Para este tipo de validacin usaremos Expresiones Regulares.

Expresiones Regulares
Es una plantilla de caracteres que restringen el ingreso de datos en una caja de texto. En este tipo de validacin utilizaremos las expresiones regulares en Java Script.
Plantilla Descripcin

Asignatura: Laboratorio de Programacin I

Universidad Privada Telesup


$ ^ [A-Z] [a-z] [0-9] [2-7] [A-Z0-9] [A-Za-z] [0-9]{3} [0-9]{3,5} [A-Z]{2,5} [A-Z] [A-Z]+ 0* ([A-Z]) | ([a-z]) Empieza con Termina con Se espera un carcter alfabtico mayscula Se espera un carcter alfabtico minscula Se espera un carcter numrico dentro del rango de 0 a 9 Se espera un carcter numrico dentro del rango de 2 a 7 Se espera un carcter alfabtico o numrico Se espera un carcter alfabtico mayscula o minscula Se espera 3 caracteres numricos Se espera de 3 a 5 caracteres numricos Se espera de 2 a 5 caracteres alfabticos Se espera un carcter alfabtico o o o o Se espera un o varios caracteres alfabticos Se espera ninguno o varios caracteres 0 Se espera un carcter alfabtico mayscula o minscula

26

CASO PRCTICO Validar usando expresiones regulares a un formulario de entrada de datos, cuando el dato ingresado sea incorrecto debe alertarse del error y enviar al cursor a dicha caja, para la rectificacin del error.

Datos.php
1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2. <html xmlns="http://www.w3.org/1999/xhtml"> 3. <head> 4. <meta http-equiv="Content-Type" content="text/html; charset=iso-88591" /> 5. <title>Documento sin t&iacute;tulo</title> 6. </head> 7. <script>

Asignatura: Laboratorio de Programacin I

Universidad Privada Telesup


8. patron=new Object(); 9. patron.ape=/^([A-Za-z ]){2,50}$/; 10. patron.ruc=/^((10)|(20))[0-9]{9}$/; 11. patron.tel=/^[2-7][0-9]{6}$/; 12. patron.edad=/^(1[8-9])|([2-5][0-9])|(6[0-5])$/; 13. patron.ec=/^[CSVDcsvd]$/; 14. function validar(){ 15. elementos=datos.elements; 16. for(i=0;i<elementos.length;i++){ 17. v=elementos[i].validador; 18. if(!v) continue; 19. r=patron[v]; 20. e=r.exec(elementos[i].value); 21. if(!e){ 22. alert("Error en: " +v+ " con el valor: "+elementos[i].value); 23. elementos[i].focus(); 24. return false; 25. } 26. } 27. return true; 28. } 29. </script> 30. <body bgcolor=beige> 31. <form id="form1" name="datos" method="post" action="" onsubmit="return validar();"> 32. <table width="200" border="1"> 33. <tr> 34. <td>Apellido</td> 35. <td><input name="txtape" type="text" id="txtape" validador="ape"/></td> 36. </tr> 37. <tr> 38. <td>Numero de RUC </td> 39. <td><input name="txtruc" type="text" id="txtruc" validador="ruc" value=""/></td> 40. </tr> 41. <tr> 42. <td>Telefono</td> 43. <td><input name="txttel" type="text" id="txttel" validador="tel" value=""/></td> 44. </tr> 45. <tr> 46. <td>Edad</td> 47. <td><input name="txtedad" type="text" id="txtedad" validador="edad" value=""/></td> 48. </tr> 49. <tr> 50. <td>Estado Civil </td> 51. <td><input name="txtec" type="text" id="txtec" validador="ec"/></td> 52. </tr> 53. <tr> 54. <td colspan="2"><input type="submit" name="Submit" value="Enviar" /> 55. <input type="reset" value="Limpiar" /></td> 56. </tr> 57. </table> 58. </form> 59. <?

27

Asignatura: Laboratorio de Programacin I

Universidad Privada Telesup


60. $ape=$_REQUEST["txtape"]; 61. echo $ape."<br>"; 62. $ruc=$_REQUEST["txtruc"]; 63. echo $ruc."<br>"; 64. $tel=$_REQUEST["txttel"]; 65. echo $tel."<br>"; 66. $edad=$_REQUEST["txtedad"]; 67. echo $edad."<br>"; 68. $ec=$_REQUEST["txtec"]; 69. echo $ec."<br>"; 70. ?> 71. </body> 72. </html>

28

Validacin con Cdigo de Servidor


Este tipo de validacin ocurre en el servidor Apache PHP luego que los datos son enviados por el formulario del cliente hacia el servidor, este tipo de validacin usa las funciones de validacin en PHP para verificar la consistencia de datos. FUNCIONES DE VALIDACIN DE DATOS ctype_alpha($dato) Devuelve true, si el carcter o los caracteres evaluados son caracteres alfabticos. (Incluye las vocales acentuadas, u con diresis y la letra ) ctype_alnum($dato) Devuelve true, si el carcter o los caracteres evaluados son caracteres alfanumricos. ctype_cntrl($dato) Devuelve true, si el carcter o los caracteres evaluados son caracteres de control. ctype_digit($dato) Devuelve true, si el carcter o los caracteres evaluados son caracteres numricos. ctype_graph($dato) Devuelve true, si el carcter o los caracteres evaluados son caracteres grficos. ctype_lower($dato) Devuelve true, si el carcter o los caracteres evaluados son caracteres alfabticos minsculas. ctype_print($dato)

Asignatura: Laboratorio de Programacin I

Universidad Privada Telesup


Devuelve true, si el carcter es imprimible. ctype_punct($dato) Devuelve true, si el carcter o los caracteres evaluados son caracteres de puntuacin. ctype_space($dato) Devuelve true, si el carcter o los caracteres evaluados es un espacio en blanco. ctype_upper($dato) Devuelve true, si el carcter o los caracteres evaluados son caracteres maysculas. ctype_xdigit($dato) Devuelve true, si el carcter o los caracteres evaluados son caracteres hexadecimales. is_bool($dato) Devuelve true, si el dato evaluado es booleano. is_float($dato) Devuelve true, si el dato evaluado es decimal (float). is_long($dato) Devuelve true, si el dato evaluado es numrico largo. is_null($dato) Devuelve true, si el dato evaluado es null. is_numeric($dato) Devuelve true, si el dato evaluado es numrico. is_object($dato) Devuelve true, si el dato evaluado es un objeto. is_string($dato) Devuelve true, si el dato evaluado es cadena de texto. strval($dato) Convierte un dato a String. gettype($dato) Devuelve el tipo de dato CASO PRCTICO Asignatura: Laboratorio de Programacin I

29

Universidad Privada Telesup


Validar usando cdigo PHP, la entrada de datos para Apellidos y Edad.

30

Validacion.php
1. 2. 3. 4. 5. 6. <? //Atrapar los datos $btnenviar=$_REQUEST["btnenviar"]; $ape=$_REQUEST["txtape"]; $edad=$_REQUEST["txteda"]; $error="";

7. //Preguntar si se envi los datos (Si se presion el boton enviar) 8. if($btnenviar!=""){ 9. //Validar 10. if(!ctype_alpha($ape)){ 11. $error.="Lo sentimos, el apellido solo debe contener caracteres alfabticos<p>"; 12. } 13. if(!is_numeric($edad)){ 14. $error.="Lo sentimos, la edad solo debe contener caracteres numricos<p>"; 15. } 16. if(!($edad>=18 and $edad<=65)){ 17. $error.=" La edad ingresada no esta dentro del rango permitido<p>"; 18. } 19. } 20. ?> 21. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 22. <html xmlns="http://www.w3.org/1999/xhtml">

Asignatura: Laboratorio de Programacin I

Universidad Privada Telesup


23. <head> 24. <meta http-equiv="Content-Type" content="text/html; charset=iso-88591" /> 25. <title>Documento sin t&iacute;tulo</title> 26. <style type="text/css"> 27. <!-28. .Estilo1 { 29. color: #FF0000; 30. font-weight: bold; 31. font-size: medium; 32. } 33. --> 34. </style> 35. </head> 36. <link rel="stylesheet" type="text/css" href="css/estilo.css"> 37. <body> 38. <h1>Ingreso de Datos</h1> 39. <form id="form1" name="form1" method="post" action=""> 40. <table width="302" border="1"> 41. <tr> 42. <td width="101">Apellido Paterno </td> 43. <td width="166"><input name="txtape" type="text" id="txtape" /></td> 44. <td width="13">&nbsp;</td> 45. </tr> 46. <tr> 47. <td>Edad</td> 48. <td><input name="txteda" type="text" id="txteda" size="2" maxlength="2" /></td> 49. <td>&nbsp;</td> 50. </tr> 51. <tr> 52. <td colspan="3"><div align="center"> 53. <input name="btnenviar" type="submit" class="boton" id="btnenviar" value="Enviar" /> 54. </div></td> 55. </tr> 56. <tr> 57. <td colspan="3"><div align="center" class="Estilo1"><?=$error? ></div></td> 58. </tr> 59. </table> 60. </form> 61. <? if($error=="" and $btnenviar!="") { //No hubo error y si se presiono el boton enviar ?> 62. <div id="datos"> 63. <table width="200" border="1"> 64. <tr> 65. <td width="99">Apellido Paterno </td> 66. <td width="85"><?=$ape?></td> 67. </tr> 68. <tr> 69. <td>Edad</td> 70. <td><?=$edad?></td> 71. </tr> 72. <tr> 73. <td>&nbsp;</td> 74. <td>&nbsp;</td>

31

Asignatura: Laboratorio de Programacin I

Universidad Privada Telesup


75. </tr> 76. </table> 77. </div> 78. <? } ?> 79. <p>&nbsp;</p> 80. <p>&nbsp;</p> 81. </body> 82. </html>

32

Actividad
Realizar una aplicacin PHP que valide a nivel cliente y servidor la entrada de datos para: Apellidos, DNI, SEXO, Sueldo (No menor al sueldo mnimo vital), cantidad de hijos (de 0 a 15).

Asignatura: Laboratorio de Programacin I

Universidad Privada Telesup DECIMA SEXTA SEMANA Marco Terico


Logro Que el participante aprenda a realizar una aplicacin web basada en PHP con conexin a una base de datos de MySQL. Resumen Para realizar la conexin con una base de datos desde una aplicacin web PHP, se utilizan diversas funciones de base de datos las cuales son explicadas durante esta semana.

33

Funciones de Base de Datos - MySQL FUNCIONES DE BASE DE DATOS DE MYSQL EN PHP PHP en la versin 5, nos ofrece una serie de funciones incorporados en lenguaje, estas funciones son: mysql_affected_rows(); int mysql_affected_rows(int [link_identifier] ); Devuelve el nmero de filas afectado en el ltimo INSERT, UPDATE o DELETE pregunta en el servidor asociado con el identificador de conexin especificado. Si no se e especifica un identificador de conexin, se asume le de la ltima conexin abierta. Este orden no es eficaz para las instrucciones SELECT, slo en instrucciones que modifican archivos. Para recuperar el nmero de filas de un SELECT, usar mysql_num_rows. mysql_close(); int mysql_close(int [link_identifier] ); Devuelve: TRUE si se ha cerrado la conexin exitosamente, FALSE en caso de error. Cierra la conexin a la base de datos MySQL asociada al identificador de conexin especificado. Si no se e especifica un identificador de conexin, se asume le de la ltima conexin abierta. Note que esta funcin no es normalmente necesaria en conexiones nopersistentes (abiertas con mysl_connect) ya que sta se cerrar automticamente al final de la ejecucin del script o pgina. La funcin

Asignatura: Laboratorio de Programacin I

Universidad Privada Telesup


mysql_close no cierra una conexin persistente (abierta con

34

mysql_pconnect()).

mysql_connect()
int mysql_connect(string [password] ); [hostname], string [username], string

Devuelve un identificador de conexin, o FALSE en caso de error. sql_connect() establece una conexin a un servidor de MySQL. Todos los argumentos son optativos, y si no se especifican, los valores por defecto son ('localhost', nombre del usuario del usuario que posee el proceso del servidor, la contrasea vaca). La cadena hostname tambin puede incluir un nmero del puerto, "hostname:port". En caso de realizar una segunda llamada a mysql_connect con los mismos argumentos, no se establecer ninguna nueva conexin, sino se devolver el identificador de conexin de la ya existente. La conexin al servidor se cerrar en cuanto la ejecucin del script acabe, a menos que la cerremos antes con la funcin mysql_close.

mysql_create_db() int mysql_create_db(string database name, int [link_identifier] );

La funcin mysql_create_db intenta crear una nueva base de datos en el servidor asociado con el identificado de conexin especificado.

mysql_data_seek() int mysql_data_seek(int row_number); result_identifier, int

Devuelve: TRUE si toda ha ido bien, y FALSE en caso de error. La funcin mysql_data_seek mueve el puntero que indica la fila actual al nmero de fila de la consulta que indica el identificador. La prxima llamada al mysql_fetch_row o mysql_fetch_array devolvera esa fila.

Asignatura: Laboratorio de Programacin I

Universidad Privada Telesup


mysql_dbname() string mysql_dbname(string result, int i); mysql_dbname devuelve el nombre de la base de datos guardado en posicin i de los resultados del indicador de consulta devuelto por la funcin del mysql_list_dbs. La funcin del mysql_num_rows puede usarse para determinar cuntos nombres de bases de datos estn disponibles. mysql_db_query()
int mysql_db_query(string link_identifier); database, string query, int

35

Devuelve: un identificador de conexin, o FALSE en caso de error. Ejecuta una consulta en una base de datos. Si el identificador no se especifica, la funcin intenta encontrar una conexin abierta con el servidor. Si no encuentra una conexin, intentar crear una (similar a mysql_connect( ) sin argumentos).
mysql_drop_db() int mysql_drop_db(string [link_identifier] ); database_name, int

Devuelve: TRUE si toda ha ido bien, y FALSE en caso de error. Elimina una base de datos del servidor asociado al identificador de conexin. mysql_errno() int mysql_errno(); Devuelve el nmero de error asociado a la ltima operacin realizada. mysql_error() string mysql_error(); Devuelve el texto asociado al error producido en la ltima operacin realizada por la base de datos. mysql_fetch_array() array mysql_fetch_array(int result); Devuelve un array con la informacin correspondiente al resultado de una consulta especificado por su identificador o 'false' si ya no hay ms filas. Es una versin extendida de mysql_fetch_row( ). Adems de almacenar los datos a travs de ndices numricos del array, tambin lo hace a travs de

Asignatura: Laboratorio de Programacin I

Universidad Privada Telesup


ndices asociativos, utilizando los nombres de los campos como claves. Si dos o ms columnas del resultado tienen el mismo nombre de campo, la ltima es la que tiene preferencia. Para acceder a las dems es necesario utilizar el ndice numrico o construir un alias para la columna:
<?php mysql_connect($host,$user,$password); $result = mysql_db_query("database","select * from table"); while($row = mysql_fetch_array($result)) { echo $row["user_id"]; echo $row["fullname"]; } mysql_free_result($result); ?>

36

mysql_fetch_field() object mysql_fetch_field(int [field_offset] ); result, int

Devuelve un objeto que contiene la informacin de los campos que componen un resultado de una consulta. Si no se especifica 'offset', devuelve informacin sobre el siguiente campo que todava no ha sido devuelto. Propiedades del objeto devuelto: 1 name - nombre del campo 2 table - nombre de la tabla a la que pertenece el campo 3 max_length - longitud mxima que puede tomar el campo 4 not_null - 1 si el campo no puede tomar valores nulos 5 primary_key - 1 si el campo es una clave principal (primary key) 6 unique_key - 1 si el campo tiene restriccin de unicidad 7 multiple_key - 1 si el campo no tiene rest 8 multiple_key - 1 si el campo no tiene restriccin de unicidad 9 numeric - 1 si el campo es numrico 10 blob - 1 si el campo es BLOB 11 type - tipo de dato (del campo) 12 unsigned - 1 si el campo es 'unsigned' Asignatura: Laboratorio de Programacin I

Universidad Privada Telesup


13 zerofill - 1 si el campo es rellenado con ceros 14 mysql_fetch_lengths() int mysql_fetch_lengths(int result); Devuelve: una tabla o FALSE si hay error. mysql_fetch_lengths almacena en una tabla la longitud de cada campo de una consulta realizada con mysql_fetch_row o mysql_fetch_array. El ndice de la tabla comienza en 0. mysql_fetch_object() int mysql_fetch_object(int result); Devuelve: un objeto o FALSE en caso de error. Esta funcin es similar a mysql_fetch_array, solo que los resultados de una consulta, en lugar de una tabla, los devuelve como un objeto. En este caso, slo se puede acceder a los datos a travs de los nombres de sus campos. La velocidad de ejecucin es idntica a la de 'mysql_fetch_array. Para referenciar el valor de un campo debemos utilizar el operador tpicos de los objetos (->).< objetos tpicos> mysql_fetch_row() array mysql_fetch_row(int result); Devuelve: una tabla o FALSE si hay error. Devuelve un tabla con los valores de los campos de la fila actual de la consulta, la que especificar el indicador (result) , y mueve el puntero interno que marca la fila actual a la siguiente fila, si no hay mas filas devuelve FALSE. El ndice de la tabla comienza en 0. mysql_field_name() string mysql_field_name(string result, int i); Devuelve el nombre del campo especificado por el ndice. mysql_field_seek() int mysql_field_seek(int result, int field_offset); Mueve el puntero del campo actual hacia adelante las posiciones actual hacia adelante las posiciones indicadas por 'offset'.

37

Asignatura: Laboratorio de Programacin I

Universidad Privada Telesup

38

mysql_field_table() string mysql_field_table(int result, int field_offset); Devuelve el nombre de la tabla que almacena el campo especificado por el ndice ( 'field_offset' ).

mysql_field_type() string mysql_field_type(string result, int field_offset); Devuelve el tipo del campo del indice especificado.

mysql_field_flags() string mysql_field_flags(string result, int field_offset); Devuelve los especificadores (flags) del campo especificado como una cadena de texto en la que cada especificador se corresponde con una palabra, y stas van separadas mediante un espacio simple. Se puede analizar la cadena utilizando explode( ) Los especificadores son: "not_null", "primary_key", "unique_key", "multiple_key", "blob", "unsigned", "zerofill", "binary", "enum", "auto_increment", "timestamp".

mysql_field_len() int mysql_field_len(string result, int field_offset); Devuelve la longitud del campo especificado

mysql_free_result() int mysql_free_result(int result); Slo debera ser utilizada si la cantidad de memoria utilizada para almacenar el resultado de una consulta es muy grande. Cuando se ejecuta esta funcin, toda la memoria asociada al resultado se libera. mysql_insert_id()

Asignatura: Laboratorio de Programacin I

Universidad Privada Telesup


int mysql_insert_id(void); Esta funcin devuelve el ID (identificador) generado para los campos autonumricos (AUTO_INCREMENTED). El ID devuelto es el correspondiente al de la ltima operacin INSERT. mysql_list_fields() int mysql_list_fields(string database, string tablename); Devuelve informacin sobre la tabla. El valor resultante puede ser utilizado con mysql_field_flags(), mysql_field_len(), mysql_field_name(), and mysql_field_type(). El identificador que devuelve es un entero positivo o '-1' en caso de error. El texto que describe el error se encuentra en $phperrmsg. mysql_list_dbs() int mysql_listdbs(void); Devuelve un puntero que contiene las bases de datos disponibles para el servidor actual (msql daemon). Este valor se utiliza con la funcin mysql_dbname( ). mysql_list_tables()
int mysql_list_tables(string database, , int [link_identifier]);

39

Devuelve un identificar, el cual pasaremos a la funcin mysql_tablename para extraer el nombre de las tablas de la base de datos especificada. mysql_num_fields() int mysql_num_fields(int result); mysql_num_fields devuelve en nmero de campos de una consulta. mysql_num_rows() int mysql_num_rows(string result); Devuelve el nmero de filas del resultado de una consulta.

mysql_pconnect()
int mysql_pconnect(string [hostname] , string [username] , string [password] );

Devuelve: A positive MySQL persistent link identifier on success, or false on error

Asignatura: Laboratorio de Programacin I

Universidad Privada Telesup


Devuelve un identificador de conexin persistente o 'false' en caso de error. Las diferencias con respecto a mysql_connect( ) son: 1 Primero, la funcin intenta encontrar una conexin persistente que ya est abierta con la misma mquina, usuario y password. Si es encontrada, devuelve el identificador de la misma, en lugar de crear una nueva conexin. 2 Segundo, la conexin al servidor SQL no ser cerrada cuando finalice la ejecucin del script, sino que permanece abierta para un uso posterior. La funcin mysql_close no cierra una conexin abierta con mysql_pconnect. Las conexiones abierta con esta funcin se llaman "persistentes".

40

mysql_query() int mysql_query(string query, int [link_identifier] ); Ejecuta una consulta a la base de datos activa en el servidor asociado al identificador de conexin. Si no se especifica, se utiliza la ltima conexin abierta, se utiliza la ltima conexin abierta. Si no hay conexiones abiertas la funcin intenta establecer una. Esta funcin devuelve TRUE o FALSE para indicar si las operaciones UPDATE, INSERT o DELETE han tenido xito. Para la operacin SELECT devuelve un nuevo identificador de resultado.

mysql_result() int mysql_result(int result, int row, mixed field); Devuelve el contenido de la celda de un resultado. El argumento 'field' puede ser un ndice o el nombre del campo correspondiente o el nombre del campo de la forma: tabla.campo. Si la columna tiene un alias ('select foo as bar from...') se utiliza el alias en lugar del nombre de la columna.

Asignatura: Laboratorio de Programacin I

Universidad Privada Telesup


En lugar de esta funcin es preferible usar mysql_fetch_row(),

41

mysql_fetch_array(), and mysql_fetch_object(), con la que obtendremos mejor rendimiento. mysql_select_db()


int mysql_select_db(string database_name, int [link_identifier] );

Devuelve: true on success, false on error Establece la base de datos activa en el servidor. Si no se especifica identificador de conexin se utiliza la ltima conexin abierta. Si no hay conexiones anexin abierta. Si no hay conexiones activas, la funcin intenta establecer una. A partir de la llamada a mysql_select_db las llamadas a mysql_query( ) actan sobre la nueva base de datos activa. mysql_tablename() string mysql_tablename(int result, int i); Toma como argumento un puntero devuelto por la funcin mysql_list_tables( ) y devuelve el nombre de la tabla asociada al ndice i. La funcin mysql_num_rows() puede ser utilizada para determinar el nmero de tablas.
<?php mysql_connect ("localhost:3306"); $result = mysql_listtables ("basededatos"); $i = 0; while ($i < mysql_num_rows ($result)) { $tb_names[$i] = mysql_tablename ($result, $i); echo $tb_names[$i] . "<BR>"; $i++; } ?>

CASO PRACTICO Crear una aplicacin web que muestre el listado de la tabla alumnos de la base de datos Telesup, utilice POO Crearemos la siguiente distribucin de Carpetas: View Logic Ds : : : Lgica de Presentacin Lgica de Negocios Lgica de Datos

Carpeta View
Asignatura: Laboratorio de Programacin I

Universidad Privada Telesup

42

Alumnos.php
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. <? require_once("../ds/GestionBD.php"); $gbd=new GestionBD();// creando a una instancia try{ //Zona de Monitoreo de errores de ejecucin $gbd->conectar(); //realizamos la conexin //Establecemos la sentencia para el esquema de datos $cad="select a.codalu,a.apealu,a.nomalu,a.diralu,d.nomdis from alumnos a, distritos d where a.coddis=d.coddis"; $lista=$gbd->ejecutarconsulta($cad); $gbd->desconectar(); } catch(Exception $ex) { //recive el erro $error=$ex->getMessage(); } ?>

17. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 18. <html xmlns="http://www.w3.org/1999/xhtml"> 19. <head> 20. <meta http-equiv="Content-Type" content="text/html; charset=iso-88591" /> 21. <title>Documento sin t&iacute;tulo</title> 22. </head> 23. <link rel="stylesheet" type="text/css" href="../css/estilo.css"> 24. <body> 25. <h1>Listado de Alumnos</h1> 26. <center> 27. <table width="747" border="1"> 28. <tr> 29. <th width="75" scope="col">Codigo</th> 30. <th width="201" scope="col">Apellidos</th> 31. <th width="172" scope="col">Nombres</th> 32. <th width="157" scope="col">Direccion</th> 33. <th width="108" scope="col">Distrito</th> 34. </tr> 35. <? 36. for($i>0;$i<count($lista);$i++){ 37. ?> 38. <tr> 39. <td><?=$lista[$i]["codalu"]?></td> 40. <td><?=$lista[$i]["apealu"]?></td> 41. <td><?=$lista[$i]["nomalu"]?></td> 42. <td><?=$lista[$i]["diralu"]?></td> 43. <td><?=$lista[$i]["nomdis"]?></td> 44. </tr> 45. <? 46. } 47. ?> 48. </table> 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. <? if($error!=""){ //si hubo error? ?> <div id="error"> <font color="#FF0000"> <p><?=$error?></p> </font> </div> <? }

Asignatura: Laboratorio de Programacin I

Universidad Privada Telesup


59. ?> 60. </center> 61. </body> 62. </html>

43

Carpeta Ds
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. <? class GestionBD{ //clase es una pantilla contiene metodos y propiedades public $cn=null;//creando propiedad (representa a la conexion) //creando metodos public function conectar(){ $this->cn=&mysql_connect("localhost","root","telesup"); if(!$this->cn){ //si no se dio la conexin //genero un error (dispara el error hacia la capa que la invoc) throw new Exception("Error de conexin"); } $db=&mysql_select_db("telesup",$this->cn); if(!$db){ //si no se pudo seleccionar la bd throw new Exception("No se pudo abrir la base de datos"); } }//fin del metodo conectar

17. public function desconectar(){ 18. mysql_close($this->cn); 19. }//fin desconectar 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. //este mtodo solo sirva para ejecutar a un comando select public function ejecutarconsulta($sql) { $rs=&mysql_query($sql,$this->cn); //ejecuta la consulta if(mysql_errno($this->cn)!=0){ // Si hubo error? throw new Exception("Error de en la ejecucin de la consulta $sql"); //devuelve error } $lista=array(); //crea un array vacio while($fila=mysql_fetch_assoc($rs)){//que cada fila vomo a estar enciando asia un array asociativo $lista[]=$fila;// } return $lista; }//fin de ejecutar consulta public function ejecutaractualizacion($sql){ //ejecuta los comandos Update, Insert, Delete mysql_query($sql,$this->cn); if(mysql_errno($this->cn)!=0){//el numero de error no es cero throw new Exception("Error en la ejecucion de la actualizacion $sql"); //devuelve error } }//fin de Ejecutar Actualizacion } //fin dela clase ?>

Asignatura: Laboratorio de Programacin I

Universidad Privada Telesup

44

III. BIBLIOGRAFIA
Autor GUTIERREZ RODRIGUEZ, Abraham. Titulo PHP 5 a travs de ejemplos Edicin Editorial Alfa Omega & Rama Editorial 2011 Macro, Ao 2008 2011

CORONEL, PHP Profesional. Gustavo

Asignatura: Laboratorio de Programacin I

You might also like