Foros del Web » Programando para Internet » PHP »

manejo de checkbox

Estas en el tema de manejo de checkbox en el foro de PHP en Foros del Web. Recupero de la base de datos, para poder recorrerlos debo seleccionar los checkbox como arreglos, luego necesito pasar por post los valores que estan en ...
  #1 (permalink)  
Antiguo 10/07/2010, 10:35
 
Fecha de Ingreso: marzo-2010
Mensajes: 24
Antigüedad: 14 años, 1 mes
Puntos: 0
manejo de checkbox

Recupero de la base de datos, para poder recorrerlos debo seleccionar los checkbox como arreglos, luego necesito pasar por post los valores que estan en esa fila, la cual tengo el checbox seleccionado, como recupero solo la informacion que contiene esa fila del checbox seleccionado ???



while {
<td align='center'><input type='checkbox' id='{$row['Id_DetalleReg']}_seleccionados[]' name='{$row['Id_DetalleReg']}_seleccionados[]' value='{$row['Id_DetalleReg']}'></td>
}


necesito hacer una actualizacion masiva de todos los datos, pero solo la informacion contenida en los checbox seleccionados.

Ayuda plissss
  #2 (permalink)  
Antiguo 10/07/2010, 11:05
Avatar de Gustavo72  
Fecha de Ingreso: abril-2008
Ubicación: -32.956045,-60.661355
Mensajes: 197
Antigüedad: 16 años
Puntos: 9
Respuesta: manejo de checkbox

Yo lo haría así:

Código PHP:
echo "<td align='center'><input type='checkbox' id='sel_{$row['Id_DetalleReg']}' name='sel_{$row['Id_DetalleReg']}' /></td>"
Y luego en el script que realiza los cambios:

