Acceso a multiples tablas (AJAX básico V )


Una vez que tenemos todo el código que hara las consultas a las tablas de la base de datos, falta el mecanismo que almacenara toda esta información, así que lo primero sera agregar un botón de cobrar.

Ademas de agregar el botón de cobrar, se agrego una nueva función AJAX que se encargara del envio de los datos al php que almacenara la información, en esta función no vamos a explicar todo ya que es un AJAX como las demás, pero explicaremos como tomamos los datos de la tabla para enviarlos.

Lo primero sera saber que hay 3 datos principales a enviar folio, fecha y clave del cliente, así que lo primero es construir una cadena de texto con estos datos, dentro del bloque marcado con azul hacemos esto, la variable de cadena se llama envió, luego en el bloque verde accedemos a la tabla, usando un ciclo for desde 1 hasta la longitud en renglones que tenga la tabla accedemos a las celdas que contienen el código del producto, la cantidad y el precio, esta información la agregamos a la cadena, creando nombres de variable en “&w”+linea, esto crea la variable o mas bien el parámetro w1 para el primer producto y w2 para el segundo producto, lo mismo hacemos con los demás datos, las razones para usar nombre de variables tan cortas son:

  1. Que estas no tengan una relación nemotecnica con el dato que almacenan, cosa que no hice con folio, fecha y clave de cliente (se me olvido)
  2. La limitante que imponen los navegadores para la longitud de las URL, la cual es en promedio de unos 2000 caracteres, así que necesito acortar lo mas que pueda la longitud de los parametros.

En dado caso de que la longitud de los parámetros que estimemos para las ventas de la empresa sea mas de esta longitud convendrá enviarlos en grupos, de lo contrario la lista de artículos se truncaria y habria perdida de datos.

Una vez creada la cadena se envía como en los demás AJAX, así que ahora toca el turno de analizar el PHP que recibe los datos para guardarlos.

Como podemos ver hemos recurrido a una técnica que ya habíamos usado antes, al no saber con exactitud la cantidad de variables a recibir no podemos designar variables especificas, así que usamos las instrucciones list y each para leer los datos directamente del arreglo HTTP_POST_VARS.

Como sabemos que las primeras tres variables corresponden al folio, fecha y clave de cliente podemos usar un contador para asignar cada valor a una variable y usar una consulta insert que guarde dicha información en la tabla de facturas.

Después de la factura 4 contaremos repetidamente 4,5 y 6 para tomar los valores de código, cantidad y precio, para almacenarlas junto con el folio en la tabla de detalle con lo que sabremos que productos vendimos en cada factura, después de eso usaremos una consulta update que restara al campo existencia del producto correspondiente las unidades vendidas.

Con esto hemos terminado este modulo de ventas y el ejemplo de acceso a múltiples tablas, con lo visto hasta el momento podrán completar este modulo con un reporte  o nota de venta impresa en pdf a traves de la libreria fpdf.

Apreciaciones adicionales:

  • Un modulo punto de venta no verifica la existencia ya que solo pasan por el escaner de códigos de barras los productos que están físicamente en la tienda.
  • Otra técnica para asegurar la integridad de las existencias seria ir descontando las unidades directamente de la tabla cada vez que se agregue un producto a la lista y en caso de cancelación reintegrarlos.

Para terminar les dejo el código fuente para que lo descarguen

http://db.tt/VrwdBmYX

 

 

 

Anuncios

Acerca de sistemasumma

Blog dedicado a la tecnología y a todos los estudiantes de sistemas, informatica, computación y afines
Esta entrada fue publicada en programacion y etiquetada , , . Guarda el enlace permanente.

8 respuestas a Acceso a multiples tablas (AJAX básico V )

  1. lys dijo:

    Hola, estaba probando el código pero al ingresar el código del cliente y presionar el botón buscar me sale el siguiente error: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\ventas\buscacliente.php on line 10
    Qué puede ser?

    Me gusta

    • sistemasumma dijo:

      los códigos de este post fueron escritos hace tiempo con PHP 4 lo que ocurre es que en PHP 5 debes cambiar el nombre del arreglo asociativo $HTTP_POST_VAR por $_POST, el error lo marca porque como no recibe los parámetros del formulario la consulta falla y msql_num_rows no puede ejecutarse sobre una consulta fallida

      Me gusta

  2. Anónimo dijo:

    ing. tengo un nuevo problemita, quiero que el programa ya no inserte la clave del cliente si no que inserte solo el nombre, hize un input de tipo text, al hacer la factura esta el campo para que el usuario ingrese el nombre pero al mirar la factura no ingresa el nombre, y la fecha la ingresa en este formato 0000-00-000 gracias espero pronta respuesta

    Me gusta

    • sistemasumma dijo:

      revisa que no estes tratando guardar la fecha en un formato incorrecto ya que mysql no maneja las fechas en formato de dia, mes, año en cuanto a lo del nombre, considera el problema de la homonimia y que debes restingir que el.nombre se escriba en mayuscula, ya que para una consulta en sql Juan,juan y JUAN son tres nombres diferentes

      Me gusta

  3. Rurouni dijo:

    Excelente ejemplo, el único defecto es cuando deseaste compartir código fuente y base de datos, creo que debiste de exportar la base de datos en un SQL y no como lo haz hecho.

    Me gusta

    • sistemasumma dijo:

      gracias por el comentario y la observación, la idea es que fuera simple para cualquiera solo copiar la carptea de la base de datos a la carpeta mysql/data de su servidor de base de datos local.

      Tratare de tomar en cuenta tu observación en proximos ejemplos, y de nuevo gracias por el comentario

      Me gusta

      • Rurouni dijo:

        Por nada, pero no haz tomado en cuenta a los que trabajan en otros sistemas operativos. Además creo que la mejor forma de aprender es y será colocando código… Si no lo saben leer aun están en pañales, ups !!… que fuerte… Saludos.

        Me gusta

        • sistemasumma dijo:

          Gracias por el comentario y procurare colocar instrucciones para los de otras plataformas ya que aun usando el mismo servidor algunos directorios cambian, e indudablemente la mejor manera de aprender a programar es haciéndolo, he visto a muchos que usan templates para hacer mas rápido el trabajo pero que al momento de tener que hacer modificaciones no saben como ubicarse dentro del código del template.

          Me gusta

¿Qué estas pensando?

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s