Professional Documents
Culture Documents
Lenguaje de Programacin I
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
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
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>";
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í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ñ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ñ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> </td> 88. </tr> 89. <tr> 90. <td>Cantidad de Tiempo </td> 91. <td><input name="txtcant" type="text" id="txtcant" /></td> 92. <td> </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> </p> 107. </body> 108. </html>
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í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ñ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ñ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ñ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> </p> </body> </html>
12. <meta http-equiv="Content-Type" content="text/html; charset=iso-88591" /> 13. <title>Documento sin tí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ñ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ó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. <? } ?>
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.
16
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;
17
3ra. forma
$asig[0]=Matematica; $asig[1]=Fisica; $asig[2]=Quimica; $asig[3]=Investigacin Operativa;
18
//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>
19
20
21
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
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.
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
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.
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
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ítulo</title> 6. </head> 7. <script>
27
28
29
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">
31
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).
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
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.
La funcin mysql_create_db intenta crear una nueva base de datos en el servidor asociado con el identificado de conexin especificado.
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.
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
36
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
37
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()
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] );
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.
41
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
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í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> <? }
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 ?>
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