Manual de PHP
Manual de PHP
Unidad 1
TEMA 1: PHP INTRODUCCION
Los nuevos sistemas de informacin son costosos en tiempos y recursos, la solucin moderna de sistemas de informacin exigen nuevas herramientas y metodologas para resolver rpida, econmica y eficiente los problemas de informacin planteados por las organizaciones.no
Aun mas el pleno potencial del hardware no es aprovechado plenamente y existe un considerable retraso con el software y sus aplicaciones, generando lo que se conoce como "crisis del software". En programacin tradicional, modular o estructurada un programa describe una serie de pasos a ser realizados para la solucin de un problema, es decir es un algoritmo, en particular este modelo de programacion se us mucho para generar programas o aplicaciones en ambientes pc's y con consolas, es decir el programa se ejecutaba en una consola de msdos por ejemplo, y el programa o aplicacin se tena que portar fisicamente a otras pc's, al final de su ciclo de vida de este modelo se habia mejorado y ya era posible que se ejecutara en alguna ventana-consola de ambientes windows, con mejor interfase como fonts, colores, background, etc. En programacin orientada a objetos ( OOP ) un programa es considerado como un sistema de objetos interactuando entre s, ambientes de desarrollo visuales facilitan aun ms la construccin de programas y solucin de problemas, porque permiten abstraer al ingeniero de software de todo el GUI (interfase grfica) del problema, que constituye ms del 60% del cdigo normal de un programa, en general este ambiente permiti una mejora en la interfase del programa con el usuario de la aplicacin ya que en este caso solo se manejaban formas o ventanes llenas de componentes o controles especializados en alguna tarea especifica. A este modelo de programacin o construccin de programas los compiladores modernos se adaptarn rapidamente y tenemos aplicaciones fantasticas, en donde alguna forma o ventana esta llena de controles visibles e invisibles que realizan muchas tareas donde ademas de los componentes o controles que proporciona directamente el compilador cuando se instala, existen miles de controles o componentes extras en muchas partes del mundo realizados por programadores talentosos y que enriquecen el contenido de nuestros programas y aplicaciones visuales. Al principio estas aplicaciones, se construian pensando en que se ejecutaban en una pc con ambiente grafico o en una serie de pc's proximas fisicamente sin embargo el rapido avance de las redes dentro de las empresas u organizaciones conllevan a que los fabricantes de compiladores cada vez incluyeran mas y mas controles o componentes que permitan ejecutar el programa o aplicacin simultaneamente en una red de pc's.
Sin embargo cuando se habla de redes actuales estamos hablando de la red de redes (internet) y si en redes internas o intranets el retraso en el tiempo de comunicacin entre sus pc's internas y la cantidad de informacion a trasmitir entre las mismas no es algo muy importante o inmanejable, este problema de tiempo de trasmisin y cantidad de informacin, si es un factor muy importante cuando se pretende construir programas o aplicaciones que deban compartirse o usarse por muchas pc's conectadas a internet, desgraciadamente como factor externo que es, no esta bajo control de la empresa o del programador. Es decir se ocupa un nuevo modelo de programacin que tome en cuenta que el programa o aplicacin se debera ejecutar simultaneamente por cientos o miles de pc's interconectadas entre si, ademas este modelo debe contener una interfase comun y adecuada al usuario remoto de esas pc's y sobre todo tomar en cuenta los dos factores externos ya mencionados, mas algunos otros no incluidos en este comentario. Este modelo de programacin de aplicaciones que se ejecuta en forma remota y con multiusuarios, es el que adoptaremos en el resto del curso. En particular este modelo descansa en la interfase mas comun que existe actualmente y muy familiar a todos los usuarios de aplicaciones del mundo esta interfase son las paginas hmtl que se ejecutan en un browser normal el programa o aplicacin se alimentara de paginas html y creara paginas html con las respuestas o resultados, el programa o aplicacin se pone y se ejecuta en un llamado servidor de paginas ( web server). PHP es un compilador linux que permiten usar cualquiera de los tres enfoques en la solucin de problemas de informacin que puedan y deban ser resueltos empleando el computador y el lenguaje aunque se repite este curso esta enfocado al tercer modelo.
Una herramienta rpida que nos permite descomponer en partes un problema para su solucin, es el llamado modelo de solucin, este consiste de una pequea caja que contiene los tres elementos ms bsicos en que se puede descomponer cualquier problema sencillo de informacin, estas tres partes son: a. LA PRIMERA PARTE son todos los datos que el computador ocupa para resolver el problema, estos datos son almacenados internamente en la memoria del computador en las llamadas variables de entrada. b. LA SEGUNDA PARTE son todas las operaciones generalmente algebraicas necesarias para solucionar el problema, generalmente esta parte del modelo es una formula (o igualdad matemtica, ej. X= y + 5). c. LA TERCERA PARTE es el resultado o solucin del problema que generalmente se obtiene de la parte de operaciones del modelo y dichos datos estn almacenados en las llamadas variables de salida. En resumen para todo problema sencillo de informacin es necesario plantearse las siguientes preguntas: Que datos ocupa conocer el computador para resolver el problema y en cuales variables de entrada se van a almacenar ? Que procesos u operaciones debe realizar el computador para resolver el problema planteado ? Que informacin o variables de salida se van a desplegar en pantalla para responder al problema planteado originalmente? Como nota importante no confundir los trminos datos, variables e informacin; Datos se refiere a informacin en bruto, no procesada ni catalogada, por ejemplo "Tijuana", "calle primera # 213","15 aos", " $2,520.00", etc. Variables es el nombre de una localidad o direccin interna en la memoria del computador donde se almacenan los datos, ejemplo de variables para los casos del inciso anterior, CIUDAD, DIRECCION, EDAD, SUELDO, ETC. Informacin son datos ya procesados que resuelven un problema planteado. EJEMPLO DE MODELO DE SOLUCIN
Construir un modelo de solucin que resuelva el problema de calcular el rea de un tringulo con la formula rea igual a base por altura sobre dos. Variable(s) de Entrada BASE ALTURA Proceso u Operacin AREA= BASE * ALTURA /2 Variable(s) de Salida AREA
PROBLEMA 3.- CONVERTIR PESOS A DOLARES. PROBLEMA 4.- CALCULAR EL AREA DE UN CIRCULO CON LA FORMULA
Observar para el caso de constantes fijas o conocidas (PI) no se debe dar como dato de entrada su valor, en cambio colocar directamente su valor dentro de la formula, en la parte de operaciones del problema. Pero recordar tambin que existirn problemas sencillos donde: No se ocupan entradas o no se ocupan operaciones, pero todos ocupan salida. Una formula grande o muy compleja puede ser ms segura y fcil de resolver, si es descompuesta y resuelta en partes, juntando al final los parciales para obtener el resultado final. Un problema puede tener ms de una solucin correcta. El problema no esta suficientemente explicado o enunciado, entonces, estudiarlo, analizarlo y construirlo de manera genrica. TAREAS PHP MYSQL :
Construir los modelos de solucin de los siguientes problemas:
PROBLEMA 6.- Convertir millas a kilmetros(caso normal) PROBLEMA 7.- Convertir 125 metros a centmetros(no ocupa entradas) PROBLEMA 8.- Se calcula que en promedio hay 4.7 nidos en cada rbol en la UABC, tambin se calcula que en cada nido existen un promedio de 5.8 pjaros, se pide calcular
la cantidad total de nidos y de pjaros en los 227 arboles que existen en la UABC. (no ocupa entradas) PROBLEMA 9.- La gorda Sra. Lpez y sus 8 hijos solo compran una vez al mes su mandado en conocido supermercado, en dicha tienda el kilogramo de frijol cuesta $8.75, el paquete de tortillas cuesta $3.55 y el frasco de caf vale $14.25, si solo compran de estos tres productos para su mandado, calcular su gasto total. ( problema no claro) PROBLEMA 10.- Capturar y desplegar los cinco datos mas importantes de un automvil(no ocupa operaciones) PROBLEMA 11.- La distancia Tijuana - Ensenada es de 110 kilmetros. Si un automvil la recorre a una velocidad constante de 30 millas por hora, cuanto tiempo tarda en llegar. ( 1 milla = 1.609 Km.) (dos maneras correctas de resolverlo). PROBLEMA 12.-Evaluar la funcin normal). PROBLEMA 13.-Evaluar la funcin entradas). para cualquier valor de x.(caso
14.- Evaluar el factorial de cualquier numero usando la formula: n!=n!-1 15.-La distancia que recorre un auto es de 50 kms y su velocidad es de 30 millas por hora .Cuanto tiempo tardara en llegar? 16.-Encontrar la derivada de x para cualquier valor con la formula(d/dx(x)=1) 17.-Calcular l interes que gana un capital de x pesos a una tasa de interes del 15% annual en un periodo de n aos. 18.-Que aceleracion tiene un tren que parte de tijuana a 10 km/hr y pasa por ensenada una hora despues a 50 km/hr. 19.-Calcular el numero de aulas en una escuela que tiene 10 edificios y cada edificio 3 pisos y cada piso 5 aulas, excepto un edificio que solo tiene dos pisos. 20.-Si en una escuela hay 30 maestros y 15 son hombres que atienden a 10 alumnos cada uno. Cuantas maestras hay? 21.-Calcular la corriente de un circuito con un voltaje de 15v y una resistencia de 6 ohms. Formula (I= V/R) 22.-Calcular la normal estandar(z) dados los datos por el usuario: X=dato, =media, d=desviacion. Formula (Z = X-M / d)
23.-Dado un numero(N) cualesquiera obtener su raiz y potencia cuadrada . 24.-Determinar la media de 5 numeros diferentes. 25.-Determinar la velocidad v requerida para recorrer una distancia d en un tiempo t . Formula (V = d * t) 26.-Determinar la pendiente de una recta. Formula (y = m x + b) 27.-Calcular la funcion de y= x + 8x + 3 para cualquier x 28.-Convertir minutos a horas. 29.-Aplicar la formula general para a=1, b=2, c=3. 30.-Se desea instalar un cable de red, el cliente pide 30 pies, considerando que se venden en metros, cuantos debera comprar. 31.-Un campesino siembra trigo en un area cuadrada de 25 mts., cual es el largo del cerco frontal en cms.? 32.-Resolver x + 15x - 8 para cualquier variable (X). 33.-Convertir C a F. 34.-Si cada salon de la escuela tiene 40 alumnos y son 30 salones Cuantos alumnos son en toda la escuela? 35.-Si Juan trabaja 5 dias a la semana y descansa 2 Cuantos dias trabajo en 4 aos? 36.-Si en una oficina se procesan 20 facturas cada 10 minutos cuantas se procesaran si se trabajan 5 horas? 37.-Si una empresa tiene _____ de activo y un pasivo de _____ Cual es su capital?. Formula (C = A-P) 38.-Calcule el voltaje de un circuito dada una intensidad I y una resistencia R. Formula (V=IR) 39.-Calcule la frecuencia de una onda que circula con un tiempo t. Formula (F=1/t) 40.-Calcule la potencia de un circuito con un voltaje V y una intensidad I. Formula (f = VI) 41.-Calcule el total que tendra que pagar una persona que va al cine dependiendo del no. de boletos a comprar y el precio. 42.-Calcule las anualidades que tendra que pagar una persona que pidio un prestamo.
Dependiendo del tiempo que el elija y el interes por ao. Formula (Anualidad=(Prestamo/Tiempo)+interes) 43.-Determinar cuanto ganara una persona en base a la horas trabajadas. Tomando en cuenta el pago por hora. 44.-Convertir horas a segundos. 45.-Calcular la fuerza. Formula (fuerza = trabajo / tiempo)
En php un identificador es una palabra compuesta de letras y/o nmeros de hasta 32 caracteres significativos, empezando siempre con una letra. Una variable se define como un identificador que se utiliza para almacenar todos los datos generados durante la ejecucin de un programa. Existen ciertas reglas en cuanto a variables: Claras y con referencia directa al problema. No espacios en blanco, ni smbolos extraos en ellas. Se pueden usar abreviaturas, pero solo de carcter general. No deben ser palabras reservadas del lenguaje php Ejemplos de buenas variables: Nombre, Edad, SdoDiario, IngMensual, Permetro, Calif1, etc.
TEMA 4: DECLARACION Y TIPO DE VARIABLES PHP A toda variable que se use en un programa, se debera declarar de preferencia al principio del programa. En php se tienen los tres tipos siguientes de variables: A) VARIABLES ESCALARES.- PERMITEN ALMACENAR UN Y SOLO UN DATO DE CUALQUIER TIPO, POR EJEMPLO EDAD, SUELDO, NOMBRE, CARRERA, ETC. Para simbolizar y usar una variable escalar en php solo anteponer el simbolo $ antes de la variable, por ejemplo $edad, $nombre, $sueldo, etc y a todo lo largo del programa debera acompaarse de este signo. B) VARIABLES ARREGLOS.- SON AQUELLAS QUE PERMITEN ALMACENAR UN CONJUNTO DE DATOS EN UNA SOLA VARIABLE. Para simbolizar y usar una variable arreglo en un programa en php, se puede usar cualquiera de los dos metodos siguientes: 1.- Usando el formato $nomarreglo[cant elementos]; ejemplo $arreglo[5]; Se esta creando un arreglo d 5 elemntos, recordar que hasta que se cargue el primer dato, hasta entonces se tendra definido su tipo de dato. 2.- Usando la funcin ARRAY(); ejemplo $arreglo=array(10,20,30,etc); C) ARREGLOS ASOCIATIVOS.- SON ARREGLOS ESPECIALES DONDE CADA POSICION DEL ARREGLO ESTA CONSTITUIDO POR UNA PAR DE VALORES, EL PRIMERO SE DENOMINA CLAVE Y EL SEGUNDO VALOR. Para crear y usar un arreglo asociativo se usa tambien el simbolo $ y la palabra reservada ARRAY(), por ejemplo: $alumno = array("nom1"=>"juan","ed1"=>10,"nom2"=>"pepe","ed2"=>20) ; Este tipo de arreglos, tambien se estudiara mas adelante en su unidad correspondiente. D) Como nota importante a recordar, es con respecto a datos de tipo strings, cuando: Se declare o se use una variable tipo string y el dato va entre apostrofes php no interpretara o entendera ningun caracter especial que contenga la string, ejemplo:
$ciudad = 'tijuana';
Se declare o se use una variable de tipo string y el dato este entre comillas, php si interpretara o entendera cualquier caracter especial que contenga la string, ejemplo: $ciudad = "tijuana \n" ---> \n es una secuencia de escape que significa nuevo renglon. El operador punto o dot(.) se puede usar para encadenar strings, por Ej: "Hola"."mundo" se desplegara "Holamundo" En Php cuidado con datos o cadenas strings, porque es muy diferente tenerla entre apostrofes y entre comillas.
En PHP un operador es un smbolo especial que indica al compilador que debe efectuar una operacin matemtica o lgica.
Operador + * / %
El operador (%) devuelve el residuo entero de una divisin entre enteros, ejemplo;
// rea de declaracin $alfa; // rea de operaciones $alfa = 23 % 4; // rea de despliegue desplegar $alfa; --- El resultado en pantalla es 3 Otro ejemplo; $alfa = 108 % 10; desplegar $alfa; -- El resultado en pantalla es 8 Para resolver los problemas de potencias y races, se usan ciertas instrucciones especiales que proporciona el lenguaje llamadas funciones matemticas, en php existe una librera de instrucciones o funciones matemticas muy completa ver el manual de ayuda de php. Recordar que todas las funciones reciben uno o ms datos o valores y regresan siempre un resultado, una de estas funciones matemticas es:
pow(base, exponente); Esta funcin ocupa dos valores o datos( base y exp) y regresa un resultado ejemplo; Resolver el problema de calcular
// rea de declaracin de variables
$base, $exponente, $potencia; // rea de asignacin o carga o inicializacin de // variables $base=5; $exponente=3; // rea de operaciones $potencia =pow( $base, $exponente); // Despliegue desplegar $potencia; El resultado en pantalla es 125.000000000
Para resolver el problema de races, se aprovecha una de las mas elementales y conocida de las leyes de exponentes que dice:
Es decir una raz cualquiera se puede transformar a una potencia con un exponente fraccionario.
$y= 3*pow($x, 0.5); En este ejemplo de php se esta dando por supuesto que no interesa el tipo de dato que requiere la funcin pow() para trabajar correctamente TEMA 6: JERARQUA DE OPERACIONES PHP
El problema de no tomar en cuenta la jerarqua de los operadores al plantear y resolver una operacin casi siempre conduce a resultados muchas veces equivocados como estos: Ejemplos: a) 2 + 3 * 4 = 20 (incorrecto) .......................= 14 (correcto) b) si $calif1=60 y $calif2=80 entonces si en programa se usa $promedio=$calif1 + $calif2 / 2 da como resultado promedio = 100
Recordar siempre que antes de plantear una formula en un programa se deber evaluar contra el siguiente: Orden de operaciones: 1.- Parntesis 2.- Potencias y races 3.- Multiplicaciones y divisiones 4.- Sumas y restas 5.- Dos o ms de la misma jerarqua u orden entonces resolver de izquierda a derecha Nota: Si se quiere alterar el orden normal de operaciones entonces usar parntesis. Nota: Tampoco es bueno usar parntesis de mas en una operacin esto solo indica que no se evalo bien la formula como en el siguiente ejemplo; $rea = ( $base * $altura ) / 2 Aqu los parntesis estn de mas porque por orden de operaciones, multiplicacin y divisin tienen la misma jerarqua y entonces se resuelven de izquierda a derecha,
Para nuestro propsito en general un objeto puede definirse como cualquier ente o entidad fsica o lgica de informacin. En este sentido todos los elementos materiales o inmateriales pueden clasificarse como objetos. En particular cualquier objeto considerado presenta los siguientes tres elementos: a) Propiedades: Son las caractersticas propias de un objeto estos atributos son los que permiten diferenciar o individualizar un objeto de otro objeto ya sea de la misma o diferente clase o categora. Las propiedades mas generales son forma, color, tamao, peso, etc., pero ya en particular: Chamarra -> Marca, material, precio, color, tamao, etc Alumno -> Matricula, nombre, edad, domicilio, etc. Gato -> Raza, nombre, color, edad, etc. VentanaWindows-->Tamao, Color, font, etc. b) Mtodos: Son las conductas propias de la naturaleza del objeto. As como las propiedades son el ser (que es) del objeto, los mtodos son el hacer (que hacer) del objeto. ejemplo de mtodos: Gato ---> Maullar(), comer(), correr(), saltar(), etc. Alumno---> Estudiar(), comer(), asistir clase(), pintear() Cuaderno-->Esescrito(), esrayado(), esborrado(), etc. VentanaWindows--> Abrir(), cerrar(), maximizar(), etc.... c) Eventos: Es la relacin (de varias maneras) que se puede dar entre dos objetos ya sean de la misma o diferente clase.
Un evento se manifiesta como un interaccin entre dos objetos, en general al momento de la relacin al mismo tiempo se dar una reaccin o respuesta por parte de los dos objetos, que se manifiestan como una serie, cadena o conjuntos de mtodos propios que se activan. ejemplo: Evento................ relacin.. mtodos que se activan gato detecta gata..... detectar.. maullar(), correr(), oler() gato detecta perro.... detectar.. bufar(), saltar(), correr() maestro ensea alumno. Ensear... pasar lista(), preguntar(), tc Windows click ratn... click..... maximizar(), cerrar() Windows dblclk ratn.. dblclk.... minimizar(), etc... TEMA 9: BAJAS O ELIMINACIONES MYSQL Eliminacin o bajas es el proceso por medio del cual algunos registros del archivo son purgados del archivo, existen dos maneras por las cuales se puede realizar ese proceso. En la primera manera de la cual se proporciona el ejemplo correspondiente se usaran dos archivos, el archivo original y un archivo temporal, el procedimiento o algoritmo es muy sencillo, se lee el registro del archivo original y si no es el registro a eliminar entonces se almacena en el archivo temporal, cuando se termina de procesar todo el archivo original, el archivo temporal solo contendra todos los registros que no se quisieron eliminar, ya con estos dos archivo se procede a eliminar o borrar usando la instruccion unlink de php el archivo original y se procede a renombrar usando la instruccin rename de php el archivo temporal como nuevo archivo original. Prog23.html
<HTML> <FORM ACTION=prog23.php METHOD=post> DAME CLAVE A ELIMINAR:<INPUT TYPE=text NAME=CLAVE><BR> <INPUT TYPE=submit NAME=OK VALUE="baja"><BR> </FORM></HTML>
<?php if ($OK == "baja") { // abriendo dos archivos $archivo=fopen('alumnos.dat','a+'); $archt=fopen('temporal.dat','a+') or dye ("no puedo crear archivo") ; // leyendo el archivo original while (!feof($archivo)) { $clave=fgets($archivo); $nombre=fgets($archivo); $edad=fgets($archivo); $estatura=fgets($archivo); // convirtiendo al mismo tipo settype($clave,"integer"); if( $CLAVE != $clave and $clave != 0 ) { // cargando al archivo temporal fputs($archt, $clave."\n"); // ojo aqui ya es string fputs($archt, $nombre); fputs($archt, $edad); fputs($archt, $estatura); }; }; // cerrando los dos archivos
fclose($archivo); fclose($archt); // eliminando archivo original unlink("alumnos.dat"); // renombrando temporal como original rename("temporal.dat","alumnos.dat"); // avisando echo "registro eliminado"; }; ?> Corrida:
EL problema con esta manera de eliminar incluso fisicamente los registros del archivo es que no hay manera de recuperar esa informacin posteriormente. Es por eso que otra tecnica comn de eliminacin es incluir un campo de estado, status o bandera o semaforo en el registro y conforme se va cargando el registro y antes de mandarlo a disco se le agrega a dicho campo el caracter 'A' -->alta, asi que cuando se quiera una baja solo se pondria dicho campo en 'B' y todos los programas de lectura, busqueda y filtros deberan revisar esta campo de estado antes de hacer algo con el registro.
TAREAS PROGRAMACION ARCHIVOS DISCO PHP MYSQL : Construir programas de eliminacion usando los dos metodos( bajas fisicas como en el ejemplo y bajas logicas como se indica en el ultimo parrafo) para los archivos construidos, para este ultimo caso se deberan reconstruir todos los programas anteriores,
Un Programa en PHP lo podemos considerar como un conjunto de una o mas formas, donde cada una de ellas contiene un conjunto de objetos, componentes o controles. Un componente o propiamente dicho un control es un objeto que se especializa en una tarea especifica por ejemplo hay controles especializados en desplegar textos o mensajes, otros controles se especializan en desplegar imgenes o vdeos, otros en manipular directorios o archivos en disco, etc. Pero en general tanto las formas como los controles, no dejan de ser objetos en programacin y por tanto tienen sus propiedades, mtodos y estn sujetos a eventos.
TEMA 8: REQISITOS PARA PROGRAMACION INTERNET LINUX PHP Para poder construir programas o aplicaciones orientadas a internet en PHP para linux, se ocupa lo siguiente:
1.- Una pc con enlace directo a internet, esta pc se usara como servidor y el sistema operativo que contendra es linux, como nota importante es entender que linux tiene muchas distribuciones diferentes y cada una de ellas esta configurada de varias maneras, la que se esta usando en este curso el LINUX MANDRAKE 9.1 que la recomiendo ampliamente. 2.- Un programa o aplicacion llamado servidor de paginas ( web server ) que debe estarse ejecutando todo el tiempo en el servidor fisico. Linux mandrake 9.1 (sistema operativo) ya trae integrado el servidor de paginas APACHE ADVANCED EXTRANET SERVER (oyeron esos de windows server 2003). 3.- El mejor editor del mundo para crear paginas html y programas de perl, el NOTEPAD de windows, estamos suponiendo que los programas de perl se crearan en una maquina windows y se subiran al servidor linux-apache. 4.- El programa PuTTy que se usara para crear una sesion de TELNET - SSH desde la maquina windows a la maquina linux, este programa bajarlo de http://www.chiark.greenend.org.uk/~sgtatham/putty/ y al final de este capitulo viene un apendicecon indicaciones de como usarlo.
TEMA 9: APLICACIONES PROGRAMACION LINUX PHP En este modelo de programacin, un programa en php es una combinacin de:
1.- Codigo y objetos HTML: Conseguir y estudiar un tutorial de HTML al final de este capitulo viene un apendice con los objetos ( no las instrucciones html). 2.- Codigo en php, al final de este capitulo tambien se incluye un apendice con las palabras reservadas de Php. EL procedimiento de construccin de programa es construir una forma o pagina dinamica que contendra los componentes, controles u objetos HTML para resolver el problema y un poco de codigo o instrucciones php para resolver el problema planteado. Resolvemos el problema de calcular el area de un triangulo con la formula area = base por altura sobre dos. El codigo del programa prog1.php es: <HTML> <FORM ACTION=prog1.php METHOD=post> DAME LA BASE:<INPUT TYPE=text NAME=base value="<? echo $base ?>" ><BR> DAME LA ALTURA:<INPUT TYPE=text NAME=altura value="<? echo $altura ? >"><BR> <INPUT TYPE=submit NAME=OK VALUE="evento1"><BR> </FORM></HTML> <?php if ($OK == "evento1") { $area = ($base * $altura) / 2; // formateando la salida $area=number_format($area,4); printf("AREA<INPUT TYPE=text NAME=area value=".$area.">"); }; ?> corrida:
NOTAS: 1.- Observar que el programa esta compuesto de dos partes, la primera parte son instrucciones y componentes HTML, esta parte esta delimitada por los tags <html>.....</html>. La segunda parte son intrucciones y funciones php que manipulan los objetos HTML, estan instrucciones estan encerradas entre los tags <?php.....?> para este caso de instrucciones php tambien es valido usar los tags <?....?>. 2.- Comentarios en PHP (que no tienen ningun efecto en codigo) empiezan con //. 3.- Este problema se resuelve usando 3 objetos TEXT de HTML ( ver apendice de objetos html al final de este capitulo) ocupa tambien un objeto SUBMIT tambien de HTML. Objetos de tipo Text de hmtl se usan tanto para capturar datos por parte del usuario asi como para desplegar datos o resultados por parte del programador. 4.- La parte html del programa empieza construyendo la propia pagina, esto se hace con <html>..</html>, despues construye una forma o ventana con los tags <form>..</form>, dentro de esta forma o ventana es donde se colocan 2 objetos de tipo TEXT y el objeto SUBMIT. 5.- La forma o ventana (FORM) lleva dos atributos o propiedades cargadas, la primera es ACTION=prog1.php, esto le indica al servidor de paginas que cuando alguien le haga click al submit de forma, est debera volver a activar, compilar y ejecutar prog1.php, el segundo parametro es que los datos que se envian desde la maquina del usuario al servidor los debe mandar usando POST, este metodo post los manda en forma silenciosa desde el usuario al servidor, existe un segundo metodo (GET) en este segundo caso el
envio de datos es publico en la maquina del usuario, son esos casos cuando ustedes llenan alguna foma en internet y hacen click en submit y si observan arriba se ve login=pepe password=pepepe etc, en estos casos los programadores estan usando GET en FORM, por eso en este curso se usara POST en FORM. 6.- Dentro de FORM se construyern dos objetos TEXT, las propiedades que se cargarn sn NAME=?? Y VALUE=??, NAME es el nombre que tendra el objeto para manipularlo o usarlo dentro del prgrama. Es importante entender que php convertira este NAME a una variable normal dentro del programa, por ejemplo un NAME=EDAD se convertira a la variable $EDAD (atencin no mezclar mayusculas y minusculas). La propiedad VALUE=?? Permite cargar o precargar un componente de tipo TEXT por ejemplo "input TEXT NAME=EDAD VALUE=50", creara un control de tipo TEXT que se llamara EDAD y aparecera precargado con el dato 50. En el programa ejemplo en lugar de poner un dato directamente se esta cargando con el valor que tenga el componente TEXT o mejor dicho la variable de ese NAME. Otra vez, primero en VALUE se agreg un pedazo de codigo php (recordar que ya se explico como se pone codigo php dentro de un programa), dentro se esta usando la instruccin ECHO de php, esta instruccin es el equivalente a print, printf(), display, cout, etc de otros lenguajes de programacin y al final se despliega lo que vale la variable que representa el TEXT, es decir cuando primero se ejecuta el programa la caja TEXT esta en blanco o vacia por tanto la variable respectiva esta en cero o en blanco, luego cuando el usuario la carga con algn numero o dato y el programa se vuelva a ejecutar el dato proporcionado por el usuario no se pierde sino que se transfiere a la segunda pagina que el usuario ve usando la variable que creo php. 7.- El ultimo objeto, control o componente (son tres maneras distintas de simbolizar lo mismo) es SUBMIT, su funcin principal consiste en avisarle a la maquina del usuario que mande de regreso los datos del programa al servidor, esto con finalidad de que el servidor vuelva a activar el programa con los nuevos datos, SUBMIT lleva tambien dos parametros un NAME y un VALUE, y tambien php creara la variable con ese nombre y aparte tambien la cargara con dicho VALUE o valor , por ejemplo si se crea un submit NAME=PICAME VALUE="ya se pico", php creara una variable llamada $PICAME cargada con el dato "ya se pico". 8.- Recordar de nuevo estudiar el tutorial de html y tambien los controles html porque html tiene un montn de tags muy utiles para construir paginas html con mucha mejor presentacin y formato incluyendo fonts, colores, imagenes, etc y en cuanto a los objetos html tambien tienen un montn de propiedades que les mejora la apariencia. 9.- En la parte PHP del programa toda la funcionalidad de programa debera encerrarse entre if ($OK == "evento1"){ CODIGO PHP}; Observar que primero se valida si el submit OK esta cargado con el valor "evento1", esto ocurre cuando el usuario manda la forma de regreso al servidor con los datos cargados de los textbox's incluyendo el propio submit, cargado con evento1.
En realidad no se ocupa este If(submit=valor){}, pero se agrega al programa por dos razones: a.- Es buena practica de programacin estar validando y asegurando el contenido del programa. b.- La segunda razon es que si se ponen dos submits en una forma, por ejemplo capturar dos numeros y un submit los suma y otro submit los resta, entonces sera facil poner dos if() en el programa, uno para restar y otro para sumar, solo recordar que cada submit debe llevar su propio NAME y su propio VALUE. 10.- El programa en si es muy sencillo solo recordar que php transformo los textbox a variables y transfirio el dato proporcionado por el usuario a dicha variable, por esta situacin ya se pueden usar las variables para rosolver el problema. Para desplegar el resultado se pueden usar dos metodos: a.- Como se hizo en el ejemplo, se construye un tercer textbox llamado AREA y se cargo su VALUE con la variable resultado $area. Despues de obtener el resultado, se esta formateando con la funcin number_format(var, cant de decimales) de php para su mejor presentacin pero esta parte del programa es opcional. En el codigo estamos usando print("texto"); para construir el TEXTBOX de salida o despliegue pero recordar que tambien se puede usar echo "texto"; ambas hacen lo mismo pero es mas comn usar echo. b.- Escribir directamente el resultado en la pagina, por ejemplo: echo "el area = ".$area; 11.- Este programa php (prog1.php) debera crearse con el notepad de windows o el editor de linux, revisar que la extension (.php) sea la correcta, recordar que notepad a veces les agrega la extencin .txt ( queda como prog1.php.txt) que no sirve para el servidor linux, en este ultimo caso renombrarla dentro del command prompt o msdos de tu windows. Ya creado correctamente subirlo a tu servidor de linux usando el ftp del internet explorer ( o algun otro programa cliente ftp), al folder principal. Algunos servidores linux requieren que un programa ejecutable tenga un permiso de ejecucin, si este es el caso entonces desde la consola principal del servidor navegar hasta el directorio donde se encuentra el programa y dar la orden o comando CHMOD 755 PROG1.PHP Para ejecutarlo desde tu browser usar la siguiente direccin internet: http://programacionfacil.com/tusitio/prog1.php SUERTE Y TAREAS PHP SUGERIDAS:
Unidad 2
TEMA 1: PHP INTRODUCCION Instrucciones de control de programa permiten alterar la secuencia normal de ejecucin de un programa. Estas instrucciones se dividen en tres grandes categoras: Instrucciones Condicionales que en PHP se implementan con las instrucciones if() y switch(). Instrucciones de ciclos con, for, while, do-while.
Es decir al comparar dos alternativas diferentes el computador puede tomar una decisin, basndose en la evaluacin que hace de alguna condicin. ejemplo de instrucciones condicionales ;
a)
si no desplegar "pobre" fin-si b) si sexo = 'm' imprime mujer si no imprime hombre fin-si
De los ejemplos observar que los caminos por el computador dependern de la evaluacin que el computador hace cn y de la condicin.
Todo lenguaje de programacin debe tener instrucciones que permitan formar condiciones e instrucciones que pueden evaluar esas condiciones. El formato general de una instruccin condicional es:
La propia instruccin condicional en si La condicin El grupo cierto de instrucciones El grupo falso de instrucciones
Cuando el computador evala una condicin, el resultado de esa evaluacin solo es evaluado de dos maneras o la condicin es CIERTA o la condicin es FALSA.
Esto depender del valor que tenga asignado o que se haya capturado para la variable que esta en la condicin, por ejemplo si se capturo 6000 en sueldo en el ejemplo a), entonces el computador indicara que la condicin es CIERTA, pero en otro caso, si a la variable sueldo primero se le asigno un valor de 250 entonces el computador indicara que la condicin es FALSA. Ya dependiendo del resultado de la evaluacin, el computador ejecuta las instrucciones contenidas en la parte CIERTA o en la parte FALSA de la condicin. Empezaremos el anlisis por la CONDICION en PHP
TEMA 3: LINUX PHP CONDICIONES SIMPLES En general todas las condiciones se forman con: Variables $sexo $sueldo Operadores Relacinales == > Constante o Variables "m" 300000
Una condicin simple se define como el conjunto de variables y/o constantes unidas por los llamados operadores relacinales.
Los operadores relacinales que PHP reconoce son:
Operador ==
Mayor que Menor que Mayor o igual que Menor o igual que No es igual que o es diferente que
Observar y tener cuidado sobre todo con el operador de igualdad(=), y el operador relacional de comparacin por igualdad(==), es decir; $sueldo = 500 , Se esta pidiendo cargar o asignar la variable sueldo con el valor 500 $sueldo == 500 , Se esta pidiendo que se compare el valor o dato que se encuentra en la variable sueldo, contra el numero 500. Solo este ultimo formato es valido en php dentro de una condicin en una instruccin condicional.
Secundus.- La condicin va entre parntesis ; Tertius.- Si un if no ocupa un grupo falso de instrucciones, entonces no se pone el else, y la llave antes del else si terminara con punto y coma.
Ejemplo: PROG2.PHP <HTML> <FORM ACTION=prog2.php METHOD=post> DAME SUELDO:<INPUT TYPE=text NAME=SUELDO value="<? echo $SUELDO ? >" ><BR> <INPUT TYPE=submit NAME=OK VALUE="evento1"><BR> </FORM></HTML> <?php if ($OK == "evento1") { // como se observa estamos usando if() tambien para evaluar si // ocurrrio el evento1
if ($SUELDO > 1000) { $RESULTADO = "rico"; printf("<INPUT TYPE=text NAME=RESULTADO value=".$RESULTADO.">"); echo "<BR>se puede escribir directamente en pagina tambien ".$RESULTADO; } else { $RESULTADO = "pobre"; printf("<INPUT TYPE=text NAME=RESULTADO value=".$RESULTADO.">"); echo "<BR>se puede escribir directamente en pagina tambien ".$RESULTADO; }; }; ?>
CORRIDA:
2.- Capturar un numero entero cualesquiera e informar si es o no es mltiplo de 4 ( recordar el operador mod(%) analizado en el tema de operadores aritmticos). 3.- Capturar los cinco datos mas importantes de un Empleado, incluyendo el sueldo diario y los das trabajados , desplegarle su cheque semanal solo si gan mas de $500.00 en la semana, en caso contrario desplegarle un bono de despensa semanal de $150.00 . 4.- Capturar los datos mas importantes de un estudiante incluyendo tres calificaciones, una pagina que contiene una boleta de calificaciones es llamada si el estudiante es de la carrera de medicina, en caso contrario otra pagina despliega un oficio citando a los padres del estudiante a una platica amistosa con los maestros de la escuela. 5.- Capturar los datos mas importantes de un producto cualesquiera, incluyendo cantidad, precio, etc., desplegar una orden de compra, solo si el producto es de origen nacional, en caso contrario no hacer nada.
Por ejemplo que el computador muestre la boleta de un alumno, si este estudia la carrera de medicina y su promedio de calificaciones es mayor de 70. Una condicin compuesta se define como dos o mas condiciones simples unidas por los llamados operadores lgicos. Los operadores lgicos que PHP reconoce son:
SIGNIFICADO "Y" LOGICO "O" LOGICO "NO" NEGACION Cierto solo si uno es cierto pero no ambos
Ejemplo:
if ( ($carrera=="informatica") && ( $sexo=="m") ) etc, etc, etc.
Notas: Observar que cada condicin simple lleva sus propios parentesis. Si la variable es de tipo string el dato va entre comillas("), pero si la variable es de tipo char el dato va entre apostrofes('). Para que el computador evale como CIERTA una condicin compuesta que contiene el operador lgico "y", las dos condiciones simples deben ser ciertas. Para que el computador evale como CIERTA una condicin compuesta que contiene el operador lgico "o", basta con que una de las condiciones simples sea cierta. La cantidad total de casos posibles cuando se unen dos o mas condiciones simples esta dada por la relacin donde n = cantidad de condiciones, la primera mitad de ellos ciertos y la segunda mitad falsos. Ejemplo, si formamos una condiciona compuesta con dos condiciones simples y el operador lgico "y", la cantidad total de casos posibles serian y se puede construir la siguiente tabla de verdad. Tabla de verdad con "y" IRA COND SIMPLE C C F F 2DA COND SIMPLE C F C F EVALUACION C F F F
La evaluacin final se obtiene usando la regla anteriormente descrita para una condicin compuesta que contiene el operador "y".
Esta tabla significa lo siguiente; 1.- Cualquiera que san la cantidad de datos procesados, siempre caer en uno de estos cuatro posibles casos. La tabla de verdad para una condicin compuesta con "O" es la siguiente; IRA COND SIMPLE 2DA COND SIMPLE EVALUACION
C C F F
C F C F
C C C F
Como se observa, una condicin compuesta con "O", es menos restrictiva, o el 75% de los casos terminaran ejecutando el grupo CIERTO de instrucciones de la instruccin condicional.
Construir una tabla de verdad para una condicin compuesta de tres o mas condiciones simples, es tambin tarea sencilla, solo recordar que; 1.- La cantidad posible de casos posibles es mitad empiezan con falso. la mitad empiezan con cierto y la otra
2.- Para evaluar esta condicin triple, primero se evalan las dos primeras incluyendo su operador bajo las reglas ya descritas y luego se evala el resultado parcial contra la ultima condicin y el ultimo operador para obtener la evaluacin final. Ejemplo una condicin compuesta de tres condiciones simples, donde el primer operador lgico es el "y" y el segundo operador lgico es el "O", dara la siguiente tabla de verdad. Ira cond C C C C F F F F 2da cond C C F F C C F F Eval 1a Y 2a C C F F F F F F 3ra cond C F C F C F C F Eval eval O 3ra C C C F C F C F
En la practica, cada condicin simple debe ir encerrada en su propio parntesis y las dos condiciones simples tambin deben encerrarse entre sus propios parntesis, como en el siguiente ejemplo; if(($sueldo> 500)%%($departamento=="VENTAS") )
{ // aqu se construye la pagina que despliegua su cheque semanal } else { // aqu se construye y despliega la pagina del bono de despensa o un oficio de motivacin } ;
Recordar, cada condicin simple debe estar entre parntesis y las dos condiciones simples tambin deben estar entre parntesis. Observar donde se deben incluir los puntos y comas y donde no se deben incluir los puntos y comas.
TAREAS PROGRAMACION LINUX PHP MYSQL 1.- Construir un programa que capture un numero cualesquiera e informe si es o no es mayor de 50 y mltiplo de tres. ( solo escribir el mensaje de respuesta de manera muy clara y esto resuelve el problema ) 2.- Construir un programa que indique si un numero es un par positivo. 3.- Capturar los datos de un producto incluyendo su cantidad en existencia, desplegar una orden de compra si la cantidad en existencia del producto es menor que el punto de reorden, o si el origen del producto es nacional. 4.- Construir un programa que capture los datos de un empleado, desplegar en una pagina su cheque semanal si gana mas de $500.00 y si esta en el departamento de produccin, en caso contrario desplegarle en otra pagina un bono de despensa del 25% de su sueldo semanal.
La instruccin switch() es una instruccin de decisin mltiple, donde el compilador prueba o busca el valor contenido en una variable contra una lista de constantes ints o chars, cuando el computador encuentra el valor de igualdad entre variable y constante, entonces ejecuta el grupo de instrucciones asociados a dicha constante, si no encuentra el valor de igualdad entre variable y constante, entonces ejecuta un grupo de instrucciones asociados a un default, aunque este ultimo es opcional. El formato de esta instruccin es el siguiente;
capturar o asignar variable de condicin;
switch(var int o char) { case const1: instruccin(es); break; case const2: instruccin(es); break; case const3: instruccin(es);
Prog3.php
<HTML> <FORM ACTION=prog3.php METHOD=post> DAME UNA LETRA:<INPUT TYPE=text NAME=LETRA value="<? echo $LETRA ? >" ><BR> <INPUT TYPE=submit NAME=OK VALUE="evento1"><BR> </FORM></HTML> <?php if ($OK == "evento1") { // area de switch() switch($LETRA) { case 'a': echo "<br>aguila"; break; case 'b':case'B': echo "<br>baca"; break; case 'c': echo "<br>caballo "; echo "<br>camello "; break;
Notas:
1.- Se pueden usar cualquier tipo de dato como variable de condicin excepto decimales???. 2.- Las constantes que estamos buscando y comparando son de tipo char, por eso se deben encerrar entre apstrofes ( '). 3.- Si se quiere resolver el problema de maysculas o minsculas en el teclado, observar que se usan dos case, pero con un solo break; 6.- Recordar que switch() que cuando se trabaje con constantes y variables de tipo entero, en los case poner la constante numrica, sin apstrofes, es decir por ejemplo: case 5: instrucciones; break; En particular, instrucciones de tipo switch() se usan para construir programas de seleccin de mens, donde al usuario se le plantean dos o tres problemas distintos y el propio usuario seleccionaba cual de ellos se ejecuta TAREAS PROGRAMACION LINUX PHP
b. conversin de libras a kilogramos c. conversin de kilmetros a millas d. fin de men seleccionar opcin [ ] Este es el edit del switch().
Probar como opcion o redireccion <"location:/~tusitio/prog200.html"
tareas PHP 2.- Construir un programa que capture un deporte y despliegue dos implementos deportivos apropiados. 3.- Evaluar una funcin cualesquiera cn x = 3, -4, 5
Ejemplo de esta clase de datos, son por ejemplos Municipio en BC las posibles respuestas solo son (Tecate, Tijuana, Mexicali, Ensenada, Rosarito), otro ejemplo es Sexo (Hombre, Mujer), etc. Para situaciones como esta existen componentes html que permiten programar por adelantado las posibles respuestas y el usuario solo debe seleccionar la respuesta apropiada en lugar de tener que escribirla. Este control SELECT nos permite definir en primera instancia un conjunto de datos o valores respuestas asociados a una caja de edicin cualesquiera as ahora el usuario tendr la oportunidad de seleccionar un dato del conjunto de datos o respuestas ya predefinido. Este componente SELECT DEBERA CONSTRUIRSE EN dos partes una parte de encabezado para poner el nombre del grupo de respuestas( por ejemplo municipios, sexo, etc.) La segunda parte es la lista de opciones o respuestas que se debe cargar al tiempo de ejecucin de la forma html como lo muestra el siguiente programa: Prog4.php
<OPTION>TIJUANA <OPTION>MEXICALI </SELECT> <INPUT TYPE=submit NAME=OK VALUE="evento1"><BR> </FORM></HTML> <?php if ($OK == "evento1") { if ( $muni == "ENSENADA" ) { echo "<B>templado</B>"; }; if ( $muni == "MEXICALI" ) { echo "<B>caliente</B>"; }; if ( $muni == "TIJUANA" ) { echo "<B>helado</B>"; }; }; ?> CORRIDA prog4.php:
Solo grabarlo como prog4.php y subirlo a tu sitio y ejecutarlo de manera normal http://programacionfacil.com/~tusitio/prog4.php NOTA: A TODOS NUESTROS AMABLES VISITANTES QUE ESTEN INTERESADOS EN PLANTAR Y EJECUTAR ESTOS PROGRAMAS AQUI EN WWW.PROGRAMACIONFACIL.COM POR FAVOR HACER CLICK EN ESTE ANUNCIO IMPORTANTEpara poder abrirles una cuenta e instrucciones de uso apropiadas.
Notas:
1.- Observar que el servidor de paginas devolvio el par MUNICIPIO=ENSENADA que estamos capturando en nuestra variable $municipio. TAREAS PROGRAMACION PHP : 1.- Arreglar un par de los programas anteriores agregandole este control a los que se puedan. 2.- Evaluar la funcin para x = 2,-5, 8
3.- Construir una forma con los datos de un automvil(usar puros select) y construir dos paginas de salida o respuesta una con un plan de financiamiento a dos aos u otra con un plan de financiamiento a tres aos.
TEMA 8: CHECKBOX PHP El componente CheckBox permite seleccionar una opcin al usuario del programa o tomar una decisin directamente en pantalla. Ejemplos de uso:
Observar que dos o mas checkboxs pueden estar seleccionados a la vez. Codigo prog5.php
<HTML> <FORM ACTION=prog5.php METHOD=post> <b>sexo:</b><br> <input type=checkbox name=mas >masculino<br> <input type=checkbox name=fem >femenino<br> <input type=checkbox name=neutro >neutro<br>
<INPUT TYPE=submit NAME=OK VALUE="evento1"><BR> </FORM></HTML> <?php if ($OK == "evento1") { if ( $fem == "on" ){ echo "<B>femenino checado</B> "; }; if ( $mas == "on" ){ echo "<B>masculino checado</B> "; }; if ( $neutro == "on" ){ echo "<B>neutro checado</B> "; }; }; ?> Notas: 1.- grabarlo y subirlo como prog5.php a tusitio en programacionfacil.com 2.- La propiedad name debera ser diferente en cada checkbox usado, la propiedad checked se usa para que aparezca ya palomeado o seleccionado el control. 3.- Cuando se activa prog5.php, esta forma manda el par NAME=on solo de los checkbox que fuern seleccionados. Corrida:
Para programar este componente: Como ya se indico esta forma va a mandar el par NAME=on asi que esto es sencillo en php, solo recordar usar un if por cada checkbox. En cuanto al programa no hay nada nuevo a ensear solo recordar que cuando hay muchos checkbox's van a tener que usar muchos if's. PROBLEMAS PHP SUGERIDOS 1.- Evaluar la funcin para x = 2,-5, 8 (usar un CheckBox por cada valor de x, y programar cada el if de cada CheckBox con la operacin correspondiente y el despliegue del resultado). 2.- Construir un pagina.html con los datos de un automvil y una segunda pagina muestra un plan de financiamiento a dos aos y una tercera pagina muestra un plan de financiamiento a tres aos. 3.- Construir un programa de seleccion de mens, las opciones seran algunos de los programas ya hechos.(se recomienda que en cada if construyan la forma o pagina de manera dinamica de la forma.html que tienen en el programa correspondiente)
TEMA 9: COMPONENTE RADIOBUTTON PHP MYSQL Se utiliza para presentar al usuario un conjunto de opciones mutuamente excluyentes entre si es decir si el usuario selecciona un componente radio todos los dems componentes radioButton en la forma, se deseleccionan solos es por esta razn que decimos que radiobotones son mutuamente excluyentes. Codigo prog6.php
<HTML> <FORM ACTION=prog6.php METHOD=post> sexo:<br> <input type=radio name=SEXO value=masculino >masculino<br> <input type=radio name=SEXO value=femenino>femenino<br> <input type=radio name=SEXO value=neutro>neutro<br> carrera:<br> <input type=radio name=CARRERA value=sistemas >sistemas<br> <input type=radio name=CARRERA value=informatica>informatica<br>
<input type=radio name=CARRERA value=medicina>medicina<br> <INPUT TYPE=submit NAME=OK VALUE="evento1"><BR> </FORM></HTML> <?php if ($OK == "evento1") { echo "<B>SEXO =</B>".$SEXO."<br>"; echo "<B>CARRERA =</B>".$CARRERA."<br>"; }; ?> 1.- Observar que tenemos dos grupos de radiobotones uno con NAME=SEXO y otro con NAME=CARRERA sin embargo existen varios radiobotones y cada radiobuton tiene su propio valor o VALUE. 2.- Recordar que en checkbox(tema anterior) la propiedad NAME debe ser distinta para cada uno de ellos, mientras que en radiobutton es la misma para todo un grupo similar de ellos. 3.- La razn principal para esta situacin es que los radiobotones son mutuamente excluyentes entre si Y QUE SOLO UNO PUEDE ESTAR ENCENDIDO A LA VEZ por eso los agrupamos con la propiedad NAME para que html los pueda considerar como dos o mas grupos diferentes. 4.- Tambien tienen la propiedad checked para que aparezcan seleccionados al cargar el programa prog6.html 5.- A diferencia del checkbox html va a regresar solamente el par NAME=VALUE de el radiobuton que este seleccionado, esto lo hace por cada grupo de radiobotones que tengamos en la forma html 6.- Recordar que el servidor regresa un y solo un par NAME=VALUE por cada grupo de radiobutton's que existan en la forma.html, asi que es bastante sencillo tomar el valor del radiobuton seleccionado y ya cargado este valor realizar o programar el proceso correspondiente. Corrida:
TAREAS PHP MYSQL 1.- CONSTRUIR UN CUESTIONARIO DE 6 PREGUNTAS SOBRE LOS HBITOS DE ESTUDIO DE UN ESTUDIANTE Y PASAR SUS RESPUESTAS A UNA PAGINA NUEVA.
2.- EVALUAR UNA FUNCION CUALESQUIERA, LA PAGINA HTML TIENE NAME = X
y VALUEs = 3, -5, 10
Este ciclo es uno de los mas usados para repetir una secuencia de instrucciones, sobre todo cuando se conoce la cantidad exacta de veces que se quiere que se ejecute una instruccin simple o compuesta. Su formato general es: for (inicializacin; condicin; incremento) { instruccin(es); }; ejemplo:
for($x=1;$x<=10;$x=$x+1)
La condicin es una expresin relacional que evala la variable de control de ciclo contra un valor final o de parada que determina cuando debe acabar el ciclo. El incremento define la manera en que la variable de control de ciclo debe cambiar cada vez que el computador repite un ciclo. Se deben separar esos 3 argumentos con punto y coma (;) EJEMPLO Codigo prog7.php y recuerden subirlo y pedirlo con: http:\\programacionfacil.com\tusitio\prog7.php <HTML> <FORM ACTION=prog7.php METHOD=post> <INPUT TYPE=submit NAME=OK VALUE="evento1"><BR> </FORM></HTML>
<?php if ($OK == "evento1") { for($x=1; $x<=10; $x=$x+1) { echo $x." MAMA <br> " ; }; }; ?>
corrida:
1.- El ciclo comienza en uno y se incrementa de uno en uno este es el caso mas general. 2.- Pero el valor inicial puede se diferente de uno, ejemplo; for(x=5;x<=15;x=x+1){ etc.}; 3.- Incluso el valor inicial puede ser negativo, ejemplo;
for (x = -3 ;x<= 8; x=x+1) { etc.}; 4.- Los incrementos tambin pueden ser diferentes al de uno en uno, ej.; for (x=1; x<= 20; x=x+3){ etc. }; 5.- Incluso pueden ser decrementos, solo que en este caso, recordar; 5.1.-el valor inicial de la variable debe ser mayor que el valor final. 5.2.-cambiar el sentido de la condicin. ejemplo;
for (x= 50 ; x >= 10; x= x-4 ) { etctera };
6.- Solo para los casos de incrementos y decrementos de una en una unidad substituir en el for:
el x = x + 1 por x++ el x = x - 1 por x-TAREAS PROGRAMACION LINUX PHP MYSQL : 1.- CONSTRUIR UN PROGRAMA QUE DESPLIEGUE LOS NMEROS DEL 20 AL 30. 2.- DESPLEGAR LOS ENTEROS ENTRE 50 Y 30 ACOMPAADOS DE SU POTENCIA CUADRADA Y RAZ CUBICA RESPECTIVA(revisar el tema de operadores aritmeticos). 3.- DESPLEGAR LOS MLTIPLOS DE 5, ENTRE 10 Y 50, ACOMPAADOS DE SU FACTORIAL Y LOGARITMO RESPECTIVO(revisar el tema de operadores aritmeticos tambien). 4.- DESPLEGAR LA TABLA DE MULTIPLICAR QUE EL USUARIO INDIQUE. 5.- EVALUAR LA FUNCION Y=5X^2 + 3X + 8 CUANDO X--> -3...10 (RANGO DE -3 HASTA 10)
En este ciclo el cuerpo de instrucciones se ejecuta mientras una condicin permanezca como verdadera en el momento en que la condicin se convierte en falsa el ciclo termina.
Su formato general es : cargar o inicializar variable de condicin; while(condicin) { grupo cierto de instrucciones; instruccin(es) para salir del ciclo; }; Un error muy comun con el while, es poner un punto y coma(;) despues de la (condicin) ejemplo while(condicion); <--esto es y causa un error. prog8.php
<HTML> <FORM ACTION=prog8.php METHOD=post> <INPUT TYPE=submit NAME=OK VALUE="evento1"><BR> </FORM></HTML> <?php if ($OK == "evento1") { $x=1; while ( $x <=5) { echo $x." PATO<br> " ; $x++; }; };
?>
corrida
While puede llevar dos condiciones en este caso inicializar 2 variables de condicin y cuidar que existan 2 de rompimiento o terminacin de ciclo. El grupo cierto de instrucciones puede ser una sola instruccin o todo un grupo de instrucciones. La condicin puede ser simple o compuesta. Los casos generales de for tambien se aplican a while. A este ciclo tambin se le conoce tambin como ciclo de condicin de entrada o prueba por arriba porque este ciclo evala primero la condicin y posteriormente ejecuta las instrucciones. TAREAS PROGRAMACION LINUX PHP
1.- DESPLEGAR ENTEROS ENTRE 50 Y 80
2.- DESPLEGAR MULTIPLOS DE 4 ENTRE 60 Y 20 ACOMPAADOS DE SU LOGARITMOS DE BASE 10 Y BASE e RESPECTIVOS. 3.- CONSTRUIR LA TABLA DE DIVIDIR QUE EL USUARIO INDIQUE.
Su diferencia bsica con el ciclo while es que la prueba de condicin es hecha al finalizar el ciclo, es decir las instrucciones se ejecutan cuando menos una vez porque primero ejecuta las instrucciones y al final evala la condicin;
Tambin se le conoce por esta razn como ciclo de condicin de salida. Su formato general es : cargar o inicializar variable de condicin; do { grupo cierto de instruccin(es); instruccin(es) de rompimiento de ciclo; } while (condicin);
prog9.php
<HTML> <FORM ACTION=prog9.php METHOD=post> <INPUT TYPE=submit NAME=OK VALUE="evento1"><BR> </FORM></HTML> <?php if ($OK == "evento1") { $x=1; do { echo $x." GATO<br> " ; $x++; }while($x<=5); };
?>
Corrida prog9.php
Otra diferencia bsica con el ciclo while es que, aunque la condicin sea falsa desde un principio el cuerpo de instrucciones se ejecutara por lo menos una vez.
TAREAS PROGRAMACION LINUX PHP 1.- tres del for 2.- tres del while
El problema de dado un problema cualesquiera cual ciclo se debe usar se resuelve con: 1. Si se conoce la cantidad exacta de veces que se quiere que se ejecute el ciclo o si el programa de alguna manera puede calcularla usar for. 2. Si se desconoce la cantidad de veces a repetir el ciclo o se quiere mayor control sobre la salida o terminacin del mismo entonces usar while. 3. Si se quiere que al menos una vez se ejecute el ciclo entonces usar do while.
Unidad 3
TEMA 1: INTRODUCCION ARREGLOS LINUX PHP
Uno de los problemas mas comunes en los diversos sistemas de informacin es el tratamiento o procesamiento de una gran volumen de datos o de informacin.
Las variables manejados hasta ahora no pueden ayudar a resolver este problema. Las variables usadas hasta ahora reciben propiamente el nombre de variables escalares, porque solo permiten almacenar o procesar un dato a la vez. No confundir esto con el tipo de dato o rango de datos que una variable tiene la capacidad de almacenar. Por ejemplo si se quiere almacenar nombre y edad de 15 personas con el mtodo tradicional se ocuparan 30 variables y esto solo es nombre y edad de 15 personas, agreguen mas datos y mas personas y ya es tiempo de empezar a analizar otro tipo de variables. Se ocupan entonces variables que sean capaces de almacenar y manipular conjuntos de datos a la vez.
Variables de tipo arreglo si permiten almacenar y procesar conjuntos de datos del mismo tipo a la vez. Cada dato dentro del arreglo se le conoce como elemento del arreglo y se simboliza y procesa (captura, operacin, despliegue ) usando el nombre del arreglo respectivo y un subndice indicando la posicin relativa del elemento con respecto a los dems elementos del arreglo, solo recordar que en cpp la primera posicin, elemento o rengln es el 0 (cero), ej.
NOMBRES
Juan -->nombres(0) Pedro -> nombres(1) Rosa --> nombres(2) Jose --> nombres(3) Sin embargo sus problemas son similares a los de variables normales es decir hay que declararlos, capturarlos, hacer operaciones con ellos, desplegarlos, compararlos, etc.
En programacin tradicional siempre se manejan dos tipos de arreglos los arreglos tipo listas, vectores o unidimensionales y los arreglos tipo tablas, cuadros, concentrados, matrices o bidimensionales en ambos casos son variables que permiten almacenar un conjunto de datos del mismo tipo a la vez, su diferencia es en la cantidad de columnas que cada uno de estos tipos contiene, como en los siguientes ejemplos:
a) LISTAS
EDAD
18 34 22 15
B) TABLAS
CIA ACME
10 50 90
20 60 100
30 70 110
40 80 120
Como se observa en linux php mysql la diferencia principal entre un arreglo tipo lista y unarreglo tipo tabla son las cantidades de columnas que contienen.
NOTA IMPORTANTE.- LOS CONCEPTOS MANEJADOS AQUI ESTAN ENFOCADOS A LOS SISTEMAS DE INFORMACION CONTABLES FINANCIEROS ADMINISTRATIVOS. EN ALGEBRA MATRICIAL, SI SON IMPORTANTES LOS CONCEPTOS DE VECTORES Y MATRICES, PERO LAS OPERACIONES Y METODOS SON PRECISAMENTE LOS DEL ALGEBRA MATRICIAL.
Un arreglo tipo lista se define como una variable que permite almacenar un conjunto de datos del mismo tipo organizados en una sola columna y uno o mas renglones.
Tambin reciben el nombre de vectores en lgebra o arreglos unidimensionales en programacin. Los procesos normales con una lista o con sus elementos incluyen declarar toda la lista, capturar sus elementos, desplegarlos, realizar operaciones con ellos, desplegarlos, etc. Para declarar y usar una variable arreglo en un programa en php, se puede usar cualquiera de los dos metodos siguientes: 1.- Usando el formato $nomarreglo[cant elementos]; ejemplo $arreglo[5]; Se esta creando un arreglo d 5 elemntos, recordar que hasta que se cargue el primer dato, hasta entonces se tendra definido su tipo de dato. 2.- Usando la funcin ARRAY(); ejemplo $arreglo=array(10,20,30,etc); Recordar en php que la primera posicin o rengln de una lista es la posicin o rengln 0 (cero).
Recordar que los datos que alimentan el arreglo provienen de un control o componente TEXT (INPUT TYPE=?) en la forma Prog10.php
if ($OK == "INSERTAR") { $indice=$indice+0; $edad[$indice]=$EDAD; echo "elemento ".$indice." insertado"; $indice++; }; if ($OK == "DESPLEGAR") { for($r=0; $r<=COUNT($edad)-1 ; $r=$r+1) { echo $edad[$r]."<br> " ; }; // otra manera de desplegar print_r($edad); session_unregister($edad); }; echo "<FORM ACTION=prog10.php METHOD=post>"; echo "EDAD:<INPUT TYPE=text NAME=EDAD value=$EDAD><BR>"; echo "<INPUT TYPE=submit NAME=OK VALUE=INSERTAR ><BR>"; echo "<INPUT TYPE=submit NAME=OK VALUE=DESPLEGAR ><BR>";
NOTAS: 1.- Se crea la lista o vector con el formato descrito en el tema anterior, observar tambien que dicha lista o vector es de tipo dinamico, es decir no tienen un tamao fijo o predeterminado. 2.- session_register(), se utiliza para indicar al servidor que las variables mencionadas son de tipo global y que debera conservar sus valores, este tema de variables globales y de sesiones se explicara mas ampliamente en la siguiente unidad. 3.- El evento INSERTAR usa una variable de control llamada $indice para ir cargando cada elemento que viene del control textbox en la posicin o renglon adecuado, observar tambien que la primera posicin o renglon es la 0. 4.- Para realizar procesos u operaciones con todos los elementos de una lista o vector solo usar un ciclo for desde indice o renglon 0 hasta COUNT-1 <- esta funcin de php regresa la cantidad de elementos de la lista, por ejemplo si se quiere convertir las edades a meses se usa el siguiente codigo: for($r=0; $r<=COUNT($edad)-1 ; $r=$r+1) $edad[$r]= $edad[$r]*12;
5.- El evento DESPLEGAR despliega el arreglo usando dos maneras diferentes: a. La primera usa un ciclo for con las caracteristicas mencionadas en el punto 4 anterior b. Se usa la funcin print_r(arreglo) de php, recordar que php se distingue de otros lenguajes de programacin por la cantidad increible de funciones que pone a disposicin de los programadores. 6.- Se debera usar siempre un ciclo for con una variable de control llamada renglon, misma que tambien se usa como indice del arreglo. 7.- Recordar que el primer renglon o indice en php es el renglon 0. 8.- Siempre que se use un elemento de una lista en php con cualquier proceso (captura, despliegue, operaciones) debera acompaarse de su indice respectivo. 9.- Para procesar (hacer operaciones con ellos, o comparaciones, etc) los elementos de la lista, se debera usar un ciclo for con una variable de control llamda rengln, misma que se usara tambien como indice de la lista. 10.- El mismo ciclo de proceso o despliegue se puede utilizar para procesar o desplegar los elementos de mas de una lista, siempre y cuando las listas sean del mismo tamao. 11.- Pero si se tienen que procesar dos o mas listas o arreglos de tamao diferente, entonces se deberan usar controles y eventos de INSERCIOn diferentes y en los demas eventos se deberan usar dos o mas ciclos for, uno por cada arreglo del problema, TAREAS PROGRAMAS PHP MYSQL
1.- Capturar y desplegar 5 precios de productos cualesquiera.
2.- Capturar 4 sueldos en su pagina y desplegarlos aumentados en un 25% 3.- Capturar una lista de 6 animalitos y 4 ciudades en un solo programa.
TEMA 5: FUNCIONES ESPECIALES PHP MYSQL Php es un lenguaje de programacin que esta muy enfocado al tratamiento de texto en este sentido presenta muchas utilerias o mas propiamente funciones que facilitan el trabajo con listas.
<?php
if ($OK == "DESPLEGAR") { // creando arreglo $lista1=array();$lista2=array(); // rellenando o inicializando $lista1=array_fill(1,5,100); $lista2=array_fill(0,4,50); // uniendolos $lista3=array_merge($lista1,$lista2); // desplegando lista3 print_r($lista3); // sumando los valores echo "<br>".array_sum($lista1)."<br>"; // contando los elementos // tambien se puede usar count(arreglo) echo count($lista3)."<br>"; // ordenando los elementos asort($lista3); // imprimendo array print_r($lista3); //ordenando en orden reverso
arsort($lista3); //imprimiendo otra vez echo "<br>"; print_r($lista3); // mas maneras de desplegar foreach($lista1 as $renglon) echo $renglon." "; };
echo "<FORM ACTION=prog11.php METHOD=post>"; echo "<INPUT TYPE=submit NAME=OK VALUE=DESPLEGAR ><BR>"; echo "</FORM>"; ?>
corrida:
Este programa esta demostrando el uso de algunas de las funciones especializadas de php, entre ellas funciones para inicializar arreglos, union de arreglos, ordenamiento o sorteo de elementos, sumar (acumular) y contar sus elementos, asi como el despliegue de los propios arreglos. Prestar atencin especial ala instruccin FOREACH( arreglo as indice o valor) que se puede usar en lugar del ciclo for(renglon) tradicional que se usa en muchos lenguajes de programacin. Las funciones especializadas de php para manipulacin de arreglos y sus elementos son:
See also is_array(), explode(), implode(), split(), preg_split(), and unset(). Table of Contents array_change_key_case - Returns an array with all string keys lowercased or uppercased array_chunk - Split an array into chunks array_combine - Creates an array by using one array for keys and another for its values array_count_values - Counts all the values of an array array_diff_assoc - Computes the difference of arrays with additional index check array_diff - Computes the difference of arrays array_fill - Fill an array with values array_filter - Filters elements of an array using a callback function array_flip - Exchanges all keys with their associated values in an array array_intersect_assoc - Computes the intersection of arrays with additional index check array_intersect - Computes the intersection of arrays array_key_exists - Checks if the given key or index exists in the array array_keys - Return all the keys of an array array_map - Applies the callback to the elements of the given arrays array_merge_recursive - Merge two or more arrays recursively array_merge - Merge two or more arrays array_multisort - Sort multiple or multi-dimensional arrays array_pad - Pad array to the specified length with a value array_pop - Pop the element off the end of array array_push - Push one or more elements onto the end of array array_rand - Pick one or more random entries out of an array array_reduce - Iteratively reduce the array to a single value using a callback function array_reverse - Return an array with elements in reverse order array_search - Searches the array for a given value and returns the corresponding key if successful array_shift - Shift an element off the beginning of array array_slice - Extract a slice of the array array_splice - Remove a portion of the array and replace it with something else array_sum - Calculate the sum of values in an array. array_unique - Removes duplicate values from an array array_unshift - Prepend one or more elements to the beginning of array array_values - Return all the values of an array
array_walk - Apply a user function to every member of an array array - Create an array arsort - Sort an array in reverse order and maintain index association asort - Sort an array and maintain index association compact - Create array containing variables and their values count - Count elements in a variable current - Return the current element in an array each - Return the current key and value pair from an array and advance the array cursor end - Set the internal pointer of an array to its last element extract - Import variables into the current symbol table from an array in_array - Checks if a value exists in an array key - Fetch a key from an associative array krsort - Sort an array by key in reverse order ksort - Sort an array by key list - Assign variables as if they were an array natcasesort - Sort an array using a case insensitive "natural order" algorithm natsort - Sort an array using a "natural order" algorithm next - Advance the internal array pointer of an array pos - Get the current element from an array prev - Rewind the internal array pointer range - Create an array containing a range of elements reset - Set the internal pointer of an array to its first element rsort - Sort an array in reverse order shuffle - Shuffle an array sizeof - Alias of count sort - Sort an array uasort - Sort an array with a user-defined comparison function and maintain index association uksort - Sort an array by keys using a user-defined comparison function usort - Sort an array by values using a user-defined comparison function
TEMA 6: PHP ARREGLOS TIPO TABLA Un arreglo tipo tabla se define como un conjunto de datos del mismo tipo organizados en dos o mas columnas y uno o mas renglones. Para procesar ( recordar solo operaciones y comparaciones) internamente todos los elementos de la tabla se ocupan dos ciclos for(), uno externo para controlar rengln y uno interno para controlar columna. Los elementos de la tabla se deberan simbolizar con el nombre de la tabla y 2 subindices, el primer subindice referencia al renglon y el siguiente subindice referencia la columna los dos dentro del mismo corchete. La declaracin de una tabla sera de acuerdo a los siguientes formatos: $TABLA=array(array()); Observar que en general php considera una tabla como un arreglo que contiene arreglos. Para capturar sus elementos, se usa el procedimiento desarrollado con listas.
Para efectuar otros procesos tales como operaciones, despliegue con todos los elementos de la tabla se usan 2 ciclos, un for externo para controlar renglon y un for interno para controlar columna.
Prog12.php
if ($OK == "INSERTAR") { $r=$r+0;$c=$c+0; $edad[$r][$c]=$EDAD; echo "elemento ".$r." ".$c." insertado ".$edad[$r][$c]; $c++; if($c==3) {$r++;$c=0;}; if($r==2){echo " tabla llena";}; };
if ($OK == "DESPLEGAR") {
echo "<br>"; }; // despliegue usando foreach echo "\n\n"; foreach($edad as $renglon) foreach($renglon as $columna) echo "$columna\n"; session_unregister($edad); }; echo "<FORM ACTION=prog12.php METHOD=post>"; echo "EDAD:<INPUT TYPE=text NAME=EDAD value=$EDAD><BR>"; echo "<INPUT TYPE=submit NAME=OK VALUE=INSERTAR ><BR>"; echo "<INPUT TYPE=submit NAME=OK VALUE=DESPLEGAR ><BR>"; echo "</FORM>"; ?>
Corrida:
Notas:
Observar el formato de declaracin y como se controlan los indices de captura reng, col. Recordar que lo apropiado para desplegar una tabla o matriz en la pc del usuario, es usando un control TABLE de html, pero esto queda de tarea. Para inicializar tablas, se pueden usar los siguientes formato: a) $lista = array( 0 => 'juan', 1' => 'pedro', 2 => 'jose', 3 => 'maria' ); b) $lista[1] = 'pedro'; $lista[2] = 'jose'; $lista[3] = 'maria'; $lista[] = 'juan'; c) $lista[] = 'juan'; $lista[] = 'pedro'; $lista[] = 'jose'; TAREAS PROGRAMACION PHP 1.- CONSTRUIR UN CUADRO QUE CONTENGA LOS COSTOS FIJOS DE CUATRO PRODUCTOS CUALESQUIERA, QUE SE PRODUCEN EN TRES PLANTAS DIFERENTES DE UNA EMPRESA MAQUILADORA. 2.- CONSTRUIR UN CUADRO QUE CONTENGA LOS INGRESOS MENSUALES POR VENTAS DURANTE LOS TRES PRIMEROS MESES DEL AO DE CUATRO SUCURSALES DE UNA CADENA DE AUTO REFACCIONES, AGREGAR AL FINAL UNA LISTA QUE MUESTRE LOS INGRESOS MENSUALES TOTALES POR MESES Y UNA SEGUNDA LISTA QUE MUESTRE LOS INGRESOS MENSUALES TOTALES POR SUCURSAL(2 programas uno capturado y otro inicializado). 3.-CONSTRUIR UN CUADRO QUE CONTENGA LAS COMISIONES GANADAS POR TRES VENDEDORES, DE LOS 5 TIPOS DE LINEA BLANCA DE CONOCIDA MUEBLERIA, ADEMAS LISTAS DE COMISIONES TOTALES Y PROMEDIOS GANADAS POR LOS VENDEDORES, ASI COMO LISTAS DE COMISIONES TOTALES Y PROMEDIOS POR TIPO DE LINEA BLANCA(inicializado). ANALIZAR ESTE CODIGO: ' PARA TOTALES Y PROMEDIOS POR RENGLON
FOR R = 0 TO 3 FOR C = 0 TO 2 TOTRENG(R) = TOTRENG(R) + TABLA(R,C) NEXT C PROMRENG(R) = TOTRENG(R)/3 NEXT R 'PARA TOTALES Y PROMEDIOS POR COLUMNA FOR C = 0 TO 2 FOR R = 0 TO 3 TOTCOL(C)=TOTCOL(C) + TABLA(R,C) NEXT R PROMCOL(C) = TOTCOL(C) / 4 NEXT C SUGERENCIA: CONSTRUIR PRIMERO LOS CUADROS EN PAPEL.
Alumno Clave...................................valor
matricula nombre carrera edad 99210200 Juan informatica 18
Prog13.php
<?php
if ($OK == "DESPLEGAR") {
// creando arreglo asociativo $alumno=array('numcontrol'=>9921099,'nombre'=>'juan perez','edad'=>20); // otro arreglo asociativo pero con indices o claves numericas $lista = array(1=>20,2=>30,3=>40);
// desplegando foreach($alumno as $renglon) echo "$renglon "; print "<br><br>"; foreach($lista as $indice) echo "$indice "; print"<br><br>"; print_r($alumno); };
echo "<FORM ACTION=prog13.php METHOD=post>"; echo "<INPUT TYPE=submit NAME=OK VALUE=DESPLEGAR ><BR>"; echo "</FORM>"; ?>
corrida:
Es de tomar en cuenta que todas las funciones de arreglos vistas en el tema anterior correspondiente, se pueden usar para estos arreglos asociativos. TAREAS PROGRAMACION PHP : 1.- Construir una aplicacion donde prueben algunas de las funciones de listas asociativas.
UNIDAD 4: PROCEDIMIENTOS Y FUNCIONES PHP TEMA 1 : PHP PROCEDIMIENTOS Un camino para dividir un gran programa en partes mas pequeas es el uso de los llamados procedimientos. Un procedimiento es un grupo de instrucciones, variables, constantes; etc, que estan diseados con un prposito particular y tiene su nombre propio. Es decir un procedimiento es un modulo de un programa que realiza tareas especificas y que no puede regresar valores al programa principal u a otro procedimiento que lo este invocando. Despues de escribir un procedimiento se usara su propio nombre como una sola instruccin o llamada al procedimiento. Los procedimientos se podran escribir despues del cuerpo principal del programa utilizando el formato: function NomProc{instrucciones;}; Observar que realmente php no tiene propiamente procedimientos, todas son funciones que no regresan nada.
Un programa puede tener tantos procedimientos como se deseen para hacer una llamada o invocacin al procedimiento durante la ejecucin de un programa solo se debera escribir el nombre del procedimiento. Prog14.php
<?php if ($OK == "DESPLEGAR") { // llamando o invocando un procedimiento?? proc1(); }; function proc1(){ $x = 50; echo $x. " PROGRAMACIONFACIL.COM"; }; echo "<FORM ACTION=prog14.php METHOD=post>"; echo "<INPUT TYPE=submit NAME=OK VALUE=DESPLEGAR ><BR>"; echo "</FORM>"; ?>
Corrida:
Como se observa un procedimiento puede ser un programa completo. TAREAS PROGRAMACION PHP Construir un programa de : Menu (cada opcion es un procedimiento). a) Convertir $800.00 Pesos a dolares. b) Calcular el Area de un triangulo de base=20 y altura=30. c) Deplegar una Boleta de calificaciones. d) Fin de menu.
TEMA 2: PARAMETROS PHP MYSQL En php un parametro es una variable que puede pasar su valor a un procedimiento desde el principal o desde otro procedimiento. Existen ocasiones en que es necesario mandar al procedimiento ciertos valores para que los use en algn proceso. Estos valores que se pasan del cuerpo principal del programa al procedimiento se llaman parametros. Entonces la declaracin completa de un procedimiento es : Function nomproc($par1,$par2..) { cuerpo de instrucciones; } Observar donde y como se declaran los parametros dentro de el procedimiento. Cuando se invoque un procedimiento y se quiera pasar parametros solo ponerlos dentro de un parentesis, ejemplo:
proc50( $alfa, 3.1416, 'juan'); observar que se pueden mandar variables, datos o expresiones algebraicas. prog15.php
<?php
if ($OK == "DESPLEGAR") { // llamando o invocando un procedimiento?? // mandando parametros $x=500; proc1($x, 'juan perez', 3.1416); }; function proc1($x1,$a,$b){ $x = $x1 * $b; echo $x. "<br>".$a ; }; echo "<FORM ACTION=prog15.php METHOD=post>"; echo "<INPUT TYPE=submit NAME=OK VALUE=DESPLEGAR ><BR>"; echo "</FORM>"; ?> corrida
REGLAS PARA EL USO DE PARAMETROS 1.- Cuando se usan variables como parametros la variable que se manda debe ser declarada dentro del principal o del procedimiento de donde se esta enviando. 2.- La variable que se manda tiene un nombre la que se recibe puede tener otro nombre. 3.- La cantidad de variables que se envian deben ser igual en cantidad, orden y tipo a las variables que reciben. 4.- La variable que se recibe tiene un ambito local dentro del procedimiento, es decir solo la puede usar ese procedimiento. TAREAS PROGRAMACION PHP MYSQL Una pagina activa un programa y le manda las 3 calificaciones, calcular promedio en un procedimiento, e imprimir nombre y promedio en otro procedimiento(este construye la pagina de salida). Construir una tabla de multiplicar que el usuario indique, captura y control de ciclo en el principal, calculo y despliegue en un procedimiento, cuidado al construir la pagina de salida. Construir un procedimiento que reciba un numero entero y que mande llamar a un segundo procedimiento pasando el letrero "PAR O IMPAR". TEMA 3: VARIABLES LOCALES Y GLOBALES LINUX PHP Variables globales son aquellas que son conocidas o pueden ser usadas, tanto por la parte principal del programa como por cualquier procedimiento.
En php todas las variables creadas y declaradas en cualquier parte del programa ya se el principal o procedimiento son por default globales. Una variable local es aquella variable que solo puede ser conocida o usada por la parte del programa donde se declara ya sea el principal o el procedimiento. En general una variable local solo es conocida por el cdigo de esa funcin o procedimieto y es desconocida por otras funciones o procedimientos. Prog16.php
corrida:
1.- BOLETA DE CALIFICACIONES Y SOLO USAR DOS VARIABLES GLOBALES 2.- UNA TABLA DE MULTIPLICAR Y SOLO USAR UNA VARIABLE GLOBAL
TEMA 4: FUNCIONES PHP MYSQL En Php una funcion es un modulo de un programa separado del cuerpo principal que realiza una tarea especifica y que puede regresar un valor a la parte principal del programa u otra funcion o procedimiento que la invoque. La forma general de una funcion es: Function NomFuncion( $par1, $par2..) { cuerpo de instrucciones; Return dato,var, exp; } INSTRUCCION RETURN Dentro del cuerpo de la funcin deber haber una instruccin $Return cuando menos para regresar el valor esta instruccin permite regresar datos. Prog17.php
<?php // variables globales if ($OK == "DESPLEGAR") { $x=sumar(5,10); $x=$x +1; echo $x;
};
function sumar($a,$b) { // regreando dato, variable o expresion return $a + $b; }; echo "<FORM ACTION=prog17.php METHOD=post>"; echo "<INPUT TYPE=submit NAME=OK VALUE=DESPLEGAR ><BR>"; echo "</FORM>"; ?> corrida
Es permitido poner mas de un return en el cuerpo de instrucciones sobre todo en condiciones pero solo un return se ejecutara. if ( $suma >= 10) { $return 10; }
else { $return 20; } TAREAS PHP 1.-Imprimir nombre y promedio de un alumno, capturar 3 calificaciones y nombre en un procedimiento, calcular promedio en una funcion, desplegar en otro procedimiento. 2.-Crear una tabla de multiplicar, captura y control de ciclo en el principal, operaciones en una funcion, despliegue en el principal. 3.-Evaluar una funcion cualesquiera para el rango de valores de x = 2..6 EXISTEN 3 CLASES USUALES DE FUNCIONES. Las primeras son de tipo computacional que son diseadas para realizar operaciones con los argumentos y regresan un valor basado en el resultado de esa operacin. Las segundas funciones son aquellas que manipulan informacin y regresan un valor que indican la terminacion o la falla de esa manipulacion. Las terceras son aquellas que no regresan ningun valor, es decir son estrictamente procedurales.
TEMA 5: PHP SESSION MYSQL Recordar que las variables globales vistas en el tema 3 solo permiten compartir sus valores dentro del programa, pero si se quiere compartir valores entre paginas o mejor dicho formas (form) diferentes, no se podran compartir datos o valores. Posibles soluciones a esto es el uso de la palabra reservada global o variables de tipo static. Sin embargo es mas apropiado usar las variables de sesin que es un mecanismo que php ofrece. Primero entender que es una sesion, en general podemos decir que una sesin es todo el tiempo que se de un enlace entre un cliente y un servidor, es decir cuando en un browser se pide una direccion web cualquiera, entre ese cliente y el sevidor se abre una sesin, por todo el tiempo que el cliente este navegando las diversas paginas del mismo sitio web, el sevidor mantiene una sesin abierta con dicho cliente, cuando el cliente abandona dicho sitio web, la sesin termina. En PHP se pueden crear variables de sesion de varias maneras, todo depende de la versin de php que tenga instalado el servidor, en general se pueden usar los dos siguientes formatos: 1.- $_SESSION["alfa"]=100; En este caso recordar que $alfa sera una variable normal que tambien crea php, esto es el mismo caso que las variables que crea php de los componentes u objetos HTML. 2.- $beta=0; session_register(beta); Este es el ejemplo que se uso en el tema de arreglos, para este ejemplo $beta es la variable global. Prog18.php
$_SESSION["alfa"]=100; $beta=0; session_register(beta); if ($OK == "DESPLEGAR") { $_SESSION['alfa']=$_SESSION['alfa'] + 50; sumar(); echo $_SESSION["alfa"]; $beta++; echo "<br>".$beta; $alfa++; echo "<br>".$alfa; }; function sumar() { $_SESSION["alfa"]=$_SESSION["alfa"] * 5; }; echo "<FORM ACTION=prog18.php METHOD=get>"; echo "<INPUT TYPE=submit NAME=OK VALUE=DESPLEGAR ><BR>"; echo "</FORM>"; ?> corrida:
Notas en form, se esta usando METHOD=GET, para que observen el numero de sesion que el servidor le asigna al cliente. TAREAS PROGRAMAS PHP MYSQL Hacer los programas que vienen en el tema de variables globales, pero usando los dos metodos de variables de sesin.
Unidad 5
TEMA 1: INTRODUCCION PHP Antes de empezar a programar en serio se estudian en esta unidad dos problemas. Problema A: Variables que puedan almacenar un conjunto de valores y no necesariamente del mismo tipo. Problema B: Resolver el problema de almacenar en forma permanente los datos que se generan dentro de un programa ya sea por captura, proceso, etc; El problema (A) se resuelve usando el concepto de estructuras o registros el problema (B) se resuelve usando el concepto de archivos disco
TEMA 2: ESTRUCTURAS O REGISTROS LINUX PHP En este tema exploramos en php la estructura mas comn de representacin de datos. Variables simples o escalares pueden almacenar un datum de informacin y arreglos pueden almacenar conjuntos de ellos del mismo tipo y al mismo tiempo, estos dos mecanismos pueden manejar una gran variedad de situaciones pero a menudo se necesita trabajar sobre datos de diversos tipos en este caso ni variables escalares ni arreglos son adecuados. Para resolver este problema php provee de los arreglos asociativos visto en la unidad de arreglos. Los elementos individuales de una variable estructura reciben el nombre de campos. Ej: alumno nombre -> campo1 direccion -> campo2 edad -> campo3 etc Prog13.php (ya visto en unidad de arreglos)
<?php
if ($OK == "DESPLEGAR") { // creando arreglo asociativo $alumno=array('numcontrol'=>9921099,'nombre'=>'juan perez','edad'=>20); // otro arreglo asociativo pero con indices o claves numericas $lista = array(1=>20,2=>30,3=>40);
// desplegando foreach($alumno as $renglon) echo "$renglon "; print "<br><br>"; foreach($lista as $indice) echo "$indice "; print"<br><br>"; print_r($alumno); };
echo "<FORM ACTION=prog13.php METHOD=post>"; echo "<INPUT TYPE=submit NAME=OK VALUE=DESPLEGAR ><BR>"; echo "</FORM>"; ?> Las operaciones mas elementales con los campos de una estructura incluyen captura e inicializacin. TAREAS PROGRAMACION LINUX PHP : (usar clases y arreglos asociativos) Crear un registro de alumno con 3 califaciones. Declarar un registro de empleado capturar y desplegar un numero indeterminado de veces. Capturar un registro local de un producto en el principal, mandarlo como parametro a un procedimiento y desplegarlo. Capturar un registro local en el principal, mandar el sueldo a una funcion que le aumente el 25% y desplegar en el principal. Capturar en principal un registro local de cuentas por cobrar, mandar a un procedimiento e imprimir un aviso si el saldo esta atrasado.
Si bien es cierto que ya se pueden manejar gran cantidad de datos del mismo y diferente tipo al mismo tiempo el problema es que al terminar de ejecutarse el programa los datos se pierden. De esta situacin nace el concepto de archivos que son medios que facilita el lenguaje para almacenar los datos en forma permanente, normalmente en los dispositivos de almacenamiento standar. En general es necesario entender algunos conceptos elementales de sistemas de archivos tradicionales. Como nota a tomar en cuenta los datos que se van almacenando en un archivo de disco, se almacenan en renglones consecutivos y cada renglon en disco, se conoce como registro del archivo, favor de no confundir el concepto de registro de archivo y registro o estructura como variable ya analizada, son dos cosas totalmente diferentes aunque desafortunadamente se llamen igual. Primero: Operaciones con archivos ESCRIBIR O GRABAR: Es la operacion mas elemental con un archivo, consiste en tomar un o unos datos en variables de cualquier tipo (escalar, mezcla de datos, arreglos, estructuras) y almacenarlas en un archivo de datos en disco. LEER: Operacin consistente en sacar los datos del archivo en disco y mandarlos o cargar la variable respectiva Segundo: Organizacin de archivos En general existen dos tipos de archivos: Archivos Secuenciales.- En este caso los datos se almacenan en forma consecutiva y no es posible leer (recuerdan que significa esta operacin) ningun registro (recuerdan la nota de arriba) directmente, es decir para leer el registro n, se debera recorrer o accesar los n-1 registros anteriores. Archivos Directos o Random.- Para este caso si se puede acceder o leer un renglon n cualquiera. Tercero: Tipo de archivos En general existen tantos tipos de archivos como tipos de datos existen. ATENCION: Ya que se decide utilizar algun archivo especifico de datos(caracteres, strings, formateados, registros o arreglos) solo utilizar las funciones de escritura y lectura de ese tipo de archivo, por ningun motivo mezcle funciones de lectura y escritura de otro tipo de archivos. Cuarto: Almacenamiento en archivos
Modo Texto: en este caso los datos son almacenados usando Ascii y por tanto son plenamente visibles usando cualquier editor. Modo Binario: en este caso los datos son almacenados en notacin hexadecimal y por tanto se ocupa un editor binario para reconocerlos, sin embargo un archivo binario es mas compacto que un archivo texto.
Existen muchas operaciones asociadas a archivos, las mas elementales son: 1.- Creacin de Archivo.- En este proceso se pretende solamente crear un archivo nuevo en disco con su nombre tipo y especialidad de almacenamiento de datos apropiado. 2.- Apertura de Archivos.- En este caso se pretende abrir un archivo ya existente en disco para procesarlo ya sea para cargar o grabar estructuras en sus registros o leer algun registro en especial para mandarlo a una variable de cualquier tipo. No confundir creacin con apertura, creacin es un proceso que solo se ejecuta una sola vez en la vida de un archivo, mientras que apertura, seimpre se esta realizando por los programas especializados en algun proceso. 3.-Cierre de archivos: Es la operacin mas importante en cualquier programa que maneje archivos, o se cierra el archivo como ultima instruccin del pograma o se vera el anuncio ABORT,RETRY,FAIL. 98, /s, scandisk 4.-Altas en archivo.- En este proceso se captura una estructura en memoria con sus datos pertinentes y despues se graba la estructura al archivo en disco. 5.-Lectura de archivo.- En este proceso se abre el archivo, se manda el registro de disco a una estructura en memoria para su procesamiento. 6.- Consulta de archivos: En este proceso se pretende desplegar todos los registros del archivo en disco a la pantalla ya sea consola o mejor an, a una pagina html 7.-Busqueda en archivos: Una de las operaciones mas comunes consiste en que el usuario pide toda la informacin de algun renglon en disco porporcionando la informacin de algun campo generalmente el campo clave de la estructura. 8.- Filtros.- En este proceso el usuario esta interesado en algun conjunto de renglones con caracteristicas comunes (condicin), por ejemplo todos los alumnos de "sistemas" o todos los empleados que ganen mas de $500.00 pesos, o todos los clientes que sean de "tijuana", etc 9.-Modificaciones de registros o archivos: Problema muy comun, donde los datos originales ya grabados se tienen que cambiar o actualizar, por ejemplo el nombre no era "juan" es "juana", o la calificacin no es 100 es 20, etc. 10.- Bajas de registros: tambien muy comun este proceso,por ejemplo el alumno ya egreso, el cliente huyo, etc.
Prog19.php
<HTML>
<FORM ACTION=prog19.php METHOD=post> CLAVE:<INPUT TYPE=text NAME=CLAVE><BR> NOMBRE:<INPUT TYPE=text NAME=NOMBRE><BR> EDAD:<INPUT TYPE=text NAME=EDAD><BR> ESTATURA:<INPUT TYPE=text NAME=ESTATURA><BR> <INPUT TYPE=submit NAME=OK VALUE="insertar"><BR> </FORM></HTML> <?php if ($OK == "insertar") { // creando y abriendo archivo $archivo=fopen('alumnos.dat','a+') or die("no puedo abrir archivo"); // grabando los campos fputs($archivo, $CLAVE."\n"); fputs($archivo, $NOMBRE."\n"); fputs($archivo, $EDAD."\n"); fputs($archivo, $ESTATURA."\n"); //cerrando archivo fclose($archivo); //avisando echo "registro #".$CLAVE." insertado"."<br>"; }; ?>
Corrida:
ES IMPORTANTE RECORDAR QUE ANTES DE EJECUTAR SU PRIMER PROGRAMA QUE MANEJE ARCHIVOS EN LINUX PERL, el directorio que los contendra debera estar en modo escritura-lectura chmod 777 o chmod 766, hacerlo con putty, si este modo no lo tiene el directorio que contendra el archivo de datos linux no lo creara y tampoco avisara y cada vez que se quiera agregar o leer un registro a/de dicho archivo adivinen que pasara. En el programa se ocupa una variable apuntador bautizada con el nombre de $archivo que almacenara la direccion fisica de el archivo en disco, ??en algun cilindro, track , sector debera quedar el archivo no es verdad??. Como segundo paso se abre el archivo con la instruccion fopen(): $archivo=fopen('alumnos.dat','a+') or die("no puedo abrir archivo"); fopen() ocupa dos parametros, el primero es el nombre del archivo, si se quiere que quede en algn subdirectoro agregar ( /archivos/alumnos.dat), el segundo parametro es el llamdo modo de apertura, existen los siguientes modos en php.
"a" ----> Append, si el archivo ya existe append empieza a aadir los nuevos datos al final del archivo ya existente. "r+" ---> Lectura y escritura, ya debe existir el archivo. "w+" ---> Crea para lectura y escritura y si ya existe, sobreescribe. "a+" ---> Crea o abre para lectura y append, sino existe el archivo sera creado.
Se esta usando la instruccin FPUTS() para grabar los campos al archivo en disco, ejemplo; fputs($archivo, $CLAVE."\n"); fputs($archivo, $NOMBRE."\n"); fputs($archivo, $EDAD."\n"); fputs($archivo, $ESTATURA."\n");
La primera observacin es que se puede grabar directamente el INPUT TEXT directamente al archivo. fputs() ocupa dos parametros el apuntador a el archivo y la variable a grabar a disco, observar que se le esta agregando un ENTER o RETURN al final de cada variable, esto es por la necesidad de tener un marca o bandera para conocer donde termina cada variable a la hora de leer el archivo. La segunda observacin es que para grabar mas de un registro o rengln al archivo solo basta ir cargando los datos en la forma e ir clikeando en el boton INSERTAR, se recomienda empezar la clave en 1(uno) y usar una serie consecutiva y ordenada. !!!!O van a tener que aprender a construir un archivo de claves que solo tenga la ultima clave almacenada!!!!!! Cuando se ha finalizado de escribir al archivo se debe cerrar y esto se hace con la instruccin: fclose($archdisco); PROGRAMAS PHP MYSQL Construir programas de alta o inserccin para unos cuantos archivos (empleados, productos, peliculas, etc, etc, etc)
TEMA 6: LECTURA ARCHIVOS DISCO PHP LINUX Como ya se menciono grabacin y lectura de registros o estructuras a renglones o registros de archivos en disco,
son los casos mas comunes y frecuentes que se pueden realizar con un archivo de disco. Prog20.php
<HTML> <FORM ACTION=prog20.php METHOD=post> <INPUT TYPE=submit NAME=OK VALUE="lectura"><BR> </FORM></HTML> <?php if ($OK == "lectura") { // abriendo archivo $archivo=fopen('alumnos.dat','a+'); // empezando una tabla html para desplegar echo "<HTML><TABLE Border=10 CellPadding=5><TR>"; echo"<th bgcolor=Green>CLAVE</th><th bgcolor=White>NOMBRE</th><th bgcolor=Red>EDAD</th><th bgcolor=YellowRed>ESTATURA</th></TR>"; // leyendo el archivo while (!feof($archivo)){ $clave=fgets($archivo); $nombre=fgets($archivo); $edad=fgets($archivo); $estatura=fgets($archivo); // desplegando en celda de tabla html echo"<tr>"; echo "<td>".$clave."</td>"; echo "<td>".$nombre."</td>"; echo "<td>".$edad."</td>";
echo "<td>".$estatura."</td>"; echo"</tr>"; }; // cerrando archivo y la tabla html echo "</table>"; fclose($archivo); }; ?> corrida:
Las unicas notas son : En fopen() se uso tambien "a+" Se usa un ciclo while(!eof()), "mientras no se encuentre la marca de fin de archivo (eof)"
Se usa fgets($archivo), fgets() va leyendo el renglon en el arhcivo hasta que encuentra la marca de ENTER o RETURN (/n) que se puso al final de cada variable en el programa de grabacin, y fgets() regresa el dato y carga la variable apropiada. Y se construyo una tabla HTML para realizar el despliegue. No olvidar el FCLOSE(). TAREAS PROGRAMACION ARCHIVOS DISCO LINUX PHP 1.-crear, cargar y leer un archivo de productos y otro de empleados
TEMA 7: PHP BUSQUEDA ARCHIVO DISCO En este tema se analiza la busqueda de un registro o rengln determinado. En este proceso el usuario del programa quiere que se despliegue un y solo un registro de informacin proporcionando un dato de busqueda generalmente la clave del registro.
Prog21.php
<HTML> <FORM ACTION=prog21.php METHOD=post> DAME CLAVE A BUSCAR:<INPUT TYPE=text NAME=CLAVE><BR> <INPUT TYPE=submit NAME=OK VALUE="busqueda"><BR> </FORM></HTML> <?php if ($OK == "busqueda") { // abriendo archivo $archivo=fopen('alumnos.dat','a+'); // empezando una tabla html para desplegar echo "<HTML><TABLE Border=10 CellPadding=5><TR>"; echo"<th bgcolor=Green>CLAVE</th><th bgcolor=White>NOMBRE</th><th bgcolor=Red>EDAD</th><th bgcolor=YellowRed>ESTATURA</th></TR>"; // leyendo el archivo while (!feof($archivo)){ $clave=fgets($archivo); $nombre=fgets($archivo); $edad=fgets($archivo); $estatura=fgets($archivo); // convirtiendo al mismo tipo settype($clave,"integer"); // settype($CLAVE,"integer"); if ( $CLAVE == $clave){ // desplegando en celda de tabla html
echo"<tr>"; echo "<td>".$clave."</td>"; echo "<td>".$nombre."</td>"; echo "<td>".$edad."</td>"; echo "<td>".$estatura."</td>"; echo"</tr>";}; }; // cerrando archivo y la tabla html echo "</table>"; fclose($archivo); }; ?> corrida:
Recordar que la caracteristica principal de un archivo secuencial, es que no es posible acceder o accesar a un
registro o renglon especifico o determinado sino que se debera recorrer todos los n-1 renglones anteriores. Esta situacin se da porque al construir un registro cualquiera con una montn de campos strings a la hora de almacenar dichos registros, estos registros tendran tamaos diferentes, esta es la razon principal por la cual al buscar un registro especifico se tiene que recorrer y validar todos los registros anteriores. En el programa ejemplo se esta usando un ciclo while(!eof(ARCHIVO)) para recorrer todos los registros del archivo (eof=end of file), por supuesto que si se tiene un archivo con 5000 registro y el buscado es el 4500 al menos se se tendra que recorrer todos los 4499 registros anteriores. TAREAS PROGRAMACION LINUX PHP Construirles programas de busquedas a los archivos en disco ya construidos.
TEMA 8: FILTROS ARCHIVOS DISCOS LINUX PHP Otro problema similar al anterior es el de filtros, es decir en muchas ocasiones es necesario obtener informacin acerca de un subconjunto de renglones de el archivo. Por ejemplo todos los estudiantes que sean mayores de 17 aos, o todos los clientes que sean de Tijuana, etc., a esto le llamamos filtros o condiciones. Tambien se resuelve de manera similar al anterior, es decir usando un ciclo de lectura de todo el archivo e ir desplegando todos los registros que cumplan la condicion. Prog22.php
ESTATURA >=<INPUT TYPE=text NAME=ESTATURA><BR> <INPUT TYPE=submit NAME=OK VALUE="filtro"><BR> </FORM></HTML> <?php if ($OK == "filtro") { // abriendo archivo $archivo=fopen('alumnos.dat','a+'); // empezando una tabla html para desplegar echo "<HTML><TABLE Border=10 CellPadding=5><TR>"; echo"<th bgcolor=Green>CLAVE</th><th bgcolor=White>NOMBRE</th><th bgcolor=Red>EDAD</th><th bgcolor=YellowRed>ESTATURA</th></TR>"; // leyendo el archivo while (!feof($archivo)){ $clave=fgets($archivo); $nombre=fgets($archivo); $edad=fgets($archivo); $estatura=fgets($archivo); // convirtiendo al mismo tipo settype($estatura,"float"); if ( $estatura >= $ESTATURA){ // desplegando en celda de tabla html echo"<tr>"; echo "<td>".$clave."</td>"; echo "<td>".$nombre."</td>"; echo "<td>".$edad."</td>"; echo "<td>".$estatura."</td>";
echo"</tr>";}; }; // cerrando archivo y la tabla html echo "</table>"; fclose($archivo); }; ?> corrida:
Como se observa es un problema y una solucin similar al tema anterior de busquedas. TAREAS PROGRAMACION ARCHIVOS DISCO LINUX PHP HACERLES PROGRAMAS DE FILTRADO A LOS ARCHIVOS ANTERIORES, PERO LA CONDICION DE BUSQUEDA FORMARLA CON COMPONENTES HTML DE SELECCION(UNO PARA LA VARIABLE Y OTRO PARA EL
OPERADOR RELACIONAL) Y UN COMPONENTE TEXT( PARA EL DATO), ESTO PERMITIRIA QUE SE PUDIERA FILTRAR EL ARCHIVO POR CUALQUIER CAMPO.
TEMA 9: BAJAS O ELIMINACIONES MYSQL Eliminacin o bajas es el proceso por medio del cual algunos registros del archivo son purgados del archivo, existen dos maneras por las cuales se puede realizar ese proceso. En la primera manera de la cual se proporciona el ejemplo correspondiente se usaran dos archivos, el archivo original y un archivo temporal, el procedimiento o algoritmo es muy sencillo, se lee el registro del archivo original y si no es el registro a eliminar entonces se almacena en el archivo temporal, cuando se termina de procesar todo el archivo original, el archivo temporal solo contendra todos los registros que no se quisieron eliminar, ya con estos dos archivo se procede a eliminar o borrar usando la instruccion unlink de php el archivo original y se procede a renombrar usando la instruccin rename de php el archivo temporal como nuevo archivo original. Prog23.html
<HTML> <FORM ACTION=prog23.php METHOD=post> DAME CLAVE A ELIMINAR:<INPUT TYPE=text NAME=CLAVE><BR> <INPUT TYPE=submit NAME=OK VALUE="baja"><BR> </FORM></HTML> <?php
if ($OK == "baja") { // abriendo dos archivos $archivo=fopen('alumnos.dat','a+'); $archt=fopen('temporal.dat','a+') or dye ("no puedo crear archivo") ; // leyendo el archivo original while (!feof($archivo)) { $clave=fgets($archivo); $nombre=fgets($archivo); $edad=fgets($archivo); $estatura=fgets($archivo); // convirtiendo al mismo tipo settype($clave,"integer"); if( $CLAVE != $clave and $clave != 0 ) { // cargando al archivo temporal fputs($archt, $clave."\n"); // ojo aqui ya es string fputs($archt, $nombre); fputs($archt, $edad); fputs($archt, $estatura); }; }; // cerrando los dos archivos fclose($archivo);
fclose($archt); // eliminando archivo original unlink("alumnos.dat"); // renombrando temporal como original rename("temporal.dat","alumnos.dat"); // avisando echo "registro eliminado"; }; ?> Corrida:
EL problema con esta manera de eliminar incluso fisicamente los registros del archivo es que no hay manera de recuperar esa informacin posteriormente. Es por eso que otra tecnica comn de eliminacin es incluir un campo de estado, status o bandera o semaforo en el registro y conforme se va cargando el registro y antes de mandarlo a disco se le agrega a dicho campo el caracter 'A' -->alta, asi que cuando se quiera una baja solo se pondria dicho campo en 'B' y todos los programas de lectura, busqueda y filtros deberan revisar esta campo de estado antes de hacer algo con el registro. TAREAS PROGRAMACION ARCHIVOS DISCO PHP MYSQL :
Construir programas de eliminacion usando los dos metodos( bajas fisicas como en el ejemplo y bajas logicas como se indica en el ultimo parrafo) para los archivos construidos, para este ultimo caso se deberan reconstruir todos los programas anteriores,
TEMA 10: OPERACIONES CON CAMPOS MYSQL En este tema se analiza la manera de poder realizar operaciones o procesos con los campos de los registros en el archivo secuencial, lo unico importante a considerar es que los campos del registro son en cierta medida igual que variables normales y por tanto se pueden proceesar de manera normal como lo muestra el ejemplo. prog24.php
<HTML> <FORM ACTION=prog24.php METHOD=post> OPERACIONES CONVIRTIENDO EDAD A MESES <BR> <INPUT TYPE=submit NAME=OK VALUE="meses"><BR> </FORM></HTML> <?php if ($OK == "meses") { // abriendo dos archivos $archivo=fopen('alumnos.dat','a+'); $archt=fopen('temporal.dat','a+'); // leyendo el archivo original
while (!feof($archivo)) { $clave=fgets($archivo); $nombre=fgets($archivo); $edad=fgets($archivo); $estatura=fgets($archivo); // realizando la operacion $edad=$edad * 12; // cargando al archivo temporal // recordar que float agrega 0 if ($clave !=0){ fputs($archt, $clave); fputs($archt, $nombre); fputs($archt, $edad."\n"); fputs($archt, $estatura); }; }; // cerrando los dos archivos fclose($archivo); fclose($archt); // eliminando archivo original unlink("alumnos.dat"); // renombrando temporal como original rename("temporal.dat","alumnos.dat"); // avisando
corrida:
corrida prog20
como se observa la solucin es muy sencilla solo se ocupa el registro original y los dos archivos el original y el temporal, se va leyendo registro a registro de archivo original al registro en memoria correspondiente, se realiza la operacion u proceso deseado con el registro y se graba el registro modificado en el archivo temporal, al final se elimina archivo original y se renombra el archivo temporal. TAREAS PHP MYSQL : CONSTRUIRLES PROGRAMAS QUE PROCESEN ALGUNOS CAMPOS DE LOS ARCHIVOS EJEMPLOS QUE YA TIENEN CONSTRUIDOS.
TEMA 11: EDICION DE REGISTROS ARCHIVOS Modificar o editar un registro es uno de los procesos mas comunes con archivos en disco, generalmente despues de un fuerte proceso de captura de registros, una revisin o consulta general muestra muchos de ellos con errores de captura. El modelo de programacin cliente-servidor que se est estudiando, facilita mucho este proceso de edicin. 1.- la forma html pide la clave del registro a editar. 2.- el primer evento "BUSQUEDA" es el programa normal de busqueda que ya se construyo en temas anteriores, pero al desplegar el registro se debera construir una forma html completa (llamada forma o pagina dinamica) que incluya los textboxs cargados con los datos del registro, observar que en general este programa lo que hace es construir una segunda forma html con los datos cargados del registro.
3.- el segundo evento "EDICION" es activado y toma los datos de la forma dinamica , los almacena en un registro temporal que va comparando contra el registro original que se va leyendo del archivo original y cuando la clave del registro original y la clave de registro temporal coinciden, entonces es el registro temporal quien se almacena o graba en el archivo temporal. Prog25.php
<HTML> <FORM ACTION=prog25.php METHOD=post> DAME CLAVE A EDITAR:<INPUT TYPE=text NAME=CLAVE><BR> <INPUT TYPE=submit NAME=OK VALUE="busqueda"><BR> </FORM></HTML> <?php if ($OK == "busqueda") { // abriendo archivo $archivo=fopen('alumnos.dat','a+'); // leyendo el archivo while (!feof($archivo)){ $clave=fgets($archivo); $nombre=fgets($archivo); $edad=fgets($archivo); $estatura=fgets($archivo); // convirtiendo al mismo tipo settype($clave,"integer"); settype($CLAVE,"integer"); if ( $CLAVE == $clave){ // construir una forma dinamica echo "<FORM ACTION=prog25.php METHOD=post>";
echo "CLAVE:<INPUT TYPE=text NAME=CLAVE value=$clave><BR>"; // recordar que strings se encadenan con . echo "NOMBRE:<INPUT TYPE=text NAME=NOMBRE value= \"". $nombre."\"><BR>"; echo "EDAD:<INPUT TYPE=text NAME=EDAD value=$edad><BR>"; echo "ESTATURA:<INPUT TYPE=text NAME=ESTATURA value=$estatura><BR>"; echo "<INPUT TYPE=submit NAME=OK VALUE=editar><BR>"; echo "</FORM>"; }; }; // cerrando archivo fclose($archivo); };
if ($OK == "editar") { // abriendo dos archivos $archivo=fopen('alumnos.dat','a+'); $archt=fopen('temporal.dat','a+'); // leyendo original y grabando a temporal while (!feof($archivo)) { $clave=fgets($archivo); $nombre=fgets($archivo); $edad=fgets($archivo); $estatura=fgets($archivo); // convirtiendo al mismo tipo
settype($clave,"integer"); settype($CLAVE,"integer"); if( $CLAVE == $clave and $clave != 0 ) { // grabando registro editado fputs($archt, $CLAVE."\n"); fputs($archt, $NOMBRE."\n"); fputs($archt, $EDAD."\n"); fputs($archt, $ESTATURA."\n"); } elseif ($clave != 0){ // grabando registros almacenados fputs($archt, $clave."\n"); fputs($archt, $nombre); fputs($archt, $edad); fputs($archt, $estatura); }; }; // fin while // cerrando los dos archivos fclose($archivo); fclose($archt); // eliminando archivo original unlink("alumnos.dat"); // renombrando temporal como original rename("temporal.dat","alumnos.dat");
corrida prog20
TAREAS PROGRAMACION LINUX PHP CONSTRUIRLES PROGRAMAS DE EDICION O MODIFICACION A LOS ARCHIVOS YA CONSTRUIDOS.
EMA 12: GRAFICOS PHP Campos de graficos o de imagenes se han convertido en elementos importantes de cualquier base de datos. Para manejar este elemento: 1.- Es un metodo sencillo, primero subir las imagenes ( de preferencia jpg) con un ftp normal a tusitio y al folder public_html. 2.- Usar el tag <img src> de html EN EL PROGRAMA php 3.- agregar un campo de string llamado fotourl o foto o url a el registro en el archivo secuencial y cargarlo con la direccion internet donde quedo la imagen por ejemplo, por ejemplo http://programacionfacil.com/~tusitio/pato.jpg, MUCHO OJO este paso exije que se tengan que reconstruir todos los programas anteriores para incluir este nuevo campo y volver a crear los archivos de ejemplos, aunque es valido grabar solo el NOMBREFOTO.JPG si el programa y el jpg estan juntos en el mismo directorio. prog26.php
<HTML> <FORM ACTION=prog26.php METHOD=post> DAME CLAVE A BUSCAR:<INPUT TYPE=text NAME=CLAVE><BR> <INPUT TYPE=submit NAME=OK VALUE="busqueda"><BR> </FORM></HTML> <?php if ($OK == "busqueda") { // abriendo archivo $archivo=fopen('alumnos.dat','a+'); // empezando una tabla html para desplegar echo "<HTML><TABLE Border=10 CellPadding=5><TR>"; echo"<th bgcolor=Green>CLAVE</th><th bgcolor=White>NOMBRE</th><th bgcolor=Red>EDAD</th><th bgcolor=YellowRed>ESTATURA</th></TR>"; // leyendo el archivo while (!feof($archivo)){ $clave=fgets($archivo); $nombre=fgets($archivo); $edad=fgets($archivo); $estatura=fgets($archivo); $foto=fgets($archivo); // convirtiendo al mismo tipo settype($clave,"integer"); // settype($CLAVE,"integer"); if ( $CLAVE == $clave){ // desplegando en celda de tabla html echo"<tr>";
echo "<td>".$clave."</td>"; echo "<td>".$nombre."</td>"; echo "<td>".$edad."</td>"; echo "<td>".$estatura."</td>"; echo "<td><img src=".$foto."></td>"; echo"</tr>";}; }; // cerrando archivo y la tabla html echo "</table>"; fclose($archivo); }; ?> corrida:
TAREAS ARCHIVOS LINUX PHP : CONSTRUIRLE UN CATALOGO DE PRODUCTOS, EMPLEADOS, ETC., A UNA EMPRESA CUALQUIERA QUE TENGA TODOS LOS PROCESOS VISTOS, PUEDEN SELECCIONAR, REFACCIONARIAS, JOYERIAS, VIDEOS, ETC.
Unidad 6
TEMA 1: INTRODUCCION ARCHIVOS LINUX PHP SE DICE QUE UN ARCHIVO ES DE ACCESO U ORGANIZACION DIRECTA CUANDO PARA ACCEDER A UN REGISTRO N CUALESQUIERA NO SE TIENE QUE PASAR POR LOS N-1 REGISTROS ANTERIIORES. Como se observa de esta definicin los archivos directos tienen una gran ventaja( son mucho mas rapidos) cuando se comparan con los archivos de acceso u organizacion secuencial estudiados en la unidad anterior. Aunque lo anterior no quiere decir que son mejores que los secuenciales, es decir es el propio problema planteado quien exigira una solucion u otra, por ejemplo si se quiere construir un archivo para almacenar los datos de un guestbook, si se construye de manera directa seria muy rapido pero si lo construimos de manera secuencial, se podran almacenar datos con cantidades de informacin mas adecuados al problema. Es decir un archivo de acceso directo tiene que tener sus registros o renglones de un tamao fijo o predeterminado de antemano. Un archivo de acceso directo permite posicionar el apuntador de interno de registros, a cualquier registro determinado sin necesidad de pasar por todos los registros anteriores, usando la siguiente funcion. 1) int fseek(apuntadorarchivo,long offset,origen); Esta funcin posiciona el apuntador de registros en el byte indicado. Offset -> cantidad de bytes Origen: SEEK_SET principio del archivo. SEEK_CUR posicion actual. SEEK_END fin del archivo.
En este proceso se pretende crear un archivo secuencial en disco e insertarle unos cuantos registros. Prog27.php
<HTML> <FORM ACTION=prog27.php METHOD=post> CLAVE:<INPUT TYPE=text NAME=CLAVE><BR> NOMBRE:<INPUT TYPE=text NAME=NOMBRE><BR> EDAD:<INPUT TYPE=text NAME=EDAD><BR> ESTATURA:<INPUT TYPE=text NAME=ESTATURA><BR> <INPUT TYPE=submit NAME=OK VALUE="insertar"><BR> </FORM></HTML> <?php if ($OK == "insertar") { // creando y abriendo archivo $archivo=fopen('datos.dat','a+') or die("no puedo abrir archivo"); // empacando los campos del registro // recordar que la clave debe empezar en 0 // recordar crear y poner en 'A' campo de status ver bajas en unidad anterior $bandera="A"; $registro =pack("IA30idA1",$CLAVE,$NOMBRE,$EDAD,$ESTATURA,$bandera); // grabando el registro fwrite($archivo,$registro,strlen($registro)); //cerrando archivo fclose($archivo); //avisando
notas: La primera observacin es que se esta usando el fopen en modo "a+". Se esta agregando un campo $bandera="A" para resolver el problema de bajas, reestudiar el tema de bajas en la unidad anterior de archivos secuenciales. Recordar que las claves del registro deben coincidir con el numero de rengln del archivo, asi que la serie de claves en archivos random o directos es 0,1,2,3,4,,,n La instrucin de grabacin es: Se debera empacar el registro con la instruccin pack(), recordar que esto se hace para que el registro quede con un tamao fijo, que es uno de los requisitos que debe tener un archivo directo o random. Se empaco con la instruccin: $registro =pack("IA30idA1",$CLAVE,$NOMBRE,$EDAD,$ESTATURA,$bandera);
observar que cada campo debe llevar su propio marcador de empaquetado, por el ejemplo el marcador para enteros es I, el de float es D, el de string es A(tamaostring), desgraciadamente php exige que no lleven espacios en blanco dentro de la primera string de pack(), es por esa razn que se ve una string muy rara, pero revisen cada tipo de variable y observaran que cada una tiene su correspondiente marcador dentro de la primera string de pack(). Los marcadores de pack() mas comunes sn:
A --> empaca strings y rellena con espacios en blanco indicados
I --> empaca unsigned int y usa 4 bytes de almacenamiento i --> empaca signed int y usa 4 bytes de almacenamiento C --> empaca unsigned char y usa ? bytes de almacenamiento l --> empaca signed long y usa 4 bytes de almacenamiento L --> empaca unsigned long y usa 4 bytes de almacenamiento f --> empaca float y usa 4 bytes de almacenamiento ( no usar es mejor usar D) D --> empaca double y usa 8 bytes de almacenamiento Se esta grabando con isntruccin: fwrite($archivo,$registro,strlen($registro)); Fwrite ocupa tres parametros: 1.- el archivo a grabar 2.- el registro a grabar 3.- el tamao del registro: Aqui se esta determinando el tamao del registro con strlen($registro) en lugar de sizeof(registro) como se hace en C, porque pack esta regresando una string binaria. No olvidar cerrar el archivo con: Fclose($archivo);
TAREAS PHP : Construir unos cuantos archivos de datos y cargarlos con este programa.
Como ya se menciono grabar y lectura de registros o estructuras a renglones o registros de archivos en disco. Estos dos procesos son los casos mas comunes y frecuentes que se pueden realizar con un archivo de disco. GRABACION DE UNA ESTRUCTURA A UN ARCHIVO EN DISCO Prog28.php
<HTML> <FORM ACTION=prog28.php METHOD=post> <INPUT TYPE=submit NAME=OK VALUE="consulta"><BR> </FORM></HTML> <?php if ($OK == "consulta") { // tamano registro y cantidad de registros $TR=47;$CR=filesize('datos.dat') / $TR; // creando y abriendo archivo $archivo=fopen('datos.dat','a+') or die("no puedo abrir archivo"); //empezando una tabla html echo "<HTML><TABLE Border=10 CellPadding=5><TR>"; echo"<th bgcolor=Green>CLAVE</th><th bgcolor=White>NOMBRE</th><th bgcolor=Red>EDAD</th><th bgcolor=YellowRed>ESTATURA</th></TR>"; // abriendo en lectura el registro for($x=1; $x<=(int)$CR; $x=$x+1) { // leyendo y desempacando el registro $reg=fread($archivo,$TR); $reg= unpack("iclave/A30nombre/iedad/destatura/A1bandera", $reg);
// desplegando if ($reg[bandera] == "A"){ echo"<tr>"; echo "<td>".$reg[clave]."</td>"; echo "<td>".$reg[nombre]."</td>"; echo "<td>".$reg[edad]."</td>"; echo "<td>".$reg[estatura]."</td>"; echo"</tr>"; }; }; //cerrando archivo y tabla echo "</table>"; fclose($archivo); }; ?>
corrida:
El archivo se abre tambien en "a+". Los datos se desplieganen una tabla html. Se usa un ciclo de lectura for( 1 to cantidad de renglones) observar que el tamao del registro 47 BYTES se debera calcular con la tabla dada en el tema anterior, para este caso es entero 4bytes+ string 30bytes+ entero 4bytes+ float 8bytes+ string 1byte=47, pero si tienen dudas, solo grabar un registro y ver su tamao desde la consola. La cantidad de registros se calculo usando una funcin de php filesize($archivo) que regresa la cantidad de bytes que tiene en total el archivo. Se usa fread(archivo, cantidad de bytes a leer) para cargar la variable que contendra la informacin leida del archivo en disco. Despues se tendra que desempacar la informacin, se esta usando la misma variable para obtener la informacin desempacada. Observar primero: 1.- unpack regresa un ARREGLO ASOCIATIVO(ver este tema en la unidad de arreglos), si en la parte de marcadores de unpack no se ponen los nombres de los campos, el arreglo quedara cargado con indices numericos 1,2,3...n
2.- En la parte de marcadores ahora si se tiene que incluir el separador / entre cada marcador, recordar que aparte del marcador se tendra que incluir el nombre del campo o tendran que usar indices numericos. 3.- Por suspuesto que el empacado pack(int,int,float,string) tiene que corresponder con el desempacado unpack(int,int,float,string) o se va a tener un monton de problemas. Se esta usando un if(bandera) para solo desplegar los registros que estan en ALTA. Y cada campo se debera procesar con el formato normal de ARREGLOS ASOCIATIVOS es decir $nomarreglo[campo] No olvidar cerrar la tabla html y el archivo. TAREAS PROGRAMACION PHP 1.- Cargar y Leer los archivos de disco pedidos en el tema anterior.
TEMA 4: BUSQUEDA ARCHIVOS PHP En este tema se analiza la busqueda de un registro o rengln determinado. En este proceso el usuario del programa quiere que se despliegue un y solo un registro de informacin proporcionando un dato de busqueda generalmente la clave del registro. Recordar que en esta operacin se muestra la diferencia fundamental entre archivos secuenciales y archivos directos, es decir aqui se puede accesar directamente un registro n cualesquiera. Prog29.php
<HTML> <FORM ACTION=prog29.php METHOD=post> DAME CLAVE A BUSCAR:<INPUT TYPE=text NAME=CLAVE><BR> <INPUT TYPE=submit NAME=OK VALUE="BUSCAR"><BR> </FORM></HTML> <?php if ($OK == "BUSCAR") { // tamano registro y cantidad de registros $TR=47; $CR=filesize('datos.dat') / $TR; // creando y abriendo archivo $archivo=fopen('datos.dat','a+') or die("no puedo abrir archivo");
//empezando una tabla html echo "<HTML><TABLE Border=10 CellPadding=5><TR>"; echo"<th bgcolor=Green>CLAVE</th><th bgcolor=White>NOMBRE</th><th bgcolor=Red>EDAD</th><th bgcolor=YellowRed>ESTATURA</th></TR>"; // colocandonos en byte de registro a leer if ( $CLAVE * $TR < filesize('datos.dat') )
{ fseek($archivo, $CLAVE * $TR); // leyendo y desempacando el registro $reg=fread($archivo,$TR); $reg= unpack("iclave/A30nombre/iedad/destatura/A1bandera", $reg); // desplegando if ($reg[bandera] == "A") { echo"<tr>"; echo "<td>".$reg[clave]."</td>"; echo "<td>".$reg[nombre]."</td>"; echo "<td>".$reg[edad]."</td>"; echo "<td>".$reg[estatura]."</td>"; echo"</tr>"; };}; //cerrando archivo y tabla echo "</table>"; fclose($archivo); }; ?> corrida:
El if() antes de la instruccin FSEEK() se esta usando para evitar que se intente leer un rengln del archivo que se encuentre despues del EOF (end of file) del archivo. Como se desprende del programa usando fseek() es posible posicionarse en cualquier byte del archivo. El formato completo de fseek() es: seek(apuntador, clave*tamaoregistro); donde los parametros son: a. apuntador al archivo en disco b. El segundo parametro es el BYTE donde se quiere que empieze la lectura o grabacin al archivo en disco. c. Como va a estar dificil que se le atine a un byte determinado, es por eso que en el programa mejor se deja que sea el propio servidor quien calcule el byte donde empieza un registro determinado con clave * tamao de registro. d. Un tercer parametro que no se ocupo en este programa es a partir de donde se quiere posicionar el apuntador interno del archivo, los valores pueden ser: SEEK_SET principio del archivo. SEEK_CUR posicion actual. SEEK_END fin del archivo.
TAREAS PROGRAMACION LINUX PHP MYSQL Construirles programas de busquedas a los archivos ya construidos.
TEMA 5: FILTROS CONDICIONES ARCHIVOS LINUX PHP Otro problema similar al anterior es el de filtros o condiciones, es decir en muchas ocasiones es necesario obtener informacin acerca de un subconjunto de renglones de el archivo. Por ejemplo todos los estudiantes que sean mayores de 17 aos, o todos los clientes que sean de Tijuana, etc. a esto le llamamos filtros o condiciones. Tambien se resuelve de manera similar a los de archivos secuenciales es decir usando un ciclo de lectura de todo el archivo e ir desplegando todos los registros que cumplan la condicion. Prog30.php
<HTML> <FORM ACTION=prog30.php METHOD=post> EDAD >=<INPUT TYPE=text NAME=EDAD><BR> <INPUT TYPE=submit NAME=OK VALUE="FILTRAR"><BR> </FORM></HTML> <?php if ($OK == "FILTRAR") { // tamano registro y cantidad de registros $TR=47;$CR=filesize('datos.dat') / $TR; // creando y abriendo archivo $archivo=fopen('datos.dat','a+') or die("no puedo abrir archivo"); //empezando una tabla html echo "<HTML><TABLE Border=10 CellPadding=5><TR>"; echo"<th bgcolor=Green>CLAVE</th><th bgcolor=White>NOMBRE</th><th bgcolor=Red>EDAD</th><th bgcolor=YellowRed>ESTATURA</th></TR>"; // abriendo en lectura el registro
for($x=1; $x<=(int)$CR; $x=$x+1) { // leyendo y desempacando el registro $reg=fread($archivo,$TR); $reg= unpack("iclave/A30nombre/iedad/destatura/A1bandera", $reg); // desplegando if ($reg[bandera] == "A" and $reg[edad]>=$EDAD ){ echo"<tr>"; echo "<td>".$reg[clave]."</td>"; echo "<td>".$reg[nombre]."</td>"; echo "<td>".$reg[edad]."</td>"; echo "<td>".$reg[estatura]."</td>"; echo"</tr>"; }; }; //cerrando archivo y tabla echo "</table>"; fclose($archivo); }; ?> corrida:
Como se observa es un problema y una solucin similar al tema anterior de busquedas. PROGRAMACION ARCHIVOS LINUX PHP HACERLES PROGRAMAS DE FILTRADO A LOS ARCHIVOS ANTERIORES, PERO LA CONDICION DE BUSQUEDA FORMARLA CON COMPONENTES HTML DE SELECCION(UNO PARA LA VARIABLE Y OTRO PARA EL OPERADOR RELACIONAL) Y UN COMPONENTE TEXT( PARA EL DATO), ESTO PERMITIRIA QUE SE PUDIERA FILTRAR EL ARCHIVO POR CUALQUIER CAMPO y cualquier operador.
TEMA 6: BAJAS O ELIMINACIONES ARCHIVOS DISCO LINUX PHP Eliminacin o bajas es el proceso por medio del cual algunos registros del archivo son purgados del archivo, existen varias maneras por las cuales se puede realizar ese proceso. Sin embargo en archivos directos no se puede ni se debe eliminar fisicamente registros de los archivos porque recordar que la clave del registro esta enlazada directamente a la posicin que dicho registro tiene en disco y no seria muy conveniente estarle cambiando la matricula al alumno cada rato o el nuemro de serie al auto, etc. Aaprte de que con esta manera de eliminar incluso fisicamente los registros del archivo es que no hay manera de recuperar esa informacin posteriormente. Es por eso que otra tecnica comn de eliminacin es incluir un campo de estado, status o bandera o semaforo en el registro y conforme se va cargando el registro y antes de mandarlo a disco se le agrega a dicho campo el caracter 'A' -->alta, asi que cuando se quiera una baja solo se pondria dicho campo en 'B' y todos los programas de lectura, busqueda y filtros deberan revisar esta campo de estado antes de hacer algo con el registro. Prog31.php
<HTML> <FORM ACTION=prog31.php METHOD=post> DAME CLAVE A ELIMINAR:<INPUT TYPE=text NAME=CLAVE><BR> <INPUT TYPE=submit NAME=OK VALUE="BAJA"><BR> </FORM></HTML> <?php if ($OK == "BAJA") { // tamano registro y cantidad de registros $TR=47; $CR=filesize('datos.dat') / $TR; // creando y abriendo archivo $archivo=fopen('datos.dat','r+') or die("no puedo abrir archivo"); // colocandonos en byte de registro a leer
if ( $CLAVE * $TR < filesize('datos.dat') ) { fseek($archivo, $CLAVE * $TR); // leyendo y desempacando el registro $reg=fread($archivo,$TR); $reg= unpack("iclave/A30nombre/iedad/destatura/A1bandera", $reg); // cambiando la bandera del registro para ponerla en baja $reg[bandera]="B"; // empacando otra vez $reg =pack("IA30idA1",$reg[clave],$reg[nombre],$reg[edad],$reg[estatura], $reg[bandera]); // regresando apuntador al principio del renglon rewind($archivo); fseek($archivo, $CLAVE * $TR); // regrabando registro fwrite($archivo,$reg,strlen($reg)); }; //cerrando archivo fclose($archivo); // avisando echo "REGISTRO ELIMINADO"; }; ?> corrida:
TAREAS PROGRAMACION LINUX PHP : Construir programa de eliminacion usando bajas logicas para los archivos construidos.
TEMA 7: PHP ARCHIVOS Y OPERACIONES CON CAMPOS En este tema se analiza la manera de poder realizar operaciones o procesos con los campos de los registros en el archivo secuencial, lo unico importante a considerar es que los campos del registro son en cierta medida igual que variables normales y por tanto se pueden proceesar de manera normal como lo muestra el ejemplo. Prog32.php
<HTML> <FORM ACTION=prog32.php METHOD=post> <INPUT TYPE=submit NAME=OK VALUE="EDAD+100"><BR> </FORM></HTML> <?php if ($OK == "EDAD+100") { // tamano registro y cantidad de registros $TR=47;$CR=filesize('datos.dat') / $TR; // creando y abriendo archivo $archivo=fopen('datos.dat','r+') or die("no puedo abrir archivo"); // abriendo en lectura el registro for($x=1; $x<=(int)$CR; $x=$x+1) { // leyendo y desempacando el registro $reg=fread($archivo,$TR); $reg= unpack("iclave/A30nombre/iedad/destatura/A1bandera", $reg);
// empacando otra vez $reg =pack("IA30idA1",$reg[clave],$reg[nombre],$reg[edad],$reg[estatura], $reg[bandera]); // regresando apuntador al principio del renglon fseek($archivo, -$TR, SEEK_CUR); // regrabando registro fwrite($archivo,$reg,strlen($reg)); }; //cerrando archivo fclose($archivo); // avisando echo "PROCESO TERMINADO"; }; ?> corrida:
corrida prog28
como se observa la solucin es muy sencilla solo se ocupa: 1.- leer el registro, esto mueve el apuntador al siguiente registro. 2.- modificar registro 3.- regresar a posicin anterior con fseek() 4.- grabar el registro corregido y no se ocupan los dos archivos como en el caso secuencial. TAREAS PROGRAMACION PHP : CONSTRUIRLES PROGRAMAS QUE PROCESEN ALGUNOS CAMPOS DE LOS ARCHIVOS EJEMPLOS QUE YA TIENEN CONSTRUIDOS.
Modificar o editar un registro es uno de los procesos mas comunes con archivos en disco, generalmente despues de un fuerte proceso de captura de registros, una revisin o consulta general muestra muchos de ellos con errores de captura. El modelo de programacin cliente-servidor que se est estudiando, facilita mucho este proceso de edicin. Para este proceso se ocupara una forma html y se ocuparan dos eventos, el procedimiento a seguir es: 1.- la forma html pide la clave del registro a editar. 2.- el primer evento es el programa normal de busqueda que ya se construyo en temas anteriores, pero al desplegar el registro se debera construir una forma html completa(llamada forma o pagina dinamica) que incluya los textboxs cargados con los datos del registro e incluyendo un segundo button=editar o evento2, observar que en general este evento lo que hace es construir una segunda forma html con los datos cargados del registro. 3.- el segundo evento es activado y toma los datos de la forma dinamica, los almacena en el registro en memoria luego se posiciona en el registro en disco a modificar con seek() y se regraba. Prog33.php
<HTML> <FORM ACTION=prog33.php METHOD=post> DAME CLAVE A BUSCAR:<INPUT TYPE=text NAME=CLAVE><BR> <INPUT TYPE=submit NAME=OK VALUE="BUSCAR"><BR> </FORM></HTML> <?php if ($OK == "BUSCAR") { // tamano registro y cantidad de registros $TR=47; $CR=filesize('datos.dat') / $TR; // creando y abriendo archivo $archivo=fopen('datos.dat','a+') or die("no puedo abrir archivo");
// colocandonos en byte de registro a leer if ( $CLAVE * $TR < filesize('datos.dat') ) { fseek($archivo, $CLAVE * $TR); // leyendo y desempacando el registro $reg=fread($archivo,$TR); $reg= unpack("iclave/A30nombre/iedad/destatura/A1bandera", $reg); // construyendo forma dinamica echo "<FORM ACTION=prog33.php METHOD=post>"; echo "CLAVE:<INPUT TYPE=text NAME=CLAVE value=$reg[clave]><BR>"; // recordar que strings se encadenan con . echo "NOMBRE:<INPUT TYPE=text NAME=NOMBRE value= \"". $reg[nombre]."\"><BR>"; echo "EDAD:<INPUT TYPE=text NAME=EDAD value=$reg[edad]><BR>"; echo "ESTATURA:<INPUT TYPE=text NAME=ESTATURA value=$reg[estatura]><BR>"; echo "<input type=hidden name=bandera value=$reg[bandera]>"; echo "<INPUT TYPE=submit NAME=OK VALUE=editar><BR>"; echo "</FORM>"; }; //cerrando archivo fclose($archivo); };
$archivo=fopen('datos.dat','r+') or die("no puedo abrir archivo"); // empacando los campos del registro $registro =pack("IA30idA1",$CLAVE,$NOMBRE,$EDAD,$ESTATURA,$bandera); // colocandonos en posicion // tamano registro y cantidad de registros $TR=47; $CR=filesize('datos.dat') / $TR; // colocandonos en byte de registro a grabar if ( $CLAVE * $TR < filesize('datos.dat') ) { fseek($archivo, $CLAVE * $TR); // grabando fwrite($archivo,$registro,strlen($registro)); }; //cerrando archivo fclose($archivo); //avisando echo "registro editado<br>"; }; ?> Corrida:
Observar que es el programa normal de busqueda pero el despliegue se realiza construyendo una pagina o forma dinamica que se llama a si misma (action=prog33.php) como se observa en la corrida: Este es el programa que activa la forma dinamica y que actualiza el registro editado en el archivo en disco, la logica de este programa ya se explico en el tercer parrafo de este tema. Corrida prog28.php
TAREAS PHP MYSQL SUGERIDOS CONSTRUIRLES PROGRAMAS DE EDICION O MODIFICACION A LOS ARCHIVOS YA CONSTRUIDOS.
TEMA 9: GRAFICOS ARCHIVOS DISCO PHP Campos de graficos o de imagenes se han convertido en elementos importantes de cualquier base de datos. Para manejar este elemento: 1.- Es un metodo sencillo, primero subir las imagenes ( de preferencia jpg) con un ftp normal a tusitio y al folder public_html. 2.- Usar el tag <img src> de html EN EL PROGRAMA 3.- agregar un campo de string llamado fotourl o foto o url a el registro en el archivo secuencial y cargarlo con la direccion internet donde quedo la imagen por ejemplo, por ejemplo http://programacionfacil.com/~tusitio/pato.jpg, MUCHO OJO este paso exije que se tengan que reconstruir todos los programas anteriores para incluir este nuevo campo y volver a crear los archivos de ejemplos. Aunque es posible solo poner en este campo foto solo el nombre de la imagen jpg, por ejemplo oso.jpg, si el programa y el jpg estan juntos en el mismo directorio no hay problemas en img src para desplegar, pero tambien se puede incluir en la instruccion echo de despliegue el http de la foto ejemplo echo "<img src=http://programacionfacil.com/folder/".$foto etcetera Prog 34.php
<HTML> <FORM ACTION=prog34.php METHOD=post> DAME CLAVE A BUSCAR:<INPUT TYPE=text NAME=CLAVE><BR> <INPUT TYPE=submit NAME=OK VALUE="BUSCAR"><BR> </FORM></HTML> <?php if ($OK == "BUSCAR") { // tamano registro y cantidad de registros $TR=67; $CR=filesize('datos.dat') / $TR; // creando y abriendo archivo $archivo=fopen('datos.dat','a+') or die("no puedo abrir archivo");
//empezando una tabla html echo "<HTML><TABLE Border=10 CellPadding=5><TR>"; echo"<th bgcolor=Green>CLAVE</th><th bgcolor=White>NOMBRE</th><th bgcolor=Red>EDAD</th><th bgcolor=YellowRed>ESTATURA</th></TR>"; // colocandonos en byte de registro a leer if ( $CLAVE * $TR < filesize('datos.dat') ) { fseek($archivo, $CLAVE * $TR); // leyendo y desempacando el registro $reg=fread($archivo,$TR); $reg= unpack("iclave/A30nombre/iedad/destatura/A1bandera/A20foto", $reg); // desplegando if ($reg[bandera] == "A") { echo"<tr>"; echo "<td><img src=".$reg[foto]."></td>"; echo "<td>".$reg[clave]."</td>"; echo "<td>".$reg[nombre]."</td>"; echo "<td>".$reg[edad]."</td>"; echo "<td>".$reg[estatura]."</td>"; echo"</tr>"; };}; //cerrando archivo y tabla echo "</table>"; fclose($archivo); }; ?>
corrida:
TAREAS ARCHIVOS PHP : CONSTRUIR UN SISTEMA COMPLETO al menos con dos archivos QUE TENGA TODOS LOS PROCESOS VISTOS, PUEDEN SELECCIONAR, REFACCIONARIAS, JOYERIAS, VIDEOS, ETC.
Unidad 7
TEMA 1: INTRODUCCIN MYSQL En este capitulo se analizan en general dos problemas: a) Variables que permitan almacenar conjuntos de datos como los arreglos pero con distintos tipos de datos, este primer problema se resolva en la antigedad usando las llamadas variables registro. b) Permanencia de los datos, hasta ahora todos los datos capturados, calculados, creados, etc., al terminar o cerrarse el programa se pierden y es necesario volver a capturarlos en la siguiente ejecucin o corrida del programa. Tradicionalmente en programacin antigua, este segundo problema se resolva usando el concepto de archivos, que son medios permanentes de almacenamiento de datos en dispositivos o perifricos apropiados generalmente disco, cinta magntica, etc.
En general existen dos modelos de almacenamiento de datos en los sistemas de informacin. a) El modelo tradicional de archivos que se construye con los siguientes elementos: 1.- Variables Registros, que como ya se indico son variables que permiten almacenar conjuntos de datos de diverso tipo. Tambin se pueden definir como representaciones simblicas y programticas de entidades lgicas de informacin ejemplos de variables registros son alumnos, empleados, clientes, proveedores, productos, autos, etc. Estas variables registros tambin ocupan programas o rutinas de programas para procesarlas por ejemplo un procedimiento, modulo o subrutina se encargara de capturar los datos que contendr la variable registro otro procedimiento para corregir los datos que ya contiene, otro procedimiento para desplegarlos en pantalla ya cuando a sido capturada y as sucesivamente. 2.-Archivos, que en principio pueden entenderse como una especie de almacenes o bodegas para almacenamiento de datos en forma permanente en disco es decir, un archivo de empleados en disco contiene todos los datos de todos los empleados de una empresa. Igualmente los archivos ocupan su propios programas o subrutinas o procedimientos especializados por ejemplo, procedimientos para crear los archivos, para almacenar o dar de altas los registros en el archivo, procedimientos para buscar un registro determinado, procedimiento para dar de baja un registro, etc. 3.- Una aplicacin que es un programa que se encarga de coordinar todos los programas descritos y presentar a usuarios de manera clara, fcil, accesible y entendible. Salta a la vista que construir un sistema de informacin por ejemplo para una tienda de vdeo o para un refaccionaria etcetera, involucra un gran cantidad de trabajo de programacin puesto que hay que programar muchas variables registros, muchos archivos en disco y construir una o muchas aplicaciones. Este modelo se usa todava en la actualidad pero es obvio que mejores maneras, mas rpidas, seguras y eficientes
existen en la actualidad para resolver estos problemas, y esto nos lleva al segundo modelo de datos. b) Modelo de Bases de Datos Relacinales: este modelo intenta simplificar la construccin de sistemas de informacin como los antes descritos, este modelo solo incluye en forma simple los siguientes elementos: b.1) Tablas, es una combinacin de las variables registro y de los archivos del modelo anterior. Es decir cuando un programador moderno define o declara una tabla en un programa realmente esta haciendo dos cosas por el precio de una es decir, crea una variable registro en memoria que almacenara los datos y al mismo tiempo ya esta creando un archivo en disco que se llamara igual que la tabla y que automticamente se convertir en un espejo de la tabla en memoria es decir, cuando se cargan los datos en la tabla en memoria tambin se estarn cargando en disco. Otra vez cuando el programador escribe cdigo para capturar los datos y mandarlos a la tabla en pantalla-memoria, realmente tambin lo esta haciendo para darlos de alta en disco. b.2) Aplicacin, que tiene la misma funcin que en el modelo anterior. No confundir este concepto de tablas en base de datos con el concepto de tablas vistos en el capitulo de arreglos. Como se observa en este modelo es mas sencillo construir sistemas de informacin puesto que la parte programtica se reduce ampliamente y es este enfoque el que se implementa con php mysql
Una Tabla simple, representa una unidad de informacin de una entidad fsica o lgica de informacin: ej.: Tabla Empleado:
Clave Empleado Nombre Empleado Direccin Empleado Edad Empleado Telfono Empleado etc. Empleado
Tabla Proveedor:
Clave Proveedor Nombre Proveedor Empresa Proveedor Telfono Proveedor Fax Proveedor Celular Proveedor etc. Proveedor
Tabla Autos:
REGLAS: Observar que cada tabla empieza con una clave generalmente de tipo numrica. Todos los elementos de la tabla referencian directamente al mismo ente o sujeto de informacin. Cada elemento debe ser atomico es decir solo podra contener un y solo un datum de informacin.
No se respetan o siguen al pie de la letra estos tres postulados y empiezan los problemas al tiempo de programacin.
Tabla: Camisas
SA
MATERIAL ALGODON
POLIESTER RARON
Tabla: Clientes
NUMCLIENTE 1 2 3
Recordar siempre, una tabla almacena o representa un conjunto de datos de la misma entidad, la tabla de alumnos es para almacenar y manipular muchos alumnos, la tabla de productos es para almacenar y manipular muchos alumnos, en resumen si en un problema de informacin solo se presenta una instancia o rengln de una entidad lgica, entonces no es tabla, es un encabezado. TAREAS PHP 1.-CONSTRUIR EN CUADERNO LAS SIGUIENTES TABLAS, LA MITAD DE ELLAS CON EL PRIMER FORMATO Y LA SEGUNDA MITAD CON EL SEGUNDO FORMATO. 1.- PACIENTES 2.- PERROS
3.- PLUMAS 4.- MERCANCAS 5.- PELCULAS 6.- MEDICINAS 7.- MAESTROS 8.- MATERIAS 9.- COMPUTADORAS 10.- BANCOS
TEMA 4: PHP TABLAS MYSQL (CONTINUACIN) El trabajo correcto con bases de datos relacinales se divide en dos grandes pasos o etapas bien diferenciadas entre si:
En la primera etapa se disea la tabla con sus campos, llaves y condiciones especiales, luego se usa un paquete o programa de software especializado en la construccin, mantenimiento y administracin de la base de datos, este software se usa para convertir la tabla o tablas ya bien diseadas en un archivo en disco. Existe software especializado en bases de datos, los llamados servidores de bases de datos, los tres mas comunes son SQL-SERVER de Microsoft, ORACLE Server de Oracle, MYSQL Open Source, en estos casos la base de datos( o conjunto de tablas que tienen relaciones comunes entre si) residen en un servidor de bases de datos especializado en algun lugar cercano o lejano en una red chica, mediana o grande. Otros paquetes o software mas pequeos y comunes tambien reciben el nombre de DBMS(DATA BASE MANAGEMENT SYSTEM) o sistemas administradores de bases de datos. Este tipo de software se especializa en la creacin, mantenimiento, seguridad, privacidad, etc. de un conjunto de tablas o mejor dicho una base de datos, DBMS comunes son access, fox, clipper, etc. Usaremos MYSQL como nuestro generador de bases de datos y recordar que una base de datos es en principio un conjunto de tablas que tienen y mantienen relaciones entre si. La segunda etapa consiste en construir la aplicacin o aplicaciones que ya tendrn acceso o podrn manipular los datos contenidos en la tabla, estas aplicaciones se escriben usando ya sea lenguajes clsicos de programacin como CPP, BASIC, PASCAL, COBOL, CBUILDER, DELPHI, JAVA, VBSCRIPT, PERL, JSCRIPT, CSHARP, etc. DISEO Y CREACIN DE UNA TABLA El primer paso antes de usar el paquete correspondiente a esta tarea, es disear la tabla completamente, esto exige: a) Nombre apropiado y determinacin de atributos y campos correspondientes. b) Seleccionar y determinar el atributo principal o campo clave o llave primaria que se utilizara como el identificador nico que permite diferenciar cada instancia o rengln diferente dentro de la tabla. c) Tambin se puede seleccionar otros campos que puedan servir mas adelante para ordenar de manera diferente la tabla, es decir una tabla en principio ya est ordenada por campo clave por ejemplo, la matricula de un alumno, el numero de empleado, etc., pero existirn muchas ocasiones, mas adelante donde se puede pedir un orden diferente, por ejemplo, por ciudad, por carrera, por nombre, por edad, etc., la buena ingeniera de una base de datos exige tomar en cuenta estos y otros muchos problemas y detalles. d) A estos atributos o campos especiales se les conoce como claves o llaves secundarias, que internamente generan otra tabla especial llamada tabla o archivo de ndices(tabla o archivo que contiene dos campos, el primero es la clave secundaria ordenada y el segundo la posicin o rengln donde se encuentra en la tabla original).
e) Escribir restricciones y condiciones apropiadas para ciertos atributos, por ejemplo el nmero de empleado deben comenzar en 500, la edad no debe ser mayor de 150 aos, etc. Ya listo el diseo de la tabla, se usara el procedimiento correspondiente para su creacin y almacenamiento. Recordar ademas que todo el trabajo ya sea directamente con la base de datos y la tabla o por medio de un programa se realizara usando SQL (lenguaje estructurado de consultas), asi que todas las instrucciones raras que se analizan en el siguiente tema, estan
construidas con SQL, es decir consigan un buen tutorial de SQL y vayan aprendiendoselo.
TEMA 5: PHP MYSQL En este ejercicio construiremos una base de datos llamada mibase que solo contendra una tabla llamada mitabla con campos clave, nombre, edad, estatura mismos que se estaran usando a lo largo de esta unidad a manera de ejemplo. 1.- TELNET a tu sitio en tu propio servidor linux o tu web hosting con PUTTY (programa para realizar telnet's) y dar la orden:
>mysql -unombreusuario -ppassword Esto con el fin de abrirnos una sesion de mysql, como lo muestra el siguiente ejemplo:
2.- Recordar que usuarios y passwords de mysql son diferentes que usuarios y passwords de linux's. Con este paso ya estaremos dentro del prompt de mysql. (MYSQL>) 3.- El paso que sigue es mandar instrucciones sql apropiadas ( ya leyeron el tutorial de sql) para crear nuestra base de datos, para este ejercicio usaremos la instruccion: create database mibase; -->observar que todas las instrucciones de sql terminan con ;
4.- Se uso ademas la instruccion show databases; para ver cuantas bases de datos tenemos construidas en nuestro sitio en programacionfacil.com observar que el sistema crea una default llamada test. 5.- El paso que sigue es seleccionar la base de datos a trabajar con la instruccion sql (ya leyeron el tutorial): use mibase; y luego construiremos nuestra primera tabla, llamada mitabla con la instruccion sql(ya leyeron el tutorial): create table mitabla ( clave mediumint auto_increment, nombre varchar(30), edad int, estatura float, primary key(clave) );
Los tipos de datos que pueden usar en mysql son: TINYINT, SMALLINT, MEDIUMINT, INT, INTEGER, BIGINT, REAL, DOUBLE, FLOAT, DECIMAL, NUMERIC, CHAR, VARCHAR, DATE, TIME, TIMESTAMP, DATETIME, TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB, TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT,ENUM(value1,value2,value3,...), SET(value1,value2,value3,...),MySQL Reference Manual (C) 2002 MySQL AB En cuanto a autoincrement se usa para que mysql vaya asignando la clave automaticamente y primary key(clave) es para indicarle a mysql que clave es el campo llave o principal de la tabla (ver mi tutorial de mysql en programacionfacil en cuento este listo :)
6.- Ahora se cargan algunos renglones de prueba en la tabla con la instruccin sql(ya leyeron el tutorial de sql); mysql> insert into mitabla (nombre,edad,estatura) values( ->"oso",10,1.67);
7.- agregar uno dos o tres renglones para pruebas a la tabla, para finalizar revisar como quedo cargada la tabla con la instruccin sql: mysql>select * from mitabla;
8.- Usar QUIT para terminar la sesion de mysql y usar EXIT para terminar la sesion del putty.
TEMA 6: FUNCIONES MYSQL Mysql es un servidor de bases de datos muy rico en funciones, instrucciones y objetos, muchos de las cuales se estaran usando a lo largo de los programas en esta unidad. Las principales funciones que se usaran algunas son: mysql_affected_rows - Get number of affected rows in previous MySQL operation mysql_change_user - Change logged in user of the active connection mysql_client_encoding - Returns the name of the character set mysql_close - Close MySQL connection mysql_connect - Open a connection to a MySQL Server mysql_create_db - Create a MySQL database mysql_data_seek - Move internal result pointer mysql_db_name - Get result data mysql_db_query - Send a MySQL query mysql_drop_db - Drop (delete) a MySQL database mysql_errno - Returns the numerical value of the error message from previous MySQL operation mysql_error - Returns the text of the error message from previous MySQL operation mysql_escape_string - Escapes a string for use in a mysql_query. mysql_fetch_array - Fetch a result row as an associative array, a numeric array, or both. mysql_fetch_assoc - Fetch a result row as an associative array mysql_fetch_field - Get column information from a result and return as an object mysql_fetch_lengths - Get the length of each output in a result mysql_fetch_object - Fetch a result row as an object mysql_fetch_row - Get a result row as an enumerated array
mysql_field_flags - Get the flags associated with the specified field in a result mysql_field_len - Returns the length of the specified field mysql_field_name - Get the name of the specified field in a result mysql_field_seek - Set result pointer to a specified field offset mysql_field_table - Get name of the table the specified field is in mysql_field_type - Get the type of the specified field in a result mysql_free_result - Free result memory mysql_get_client_info - Get MySQL client info mysql_get_host_info - Get MySQL host info mysql_get_proto_info - Get MySQL protocol info mysql_get_server_info - Get MySQL server info mysql_info - Get information about the most recent query mysql_insert_id - Get the ID generated from the previous INSERT operation mysql_list_dbs - List databases available on a MySQL server mysql_list_fields - List MySQL table fields mysql_list_processes - List MySQL processes mysql_list_tables - List tables in a MySQL database mysql_num_fields - Get number of fields in result mysql_num_rows - Get number of rows in result mysql_pconnect - Open a persistent connection to a MySQL server mysql_ping - Ping a server connection or reconnect if there is no connection mysql_query - Send a MySQL query mysql_real_escape_string - Escapes special characters in a string for use in a SQL statement, taking into account the current charset of the connection. mysql_result - Get result data mysql_select_db - Select a MySQL database mysql_stat - Get current system status mysql_tablename - Get table name of field mysql_thread_id - Return the current thread ID mysql_unbuffered_query - Send an SQL query to MySQL, without fetching and buffering the result rows
TEMA 7: MYSQL SQL SELECT CONSULTA O DESPLIEGUE Existen una serie de operaciones y procesos que son muy comunes contra una tabla en una base de datos en disco, la mas comn es desplegar todos los renglones de la tabla que estan almacenados en disco, a este proceso le llamaremos SELECCION, consulta o despliegue. Como se indico anteriormente la comunicacin con la base de datos se tendran que dar usando el lenguaje especializado de bases de datos llamado SQL(structured query language), la instruccin sql que se usa para resolver este problema tiene el siguiente formato: SELECT [listacampos, * o ALL] FROM TABLA; El procedimiento que se intenta seguir cuando se construya un programa asp.net que tenga que manipular una tabla en disco debera seguir los siguientes pasos:
1.- Crear una coneccin o enlace a la base de datos.
2.- Abrir la coneccin a la base de datos. 3.- Crear el enlace y cargarlo con la instruccion sql 4.- Crear un arreglo y cargarlo 5.- Cargar un objeto table de html con el dataset
6.- Procesar el table de html (editar un renglon, agregar un renglon, modificar un renglon, etc) 7.- Cerrar la coneccin
prog35.php
<HTML> <FORM ACTION=prog35.php METHOD=post> <INPUT TYPE=submit NAME=OK VALUE="SELECT"><BR> </FORM></HTML> <?php if ($OK == "SELECT") {
// coneccion al servidor de bases de datos $dbh=mysql_connect ("localhost", "lsoto_lauro", "lauro2004") or die ('problema conectando porque :' . mysql_error());
# empezando una tabla html echo "<HTML><TABLE Border=10 CellPadding=5><TR>"; # construyendo los encabezados de la tabla echo "<th bgcolor=Green>CLAVE</th><th bgcolor=White>NOMBRE</th><th bgcolor=Red>EDAD</th><th bgcolor=blue>ESTATURA</th></TR>";
// ciclo de lectura del rowset($tabla1) while($renglon = mysql_fetch_row($tabla1)) { // desplegando en celda de tabla html echo"<tr>"; echo "<td>".$renglon[0]."</td>"; echo "<td>".$renglon[1]."</td>"; echo "<td>".$renglon[2]."</td>"; echo "<td>".$renglon[3]."</td>"; echo"</tr>"; }; // cerrando tabla html echo "</table>"; }; ?> Corrida:
notas: 1.- revisar con cuidado el programa, proque como todo buen programa lleva incluida mucha documentacin o explicacin. 2.- Se sigue el procedimiento generico para procesar tablas 3.- Se empieza creando la forma, objetos y eventos normales para el programa. 4.- Se crea y carga una conneccion o enlace a el servidor mysql de bases de datos con la instruccin: $dbh=mysql_connect ("localhost", "USUARIO", "PASSWORD") or die ('problema conectando porque :' . mysql_error());
$dbh => un convencin en bases de datos, que siginifica database handle (alias a base de datos)
mysql->connect() => Funcin para enlazarse a el servidor de base de datos, sus argumentos o parametros son: Primero localhost(este es el servidor de web donde se encuentra la base de datos).
El segundo parametro 'USUARIO' es el usuario de la base de datos y el tercer parametro 'PASSWORD' es el password para la base de datos. 5.- Luego seleccionamos la base de datos a usarse con: mysql_select_db ("lsoto_mibase",$dbh); 6.- Se crea una string $q, que contendra la instruccion SQL apropiada. $q = 'select * from tabla1'; 7.- La instruccin $mysql_query(); se entiende que esta mandando o ejecutando la instruccin SQL a la base de datos. ES MUY IPORTANTE ENTENDER QUE DE LAS CUATRO INSTRUCCIONES PRINCIPALES DE SQL (SELECT,INSERT,UPADTE,DELETE), SOLO SELECT REGRESA UNA TABLA VIRTUAL ( QUE EN MYSQL RECIBE EL NOMBRE DE ROWSET) DESDE EL SERVIDOR DE BASES DE DATOS AL PROGRAMA. SIEMPRE QUE SE USE UN $mysql_query(select)SE DEBERA IGUALAR A UNA VARIABLE, PARA QUE ESTA ULTIMA ALMACENE LA TABLA VIRTUAL O ROWSET DE REGRESO, POR SUPUESTO QUE LOS OTROS PROCESOS(DELETE,INSERT,UPDATE) NI REGRESAN NI OCUPAN LA TABLA VIRTUAL. Observar que esta usando la variable $dbh que se cargo con la coneccin a la base de datos. 8.- Luego se usa mysql_fetch_row($tabla1) para leer el primer rengln de la tabla y se carga cada columna o dato del rengln a un arreglo asociativo llamado $renglon. 9.- Se esta usando un ciclo while(fetchrow()) para leer todos los renglones de la tabla, fetchrow cada vez que lee un rengln regresa o el arreglo asociativo o regresa FALSE cuando no hay mas aareglos para leer. 10.- Observar que para accesar los renglones del arreglo se usa un indice numerico, empezando en cero(0), si se quiere usar los nombres de los campos normales, se tendria que leer la tabla virtual con la instruccin $renglon= mysql_fetch_assoc($tabla1), que funciona igual que mysql_fetchrow(), excepto que para accesar los campos ya se puede usar $renglon['clave'], $renglon['nombre']. Etc. PERO EN ESTOS EJEMPLOS ESTOY USANDO INDICES NUMERICOS PORQUE ES MAS CORTO, MAS SENCILO Y MAS APROPIADO EN PROGRAMACION, SIENTANSE LIBRES DE USAR INDICES NUMERICOS CON FETCHROW O INDICES NORMALES CON FETCH_ASSOC. TAREAS PROGRAMACION MYSQL PHP 1.- construir y desplegar una primera base de datos que contenga la primera tabla que disearn en el tema de tablas.
2.- Construir una segunda base de datos que contenga cuando menos tres de las tablas ya diseadas y desplegar cualquiera de ellas usando una sola forma html, donde el usuario selecciona cual quiere desplegar.
TEMA 8: SQL INSERT INSERCION MYSQL Insertar o agregar registros o renglones nuevos a una tabla en disco, es un proceso sencillo que usa la siguiente instruccin sql: INSERT INTO TABLA(CAMPO1,CAMPO2..) VALUES(VALOR1,VALOR2..) Recordar que solo se esta usando lo minimo de cada instruccin sql, es conveniente estudiar un tutorial de sql. Prog36.php
<HTML> <FORM ACTION=prog36.php METHOD=post> NOMBRE:<INPUT TYPE=text NAME=NOMBRE><BR> EDAD:<INPUT TYPE=text NAME=EDAD><BR> ESTATURA:<INPUT TYPE=text NAME=ESTATURA><BR> <INPUT TYPE=submit NAME=OK VALUE="INSERT"><BR> </FORM></HTML> <?php if ($OK == "INSERT") { // coneccion al servidor de bases de datos $dbh=mysql_connect ("localhost", "lsoto_lauro", "lauro2004") or die ('problema conectando porque :' . mysql_error()); // seleccionado la base de datos mysql_select_db ("lsoto_mibase",$dbh); //construyendo insert $q="INSERT INTO tabla1 (nombre,edad,estatura) VALUES ('".$NOMBRE."',". $EDAD.",".$ESTATURA.") ;"; // ejecutando el query
$tabla1= mysql_query($q, $dbh) or die ("problema con query"); //avisando echo "registro insertado <br>"; }; ?>
Corrida:
notas: 1.- El programa esta bien documentado :) 2.- La clave no se captura porque recordar que es de tipo autoincrement y MYSQL las va creando e incrementado. 3.- Recordar tambien que la primera clave es la numero 1(uno). TAREAS PHP MYSQL : 1.- construir muchos programas de inserccin en las tablas de las bases de datos que tengan construidas
En este tema se analiza la busqueda de un registro o rengln determinado en este proceso el usuario del programa quiere que se despliegue un y solo un registro de informacin proporcionando un dato de busqueda generalmente la clave del registro. La solucion es sencilla, solo usar otra vez la instruccion select, con el siguiente formato: SELECT [ *, all, campos] FROM TABLA WHERE clave=claveabuscar les recuerdo que deben buscar y estudiar un buen tutorial de sql. Codigo prog37.php
<HTML> <FORM ACTION=prog37.php METHOD=post> DAME CLAVE A BUSCAR:<INPUT TYPE=text NAME=CLAVE><BR> <INPUT TYPE=submit NAME=OK VALUE="SELECT"><BR> </FORM></HTML> <?php if ($OK == "SELECT") { // coneccion al servidor de bases de datos $dbh=mysql_connect ("localhost", "lsoto_lauro", "lauro2004") or die ('problema conectando porque :' . mysql_error()); // seleccionado la base de datos mysql_select_db ("lsoto_mibase",$dbh); // preparando la instruccion sql $q = "select * from tabla1 where clave=".$CLAVE; // ejecutando el query $tabla1= mysql_query($q, $dbh) or die ("problema con query"); # empezando una tabla html echo "<HTML><TABLE Border=10 CellPadding=5><TR>";
# construyendo los encabezados de la tabla echo "<th bgcolor=Green>CLAVE</th><th bgcolor=White>NOMBRE</th><th bgcolor=Red>EDAD</th><th bgcolor=blue>ESTATURA</th></TR>"; // ciclo de lectura del rowset($tabla1) while($renglon = mysql_fetch_row($tabla1)) { // desplegando en celda de tabla html echo"<tr>"; echo "<td>".$renglon[0]."</td>"; echo "<td>".$renglon[1]."</td>"; echo "<td>".$renglon[2]."</td>"; echo "<td>".$renglon[3]."</td>"; echo"</tr>"; }; // cerrando tabla html echo "</table>"; }; ?> Corrida:
nota: no hay nada nuevo es una combinacin de los dos programas anteriores con las mismas notas solo se usa un input text para pedir la clave aunque se puede usar cualquier campo para buscar. TAREAS PROGRAMACION PHP MYSQL 1.- hacer programas de busquedas( select ) para las bases y tablas que tengan
TEMA 10: FILTROS MYSQL SELECT Otro problema similar al anterior es el de filtros es decir en muchas ocasiones es necesario obtener informacin acerca de un subconjunto de renglones de la tabla. Por ejemplo todos los estudiantes que sean mayores de 17 aos, todos los clientes que sean de Tijuana, etc., a esto le llamamos filtros o condiciones. Tambien se resuelve de manera similar al anterior, es decir usando la instruccin select etc, from tabla, where
<HTML> <FORM ACTION=prog38.php METHOD=post> EDAD >= <INPUT TYPE=text NAME=EDAD><BR> <INPUT TYPE=submit NAME=OK VALUE="FILTRO"><BR> </FORM></HTML> <?php if ($OK == "FILTRO") { // coneccion al servidor de bases de datos $dbh=mysql_connect ("localhost", "lsoto_lauro", "lauro2004") or die ('problema conectando porque :' . mysql_error()); // seleccionado la base de datos mysql_select_db ("lsoto_mibase",$dbh); // preparando la instruccion sql $q = "select * from tabla1 where edad >= ".$EDAD; // ejecutando el query $tabla1= mysql_query($q, $dbh) or die ("problema con query"); # empezando una tabla html
echo "<HTML><TABLE Border=10 CellPadding=5><TR>"; # construyendo los encabezados de la tabla echo "<th bgcolor=Green>CLAVE</th><th bgcolor=White>NOMBRE</th><th bgcolor=Red>EDAD</th><th bgcolor=blue>ESTATURA</th></TR>"; // ciclo de lectura del rowset($tabla1) while($renglon = mysql_fetch_row($tabla1)) { // desplegando en celda de tabla html echo"<tr>"; echo "<td>".$renglon[0]."</td>"; echo "<td>".$renglon[1]."</td>"; echo "<td>".$renglon[2]."</td>"; echo "<td>".$renglon[3]."</td>"; echo"</tr>"; }; // cerrando tabla html echo "</table>"; }; ?>
Nota: siguen siendo combinaciones de los programas anteriores pero seria prudente mejor usar dos combobox uno para la variable, otro para el operador relacional y un text para el dato y mandar estos tres datos al prog38.php pero eso queda de tarea. Corrida:
TAREAS PROGRAMACION PHP MYSQL 1.- preparar programas de filtrado para sus bases de datos, recordar que sus formas html's deben construirlas con 2 combos y un text, suerte
TEMA 11: OPERACIONES CON CAMPOS SQL UPDATE MYSQL Este es tambien un caso comun con elementos de una tabla, sin embargo es tambien facil de resolver. Es necesario recordar primero algunas cosas elementales: 1.- Se usa la instruccin SQL UPDATE. 2.- Recordar que en SQL si no se usa la clausula where, entonces se estara trabajando contra todos los renglones de la tabla, es decir: select * from tabla --> es traerse toda la tabla en disco a tabla virtual select * from tabla where nombre='juan' ---> es solo traerse el renglon juan
UPDATE TABLA SET NOMBRE='PEPE' WHERE CLAVE =8 -> es cambiar el nombre a pepe del renglon que tiene de clave el 8 $q = "update tabla1 set edad = edad + 100 "; ->como no hay where, entonces todos los campos edad de la tabla se cambian a edad+100 Prog39.php
<HTML> <FORM ACTION=prog39.php METHOD=post> <INPUT TYPE=submit NAME=OK VALUE="EDAD+100"><BR> </FORM></HTML> <?php if ($OK == "EDAD+100") {
// coneccion al servidor de bases de datos $dbh=mysql_connect ("localhost", "lsoto_lauro", "lauro2004") or die ('problema conectando porque :' . mysql_error()); // seleccionado la base de datos
mysql_select_db ("lsoto_mibase",$dbh); // preparando la instruccion sql $q = "update tabla1 set edad = edad + 100 "; // ejecutando el query mysql_query($q, $dbh) or die ("problema con query"); // avisando echo "OPERACION TERMINADA"; }; ?>
corrida
corrida prog35.php
TAREA PROGRAMACION MYSQL UPDATE : 1.- construir una tabla que traiga matricula, nombre, calif1, calif2 y promedio, cargar en mysql directamente unos 5 renglones de alumnos, no cargar promedio, el promedio lo deberan calcular con un programa.
TEMA 12: BAJA O ELIMINACION SQL DELETE MYSQL Eliminacin es otro proceso simple y comun con las bases de datos el modelo MYSQL que estamos usando hace este tipo de operaciones muy faciles: La instruccin sql a usar es: DELETE FROM TABLA WHERE CONDICION y que pasa con el tutorial de sql!!! Prog40.php
<HTML> <FORM ACTION=prog40.php METHOD=post> DAME CLAVE A ELIMINAR:<INPUT TYPE=text NAME=CLAVE><BR> <INPUT TYPE=submit NAME=OK VALUE="DELETE"><BR> </FORM></HTML> <?php if ($OK == "DELETE") { // coneccion al servidor de bases de datos $dbh=mysql_connect ("localhost", "lsoto_lauro", "lauro2004") or die ('problema conectando porque :' . mysql_error()); // seleccionado la base de datos mysql_select_db ("lsoto_mibase",$dbh); // preparando la instruccion sql $q = "delete from tabla1 where clave=".$CLAVE; // ejecutando el query mysql_query($q, $dbh) or die ("problema con query"); // avisando echo "REGISTRO ELIMININADO"; };
TAREAS PROGRAMACION PHP MYSQL : 1.- construir este proceso para las tablas y bases de datos que tengan construidas.
Editar registros significa cambiar el contenido de algunos de los campos o columnas por nueva informacn o para corregir algun error de captura original o para agregar alguna columna que no existia por modificacin de la tabla o la base de datos.
En general se tiene otro problema de sql UPDATE, sin embargo ahora se tendran que construir un programa con dos eventos, estos son: 1.- evento1 (BUSCAR): una forma normal de busqueda por clave con el mismo programa de busqueda por clave, pero ahora debera construir una forma.html dinamica, que contendra un segundo evento2 (EDITAR) apuntando o ejecutando su propio codigo. 2.- evento2 (EDITAR) : recoje los datos ya modificados de la forma.html dinamica y realiza directamente un sql update en la base de datos prog41.php <HTML> <FORM ACTION=prog41.php METHOD=post> DAME CLAVE A EDITAR:<INPUT TYPE=text NAME=CLAVE><BR> <INPUT TYPE=submit NAME=OK VALUE="BUSCAR"><BR> </FORM></HTML> <?php if ($OK == "BUSCAR") { // coneccion al servidor de bases de datos $dbh=mysql_connect ("localhost", "lsoto_lauro", "lauro2004") or die ('problema conectando porque :' . mysql_error()); // seleccionado la base de datos mysql_select_db ("lsoto_mibase",$dbh); // preparando la instruccion sql $q = "select * from tabla1 where clave= ".$CLAVE; // ejecutando el query select regresa un rowset $tabla1 = mysql_query($q, $dbh) or die ("problema con query") ; // regresando renglon con registro
$reg = mysql_fetch_row($tabla1); // construyendo forma dinamica echo "<FORM ACTION=prog41.php METHOD=post>"; // recordar que strings se encadenan con . echo "NOMBRE:<INPUT TYPE=text NAME=NOMBRE value= \"".$reg[1]."\"><BR>"; echo "EDAD:<INPUT TYPE=text NAME=EDAD value=$reg[2]><BR>"; echo "ESTATURA:<INPUT TYPE=text NAME=ESTATURA value=$reg[3]><BR>"; echo "<input type=hidden name=CLAVE value=$reg[0]>"; echo "<INPUT TYPE=submit NAME=OK VALUE=editar><BR>"; echo "</FORM>"; };
if ($OK == "editar") { // coneccion al servidor de bases de datos $dbh=mysql_connect ("localhost", "lsoto_lauro", "lauro2004") or die ('problema conectando porque :' . mysql_error()); // seleccionado la base de datos mysql_select_db ("lsoto_mibase",$dbh); // preparando la instruccion sql $q = "UPDATE tabla1 set nombre='".$NOMBRE."', edad=".$EDAD.", estatura=". $ESTATURA." where clave=".$CLAVE; // ejecutando el query mysql_query($q, $dbh) or die ("problema con query"); // avisando echo "REGISTRO EDITADO";
}; ?>
corrida:
corrida:
corrida prog35.php
TAREAS PROGRAMACION MYSQL PHP 1.- construir programas de edicin para sus tablas y bases de datos
TEMA 14: GRAFICOS MYSQL Campos de graficos o de imagenes, se han convertido en elementos importantes de cualquier base de datos. Para manejar este elemento con ado-asp.net existen dos maneras: 1.- Agregar un campo BLOB a la tabla en mysql y usar instrucciones especializadas en imagenes tanto para subirlas como para desplegar la imagen. Este metodo provoca que la base de datos crezca mucho recordar que una imagen aun de tipo jpg ocupa mucho espacio. 2.- El segundo metodo es mas sencillo, primero subir las imagenes ( de preferencia jpg) con un ftp normal a tusitio y despues usar el tag <img src> de html y ademas agregar un campo de texto llamado fotourl o foto a la tabla en mysql y grabar la direccion http
de la imagen en este campo, por ejemplo http://programacionfacil.com/tusitio/pato.jpg o simplemente pato.jpg si el jpg esta en el directorio principal de tu sitio en el servidor Despues solo cargar este tag img src en la pagina que se construira que no es otra cosa que el programa de busqueda con el despliegue del campo extra, como lo muestra el programa ejemplo. Prog42.php
<HTML> <FORM ACTION=prog42.php METHOD=post> DAME CLAVE A BUSCAR:<INPUT TYPE=text NAME=CLAVE><BR> <INPUT TYPE=submit NAME=OK VALUE="SELECT"><BR> </FORM></HTML> <?php if ($OK == "SELECT") { // coneccion al servidor de bases de datos $dbh=mysql_connect ("localhost", "lsoto_lauro", "lauro2004") or die ('problema conectando porque :' . mysql_error()); // seleccionado la base de datos mysql_select_db ("lsoto_mibase",$dbh); // preparando la instruccion sql $q = "select * from tabla1 where clave=".$CLAVE; // ejecutando el query $tabla1= mysql_query($q, $dbh) or die ("problema con query");
# construyendo los encabezados de la tabla echo "<th bgcolor=Green>CLAVE</th><th bgcolor=White>NOMBRE</th><th bgcolor=Red>EDAD</th><th bgcolor=blue>ESTATURA</th></TR>"; // ciclo de lectura del rowset($tabla1) while($renglon = mysql_fetch_row($tabla1)) { // desplegando en celda de tabla html echo"<tr>"; echo "<td>".$renglon[0]."</td>"; echo "<td>".$renglon[1]."</td>"; echo "<td>".$renglon[2]."</td>"; echo "<td>".$renglon[3]."</td>"; // incluyendo img src de html echo "<td><img src=".$renglon[4]."></td>"; echo"</tr>"; }; // fin tabla html echo "</table>"; }; ?> corrida: prog42.php
PROYECTO CONSTRUIR UN SISTEMA PHP MYSQL COMPLETO INTEGRADO CON TODAS LAS OPERACIONES USANDO AL MENOS DOS TABLAS.