Programación basica en PHP (otra forma de eliminar)


El metodo visto en un post anterior para elaborar un modulo de eliminar es adecuado cuando estamos elaborando un sistema de atención 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 codigo de barras, pero este metodo es ineficiente cuando tenemos grandes volumenes de información, asi que a continuación elaboraremos un modulo de eliminar que filtre la información 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 pagina web que nos solicite el criterio a filtar, la cual sera muy simple, en este caso ocuparemos el campo de dirección para filtrar los datos, quedando el codigo fuente de la siguiente forma

Como vemos es un html muy simple que manda la dirección introducida a un php llamado lista.php, ahora bien la pagina se vería de la siguiente forma:

Bien, ya una vez que tenemos la pagina procederemos a analizar el php, asi que veamos el codigo

Como en los demas php, las primera lineas son para establecer la conexion con el servidor y seleccionar la base de datos, en este caso se crea una consulta de selección en la que se obtenga de la tabla de personal el nombre, la clave y la direccion de los empleados que tengan la dirección 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 hara, sera mandar la lista de claves de los registros a eliminar.

Una vez ejecutada la consulta atraves de «mysql_query» se verifica si se pudieron obtener datos con la instruccion «mysql_num_rows», que recordemos nos devuelve el numero 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 mas registros ($d>=1) entonces lo primero sera mandar a escribir la etiqueta «table» y el primer renglon de la tabla, el cual contendra los encabezados, oberve que la tabla esta metida  dentro de un formulario y que se agrego una columna llamada selección.

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 detendra cuando mysql_fetch_rows devuelva el valor «falso», lo que indicada que ya no hay mas registros.

En cada iteración del ciclo while se crea un numero renglon en la tabla, con los datos del registro pero la linea clave es la siguiente:

<td > <input type=\»checkbox\» name=\»s$n\» value=\»$registro[0]\» </td>

Esta linea 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 ejecucion lineas como esta

<td > <input type=»checkbo » name=»s1″ value=»100″> </ td>

la variable $n se inicializa en 1 antes del ciclo while e incrementa su valor en cada iteración 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 ejecución algo como esto:

De tal forma que usted podra seleccionar lo registros que se eliminaran, con solo marcar los checkbox que desee, podra eliminar 1, varios o todos los registros presentados.

Ahora bien el php que recibe la información tiene el problema de no saber cuantas variables va recibir, lo que lo hace diferente de los otros en los que sabiamos exactamente cuantos datos se reciben, para solucionar esto necesitaremos de una solución algo creativa, así que veamosla.

l

Las primeras lineas como vemos son las de siempre, pero una vez que las pasamos, llegamos a un ciclo «while» que posee varias sentencias muy singulares, primero hace uso de las 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 información atraves del metodo POST, esta se envia en pares de valores de la forma (variable, valor) asi que «LIST» deposita en las variables $key y $var el nombre de la variable y su valor respectivamente, para lo cual se valen de la sentencia «each», para que esto se ejcute 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 eliminación, y cada vez que se ejecuta una consulta de eliminación se presenta un texto informando si la operación tuvo exito o no, y al final de todo se agrega un enlace para retornar quedando la pagina resultante de la siguiente forma

Para terminar les dejo el enlace para descargar el codigo de ejemplo

http://dl.dropbox.com/u/26498694/ejemplo%20eliminar.rar

4 Comentarios

  1. buenos dias el codigo me presenta un error sera posible que me colabores gracias……
    Advertencia : Variable pasa a cada uno () no es una matriz o un objeto en C: \ xampp \ htdocs \ corculla \ 2.php en la línea 4
    Original Text:
    Warning: Variable passed to each() is not an array or object in C:\xampp\htdocs\corculla\2.php on line 4regresar

    att: hernan herrera

    Me gusta

      1. Buenas tardes ingeniero ya resolví el problema era la versión, y coloque $_post y ya me dio…

        ingeniero otra preguntica yo estudio tecnología en informática y estoy haciendo mi proyecto de grado que es un software de inventario, estoy preocupado por la parte de facturas y de inventario no tengo casi conocimiento y he buscado por la red algún ejemplo y nada, de pronto usted tenga algún ejemplo sobre este tema le agradecería mucho si mi hiciera el favor gracias.

        Me gusta

        1. revisa los post que se llaman acceso a multiples tablas, en ellos el ejemplo es un modulo de ventas que disminuye el inventario de acuerdo a la cantidad de articulos que se venden, creo que ese te serviria, aunque para ser un proyecto de grado yo diria que deberias complementarlo con una version para smartphone que por lo menos acceda a los reportes o estadisticas, para que el administrador del sistema pueda interactuar con el desde donde se encuentre

          Me gusta

¿Qué estas pensando?

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.