lunes, 13 de octubre de 2014

Insertar múltiples datos mediante un checkbox

<form method="post" action="09.php">
<input type="checkbox" name="elec[]" value="eq_sonido" />Equipo de Sonido<br />
<input type="checkbox" name="elec[]" value="microondas" />Microondas<br />
<input type="checkbox" name="elec[]" value="aspiradora" />Aspiradora<br />
<input type="submit" value="submit" name="submit">
</form>
 Esto me manda al sgte codigo PHP

<?
//AQUI CONEXION O include() DE ARCHIVO DE CONEXION CON BASE DE DATOS.
$link mysql_connect("localhost","root","zxy") or die ("Error: No se ha podido establecer la conexión con maquina local" mysql_error());
mysql_select_db("encuesta",$link) or die ("Error: No se ha podido seleccionar la BBDD de la maquina local" mysql_error());
$elec_array $_POST['elec'];
if (
$elec_array=='')
{
    
$query "INSERT INTO productos (elec) VALUES('')";
    
$result mysql_query($query);
}
else
{
    foreach (
$elec_array as $one_elec
    {
    
$source .= $one_elec.", ";
    }
    
$elec substr($source0, -2);
    echo 
$elec;
    
$query "INSERT INTO productos (elec) VALUES('$elec')";
    
$result mysql_query($query);
}
?>

miércoles, 8 de octubre de 2014

Teclas del teclado y valores de códigos de tecla

Letras de la A a la Z y números estándar del 0 al 9

En la tabla siguiente se enumeran las teclas de un teclado estándar para las
letras de la A a la Z y los números del 0 al 9, con los valores
correspondientes del código de tecla usados para identificar las teclas
en ActionScript.

Tecla de letra o número

Código de tecla

Código de tecla ASCII

A

65

65

B

66

66

C

67

67

D

68

68

E

69

69

F

70

70

G

71

71

H

72

72

I

73

73

J

74

74

K

75

75

L

76

76

M

77

77

N

78

78

O

79

79

P

80

80

Q

81

81

R

82

82

S

83

83

T

84

84

U

85

85

V

86

86

W

87

87

X

88

88

Y

89

89

Z

90

90

0

48

48

1

49

49

2

50

50

3

51

51

4

52

52

5

53

53

6

54

54

7

55

55

8

56

56

9

57

57

a

65

97

b

66

98

c

67

99

d

68

100

e

69

101

f

70

102

g

71

103

h

72

104

i

73

105

j

74

106

k

75

107

l

76

108

m

77

109

n

78

110

o

79

111

p

80

112

q

81

113

r

82

114

s

83

115

t

84

116

u

85

117

v

86

118

w

87

119

x

88

120

y

89

121

z

90

122

Teclas del teclado numérico

En la tabla siguiente se enumeran las teclas de un teclado numérico con los
valores correspondientes del código de tecla usados para identificar las teclas
en ActionScript:

Tecla del teclado numérico

Código de tecla

Código de tecla ASCII

Teclado numérico 0

96

48

Teclado numérico 1

97

49

Teclado numérico 2

98

50

Teclado numérico 3

99

51

Teclado numérico 4

100

52

Teclado numérico 5

101

53

Teclado numérico 6

102

54

Teclado numérico 7

103

55

Teclado numérico 8

104

56

Teclado numérico 9

105

57

Multiplicar

106

42

Sumar

107

43

Intro

13

13

Restar

109

45

Decimal

110

46

Dividir

111

47

Teclas de función

En la tabla siguiente se enumeran las teclas de función de un teclado
estándar con los valores correspondientes del código de tecla usados para
identificar las teclas en ActionScript:

Tecla de función

Código de tecla

Código de tecla ASCII

F1

112

0

F2

113

0

F3

114

0

F4

115

0

F5

116

0

F6

117

0

F7

118

0

F8

119

0

F9

120

0

F10

Esta tecla está reservada por el sistema y no puede utilizarse en
ActionScript.

Esta tecla está reservada por el sistema y no puede utilizarse en
ActionScript.

F11

122

0

F12

123

0

F13

124

0

F14

125

0

F15

126

0

Otras teclas

En la tabla siguiente se enumeran las teclas de un teclado estándar que no
son letras, números, teclas del teclado numérico ni teclas de función, con los
valores correspondientes del código de tecla usados para identificar las teclas
en ActionScript:

Tecla

Código de tecla

Código de tecla ASCII

Retroceso

8

8

Tabulador

9

9

Intro

13

13

Mayús

16

0

Control

17

0

Bloq Mayús

20

0

Esc

27

27

Barra espaciadora

32

32

Re Pág

33

0

Av Pág

34

0

Fin

35

0

Inicio

36

0

Flecha izquierda

37

0

Flecha arriba

38

0

Flecha derecha

39

0

Flecha abajo

40

0

Insert

45

0

Supr

46

127

Bloq Num

144

0

ScrLk

145

0

Pausa/Interr

19

0

; :

186

59

= +

187

61

- _

189

45

/ ?

191

47

` ~

192

96

[ {

219

91

\ |

220

92

] }

221

93

" '

222

39

,

188

44

.

190

46

/

191

47

Web Services, un ejemplo práctico VB .Net

Características de los Web Services

¿Alguna vez pensó de que forma poder integrar aplicaciones creadas en lenguajes y plataformas diferentes a través de Internet o mismo en su propia Intranet basándose en estándares? Bien, si lo pensó o si no lo hizo, la
respuesta más apropiada a este paradigma son los llamados Web Services.
Esto quiere decir que un desarrollador puede incluir en sus sitios o soluciones sentencias, instrucciones que consuman Web Services de terceros o propios como por ejemplo aquellos que proporcionan los datos meteorológicos para una localidad determinada, o las cotizaciones de determinadas monedas, o la cartelera de películas, o calendarios y agenda de algún especialista médico, etc. Esto ya comienza a gustarme.
Ahora pensando un poco mas en forma comercial, ¿que pasaría si por ejemplo yo estuviera trabajando en mi procesador de texto en un idioma para el cual no tengo un corrector ortográfico ni sintáctico instalado (quizás no exista para instalar), pero deseo realizar mi revisión del documento a toda costa? Bien, perfectamente podría haber una opción en el menú de dicho procesador que de alguna forma ubique un Web Service en Internet que brinde esta funcionalidad y lo mas interesante aún para quien lo haya desarrollado es que puede solicitar al usuario que se subscriba para su uso. Como ven, todos ganan en esta transacción.
El ejemplo anterior esta mostrando una realidad de la que no podemos estar ajenos. Es un replanteo de la estrategia utilizada por los desarrolladores que ahora al realizar una aplicación no deben pensar únicamente en el lugar físico donde la misma va a ejecutarse sino en que esa aplicación deberá estar interconectada con otras computadoras corriendo otras aplicaciones quizás en otras plataformas y lenguajes pero usando protocolos y estándares universales.
El intercambio se intensificará muchísimo mas y quizás existan por ejemplo “proveedores de dominios de datos” como ser los países, de forma tal que la aplicación que yo realice en lugar de crear toda la lógica para manejar las tablas y el cargado de los datos para el concepto PAIS se limite a consumir un Web Service que me torne esta información de algún lado en Internet. Imagino una reutilización aun mayor de funcionalidades y una colaboración e intercambio de lógica a nivel mundial. Quizás sea muy ambicioso en este planteo.
Ahora pasando al terreno más técnico y práctico de este artículo hay algunas consideraciones y conceptos para comenzar a entender este tema son las siguientes:
  • Un Web Service se puede registrar para poder dejarlo a disposición para otros usuarios y para que los mismos puedan localizarlos. Un mecanismo para registrar estos servicios es por medio de UDDI sigla que obedece a Universal Description, Discovery and Integration, un “repositorio de Web Services” (http://www.uddi.org/). Para registrar un servicio tendrá que tener en cuenta suministrar la información de su empresa, en que categorías ubicaría su servicio y la interfaz a utilizar para consumir dicho servicio.
  • El mecanismo utilizado por un Web Service para especificar de qué forma hay que proporcionarle los datos, de forma tal que cualquiera pueda interaccionar con el mismo, es por medio de lenguaje XML. Esta información se almacena en un archivo llamado WSDL (Web Services Description Language).
    Este archivo contiene un documento XML junto con la descripción de ciertos mensajes SOAP y como deben intercambiarse, así como también donde esta el recurso del servicio y con que protocolo debe dialogar quien lo consume.
  • El protocolo de comunicación utilizado es el SOAP generalmente, el cual es relativamente sencillo de utilizar.
  • Los Web Services utilizan protocolos comúnmente conocidos y difundidos como el formato XML, TCP/IP como protocolo de transporte y HTTP como protocolo de transferencia de hipertexto.

¿Qué es el SOAP?

Es un protocolo que define el formato XML para los mensajes de intercambio en el uso de un Web Service. Para aquellos programadores que solían utilizar llamadas del tipo RPC, SOAP también las soporta. Adicionalmente es posible mediante SOAP definir un mensaje HTTP y este punto es de especial interés puesto que el protocolo imprescindible para Internet es HTTP.
Recomendación: Para comenzar a acercarse a entender este tema es recomendable el uso del Microsoft SOAP Toolkit Version 3.0 (pasaje de COM a SOAP).

Un ejemplo práctico

A partir de ahora describiré en unos pocos pasos un ejemplo práctico y sencillo de creación de un Web Service y una muestra de cómo consumirlo desde una aplicación cliente en este caso una simple planilla de Excel.
Paso 1: Lo primero será crear un proyecto Visual Basic del tipo “ASP.NET Web Service” al que llamaremos “DameCotizacion”.
Paso 2: Al archivo Service1.asmx que se crea una vez generado el proyecto lo renombramos a DameCotizacion.asmx y lo establecemos como “Pagina de Inicio del proyecto”.
Paso 3: Ingresando a la ventana de código del archivo DameCotizacion.asmx en la zona del <webMethod()> agregamos el código siguiente:

<WebMethod()>
 Public Function GetCotizacion(ByVal strmoneda As String) As String
      'Objetivo: Devolver cotizacion para una moneda en pesos uruguayos
      '        Obviamente esto es un ejemplo por lo que esta info que 
      '        se presenta estatica se tomaria de una base de datos
      'Acepta: strmoneda - un id para la moneda de dos caracteres.
      'Devuelve: cotizacion de dicha moneda en pesos uruguayos
 
      Select Case UCase(Trim(strmoneda))
         Case "DO"
            'dolar
            Return "30"
         Case "RE"
            'real
            Return "9.9"
         Case "EU"
            'Euro
            Return "33"
      End Select
   End Function
Para verificar el correcto funcionamiento de esta aplicación, vamos a ejecutarlo. Para ello apretamos F5 y el resultado esperado se verá en el Internet Explorer. Como se puede ver se ofrece el método GetCotizacion() definido en el código anterior.
Si clickeamos sobre dicho método podremos ver la especificación del mismo y la definición del tipo de intercambio de mensajes.
Paso 4: Podemos comprobar el funcionamiento colocando el valor “EU” (código que establecimos para el euro) y clickeando en “Invoke”. El valor esperado por el método es del tipo string y deberá ser uno de los tipo de monedas (“DO”, “RE” o “EU”) definido en nuestro método.
El resultado debería ser un mensaje en XML como se muestra a continuación, mostrando el valor definido para la moneda de código “EU”
Pues bien pongamos a trabajar nuestro Web Service en una aplicación práctica. Supongamos que tenemos una planilla Excel donde tenemos artículos cuyos precios están en su moneda original y queremos que aparezca su valor en pesos uruguayos. Para esto consumiremos el Web Service creado en los pasos anteriores (DameCotizacion) que proporcionando el código de la moneda me devuelve la cotización correspondiente.
Nota: Para este ejemplo debemos tener instalado el paquete Microsoft Web Services Toolkit.
Paso 5: Crearemos una planilla Excel como se muestra en la figura siguiente, donde agregaremos un botón cuyo nombre y Caption será "Cotizar".
Paso 6: En la celda E2 la fórmula para calcular el valor del articulo en pesos uruguayos es =D2*C2. La columna Cotización será alimentada una vez que se oprima el botón Cotizar el cual disparará un evento que consumirá el Web Service DameCotizacion y retornará en cada celda Cotización el valor correspondiente.
Paso 7: Haciendo doble clic sobre el botón Cotizar ingresaremos a la ventana de código Visual Basic posicionados en el evento click de dicho botón.
Previo a esto relacionaremos nuestro Web Service a nuestra planilla mediante el uso de la herramienta Microsoft Web Services Toolkit.
Paso 8: Para ello desde el menú Herramientas de la ventana de código Visual Basic seleccionamos la opción “Web Service References …”
En dicha ventana seleccionamos “Web Service URL” y colocamos http://localhost/DameCotizacion/DameCotizacion.asmx en el cuadro de texto “URL” y apretamos el botón “Search”. Esta acción deberá traer como resultado nuestro Web Service DameCotizacion en la sección “Search Results”, el cual seleccionaremos, donde podrá verse que esta disponible nuestro método GetCotizacion(). Clickearemos “Add”.
Paso 9: El código del evento Cotizar_Click()es el siguiente:
Private Sub Cotizar_Click()
   Dim clsCotizacion As clsws_DameCotizacion
   Dim monedas As Range
   Dim moneda As Range
   Dim cotizacion As String
   
   Set clsCotizacion = New clsws_DameCotizacion
   Set monedas = Range(Range("b2"), Range("b65536").End(xlUp))
   Application.ActiveSheet.Range("b2").Activate
   
   For Each moneda In monedas
      
      cotizacion = clsCotizacion.wsm_GetCotizacion(moneda)
    
      moneda.Offset(0, 1).Value = Val(cotizacion)
      
   Next moneda
End Sub
Ok, si todo sale como es de esperar el resultado de oprimir el botón Cotizar debiera ser el que se muestra a continuación, Eureka!!!!
Como verán este es un simple ejemplo que muestra como consumir un Web Service desde una aplicación cliente en este caso Excel que ilustra dos puntos interesantes: la facilidad de implementación del mismo y la potencia que nos brinda. Basta conocer un proveedor de un servicio de cotizaciones de moneda para mantener nuestra planilla al día con las últimas cotizaciones del mercado bursátil.
Para aquellos desarrolladores que ya hacían uso de incluir referencia a objetos COM en sus herramientas quizás esto no sea muy novedoso pero en el caso de los objetos COM los mismos debían estar físicamente en la computadora cliente. En el caso de los Web Services estamos hablando de compartir recursos que habiten en la Intranet corporativa o mas aún, en Internet y en sitios bien dispersos en el mundo.
Para los que quieran hacer números y le quieran sacar un beneficio económico, ¿qué ocurriría si yo fuera un proveedor de Web Services y solicite la subscripción para el uso de los mismos a mis clientes a lo largo y ancho del planeta? ¿Interesante, no?
Mas aun, no necesariamente el escenario se limita a una aplicación cliente consumiendo un Web Service sino que a su vez un Web Service podría consumir otro Web Service para poder armar la información de respuesta a retornar al cliente. No hace falta Imaginar un escenario de este tipo pues esto ya es posible.

Hacia donde vamos

Si bien se ha avanzado mucho al respecto y hay infinidad de desarrolladores trabajando en este tema hay aspectos a mejorar para catapultar aun más esta funcionalidad. Algunas características a mejorar pasan por temas relacionados a la seguridad (autorización, autenticación y cifrado) en el intercambio de mensajes, manejar el modelo transaccional y poder confirmar la entrega efectiva de los mensajes que se intercambian a través de los Web Services. Adicionalmente se continúa trabajando en la estandarización de los principales actores como ser el WDSL y SOAP. Muchos fabricantes seguirán contribuyendo elaborando herramientas para facilitar el manejo y elaboración de Web Services como en el caso de Microsoft y su Web Services Toolkit para el Office 2003 que actualmente esta en su versión 2.01.
Otros elementos claves que no entran en análisis en este articulo pero igual los menciono por si es de interés del lector ahondar en los mismos, son los relacionados a las especificaciones de WS-Security, WS-Routing y DIME para lo cual pueden encontrar mas información en la herramienta Microsoft WSDK Technology Preview o Internet.

martes, 7 de octubre de 2014

Sistemas de Usuarios en PHP y MYSQL

1.- Creando la tabla en MySQL

Bien, necesitamos una tabla con los datos de nuestros usuarios, así que la vamos a crear. Ésta tabla contiene los siguientes campos:


Código

FIELD     | Type        | KEY | Extra        
----------+-------------+-----+----------------
 id        | tinyint(4)  | PRI | AUTO_INCREMENT 
 nombre    | text        |     |                
 apellidos | text        |     |                
 login     | varchar(40) |     |                
 password  | varchar(20) |     |                
 email     | text        |     |                 
 

Bien, pues la sentencia SQL que utilizaremos será algo así:


Código
CREATE TABLE usuarios (
id TINYINT(4) AUTO_INCREMENT,
nombre TEXT,
apellidos TEXT,
login VARCHAR(40),
password VARCHAR(20),
email TEXT,
UNIQUE (id) )

2.-Creando un script para introducir usuarios
Necesitamos el formulario, con los campos siguientes:

Código
<form action="crea_user.php" method="POST">
Login: <input type="text" name="login"><br>
Password: <input type="password" name="pass1"><br>
Repite Password: <input type="password" name="pass2"><br>
Nombre: <input type="text" name="nombre"><br>
Apellidos: <input type="text" name="apellidos"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit" name="Crear">
</form>

Y también el script crea_user.php, que sería algo así:
crea_user.php


Código
<?
$server="localhost"; /* Nuestro server mysql */
$database="bd"; /* Nuestra base de datos */
$dbpass="password"; /*Nuestro password mysql */
$dbuser="user"; /* Nuestro user mysql */
/* Primero comprovamos que no existe un usuario con el mismo login ya registrado */
 
$query="SELECT * FROM usuarios WHERE login='$login'";
$link=mysql_connect($server,$dbuser,$dbpass);
$result=mysql_db_query($database,$query,$link);
if(mysql_num_rows($result)){
echo "El usuario ya existe en la BD";
} else {
mysql_free_result($result);
/* Ahora comprovamos que los dos pass coinciden */
if($pass1!=$pass2) {
echo "Los passwords deben coincidir<br>";
echo 'Clica <a href="form.php">aquí</a> para volver al formulario';
} else {
$pass1=crypt($pass2, "semilla"); 
 
/* Encripatmos el password, con la clave "semilla" que debeis sustituirpor la que mas os guste. Hay otros metodos de encriptacion, mirad en php.net si quereis conocerlos. */
 
$query="INSERT INTO usuarios (login, nombre, apellidos, password, email) VALUES ('$login','$nombre','$apellidos','$pass1','$email')";
 
$result=mysql_db_query($database,$query,$link);
if(mysql_affected_rows($link)){
echo "Usuario introducido correctamente";
} else {
echo "Error introduciendo el usuario";
} /* Cierre del else */
} /* Cierre del else que corresponde a if(mysql_affected_rows.....) */
} /* Cierre del else que corresponde a if(mysql_num_rows...) */
?>

Pues como veis, este script es muy simple. Si no lo entendeis, es porque no conoceis PHP o su método de acceso a bases de datos mysql. Leeros el prólogo antes de continuar ;-) Aquí deberíamos comprobar que quien está creando los usuarios está identificado (en caso de que el registro no sea público).

3.- Creando la página y scripts de login
Ésta parte consiste en dos páginas, la de login, y el script que comprueba los datos. Aquí va la página de login:

login.php

Código
<?
session_start();
if(isset($SESSION)){
header("location: user.php"); /* Si ha iniciado la sesion, vamos a user.php */
} else { 
/* Cerramos la parte de codigo PHP porque vamos a escribir bastante HTML y nos será mas cómodo así que metiendo echo's */
?>
<html><head><title>Necesita identificación! </title></head>
<body>
<center><h1>Identificate! :D </h1></center>
<form action="comprueba.php" method="POST">
Login: <input type="text" name="login"><br>
Password: <input type="password" name="pass"><br>
<input type="submit" value="Entrar">
</form>
</body></html>
<?
} /* Y cerramos el else */ 
?>
 

Y el que sigue es el script de comprobación, que comprobará los datos y si son correctos nos manda a user.php tras iniciar la sesión. Si no, nos dará un mensajito avisandonos de que no hemos dado el login correcto. Primero os explicaré las funciones que usaremos.

session_start() se debe usar al principio de cada script en el que vayamos a hacer uso de variables de sesión.

session_register("nombre_variable") se usará para crear una variable de sesión, que luego podremos usar con
el nombre $nombre_variable. Lo que haremos aquí será primero inicializar las variables como un array, y luego registrarlas en la sesión.

Ahora el código:

comprueba.php

Código
<?
session_start();
$server="localhost"; /* Nuestro server mysql */
$database="bd"; /* Nuestra base de datos */
$dbpass="password"; /*Nuestro password mysql */
$dbuser="user"; /* Nuestro user mysql */
$query="SELECT * FROM usuarios WHERE login='$login'";
$link=mysql_connect($server,$dbuser,$dbpass);
$result=mysql_db_query($database,$query,$link);
if(mysql_num_rows($result)==0){
echo "No existe el login introducido";
} else {
$array=mysql_fetch_array($result);
if($array["password"]==crypt($pass,"semilla") ){
/* Comprobamos que el password encriptado en la BD coincide con el password que nos han dado al encriptarlo. Recuerda usar la misma semilla para encriptar los dos passwords. */
$SESSION["login"]=$login;
$SESSION["nombre"]=$array["nombre"];
$SESSION["apellidos"]=$array["apellidos"];
session_register("SESSION");
header("location: user.php");
 
} else {
echo "Password incorrecto!";
} /* Cerramos este ultimo else */
} /* Cerramos el else que corresponde a la comprobación de que el login existe */
 
?>

4.- Creación de la página de los usuarios
Bien, ésta página la voy a dejar bastante vacía, solo va a comprobar si el usuario ya se ha identificado. Si es así, le daremos la bienvenida simplemente, y pondremos el botón para logout. Si no, le mandaremos a login.php. Ahí va el código:
user.php

Código
<?
session_start();
if(!isset($SESSION)){
header("location: login.php");
} else {
echo "<html><body>";
echo "Bienvenido ";
echo $SESSION["nombre"];
echo $SESSION["apellidos"]." ";
echo "<br>Has entrado con el nombre de usuario ";
echo $SESSION["login"];
echo "<br>Para cerrar la sesión, pulsa: <a href='logout.php'>logout</a>";
echo "</body></html>";
}
?>
 

5.- Cerrando la sesión
En el script logout.php simplemente cerraremos la sesión y mostraremos un mensaje indicando que ha
sido cerrada correctamente. Antes de ésto, comprovaremos que ha sido iniciada la sesión. Si no lo ha sido, mandaremos al usuario a login.php. Aquí usaremos dos funciones nuevas:

session_unset() destruye todas las variables de sesión que hemos creado. Debemos llamarla antes de llamar a
session_destroy.
session_destroy() destruye la sesión en sí, pero no destruye las variables.

Ahora sí, aquí os dejo el código:

Código
<?
session_start();
if(!isset($SESSION)){
header("location: login.php");
} else {
session_unset();
session_destroy();
echo "Las variables de sesión han sido eliminadas, y la sesión se ha dado por finalizada correctamente ;-)";
}
?>

Simple verdad? Pues ya tenemos nuestro sistema de usuarios completo!

ALERTA!: En éstos scripts hay algunas cosillas que tendremos que mejorar.
Por ejemplo, hay que mejorar el manejo de errores de la base de datos. Además, deberíamos incluir redirecciones hacia login.php tras mostrar los mensajes de logout, de error al identificarse (tanto de login incorrecto como de password incorrecto), que lo podríamos hacer con un refresh simple en HTML.

Además de todo ésto, tendríamos que crear un filtro para los datos introducidos en el login para evitar la inyección SQL en nuestras páginas. Para el password no sería necesario, puesto que hemos encriptado la entrada del usuario antes de pasarsela al MySQL, pero tampoco pasaría nada si, una vez implementado el filtro, se lo pasamos al password introducido por el usuario.

miércoles, 1 de octubre de 2014

Inserción de Datos con Ajax y POO con PHP

Tenemos la tabla Empleado. También disponemos de la Clase DBManager, esta Clase la vamos a usar
para verificar y realizar la conexión a la Base de Datos.
La Clase cEmpleado se encuentra en el archivo cEmpleado.php, a esta Clase vamos agregarle un método para que guarde un nuevo registro en la tabla Empleado. A este método lo llamaremos crear() el cual tendrá como parámetros de entrada los datos que se requiere del empleado: Nombre, Departamento, Sueldo. Hay que tener en cuenta que el campo idempleado incrementa automáticamente, por ello no lo incluimos dentro de los parámetros.
Veamos como quedaría este método en el archivo cEmpleado.php:

<?php 
 include_once("DBManager.php");
 
 //implementamos la clase empleado
 class cEmpleado{
 
  //constructor 
  function cEmpleado(){
  }
 
  // consulta los empledos de la BD
  function consultar(){
   //creamos el objeto $con a partir de la clase DBManager
   $con = new DBManager;
   //usamos el metodo conectar para realizar la conexion
   if($con->conectar()==true){
    $query = "select * from empleados order by nombres";
    $result = @mysql_query($query);
    if (!$result)
     return false;
    else
     return $result;
   }
  }
 
  //* inserta un nuevo empleado en la base de datos *//
  function crear($nom,$dep,$suel){
   $con = new DBManager;
   if($con->conectar()==true){
    $query = "INSERT INTO empleados (nombres, departamento, sueldo) 
    VALUES ('$nom','$dep',$suel)";
    $result = mysql_query($query);
    if (!$result)
     return false;
    else
     return true;
   }
  }
 
 }
?>

Ya tenemos la Clase cEmpleado con su nuevo método listo para ser usado en cualquier momento. Ahora continuando con el desarrollo vamos a listar todos los empleados de la tabla Empleados. A este archivo lo llamamos consulta.php y va usar las clase cEmpleado. Esta vez vamos a listar los resultados en una tabla HTML. Veamos:

<?php
 include_once("cEmpleado.php");
 
 //creamos el objeto $objempleados de la clase cEmpleado
 $objempleados=new cEmpleado;
 
 //la variable $lista consulta todos los empleados
 $lista= $objempleados->consultar();
?>
<table style="border:1px solid #FF0000; color:#000099;width:400px;">
<tr style="background:#99CCCC;">
<td>Nombres</td>
<td>Departamento</td>
<td>Sueldo</td>
</tr>
<?php
 while($row = mysql_fetch_array($lista)){
  echo "<tr>";
  echo "<td>".$row['nombres']."</td>";
  echo "<td>".$row['departamento']."</td>";
  echo "<td>".$row['sueldo']."</td>";
  echo "</tr>";
 }
?>
</table>

Veamos ahora, el proceso de guardado o inserción de los datos en la tabla Empleado, vamos a llamar a este archivo registro.php y notemos que se crea un objeto de la clase cEmpleado y usamos el método crear() donde especificamos los parámetros requeridos. Al final hace un include al archivo consulta.php para listar los nuevos datos.

<?php
 include_once("cEmpleado.php");
 
 //variables POST
 $nom=$_POST['nombres'];
 $dep=$_POST['departamento'];
 $suel=$_POST['sueldo'];
 sleep(2);
 
 //creamos el objeto $objempleados
 //y usamos su método crear
 $objempleados=new cEmpleado;
 if ($objempleados->crear($nom,$dep,$suel)==true){
  echo "Registro grabado correctamente";
 }else{
  echo "Error de grabacion";
 }
 include('consulta.php');
?>

Ahora las funciones en JavaScript, creamos 3 funciones: 1) para crear el objeto XMLHttpRequest, 2) para enviar y recibir los datos del empleado para que sean guardados en la tabla Empleado y 3) para limpiar las cajas de texto del formulario. El archivo ajax.js va así:

function objetoAjax(){
 var xmlhttp=false;
 try {
  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
 } catch (e) {
  try {
   xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (E) {
   xmlhttp = false;
  }
 }
 if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
  xmlhttp = new XMLHttpRequest();
 }
 return xmlhttp;
}
 
function enviarDatosEmpleado(){
 //donde se mostrará lo resultados
 divResultado = document.getElementById('resultado');
 divResultado.innerHTML= '<img src="anim.gif">';
 
 //valores de las cajas de texto 
 nom=document.nuevo_empleado.nombres.value;
 dep=document.nuevo_empleado.departamento.value;
 suel=document.nuevo_empleado.sueldo.value;
 
 //instanciamos el objetoAjax
 ajax=objetoAjax();
 
 //uso del medoto POST 
 //archivo que realizará la operacion
 //registro.php
 ajax.open("POST", "registro.php",true);
 ajax.onreadystatechange=function() {
  if (ajax.readyState==4) {
   //mostrar resultados en esta capa
   divResultado.innerHTML = ajax.responseText
 
   //llamar a funcion para limpiar los inputs
   LimpiarCampos();
  }
 }
 ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
 
 //enviando los valores
 ajax.send("nombres="+nom+"&departamento="+dep+"&sueldo="+suel)
}
 
//limpiando las cajas de texto
function LimpiarCampos(){
 document.nuevo_empleado.nombres.value="";
 document.nuevo_empleado.departamento.value="";
 document.nuevo_empleado.sueldo.value="";
 document.nuevo_empleado.nombres.focus();
}

Finalmente, el archivo index.php que contendrá un formulario con caja de texto para escribir los datos del empleado y una lista de los empleados registrado. Una vez que pulsamos el botón Grabar, los datos se guardarán en la tabla Empleado y la lista se actualizará automaticamente. Dentro de las etiquetas <head></head> hacemos referencia al archivo ajax.js, en el atributo onsubmit de la etiqueta <form> especificamos la función enviarDatosEmpleado() y en la dentro de las etiquetas <div id="resultado"></div> en la parte final hacemos un include al archivo consulta.php. El archivo quedaría así:

<html>
<head>
<title>Registro con AJAX</title>
<script language="JavaScript" type="text/javascript" src="ajax.js"></script>
</head>
<body>
<form name="nuevo_empleado" action="" onSubmit="enviarDatosEmpleado(); return false">
<h2>Nuevo empleado</h2>
<p>Nombres 
<label>
<input name="nombres" type="text" />
</label>
</p>
<p>Departamento 
<label>
<select name="departamento">
<option value="Informatica">Informatica</option>
<option value="Contabilidad">Contabilidad</option>
<option value="Administracion">Administracion</option>
<option value="Logistica">Logistica</option>
</select>
</label>
</p>
<p>Sueldo <strong>S/.</strong>
<label>
<input name="sueldo" type="text" />
</label>
</p>
<p>
<label>
<input type="submit" name="Submit" value="Grabar" />
</label>
</p>
</form>
<div id="resultado"><?php include('consulta.php');?></div>
</body>
</html>

Se habrá dado cuenta que hemos incluido un método a la clase cEmpleado y ello sin alterar el método anterior. Incluso hemos usado el método consultar() que ya estaba allí. Esto nos hace ver que si programamos Orientando a Objetos, nuestro código se hace flexible y reutilizable.