Código PHP:
foreach ($_POST as $var => $val) {
     if (
substr($var04)=="sel_") {
          
$id=substr($var4);
          
mysql_query("UDATE tabla SET datoa='{$_POST['datoa$id']}', datob='{$_POST['datob$id']}', etc... WHERE Id_DetalleReg=$id");
     }

Espero que te sirva.

Ah, te recomiendo usar la comilla doble para HTML, es como se debe hacer.
__________________
Saludos.

Gustavo
  #3 (permalink)  
Antiguo 10/07/2010, 11:39
 
Fecha de Ingreso: marzo-2010
Mensajes: 24
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: manejo de checkbox

Gustavo72, me parece buena tu idea, el gran problema que tengo que no tan solo recibo por POST este check, si no muchas variables, lo cual no se como hacer para que el foreach reconozca que es el check que quiero recorrer, eso me tiene complicado.


Código PHP:
Ver original
  1. "<td align='center'><input type='checkbox' id='$id' name='$id' value='{$row['Id_DetalleReg']}'></td> ".
  2.                                 "<td>".substr($row['Fecha'], 0, 12)."</td> ".
  3.                                 "<td>{$row['TMovimiento']}</td> ".
  4.                                 "<td>{$row['Proceso']}</td> ".
  5.                                 "<td>{$row['NDocumento']}</td> ".
  6.                                 "<td align='center'>{$row['Codigo']}</td> ".
  7.                                 "<td>{$row['N_Corto']}</td> ".
  8.                                 "<td>{$row['Bodega']}</td> ".
  9.                                 "<td>{$row['Localizador']}</td> ".
  10.                                 "<td>{$row['OT']}</td> ".
  11.                                 "<td>{$row['TMaterial']}</td> ".
  12.                                 "<td align='center'>{$row['NSerie']}</td> ".
  13.                                 "<td align='center'>{$row['Cantidad']}</td> ".
  14.                                 "<td><input type='text' id='cantidad_real[]' name='cantidad_real[]' size='5' value='{$row['Cantidad_Real']}'></td> ".
  15.                                 "<td>$selest</td> ".
  16.                                 "<td><textarea id='observacion[]' name='observacion[]' cols='15' rows='2' onkeyup='this.value=this.value.slice(0,200)'>{$row['Obs']}</textarea></td> ".
  17.                                 "<td>{$row['Direccion']}</td> ".
  18.                                 "<td align='center'>{$row['Numero']}</td> ".
  19.                                 "<td>{$row['Departamento']}</td> ".
  20.                                 "<td>{$row['Comuna']}</td> ".
  21.                                 "<td>{$row['Ciudad']}</td> ".
  22.                                 "<td>{$row['TVivienda']}</td> ".
  23.                                 "<td>{$row['Acta']}</td> ".
  24.                                 "<td align='center'>$historial</td> ".
  25.                                 "<td align='center'>{$row['NFolio']}</td> ".
  26.                                 "<input type='hidden' name='adic[]' id='adic[]' value='{$row['Adicional']}'>".
  27.                                 "<input type='hidden' name='tmov[]' id='tmov[]' value='{$row['TMovimiento']}'>".
  28.                                 "<input type='hidden' name='id_r[]' id='id_r[]' value='{$row['Id_DetalleReg']}'>".


Ojala me puedas ayudar, necesito resolver este problema..

Gracias
  #4 (permalink)  
Antiguo 10/07/2010, 11:59
Avatar de Gustavo72  
Fecha de Ingreso: abril-2008
Ubicación: -32.956045,-60.661355
Mensajes: 197
Antigüedad: 16 años
Puntos: 9
Respuesta: manejo de checkbox

A ver si así te gusta:
Código PHP:
$ind=0;
while {

echo 
"<td align='center'><input type='checkbox' id='sel[$ind]' name='sel[$ind]' /></td> ".
                                
"<td>".substr($row['Fecha'], 012)."</td> "
                                
"<td>{$row['TMovimiento']}</td> ".
                                
"<td>{$row['Proceso']}</td> ".
                                
"<td>{$row['NDocumento']}</td> ".
                                
"<td align='center'>{$row['Codigo']}</td> ".
                                
"<td>{$row['N_Corto']}</td> ".
                                
"<td>{$row['Bodega']}</td> ".
                                
"<td>{$row['Localizador']}</td> ".
                                
"<td>{$row['OT']}</td> ".
                                
"<td>{$row['TMaterial']}</td> ".
                                
"<td align='center'>{$row['NSerie']}</td> ".
                                
"<td align='center'>{$row['Cantidad']}</td> ".
                                
"<td><input type='text' id='cantidad_real[$ind]' name='cantidad_real[$ind]' size='5' value='{$row['Cantidad_Real']}'></td> ".
                                
"<td>$selest</td> ".
                                
"<td><textarea id='observacion[$ind]' name='observacion[$ind]' cols='15' rows='2' onkeyup='this.value=this.value.slice(0,200)'>{$row['Obs']}</textarea></td> ".
                                
"<td>{$row['Direccion']}</td> ".
                                
"<td align='center'>{$row['Numero']}</td> ".
                                
"<td>{$row['Departamento']}</td> ".
                                
"<td>{$row['Comuna']}</td> ".
                                
"<td>{$row['Ciudad']}</td> ".
                                
"<td>{$row['TVivienda']}</td> ".
                                
"<td>{$row['Acta']}</td> ".
                                
"<td align='center'>$historial</td> ".
                                
"<td align='center'>{$row['NFolio']}</td> ".
                                
"<input type='hidden' name='adic[$ind]' id='adic[$ind]' value='{$row['Adicional']}'>".
                                
"<input type='hidden' name='tmov[$ind]' id='tmov[$ind]' value='{$row['TMovimiento']}'>".
                                
"<input type='hidden' name='id_r[$ind]' id='id_r[$ind]' value='{$row['Id_DetalleReg']}'>".

     
$ind++;

Código PHP:
foreach ($_POST['sel'] as $var => $val) {
     
mysql_query("UPDATE tabla SET Cantidad_Real='{$_POST['cantidad_real'][$var]}', etc... WHERE Id_DetalleReg={$_POST['id_r'][$var]}");

Probalo. Así tiene que andar.
Si el checkbox no está seleccionado directamente no se envía la variable por POST.
__________________
Saludos.

Gustavo
  #5 (permalink)  
Antiguo 10/07/2010, 18:06
 
Fecha de Ingreso: marzo-2010
Mensajes: 24
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: manejo de checkbox

Gustavo72 muchas gracias funciona espectacular, te agradezco mucho, de verdad

ahora solo tengo un probema tengo una funcion toggle en js, que marca todos los checkbox o los limpia, estaba funcionando, pero ahora como el nombre del sel[] tiene una valor dentro no me funciona, no logro seleccionar todos los check

function toggleCheck() {
var i;
var status;
var inputs = document.getElementsByName('seleccionados[]');
for(i=0; i<inputs.length; ++i) {
inputs[i].checked = !inputs[i].checked;
}

if(inputs[0].checked)
document.getElementById('toggle').value = "LIMPIAR TODO";
else
document.getElementById('toggle').value = "SELECCIONAR TODO";

return false;
}


muchas gracias
  #6 (permalink)  
Antiguo 10/07/2010, 18:56
Avatar de Gustavo72  
Fecha de Ingreso: abril-2008
Ubicación: -32.956045,-60.661355
Mensajes: 197
Antigüedad: 16 años
Puntos: 9
Respuesta: manejo de checkbox

Debería ser algo así (fijate si va "sel" o "seleccionados"):

Código Javascript:
Ver original
  1. function toggleCheck() {
  2.      var i;
  3.      var status;
  4.      for(i=0; i<<?= $ind ?>; i++) {
  5.           document.getElementById(sel[i]).checked = !document.getElementById(sel[i]).checked;
  6.      }
  7.      if(document.getElementById(sel[0]).checked)
  8.           document.getElementById('toggle').value = "LIMPIAR TODO";
  9.      else
  10.           document.getElementById('toggle').value = "SELECCIONAR TODO";
  11.      
  12.      return false;
  13. }

El único detalle es que tendrías que ponerlo debajo de la tabla para saber cuantas filas son ($ind).
Y tengo dudas con el if (document.getElementById(sel[0]).checked) ese debe ser un checkbox en el encabezado de la tabla que debe servir como botón, probablemente tengas que cambiarle el id y cambiar esto en javascript.

Otra cosa, en realidad tal como está esta función no limpia o selecciona todo, lo que hace es seleccionar lo que no está seleccionado y desseleccionar lo que sí está seleccionado.
Si querés que haga lo que vos decís deberías cambiar esta linea:

document.getElementById(sel[i]).checked =!document.getElementById(sel[i]).checked;

por algo así:

document.getElementById(sel[i]).checked=document.getElementById(sel[0]).checked; (sel[0] o el id que le pongas al checkbox del encabezado)

Armé bastante lío me parece. Si algo no se entiende avisame y lo vemos.
__________________
Saludos.

Gustavo

Última edición por Gustavo72; 10/07/2010 a las 19:05 Razón: Corregí sel[0] por document.getElementById(sel[0])
  #7 (permalink)  
Antiguo 10/07/2010, 19:18
 
Fecha de Ingreso: marzo-2010
Mensajes: 24
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: manejo de checkbox

Gustavo72, te agradesco tu buena voluntad, probe la funcion toogle y me da el siguiente error

document.getElementById("sel[i]") is null
[Break on this error] document.getElementById('sel...nt.getElementById(' sel[i]').checked;

verifique que se llama sel la variable.

Saludos
  #8 (permalink)  
Antiguo 10/07/2010, 19:49
Avatar de Gustavo72  
Fecha de Ingreso: abril-2008
Ubicación: -32.956045,-60.661355
Mensajes: 197
Antigüedad: 16 años
Puntos: 9
Respuesta: manejo de checkbox

Perdón, probalo así:

document.getElementById('sel['+i+']').checked=!document.getElementById('sel['+i+']').checked;
__________________
Saludos.

Gustavo
  #9 (permalink)  
Antiguo 11/07/2010, 21:08
 
Fecha de Ingreso: marzo-2010
Mensajes: 24
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: manejo de checkbox

Gustavo, muchas gracias por tu ayuda, solucione los problemas que tenia.

Cualquier cosa cuenta conmigo.

Saludos,

David

Etiquetas: checkbox, manejo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:23.