Programacion Sistemas Php 38996 Completo

download Programacion Sistemas Php 38996 Completo

of 37

Transcript of Programacion Sistemas Php 38996 Completo

  • 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/