programacion sistemas php 38996 completo
TRANSCRIPT
-
7/31/2019 Programacion Sistemas Php 38996 Completo
1/37
Programacin de sistemas conPHP
Autor: rafael gamas
1
mailxmail - Cursos para compartir lo que sabes
http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/ -
7/31/2019 Programacion Sistemas Php 38996 Completo
2/37
Presentacin del curso
En el presente tutorial mostramos como programar los mdulos bsicos de
cualquier sistema, a travs de una serie de ejemplos.
Estos cursos de informtica nos darn una gua sobre el uso del PHP. El PHP
es un lenguaje de programacin que se ejecuta interpretado que se ejecuta del lado
del servidor, lo cual nos quiere decir que no se compila, sino que se ejecuta
conforme se lee cada una de las lneas del cdigo fuente.
Por s mismo, PHP no posee instrucciones para la creacin de interfaces,
razn por la que requiere de HTML para la creacin de las mismas.
El funcionamiento bsico de cualquier sistema basado en PHP consiste en una
pgina escrita en HTML que recibe o captura la informacin y la enva al programa
escrito en PHP que se encuentra en el lado del servidor y que retorna un resultado.
Los cursos te ensearn las etiquetas bsicas de HTML para que aprendas las
diferentes funciones que puedes lograr con el programa.
La informtica nunca fue tan fcil como con nuestros tutoriales online! Sigue
esta gua de lenguajes de programacin y comprubalo! Buena suerte!
2
mailxmail - Cursos para compartir lo que sabes
http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/ -
7/31/2019 Programacion Sistemas Php 38996 Completo
3/37
1. Lenguajes de programacin. PHP
PHP es un lenguaje de programacin que se ejecuta interpretado que se
ejecuta del lado del servidor, lo cual nos quiere decir que no se compila, sino que se
ejecuta con forme se lee cada una de las lneas del cdigo fuente y que el intrprete
se encuentra instalado en la maquina servidor, el cliente o navegador de internetsolo recibe el resultado de la ejecucin y lo presenta.
Por s mismo, PHP no posee instrucciones para la creacin de interfaces,
razn por la que requiere de HTML para la creacin de las mismas, el
funcionamiento bsico de cualquier sistema basado en PHP consiste en una pgina
escrita en HTML que recibe o captura la informacin y la enva al programa escrito
en PHP que se encuentra en el lado del servidor y que retorna un resultado.
Reglas bsicas
Las reglas bsicas de la programacin en PHP son:
El cdigo se escribe en un archivo de texto, que se guarda con la extensin
(.PHP)
El indicador de fin de lnea en el cdigo fuente ser el punto y coma (;).
Las variables no necesitan declararse, se crean cuando son usadas y se
les asigna el tipo de dato que corresponda al primer valor que reciben.
El intrprete distingue entre maysculas y minsculas.
El nombre de las variables es precedido por el signo ($).
HTML
Como ya habamos mencionado, PHP no est creado para disear interfaces,
as que para ello, debemos recurrir a los formularios de HTML. Los formularios son
el espacio dentro de una pgina en donde damos la opcin al usuario de capturar
cierta informacin a travs del uso de botones, cuadros de texto y otros elementos.
Las etiquetas necesarias para la creacin de un formulario son:
form./form
Con esta etiqueta declaramos que vamos a crear un formulario y es en esta
3
mailxmail - Cursos para compartir lo que sabes
http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/ -
7/31/2019 Programacion Sistemas Php 38996 Completo
4/37
etiqueta donde tambin especificamos que es lo que va a pasar con la informacin
capturada en l. Los atributos de la etiqueta form son:
action:
Nos permite especificar a donde se enviara la informacin, lo cual puede ser a
un archivo PHP, ASP o simplemente a una direccin de correo.
method:
Nos permite indicar el mtodo que se usara para enviar la informacin,
pudiendo ser get o post, ms adelante veremos en que se diferencian ambos
mtodos.
id: Este atributo permite asignar un nombre o identificador al formulario, el
cual sera de mucha utilidad al usar JavaScript y/o PHP.
Este atributo se presenta de hecho en todas las etiquetas HTML pero es
precisamente en los formularios donde ms importancia cobra al igual que el
atributo name
input
La etiqueta input nos permite agregar al formulario diferentes elementos
segun el valor de su atributo type.
4
mailxmail - Cursos para compartir lo que sabes
http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/ -
7/31/2019 Programacion Sistemas Php 38996 Completo
5/37
2. Cuadros de texto
Los cuadros de texto son casillas para captura de informacin abierta, para
su colocacin daremos al atributo type el valor text, de forma opcional pero
recomendable podemos agregar los siguientes atributos.
maxlength: limita el nmero de caracteres que se pueden introducir en el
cuadro de texto.
size: indica en nmero de caracteres el tamao del cuadro de texto.
value: con este atributo podemos definir un valor por defecto.
name: especifica el nombre del cuadro de texto, este es importante si los
datos son enviados a un PHP
id: como buen hbito coloque lo mismo que puso en name, ya que este le
permitir manipular el cuadro de texto de JavaScript.
Cuadros de texto ocultos
Estos cuadros de texto permanecen invisibles en el formulario y no resevan
ningun espacio. Son usados para almacenar valores que seran enviados por defecto
con el formulario. Un ejemplo de esto seria
input type=hidden name=dato2 id=dato2 value=xf364
Cuadros de contrasea
Estos se colocan dando el valor password al atributo type, como su nombre
lo indica son cuadros de texto que sirven para solicitar contraseas dado que al
teclear cualquier dato dentro de ellos solo aparecen puntos o asteriscos y no lo que
se escribi.
Sus atributos son los mismos que los de un cuadro de texto normal
Botones de radio
Los botones de radio son una lista de opciones dentro de las cuales solo
puedes seleccionar una.
Para colocarlos se debe colocar un input por cada opcin y el valor de la
propiedad name de cada uno debe ser el mismo para que se tome como uno solo;
5
mailxmail - Cursos para compartir lo que sabes
http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/ -
7/31/2019 Programacion Sistemas Php 38996 Completo
6/37
en la propiedad valuecoloque el valor que almacenara el botn de radio una vez
hecha la seleccin.
Casilla de verificacin
Se trata de un grupo de opciones al igual que los botones de radio, pero con
la diferencia de que en estos se pueden seleccionar varias opciones.
Para colocar una casilla de verificacin debe colocar el valor checkbox en el
atributo type y se aplican las mismas consideraciones que en los botones de radio a
los atributos name y value.
botones de envo y reset
El botn de envo se usa para que una vez capturada la informacin, esta sea
enviada al destino marcado por el atributo action de la etiqueta form. El botn de
reset se usa para borrar el contenido del formulario.
Para colocar los botones de envo y reset debemos colocar el valor submit
en el atributo type y el valor reset en el mismo atributo, respectivamente.
Lo que coloquemos en el atributo value ser el texto que aparecer dentro del
botn.
6
mailxmail - Cursos para compartir lo que sabes
http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/ -
7/31/2019 Programacion Sistemas Php 38996 Completo
7/37
3. Base de datos MySQL con PHPmyadmin
Como este trabajo est enfocado a la creacin de sistemas en PHP,
necesitamos definir primero un lugar para almacenar la informacin, as que lo ideal
es optar por el trio Apache-PHP-MySQL, en donde Apache como servidor HTTP
provee el soporte web, PHP el lenguaje para manipular la informacin y MySQL elsistema de almacenamiento de la informacin.
La creacin de una base de datos en la consola de MySQL es un proceso a
veces laborioso, dado que debemos recurrir a las sentencias de SQL para crear la
base de datos y las tablas, para hacer eficiente este proceso podemos hacer uso de
PHPmyadmin una herramienta que se instala junto con el xampp, que es un servidor
Apache modificado para instalar todo el conjunto completo ya configurado de
Apache, PHP y MySQL; as que una vez instalado lo
primero ser acceder al panel de control del xampp a travs del navegador,
usando la direccin local http://localhost/xampp.
Una vez ah hacemos clic en el enlace a la herramienta PHPmyadmin
Entre todas las opciones que presenta la pantalla principal podemos encontrar
en el centro la opcin Crear nueva base de datos, en donde escribiremos el
nombre de la base de datos y haremos clic en el botn crear,
Si lo que deseamos es modificar una base de datos existente, solo debemos
buscar el nombre entre la lista de bases de datos que estn en el lado izquierdo de
la pantalla.
Una vez creada la base de datos, podremos ver del lado izquierdo que nos
indica que no existe ninguna base de datos, y en caso de que hubiera alguna se
mostrara una lista de ellas. En el centro podremos observar el cdigo en SQL que se
ejecut para crear la base de datos.
En la misma parte central podemos observar la casilla donde debemos colocar
el nombre la tabla a crear y la cantidad de campos que contendr la estructura de la
tabla.
Cada lnea es un campo de nuestra tabla y se nos piden varios datos, pero los
ms importantes son:
7
mailxmail - Cursos para compartir lo que sabes
http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/ -
7/31/2019 Programacion Sistemas Php 38996 Completo
8/37
Nombre: El nombre del campo puede ser una combinacin de letras y
nmeros, sin usar signos de puntuacin, acentos ni espacios. Recuerde como
escribe cada nombre de campo ya que son case sensitive y que el primer carcter
del nombre del campo debe ser una letra.
Tipo: Se refiere al tipo de datos del campo.
Longitud: Se usa con campos de tipo TEXT para delimitarlos, en campos
numricos no es necesario.
Null: Se refiere a si el campo admite un valor nulo, es decir, que al capturar
la informacin el campo puede quedar en blanco.
Llave: Solo lo usaremos para marcar cul de los campos, es el campo llave o
llave primaria.
Una vez capturados todos los campos, haremos un clic en guardar.
Si deseamos agregar algunos registros de forma manual para hacer pruebas
debemos ir la pestaa nombrada insertar
Los datos los capturaremos en la columna de valor.
La pestaa de examinar le mostrara los registros almacenados hasta el
momento, la pestaa estructura le mostrara la estructura de la tabla, si desea
modificar un campo o registro solo debe hacer clic en el icono del lpiz que le
corresponda y si lo desea eliminar haga lo mismo en el icono marcado con la X enrojo.
8
mailxmail - Cursos para compartir lo que sabes
http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/ -
7/31/2019 Programacion Sistemas Php 38996 Completo
9/37
4. Comenzando a programar
PHP es un lenguaje de programacin muy verstil y potente, tanto que incluso
podemos mandar a crear una pgina web completa desde PHP con relativa facilidad y
es que es capaz de crear cdigo HTML e incluso JavaScript.
Comenzaremos con un mdulo de altas para la base de datos de ejemplo que
se cre en los post de PHPmyadmin.
Lo primero ser crear un formulario en HTML, algo as como el siguiente:
Aqu es importante hacer mencin de lo siguiente:
La etiqueta form en su atributo action posee el nombre del archivo PHP que
recibir la informacin del formulario para almacenarla
Todas las etiquetas input del formulario tienen su atributo name, esto es de
vital importancia porque al recibir los valores, el cdigo PHP creara automticamente
variables con esos nombres, y si no lo posee no podremos usarla.
Observe que las etiquetas input poseen sus atributos size y maxlength, los
cuales deben ser acordes con los tamaos de los campos que representan, primero
para dar una idea visual de que tanto puedo escribir y segundo para no escribir
informacin dems, ya que si permito que el usuario se extienda escribiendo, al
guardar la informacin esta no se guardara como el usuario la puso, sino que secortara hasta el lmite del campo.
El formulario anterior produce este resultado en el navegador
Ahora necesitamos el cdigo del archivo PHP que recibir la informacin que
sea capturada en el formulario, as que a continuacin tenemos el cdigo del archivo
ingreso.PHP
| Como todo cdigo PHP inicia con la etiqueta de apertura ?PHP y termina
con la etiqueta de cierre ?
Cuando el programa PHP recibe los datos del formulario estos son guardados
en un arreglo asociativo llamado $HTTP_POST_VARS, para los que no sepan, un
arreglo asociativo es un arreglo en donde las celdas no son identificadas por un
numero como en x[1] sino a travs de un nombre, en el caso de PHP el arreglo
9
mailxmail - Cursos para compartir lo que sabes
http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/ -
7/31/2019 Programacion Sistemas Php 38996 Completo
10/37
$HTTP_POST_VARS es un arreglo asociativo que contiene en cada celda la
informacin que se capturo en los input del formulario y se usa como identificador
el atributo name de cada input.
Observe que en las primeras 4 lneas, lo que hacemos es pasar la informacin
del arreglo $HTTP_POST_VARS a variables, esto para que el cdigo sea ms claro
cuando tengamos que construir la consulta que mandaremos a MySQL
A continuacin se usa la instruccin MySQL_connect para establecer conexin
con el servidor de base de datos, esta instruccin necesita de 3 parmetros:
1. El nombre del servidor, en este caso y aun siendo un servidor web en lnea
el servidor de base de datos se seguir llamando localhost,
2. El nombre del usuario, para este caso root, en un servidor en lnea se
crea un nombre de usuario para cada base de datos, este usuario solo tiene acceso
a esa base datos y a ninguna otra por seguridad
3. La clave, que en este caso no tiene, porque no lo configuramos en el
PHPmyadmin.
Ya establecida la conexin con el servidor, ahora debemos indicar que base
de datos usaremos, esto es con la instruccin MySQL_select_db, en el ejemplo la
base de datos se llama almacenm.
En la lnea que sigue se crea una variable de tipo cadena llamada $consulta en
la que se almacena la consulta en SQL que queremos ejecutar, en este caso una
consulta de insercin, observe que en la clusula values de la consulta se colocan
las variables en donde almacenamos los datos del formulario, separadas por coma,
y en aquellas que representan datos no numricos les agrego el carcter de escape
\, esto para agregar las comillas a la consulta.
A diferencia de otros lenguajes en donde colocar el nombre de una variable
dentro de una cadena no tiene ningn efecto, en PHP si lo tiene, ya que al ejecutar
esta lnea los nombres de las variables son sustituidos por sus valores, por ejemplo:
nombre=Ramn;
saludo= Hola, como estas nombre;
En las lneas anteriores el resultado sera que la variable $saludo, almacena la
cadena Hola, como estas Ramn.
10
mailxmail - Cursos para compartir lo que sabes
http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/ -
7/31/2019 Programacion Sistemas Php 38996 Completo
11/37
Una vez construida la consulta de insercin, la mandamos a ejecutar con la
instruccin MySQL_query, el resultado de la consulta se deposita en una variable
para que podamos verificar que la consulta tuvo xito.
En el ejemplo, si la consulta tuvo xito se procede a presentar un mensaje con
la instruccin echo y se manda a crear un enlace que nos regrese al formulario.
11
mailxmail - Cursos para compartir lo que sabes
http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/ -
7/31/2019 Programacion Sistemas Php 38996 Completo
12/37
5. Validacin de datos en PHP
En el post anterior vimos un mdulo bsico de registro de datos en PHP, pero
el ejemplo an no est terminado, posee errores de principiante y lo peor errores
fatales.
El problema principal del ejemplo es que cualquier dato incorrecto que
escribamos en el formulario har que el proceso de registro falle, as que para evitar
esto debemos incluir validaciones.
La validacin es el proceso mediante el cual un programa selecciona cuales
son los datos correctos de los incorrectos, antes de ser procesados, para esto nos
valdremos de cdigos en JavaScript que nos permitirn evaluar los datos.
Recuerde, un programa puede ser muy bueno, pero no hay software que
tolere la incompetencia humana. Vamos con las primeras modificaciones.
La primera validacin la incorporaremos en el campo clave, tal y como vemos
en la siguiente imagen:
A travs de JavaScript sabemos que los objetos o etiquetas de HTML no solo
tienen atributos, sino tambin poseen eventos. Los eventos son sucesos que los
usuarios llevamos a efecto (en su mayora) y que van a dar como resultado la
ejecucin de una funcin de JavaScript.
As que la primera modificacin fue agregar al input del campo clave el
evento onblur; este evento se produce cuando dejamos la casilla para pasarnos a
otra ya sea con el teclado(usando la tecla de tabulador) o con el ratn (haciendo clic
en otro objeto) a esto se le llama perder el foco. El evento onblur hace una llamada a
la funcin numero().
La funcin numero() est definida en el head de la pgina, la encontramos
como function numero(), dentro de esta encontramos un if en el cual, si
analizamos desde el parntesis ms interno, veremos que a travs de la instruccin
parseInt convertimos el valor del campo clave a un valor numrico accediendo a l
como document.ficha.c.value, pero como la conversin a veces no es posible,
usamos la instruccin isNaN para verificar si fue posible la conversin. Esto lo
hacemos para asegurarnos de que el valor introducido en dicho campo es
efectivamente un valor numrico.
12
mailxmail - Cursos para compartir lo que sabes
http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/ -
7/31/2019 Programacion Sistemas Php 38996 Completo
13/37
Cuando se trata de hacer una conversin de cadena a valor entero y no es
posible convertirlo, simplemente porque lo que se almaceno no es un nmero se
produce como resultado un valor NaN que significa No aplicable.
As que si no se trata de un nmero, se presentara con la instruccin alert
un mensaje indicndolo y el foco ser regresado al mismo campo, para que se
intente escribir correctamente, tal y como vemos en la imagen siguiente
Nuestra siguiente modificacin tiene que ver con los campos obligatorios,
sabemos que en todo formulario siempre existir una serie de campos
indispensables que no podremos dejar en blanco, as que debemos evitar que la
informacin se mande, cuando uno de estos campos no ha sido capturado, para ello
veamos la siguiente imagen:
Lo primero a modificar es el botn de envo, observe que cambiamos el input
type=submit, por un input type=button, lo que genera un botn que no enva
informacin, pero que al hacer clic en el ejecuta una funcin en JavaScript llamada
enviar(); a travs del evento onclick.
La funcin JavaScript la encontramos en el HEAD de la pgina, en esta funcin
podemos ver que se declara una variable x con un valor de cero y a travs de varios
if se hace una revisin de los campos y si algn campo esta vaco se cambia el valor
de x a 1, con esto finalmente verificamos el valor de x, s i x cambio su valor a 1
aparecer un mensaje indicando que los datos estn incompletos, y si x no cambio
su valor entonces se enva el formulario a travs del mtodo submit().
Observe que JavaScript maneja una nomenclatura llamada JSON, a travs de la
cual podemos acceder a los elementos de la pgina web como una jerarqua de
elementos, donde el nodo raz es el objeto document, de tal forma que en la lnea
document.ficha.c.value
Lo que describimos es el camino para llegar al objeto que deseamos el cual es:
Raz: document
Formulario: ficha
Campo del formulario: c
Atributo del campo c: value
13
mailxmail - Cursos para compartir lo que sabes
http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/ -
7/31/2019 Programacion Sistemas Php 38996 Completo
14/37
Para que esto sea posible todas las etiquetas correspondientes a los
elementos de la pgina (inputs, formularios, tablas, imgenes, etc.) deben tener
asignado su atributo name ya que lo que colocamos es el nombre de cada elemento.
14
mailxmail - Cursos para compartir lo que sabes
http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/ -
7/31/2019 Programacion Sistemas Php 38996 Completo
15/37
6. Validar duplicados
Como se mencion en el captulo anterior an faltan algunos detalles que
ajustar del lado del PHP, as que veamos las modificaciones
Lo primero que modificamos fue la reconstruccin de la fecha, ya que
recordemos en el formulario para validarla se separa en sus componentes, as que
en el PHP la volvemos a unir, pero en el formato de ao/mes/da, que es el
manejado por MySQL, esto lo hacemos en la lnea:
$f1=$aa/$mm/$dd;
Esto lo hacemos aprovechando la capacidad de PHP para sustituir en una
cadena el valor de una variable.
Lo siguiente, ser montar el mecanismo para impedir la duplicidad deregistros, para esto lo que hacemos es construir una consulta en SQL que busque
registros que tengan la misma clave que acabamos de introducir, tal como la vemos
es:
select clave from personal where clave=\$c1\
Para verificar si la consulta tuvo existo, usamos la instruccin
MySQL_num_rows, que devuelve el nmero de registros que se gener en una
consulta select, hay que prestar especial atencin a que solo sirve con consultas deseleccin y no para eliminacin, insercin o modificacin.
Si la clave no existe ejecutara la consulta de insercin que ya tenamos, y si
existe creara un mensaje indicndolo, pero observe que en el caso de que se logr
guardar la informacin, el botn de regresar es un vnculo a el formulario, esto para
que se recargue el formulario y aparezca en blanco, listo para guardar otro registro,
ahora bien, si es el caso de que la clave ya existe el botn de regresar no es un
vnculo sino el acceso a un JavaScript que regresa a la pagina anterior, que a
diferencia de lo anterior no recarga el formulario, por lo que los datos siguen en el
formulario, as solo hay que modificar la clave para poder guardar la informacin.
15
mailxmail - Cursos para compartir lo que sabes
http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/ -
7/31/2019 Programacion Sistemas Php 38996 Completo
16/37
7. Eliminar registros
Eliminar por clave
Como ya tenemos el mdulo de altas, ahora corresponde elaborar el mdulo
de eliminacin, para esto vamos a explorar dos opciones:
Localizar los registros a eliminar basados en el conocimiento de su c lave
principal
Seleccionar de una lista el registro a eliminar.
En esta ocasin veremos la primera opcin, as que lo que primero ser crear
un formulario en HTML que solicite la clave principal y enve este dato a un PHP, as
que veamos el cdigo de este formulario
Como podemos ver es un formulario muy sencillo que enviara sus datos a un
PHP llamado elimina.PHP, ya en funcionamiento se vera de la siguiente forma.
Ahora debemos ver el cdigo de elimina.PHP que es el que realiza toda la
accin
Lo primero que se hace es transferir del $HTTP_POST_VARS, el valor del
campo clave a una variable llamada $c, lo cual como en el ejemplo de altas es solo
una forma conveniente de manejar los datos.
Despus vemos en el cdigo la conexin al servidor de base de datos
(MySQL_connect), la seleccin de la base de datos (MySQL_select_db), y la
construccin de la consulta de seleccin:
$consulta=select nombre,direccion,fecha from personal where clave=$c;
En esta consulta se extrae el nombre, la direccin y la fecha de aquel registro
cuyo campo clave sea igual al que se ingres en el formulario; la consulta se ejecuta
usando MySQL_query; para verificar si hubo resultados usamos la instruccin
MySQL_num_rows y en el if verificamos si se obtuvieron registros.
Lo que sigue es una de las fortalezas de PHP, y es la capacidad de mandar a
construir cdigo HTML en tiempo de ejecucin, como podemos ver en la imagen se
usa la instruccin echo para indicarle al navegador lo que debe presentar, que en
este caso es un formulario que enviara su informacin a otro PHP que se encargara
16
mailxmail - Cursos para compartir lo que sabes
http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/ -
7/31/2019 Programacion Sistemas Php 38996 Completo
17/37
de la eliminacin de los datos. Podemos observar que el nico inconvenientes es
tener que incluir las \ en cada caso para poder crear las cadenas de cdigo HTML
que presentara el navegador.
Ahora se ejecuta la instruccin MySQL_fetch_rows que se encarga de leer los
registros obtenidos en la consulta y mandarlos a un arreglo, en el que cada celda
corresponde a uno de los campos obtenidos en la consulta y que se comienzan anumerar desde el cero. De tal forma que $registro[0] corresponde al campo nombre,
dado que nombre es el primer campo que se menciona en la consulta select.
Es importante observar que el campo correspondiente a la clave se le agrego
el atributo READONLY mientras que a los dems se le agrega el atributo DISABLED,
estos dos atributos impiden que el usuario pueda escribir en los campos y pensar
equivocadamente que puede modificar la informacin que se le est presentando,
pero ocurre que con DISABLED el valor del campo no es enviado al hacer el submit
mientras que con READONLY si se enva.
El resultado de este cdigo es el siguiente formulario
Ahora bien, ya casi para terminar debemos decir que al presionar el botn
confirmar, este formulario enviara la clave a otro PHP llamado confirmar.PHP tal y
como se indic en la etiqueta form, as que veamos el cdigo de este nuevo PHP
En este cdigo podemos ver que se ejecuta una consulta de eliminacin:
$consulta=delete from personal where clave=$c1;
Y para confirmar si se ejecut la eliminacin usamos la instruccin
MySQL_affected_rows, que se encarga de devolver el nmero de registros que fueron
alterados por una consulta delete, insert o replace.
Si se pudo o no realizar la eliminacin, presentara los mensajes
correspondientes
17
mailxmail - Cursos para compartir lo que sabes
http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/ -
7/31/2019 Programacion Sistemas Php 38996 Completo
18/37
8. Eliminacin mltiple
El mtodo visto en el captulo anterior para elaborar un mdulo de eliminar es
adecuado cuando estamos elaborando un sistema de atencin a clientes o un punto
de venta, ya que podemos obtener la clave que se requiere para buscar y eliminar el
registro de una credencial o de un cdigo de barras, pero este mtodo es ineficientecuando tenemos grandes volmenes de informacin, as que a continuacin
elaboraremos un mdulo de eliminar que filtre la informacin en base a un criterio,
nos despliegue una lista de registros y nos permita seleccionar los registros a
eliminar.
Lo primero que necesitamos es una pgina web que nos solicite el criterio a
filtrar, la cual ser muy simple, en este caso ocuparemos el campo de direccin para
filtrar los datos, quedando el cdigo fuente de la siguiente forma
Como vemos es un HTML muy simple que manda la direccin introducida a un
PHP llamado lista.PHP, que se vera de la siguiente forma:
Bien, ya una vez que tenemos la pgina procederemos a analizar el PHP, as
que veamos el cdigo
Como en los dems PHP, las primeras lneas son para establecer la conexin
con el servidor y seleccionar la base de datos, en este caso se crea una consulta de
seleccin en la que se obtenga de la tabla de personal el nombre, la clave y ladireccin de los empleados que tengan la direccin introducida en el HTML. Observe
por favor que es importante que la consulta extraiga la clave aunque no la vaya a
mostrar en el listado, porque este PHP lo que har, ser mandar la lista de claves de
los registros a eliminar.
Una vez ejecutada la consulta a travs de MySQL_query se verifica si se
pudieron obtener datos con la instruccin MySQL_num_rows, que recordemos nos
devuelve el nmero de registros que obtuvo la consulta, veamos que en la sentencia
else se hace que se presente un mensaje y un enlace para regresar al formulario si
no se obtuvieron registros.
Ahora bien, si se obtuvieron 1 o ms registros ($d=1) entonces lo primero
ser mandar a escribir la etiqueta table y el primer rengln de la tabla, el cual
contendr los encabezados, observe que la tabla est metida dentro de un
18
mailxmail - Cursos para compartir lo que sabes
http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/ -
7/31/2019 Programacion Sistemas Php 38996 Completo
19/37
formulario y que se agreg una columna llamada seleccin.
En el ciclo while lo que hacemos es usar la sentencia MySQL_fetch_rows,
que recordemos lee un registro de la consulta, lo deposita en un arreglo y avanza al
siguiente registro, el ciclo while se detendr cuando MySQL_fetch_rows devuelva el
valor falso, lo que indicada que ya no hay ms registros en el resultado de la
consulta.
En cada iteracin del ciclo while se crea un numero rengln en la tabla, con
los datos del registro pero la lnea clave es la siguiente:
td input type=\checkbox\ name=\s$n\ value=\$registro[0]\ /td
Esta lnea usa la variable $n para numerar los checkbox que se van agregando
a la tabla y a cada uno le coloco en su atributo value la clave del registro. De tal
forma que estamos construyendo un formulario con tantos checkbox como registros
obtengamos de la consulta, produciendo ya en la ejecucin lneas como esta
td input type=checkbox name=s1 value=100 / td
La variable $n se inicializa en 1 antes del ciclo while e incrementa su valor en
cada iteracin del ciclo.
Una vez que se terminan los registros se cierran las etiquetas de la tabla y el
formulario y se agregan los botones, obteniendo en la ejecucin algo como esto:
De tal forma que usted podr seleccionar los registros que se eliminaran, consolo marcar los checkbox que desee, podr eliminar 1, varios o todos los registros
presentados.
Ahora bien, el PHP que recibe la informacin tiene el problema de no saber
cuntas variables va recibir, lo que lo hace diferente de los otros en los que
sabamos exactamente cuntos datos se reciben, para solucionar esto necesitaremos
de una solucin algo creativa, as que vemosla.
Las primeras lneas como vemos son las de siempre, las que usamos paraconectar a la base de datos, pero una vez que las pasamos, llegamos a un ciclo
while que posee varias sentencias muy singulares, primero hace uso de la
sentencia list, que en realidad es un constructor que se encarga de vaciar en las
variables que se le indiquen los valores de un arreglo, en este caso el arreglo
$HTTP_POST_VARS, como recordaremos al ser enviada la informacin a travs del
19
mailxmail - Cursos para compartir lo que sabes
http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/ -
7/31/2019 Programacion Sistemas Php 38996 Completo
20/37
mtodo POST, esta se enva en pares de valores de la forma (variable, valor) as que
LIST deposita en las variables $key y $var el nombre de la variable y su valor
respectivamente, para lo cual se vale de la sentencia each, para que esto se
ejecute por cada par de valores del arreglo $HTTP_POST_VARS
Todo lo anterior se hace para poder mandar a ejecutar por cada valor del
arreglo una consulta de eliminacin, y cada vez que se ejecuta cada consulta deeliminacin se presenta un texto informando si la operacin tuvo xito o no, y al
final de todo se agrega un enlace para retornar.
20
mailxmail - Cursos para compartir lo que sabes
http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/ -
7/31/2019 Programacion Sistemas Php 38996 Completo
21/37
9. Modificar y PHP embebido
En este captulo veremos como insertar cdigo PHP dentro de HTML y lo
aprovecharemos para crear el mdulo de modificar.
Lo primero ser explicar el proceso de un tpico mdulo de modificaciones,
1. Solicitar la llave primaria o clave para buscar el registro a modificar
2. Presentar la informacin que existe del registro en cuestin
3. Admitir la modificacin de los datos en pantalla
4. Grabar las modificaciones.
Vamos con el primer paso, para lo cual necesitaremos una pgina sencilla
donde se nos solicite la clave, tal y como vemos en la imagen
Ahora vamos con el cdigo fuente:
Como vemos, no hay mucho que comentar, lo nico que podramos agregar
sera un JavaScript que validara el formato numrico de la clave.
Ahora, para el formulario de modificar, que presentara la informacin actual y
nos dar acceso a modificarla, aprovecharemos el formulario del modulo de altas y
lo modificaremos para agregar en este, el cdigo PHP embebido, es muy importante
que para usar PHP embebido, la pagina web no se guarde con la extensin .html
sino con .PHP.
Aproveche este formulario debido a que ya tiene las validaciones, ya que un
punto importante es considerar que si en el mdulo de altas fue importante la
validacin de los
datos, esta actividad se convierte en indispensable en el mdulo de modificar
para impedir que una modificacin altere de forma indebida los datos almacenados.
El primer cambio a realizar ser cambiar su nombre, como podemos ver en el
cdigo del formulario de bsqueda que se present al inicio del post, este enva la
informacin a un PHP llamado modifica.PHP, as que ese ser el nombre que le
daremos.
EL navegador tomara el archivo modifica.PHP y lo que no est entre las
21
mailxmail - Cursos para compartir lo que sabes
http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/ -
7/31/2019 Programacion Sistemas Php 38996 Completo
22/37
etiquetas de HTML ser tratado como HTML y JavaScript respectivamente, as que lo
nico que debemos hacer es agregar los cdigos PHP necesarios encerrados entre
las etiquetas ?PHP y ? de esta forma obtenemos lo que se denomina un cdigo PHP
embebido en HTML, as que veamos la primera modificacin al formulario.
Como vemos en el recuadro rojo el cdigo PHP se agreg antes de la pgina,
con esto logramos que el cdigo PHP busque la informacin en la base de datos y lacargue en la variable $registro, si observa es similar al cdigo en el mdulo de
eliminar.
Ahora vamos a ver la segunda modificacin:
En este caso, observamos que en las etiquetas input se agreg la clusula
value y dentro de esta se insert el cdigo PHP, con esto lo que hacemos es usar la
instruccin echo para mandar a escribir dentro de la propiedad value el valor de la
variable que almacena el valor correspondiente, pero otro detalle a observar es queel input que le corresponde a la clave es un hidden es decir, estar presente en el
formulario, pero no se ver, esto se debe a que es un error permitir la modificacin
de la clave principal, dado que eso ocasionara que los registros de otras tablas
relacionadas perdieran la relacin, con la consiguiente prdida de informacin.
El segundo bloque podemos observar que fue colocado despus de los
select para la fecha, esto se debe a que necesitamos que ya estn presentes para
modificar su contenido.
Al extraer la fecha de la base de datos, se extrae como una cadena, razn por
la que debemos usar en el segundo bloque la instruccin strtotime, que se encarga
de convertir una cadena en fecha, despus de eso usamos la instruccin date, para
extraer el ao, el mes y el da de la fecha, para ello se usan los modificadores Y,
m y d de la instruccin.
Para modificar los select no podemos decirle directamente que valor deben
tomar, sino debemos indicarle que numero de elemento de la lista deben tomar,
para ellos debemos saber que los elementos de la lista se numeran a partir del cero,por ello para convertir el ao a su valor en la lista le restamos 1960 que es el ao en
que comienza en la lista para que nos d como resultado el nmero de elemento
que le corresponde.
En los casos de mes y da solo se les resta 1 dado que las listas comienzan en
1 y los ndices deben comenzar en cero.
22
mailxmail - Cursos para compartir lo que sabes
http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/ -
7/31/2019 Programacion Sistemas Php 38996 Completo
23/37
Observe como al final de este bloque se usa la instruccin echo para mandar
a ejecutar cdigos de JavaScript que modifican los elementos seleccionados de cada
select, y se manda a ejecutar la instruccin de JavaScript que carga la lista de das
segn el mes y el ao seleccionados.
Con todo esto ya se presenta la informacin del registro buscado y se puede
modificar la informacin, ahora les mostramos como se vera al ejecutarlo
La informacin ya modificada es enviada a actualiza.PHP, del cual se presenta
el cdigo a continuacin:
En este programa lo nico que hacemos es crear una consulta con la clusula
update que modificara los datos del registro, las dems instrucciones de PHP ya han
sido descritas en los otros mdulos anteriores.
23
mailxmail - Cursos para compartir lo que sabes
http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/ -
7/31/2019 Programacion Sistemas Php 38996 Completo
24/37
10. Modificar de una lista
En un capitulo anterior se cre un mdulo de eliminar, para el supuesto de
que no sabemos la clave del registro, pero conocemos un datos a travs del cual
podemos hacer una bsqueda y el modulo nos presente una lista de registros que
cumplan con ese criterio, de la lista nosotros seleccionaramos los que deseramoseliminar.
La idea es hacer algo parecido con el mdulo de eliminar, solo que a
diferencia del de eliminar, solo se podran seleccionar un registro para modificar,
igual se podra tratar de hacer un mdulo para modificaciones mltiples, pero no es
aconsejable, ya que un error en el proceso podra ocasionar grandes prdidas de
informacin.
En si lo nico que se va a realizar es combinar los mdulos de eliminar ymodificar, as que comenzaremos con una pgina que pida la direccin, que es el
campo que estamos volviendo a considerar para el filtrado de los datos.
Como vemos, se trata del mismo formulario que usamos en el mdulo de
eliminar, solo le cambiamos el ttulo, as que continuamos con el PHP que genera la
lista.
Este es el mismo PHP que se usa en la lista para eliminar, pero en la lnea
subrayada en rojo, observe que hemos cambiado el input type de un checkbox aun radio, esto debido a que las modificaciones son individuales no grupales, por lo
tanto sera incorrecto permitir la seleccin de varios elementos.
Como los radio tienen que tener el mismo valor en la propiedad name ya no
necesitamos la variable $n que creaba los nombres de los checkbox
Una vez que el usuario seleccione un registro, la clave del registro que ser el
valor que toma el radio se mandara al PHP de modificar, que es el mismo del
captulo anterior, as que no tiene caso analizarlo, lo nico que se le ha cambiado esel nombre de la variable que recibe.
24
mailxmail - Cursos para compartir lo que sabes
http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/ -
7/31/2019 Programacion Sistemas Php 38996 Completo
25/37
11. Creando el men
Bueno, hasta el momento ya tenemos una buena cantidad de archivos, pero
todo est separado, as que en esta ocasin vamos a unirlo todo a travs de un
men, pero para aclarar la situacin con los archivos vamos a ver el siguiente mapa
de la estructura de nuestro ejemplo
En el esquema he tratado de mostrar la relacin entre cada archivo de tal
forma que en el mdulo de Baja individual primero se abre el archivo
eliminar.html y este enva la informacin capturada a eliminar.PHP, el cual envi
los datos a confirmar.PHP, las dems partes del esquema se leern de la misma
manera.
As que a continuacin les presento la imagen del men principal para que se
den una idea de lo que se har.
Como vemos hay tres botones, los cuales son para acceder a las funciones
principales del sistema, una vez que ya tenemos la apariencia vamos con el cdigo
fuente y desde ese punto comenzaremos a hacer modificaciones.
Como podemos ver hemos colocado las imgenes en una tabla y hemos
usado la etiqueta style para crear una hoja de estilo dentro de la pgina que hace
que todas las etiquetas img sean del mismo tamao, adems usando la etiqueta
div hemos creado una capa que es donde se mostraran los mdulos que hemoselaborado.
Observe que en la hoja de estilo hemos usado el smbolo de # para hacer
referencia a la capa llamada contenido, este smbolo se usa solo si le hemos
colocado un id al elemento de la pgina web al que modificaremos su apariencia,
pero no se lo colocamos cuando hacemos referencia a una etiqueta, es decir a todos
los objetos colocados a travs de la misma etiqueta.
Ahora debemos agregar un IFRAME, el cual es un marco dentro de la pginaweb donde podemos mostrar otras pginas o elementos web sin necesidad de
recargar la pgina.
Observe que ahora hemos agregado un elemento ms a la hoja de estilo, para
modificar el tamao del IFRAME, en la medida de lo posible es recomendable
hacerlo de esta forma, ya que los navegadores en algunos casos, ignoran el cambio
25
mailxmail - Cursos para compartir lo que sabes
http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/ -
7/31/2019 Programacion Sistemas Php 38996 Completo
26/37
de tamao de un elemento web si no se especifica a travs de una hoja de estilo.
Por ltimo se ha agregado una funcin en JavaScript que hace uso de la
propiedad src del IFRAME, esta propiedad permite indicar la direccin de la pgina
web que ser presentada dentro de ella, para el caso del ejemplo muestra el
formulario altas.html, y para que
Quede ms claro, esta es la imagen de como se ve el men, una vez que
damos clic en el botn de altas.
Si se maneja en todas las pginas un fondo de color uniforme el efecto que
tendremos es que todo aparece de repente en la misma ventana.
26
mailxmail - Cursos para compartir lo que sabes
http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/ -
7/31/2019 Programacion Sistemas Php 38996 Completo
27/37
12. Reportes con FPDF
En esta ocasin veremos la elaboracin de reportes en PHP, y para ello
usaremos la librera FPDF, la cual es una clase que permite la creacin de
documentos en formato PDF, esto nos permite dar la posibilidad al usuario de elegir
entre guardar el reporte como un archivo PDF o imprimirlo directamente.
Lo primero que necesitaremos, ser descargar la librera del sitio oficial
FPDF.org la librera es gratuita, descargue la ltima versin.
Una vez que lo tenemos descomprimiremos directamente en la misma carpeta
donde tenemos nuestro sistema, recuerde no ponerlo dentro de una subcarpeta, ya
que eso impedir el acceso a la librera.
Una vez hecho esto, comenzaremos con el primer ejemplo, en esta ocasin
elaboraremos una hoja de identificacin de personal, as que lo primero que
necesitamos es una pgina web que nos solicite la clave del empleado.
El cdigo fuente es muy sencillo, el nico detalle que podramos agregar es la
validacin del campo clave, para que mediante el cdigo que verifica que el valor
introducido es un dato nmero, se prevenga la bsqueda de un dato errneo.
Ahora comenzaremos con nuestro PHP, que se encargara de buscar en la base
de datos el registro que coincida con la clave.
Como podemos observar, las primeras lneas son similares a cualquier PHP,
se conecta con el servidor, con la base de datos, se construye la consulta, se
ejecuta con MySQL_query y se verifica con MySQL_num_rows si se obtuvieron
resultados.
Una vez que se obtiene resultados, se usa mysq_fetch_rows para mandarlo al
arreglo $registro y aqu es donde comienza la creacin del PDF.
Lo primero es usar el constructor new para crear una instancia del objetoFPDF, en este caso la instancia se llamara $PDF, igual pudo llamarse de cualquier
otro modo, pero quisimos ser congruentes con los tutoriales y manuales del sitio
oficial.
Ya creado el objeto, lo primero ser crear la pgina con la instruccin
AddPage, note que todas las instrucciones se usan a travs del operador de
27
mailxmail - Cursos para compartir lo que sabes
http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/ -
7/31/2019 Programacion Sistemas Php 38996 Completo
28/37
referencia de objetos - de ah que la lnea que crea la primera pgina del reporte
se escribe $PDF-AddPage. Esta instruccin necesita que le indiquemos la orientacin
y el tamao de la pgina, para este ejemplo use una pgina tamao carta(Letter) en
horizontal (1).
Lo primero que quisimos hacer es mostrar que no solo se trata de poner
letras, razn por la que colocamos una imagen con la instruccin Image, la cualpuede cargar imgenes .jpg, .png o .gif, con el inconveniente de que no soporta
imgenes con fondo transparente, as que deberemos usar imgenes con fondo de
color o en su defecto con fondos de color blanco.
Se usa la instruccin SetFont para indicar el tipo de letra, el estilo y el
tamao de la letra, los efectos de esta instruccin se aplican a todo el texto que se
coloque delante de ella y hasta que se encuentre otra instruccin SetFont que
cambie el formato del texto.
Tenemos varias opciones para escribir el texto, podemos usar las
instrucciones Write, Text o Cell, la ventaja de usar cell es la posibilidad de
colocar recuadros al rededor del texto.
Un problema que hay es que las instrucciones de escritura no conservan la
propiedad de PHP de insertar el valor de la variable directo en la cadena, por lo que
hay que construir la cadena antes de usar la instruccin Cell, por ello es que observa
que antes de llamar a la instruccin cell se usa la variable $lnea para crear el texto
con el valor de la variable.
Para terminar, es importante no olvidar la ltima instruccin $PDF-Output()
ya que esta es la que hace el envo de todo lo que hemos hecho al navegador.
28
mailxmail - Cursos para compartir lo que sabes
http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/ -
7/31/2019 Programacion Sistemas Php 38996 Completo
29/37
13. Clculos con MySQL
Lo que toca ahora ser la cuestin de elaborar estadsticas y totales a partir
de los datos almacenados en la base de datos de MySQL, pero para esto
necesitaremos tener campos a travs de los cuales se puedan hacer clculos, as que
modificaremos la tabla de ejemplo agregando los campos sexo y sueldo, quedandode la siguiente forma:
Como sabemos todo el trabajo est basado en la consultas en el lenguaje
SQL, as que antes de elaborar cualquier modulo que genere estadsticas, tenemos
que saber cmo obtenerlas, razn por la que este captulo est dedicado a las
funciones matemticas que podemos usar en las consultas.
Las funciones que vamos a ver se pueden aplicar de dos formas:
Con la clusula select: lo que hace que los clculos se realicen sobre toda la
tabla o sobre los registros que coincidan con la clusula where
Con la clusula group by: no se omite el uso de la clusula select, pero al
usar group by los clculos se realizan por grupos de datos, es decir, se crean
grupos de acuerdo a los valores que existen en un campo y los clculos se realizan
por grupo.
En el primer caso se obtiene un resultado del conjunto de datos y en el
segundo caso se obtienen varios resultados, uno por cada grupo de datos, lo cual
modifica el tratamiento del resultado en PHP.
Veamos las funciones.
AVG.
Se usa para calcular el promedio de un campo, por ejemplo, si quisiramos
saber el promedio de sueldos de los empleados de la empresa usaramos:
select avg(sueldo) from personal.
Si quisieramos saber el promedio de sueldo por sexo usaramos la clusula
group by de la siguiente forma:
select avg(sueldo) from personal group by sexo
El resultado de esta consulta seria el promedio de sueldo de los hombres y el
29
mailxmail - Cursos para compartir lo que sabes
http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/ -
7/31/2019 Programacion Sistemas Php 38996 Completo
30/37
promedio de sueldo de las mujeres, tambin se puede hacer uso de la clusula
where para obtener resultados ms especficos, como por ejemplo, al buscar el
promedio por sexo, pero solo de los que fueron contratados del 1 de enero del
presenta ao a la fecha, que para dicho caso quedara:
select avg(sueldo) from personal where fecha=1/01/11 group by sexo
COUNT
Esta funcin nos permite saber el nmero de registros cuyo valor no sea nulo,
es decir, solo cuenta los registros que tengan datos. Veamos algunos ejemplos:
Contar el nmero total de empleados de la empresa
Select count(clave) from personal
Contar el nmero de hombres y mujeres en la empresa
select count(clave) from personal group by sexo
MIN
Esta funcin obtiene el valor mnimo de un campo, por ejemplo:
Encontrar el sueldo ms bajo de la empresa
select min(sueldo) from personal
MAX
Esta funcin devuelve el valor mximo en un campo, por ejemplo:
Encontrar el salario ms alto de cada sexo
select max(sueldo) from personal group by sexo.
SUM
Obtiene la suma de valores de un campo, como en los s iguientes ejemplos
Obtener la suma de los sueldos de todos los empleados
Select sum(sueldo) from personal
Obtener la suma de sueldos del personal, separado por sexo:
select sexo, sum(sueldo) from personal group by sexo
30
mailxmail - Cursos para compartir lo que sabes
http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/ -
7/31/2019 Programacion Sistemas Php 38996 Completo
31/37
Estas seran las funciones ms usuales, pero si necesitamos ms informacin
estadstica, tambin disponemos de las siguientes:
STD( campo), calcula la desviacin estndar
VAR_POP (campo), calcula la varianza
31
mailxmail - Cursos para compartir lo que sabes
http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/ -
7/31/2019 Programacion Sistemas Php 38996 Completo
32/37
14. Elaborar graficas
Como ya vimos cmo hacer clculos en las consultas, ya podemos generar
estadsticas y grficas.
Existen varias formas de crear grficas, todas ellas ocupan algn tipo de
librera adicional que deberemos copiar a nuestro servidor, algunas son GPL y otras
son comerciales, pero todas son muy buenas opciones, los resultados varan,
algunas generaran la grfica como una imagen JPEG o PNG y otras lo harn en
formato Flash.
De todas las formas posibles hemos escogido usar la librera pChart en su
versin GPL, la librera se descarga de su pgina oficial.
La instalacin de la librera es muy simple, solo se descompacta el archivo en
la carpeta donde tenemos nuestro sistema, en algunas versiones se genera una
carpeta con el nombre de pchart seguido del nmero de versin, solo debemos
extraer todas las carpetas contenidas en ella.
Para poder funcionar requiere de una librera adicional llamada 2G pero no
hay problema, el servidor XAMPP que usamos en estos ejemplos ya la trae incluida y
funcionando.
Pero vayamos al ejemplo en s, la idea es generar una tabla con el promedio
del sueldo de los empleados agrupado por sexo, as que a continuacin tenemos el
resultado que obtendremos:
La documentacin sobre las instrucciones de esta librera es muy extensa, as
que para este ejemplo nos centraremos en la creacin de una grfica de pastel en
3d, veamos el cdigo fuente y procedamos con la explicacin.
Las primeras lneas que tenemos son las llamadas a las libreras con la
instruccin include, aqu son bsicas las libreras pDraw, pImage y pData, se ha
incluido la librera pPie porque se trata de una grfica de pastel, as que como vemos
el uso de las libreras depender del tipo de grafica que debamos crear.
Despus de eso podemos observar una consulta donde obtenemos los
promedios por cada sexo, como solo son dos no necesitamos un ciclo y llamados
dos veces a MySQL_fetch_rows para obtener los datos de la consulta y depositamos
32
mailxmail - Cursos para compartir lo que sabes
http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/ -
7/31/2019 Programacion Sistemas Php 38996 Completo
33/37
los valores en las variables $dato1 y $dato2.
Con ellos y haciendo uso de la instruccin echo construimos una tabla con
etiquetas HTML y desde ese punto comenzamos a construir la grfica.
Par construir la grfica primero necesitamos un almacn para los datos que
usaremos, en este caso se llama $tabla y la creamos con el constructor new como
una instancia de pData.
La instruccin AddPoints nos permite agregar conjuntos de datos, as que le
agregamos la lista de valores numricos de la grfica y les damos el nombre de
serie; en la lnea siguiente usamos la instruccin setSerieDescription para indicar
que el conjunto de datos que ingresamos tendr la etiqueta de sexo y que ser la
serie a graficar.
Despus de eso usamos la instruccin AddPoints nuevamente, para ingresar
los valores del eje x (sabemos que una grfica circular no tiene ejes, pero es el
formato que usa la librera),
as que en esta caso nombramos a los nombres de los sexos, etiquetas y
usamos la instruccin setAbscissa para indicar que se usara ese conjunto de datos
como eje x, por lo que al ser una grfica circular sern usados como etiquetas de
cada segmento de la grfica.
Hasta este punto hemos declarado la tabla de datos de la grfica, la lnea que
continua crea un objeto de imagen en donde se creara la grfica y se hace con el
constructor new, como una instancia de pImage, el cual recibe como parmetros el
ancho y lo alto de la grfica seguido de la tabla de datos a usar y el parmetro de
uso de imagen que se sita en TRUE.
Despus de eso se crea con el mismo constructor new, el objeto pPie que se
encargara de crear la grfica de pastel y recibe como parmetros el objeto de
imagen y la tabla de datos.
Se emplea la instruccin Draw3Dpie con los siguientes datos
x,y, coordenadas de donde se ubicara la grfica dentro del rea de imagen.
El arreglo de parmetros dentro de los que se incluyo
Radius para indicar el radio de la grfica.
33
mailxmail - Cursos para compartir lo que sabes
http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/ -
7/31/2019 Programacion Sistemas Php 38996 Completo
34/37
DrawLabel para que se coloquen las etiquetas al lado de cada segmento.
Labelstacked para dibujar las lneas que apuntan de las etiquetas a los
segmentos
Border para dibujar el borde las lneas.
La instruccinRender
vaciara la grfica en un archivo de imagen, para estecaso lo llamamos graficapastel.png
La grafica ya existe como un archivo .png ahora usamos la instruccin echo
para mandar a escribir una etiqueta img para colocar en pantalla la imagen de la
grfica que creamos.
34
mailxmail - Cursos para compartir lo que sabes
http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/ -
7/31/2019 Programacion Sistemas Php 38996 Completo
35/37
15. Exportando a Excel
La exportacin de datos es la funcin que permite a un software enviar la
informacin que contiene de su formato nativo al formato de otro software para que
pueda ser manipulado por este.
El objetivo es proporcionar flexibilidad al sistema para que los usuarios
puedan hacer estadsticas o reportes que el sistema no genera, no por un mal
diseo, sino porque en el momento en que se hizo estas no eran necesarias,
recordemos que las organizaciones son entes dinmicos y por lo tanto sus
necesidades cambian y la exportacin de datos responde a esta necesidad de cambio.
Pero vamos a con el cdigo necesario:
En este caso estamos pasando el listado completo de la tabla, pero igual se
puede hacer que sea filtrada en base a algn dato a travs de un formulario web.
EL programa lo que har ser declarar al navegador que le est enviando
datos en el formato de excel, esto lo hace en el siguiente fragmento de cdigo:
La instruccin header enva los encabezado que declaran el tipo de
informacin, pero veamos con ms detalle
El primer header indicaa travs de los tipos MIME que la informacin que
recibe el navegador es para ser vista en excel
El segundo headerle indica que la informacin ser adjuntada o
almacenada en un archivo llamado archivo.xls igual le puede poner cualquier
nombre, y es con este nombre que se guardara la informacin.
El tercer headerle indica que no se usara la cache del navegador
El ltimo indica que el archivo no expira.
Despus de los headerse usa la instruccin echo para comenzar a crear una
tabla con etiquetas en HTML, estos echo solo se usan para crear los encabezados
de la tabla.
Se usa un ciclo while con la instruccin MySQL_fetch_row para ir colocando
los datos obtenidos de la consulta en el arreglo registro y a travs de instrucciones
echo se van agregando a la tabla como renglones usando nuevamente etiquetas de
35
mailxmail - Cursos para compartir lo que sabes
http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/ -
7/31/2019 Programacion Sistemas Php 38996 Completo
36/37
HTML.
Al final del ciclo cerramos con la etiqueta /table .Al poner a funcionar este
mdulo veremos la tpica ventana de abrir o guardar.
Claro, esto ser de acuerdo al navegador y la versin que usemos del mismo;
en chrome por ejemplo, no nos pregunta nada, solo lo guarda en la carpeta
descargas.
Ya sea que lo guardemos o lo abramos es posible que obtengamos el
siguiente mensaje:
En este caso se debe a la versin de office que estamos usando, pero solo
basta darle clic en el botn si y el resultado ser el siguiente:
Existen otros mtodos para producir la exportacin a excel, a travs de la
instalacin de frameworksen el servidor pero este es el mtodo ms sencillo.
36
mailxmail - Cursos para compartir lo que sabes
http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/ -
7/31/2019 Programacion Sistemas Php 38996 Completo
37/37
16. Exportar a Word
En el capitulo anterior vimos como exportar a excel va PHP, los datos que
tenemos almacenados en nuestra base de datos de MySQL, ahora bien con solo unas
simples modificaciones podremos exportar nuestros datos a Word.
Ahora vayamos a ver cmo quedara el cdigo fuente del PHP para producir
esto:
Si observan bien, se trata del mismo cdigo para exportar a excel, solo
hemos hecho dos modificaciones:
El primer header lo hemos cambiado a application/vnd.ms-Word para que
el archivo sea abierto por Word
En el segundo header hemos cambiado la extensin del archivo a .doc
Cabe aclarar que esto realmente no genera un archivo de Word en s, lo que
hace es enviar cdigo HTML a un documento de Word, y como Word puede
interpretar cdigo HTML, el
documento se abre en vista de pgina web y en modo de solo lectura si lo
mandamos a abrir de forma directa, tal y como vemos en la siguiente imagen:
Como podemos ver, a travs de este cdigo se manda a Word cualquier tipo
de informacin, pero no podemos generar formatos de documento, es decir, no
podemos hacer saltos de pgina, ni mrgenes, ni encabezados, solo que HTML nos
permita.
Al cambiar a la vista de diseo de pgina se establecern los mrgenes de la
plantilla NORMAL.DOT de Word, y una vez guardado el archivo en nuestra
computadora podremos modificarlo a nuestro gusto.
Autor:
Lic. Rafael Gamas Gutirrez.
Universidad Jurez Autnoma de Tabasco
mailxmail - Cursos para compartir lo que sabes
http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/http://www.mailxmail.com/