Ver Mensaje Individual
  #17 (permalink)  
Antiguo 14/04/2009, 19:40
Avatar de juaniquillo
juaniquillo
Colaborador
 
Fecha de Ingreso: noviembre-2005
Ubicación: San Juan, Puerto Rico
Mensajes: 5.745
Antigüedad: 19 años, 4 meses
Puntos: 281
Respuesta: Eliminacion checkbox Dreamweaver

Ok, ahora podemos cambiar el código generado por DW para que borre múltiples entradas, osea, esta parte:
Código php:
Ver original
  1. if ((isset($_GET['eliminar'])) && ($_GET['eliminar'] != "")) {
  2.   $deleteSQL = sprintf("DELETE FROM factura_ingreso WHERE Id=%s",
  3.                        GetSQLValueString($_GET['eliminar'], "int"));
  4.  
  5.   mysql_select_db($database_farmacia, $farmacia);
  6.   $Result1 = mysql_query($deleteSQL, $farmacia) or die(mysql_error());
  7. }

Primero, recogemos el valor del checkbox, que en tu caso se llama 'seleccion', en una variable PHP de esta forma. Despues de "if ((isset($_GET['eliminar'])) && ($_GET['eliminar'] != "")) {" pones lo siguiente:

Código php:
Ver original
  1. $a_borrar  = $_POST['seleccion'];

De esta forma se recoge la variable de formulario llamada 'seleccion' en la variable '$a_borrar '. Luego, verificas que nadie haya marcado ningún checkbox de esta forma:

Código php:
Ver original
  1. if(!empty($a_borrar)){
  2. //codigo aquí
  3. }

Si no esta vacío el checkbox entonces se ejecuta el codigo entre los corchetes. Antes de trabajar ese código necesitas cambiar tu consulta. En vez de:

Código php:
Ver original
  1. $deleteSQL = sprintf("DELETE FROM factura_ingreso WHERE Id=%s",
  2.      GetSQLValueString($_GET['eliminar'], "int"));

Debes cambiar el '$_GET['eliminar']' por la variable "$valor"(Sin las comillas. Que por cierto, usaste GET en vez de POST porque escogiste URL Variable en vez de Form Variable al momento de crear el 'Delete'.

Ahora estas listo para hacer el 'loop'. En este caso puedes usar un foreach. Lo haces de esta forma:

Código php:
Ver original
  1. foreach($a_borrar as $valor){
  2.     $deleteSQL = sprintf("DELETE FROM factura_ingreso WHERE Id=%s",
  3.         GetSQLValueString($valor, "int"));
  4.    
  5.     mysql_select_db($database_farmacia, $farmacia);
  6.     $Result1 = mysql_query($deleteSQL, $farmacia) or die(mysql_error());
  7. }

Como puedes ver, he incluido el código que estaba antes (incluyendo el cambio de la variable '$valor') dentro del 'foreach'. Esto hace que se ejecute la consulta dependiendo de la cantidad de checkboxes marcados.

Al final este es el código, en comparación al primero:

Código php:
Ver original
  1. if ((isset($_GET['eliminar'])) && ($_GET['eliminar'] != "")) {
  2.   //recoger el checkbox en variable
  3. $a_borrar  = $_POST['eliminar'];
  4. //verificar si el contenido del checkbox no esta vacio
  5.     if(!empty($a_borrar)){
  6.         //comenzar el loop
  7. foreach($a_borrar as $valor){
  8.             //query string
  9.     $deleteSQL = sprintf("DELETE FROM factura_ingreso WHERE Id=%s",
  10.                 GetSQLValueString($valor, "int"));
  11.             //seleccionar DB y hacer consulta
  12.             mysql_select_db($database_farmacia, $farmacia);
  13.             $Result1 = mysql_query($deleteSQL, $farmacia) or die(mysql_error());
  14.         }
  15.     }
  16. }

Sustituye este último código por el que muestro primero en este mensaje. Dale a 'copiar' o a 'ver original' para poder copiar el código correcto. A mi la verdad no me funciona el 'copiar', así que siempre uso el 'ver original'

No lo copies directamente ya que también se copian los números.

Me dejas saber si tienes algún problema. Saludos.
__________________
Por fin.. tengo algo parecido a un blog
Y por lo visto ya estoy escribiendo...

Última edición por juaniquillo; 14/04/2009 a las 19:48