Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-12-2006
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Procesar un delete marcando con check cada columna

Holas:

Tengo una tabla Html con ciertos campos, mi idea es que al momento de checkear cada columna pueda eliminar todos los registros seleccionados y no tengo la menor idea de como hacerlo.

Adjunto una imagen para que tengan una idea.....desde ya muchas gracias..

Hasta Luego -
Archivos Adjuntos
Tipo de Archivo: zip Mant.zip (9,1 KB, 30 visitas)
__________________
No todo es como parece ser...
Responder Con Cita
  #2  
Antiguo 19-12-2006
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
pues no queda de otra mas que revisar cual esta "checkado" y le vas agregando a la instruccion sql un "or" y el elemento, algo asi como:

Código SQL [-]
Delete from tabla
Where (tabla.codigo = 3) or (tabla.codigo=15) or (tabla.codigo=396)
Responder Con Cita
  #3  
Antiguo 19-12-2006
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Hola:

Gracias por responder, lo veo complicado ya que Html y Php no van conmigo, pero ahí estoy intentandolo, existirá alguna página con código similares para poder llevar a la práctica, porque así como lo veo, no se me cruje

Nos vemos
__________________
No todo es como parece ser...
Responder Con Cita
  #4  
Antiguo 19-12-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Lo primero es saber cómo hacer el formulario html. La columna en cuestión estará formada por campos de tipo checkbox, a los cuales conviene darles nombres de tipo arreglo:

Código:
<tr>
  <td><input type='checkbox' name='borrar[163]'></td> ...
</tr>
<tr>
  <td><input type='checkbox' name='borrar[164]'></td> ...
</tr>
<tr>
  <td><input type='checkbox' name='borrar[1]'></td> ...
</tr>
<tr>
  <td><input type='checkbox' name='borrar[2]'></td> ...
</tr>
<tr>
  <td><input type='checkbox' name='borrar[3]'></td> ...
</tr>
<tr>
  <td><input type='checkbox' name='borrar[4]'></td> ...
</tr>
<tr>
  <td><input type='checkbox' name='borrar[26]'></td> ...
</tr>
El 'índice' del arreglo correspondería al código que, supongo, identifica de manera única a la fila (me imagino que es la llave primaria de una tabla).

En HTML, un checkbox sólo se manda si está marcado. Es decir, no es que se mande true o false dependiendo de si está marcado o no, se manda (por defecto) 'on' en caso de que esté marcado y no se manda nada en caso de que no esté marcado.

Cuando nombras los checkbox como te indico, PHP los recibe también en un arreglo, pero, por lo dicho antes, sólo recibirá aquellos elementos que estén marcados. Así, suponiendo que el usuario marca el 164, el 2 y el 3, PHP recibirá

Código:
$borrar[163] = 'on'
$borrar[1] = 'on'
$borrar[2] = 'on'
y nada más.

Bueno, miento un poco. El arreglo $borrar no lo recibe drectamente sino que debes recuperarlo de la variable $_POST:

Código PHP:
$borrar $_POST['borrar']; 
Entonces, para saber cuáles elementos se marcaron para borrar, basta saber cuales índices vienen en el arreglo. Lo más sencillo será procesarlos con algo como:

Código PHP:
foreach (array_keys($_POST['borrar']) as $codigo)
{
  ...

array_keys toma nada más los índices, y el foreach .. as hace un ciclo que te da, en cada vuelta, el índice en turno en la variable $codigo. Con ello puedes aprovechar para construir la consulta DELETE tal como te han indicado antes.

Ahora, en este caso, y aprovechando las magníficas funciones con que cuenta PHP para el manejo de arreglos, podemos incluso ahorrarnos el ciclo.

La función implode, convierte un arreglo en una cadena de caracteres formada por todos sus elementos separados por el "pegamento" que indiquemos. Así,

Código PHP:
implode(','array_keys($_POST)) 
devolverá una lista separada por comas de los códigos de las filas que se marcaron para borrar. Pero eso es justo lo que necesitas para el DELETE:

Código PHP:
$codigos implode(','array_keys($_POST));
$sql "DELETE FROM tabla where codigo in ($codigos)"
Lo que faltaría aquí es la construcción del formulario, porque es de suponerse que justamente lo obtienes de una consulta y debes escribirlo por código php dinámicamente, pero eso ya te queda de tarea

//Saludos

Última edición por roman fecha: 19-12-2006 a las 07:01:00.
Responder Con Cita
  #5  
Antiguo 19-12-2006
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Hola roman:

Justo lo que necesitaba, saber capturar todos esos valores, ni la menor idea que el formulario enviaba los elementos checkeados en un arreglo para luego capturarlos en un arreglo tipo $_POST, con lo que ya me entregaste tengo pega hoy, después comento como me fué....

Gracias....
__________________
No todo es como parece ser...
Responder Con Cita
  #6  
Antiguo 19-12-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
A ver, el $_POST no es exclusivo de los arreglos. Hay, básicamente, dos formas de enviar un formulario: por método POST o por método GET, lo cual se especifica en:

Código:
<form method='POST' action='...'>
o

Código:
<form method='GET' action='...'>
En el primer caso, todos los valores que mandes con el formulario llegarán a PHP en el arreglo global $_POST. Así, si tienes, por ejemplo, el formulario:

Código:
<form method='POST' action='...'>
Nombre <input type='text' name='nombre'>
EMail<input type='text' name='email'>
<textarea name='comentario'></textarea>
<input type='submit'>
</form>
El script PHP recibirá las variables en $_POST['nombre'], $_POST['email'], $_POST['comentario'], es decir, un elemento del arreglo por cada variable. En particular, si el nombre de una variable incluye corchetes, PHP interpretará que es parte de un arreglo, como en el caso de los checkbox ejemplificados antes. Igualmente puedes tener arreglos de otros tipos de campos.

Te recomiendo que antes que nada, experimentes con los distintos tipos de campo para que veas como llegan a PHP. Por ejemplo, procesa el formulario con un script:

Código PHP:
<pre>
<?
print_r
($_POST);
?>
</pre>
que te imprimirá todos los valores del arreglo $_POST.

// Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
SMDBGRID y la columna check ingel Varios 2 11-07-2006 14:28:56
Como procesar la excepción de violación de clave? ReyQ MS SQL Server 3 16-09-2005 10:15:55
como hacer que una columna del dbgrid contenga un valor de un TEdit en cada celda Shidalis OOP 2 02-08-2005 12:05:35
Procesar un Txt delimitado con TAB antes de Importar a un Database dago_Ariza Conexión con bases de datos 3 13-05-2004 09:36:30
Procesar Archivos de Texto delimitados por TAB para luego import en Access dago_Ariza Conexión con bases de datos 1 13-05-2004 09:24:39


La franja horaria es GMT +2. Ahora son las 08:40:39.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi