Foros del Web » Programando para Internet » PHP »

Recuperar checkbox marcados

Estas en el tema de Recuperar checkbox marcados en el foro de PHP en Foros del Web. Hola, me esta volviendo loco este tema jaja... asique lo consulto con ustedes. 1) Tengo un formulario para marcar los checkbox 2) Cada checkbox tiene ...
  #1 (permalink)  
Antiguo 14/11/2011, 15:44
 
Fecha de Ingreso: mayo-2010
Mensajes: 66
Antigüedad: 13 años, 11 meses
Puntos: 2
Recuperar checkbox marcados

Hola, me esta volviendo loco este tema jaja... asique lo consulto con ustedes.

1) Tengo un formulario para marcar los checkbox
2) Cada checkbox tiene un nombre unico compuesto por la seccion y su id(como lo puden ver en la imagen). Por ejemplo: "tema1,tema20,instrumental1,instrumental24,letra1, letra20"



3) En la base de datos tengo las entidades (tablas): Letras, Videos, Temas e Instrumentales
Cada una de estas entidades tiene un campo llamado Ficha.
El campo ficha puede ser 0 o 1. Si es 1 esta marcado el checkbox.

Hasta aca es lo que tengo hecho ahora.

Me falta el archivo GUARDACAMBIOS.PHP

No sé como recuperar los checkbox de manera dinamica para que me haga el UPDATE en el campo Ficha... 1 si esta marcado y 0 si no lo esta.

Espero haberme expresado..

Gracias por leer, espero que me puedan ayudar.

Saludos.
  #2 (permalink)  
Antiguo 14/11/2011, 16:18
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Recuperar checkbox marcados

Lee lo siguiente: http://www.php.net/variables.external, si pones todos tus checkbox solo es cuestión que los rescates usando ya sea $_POST o $_GET.

Para mayor conveniencía te recomendaría que los crearas como array, por ejemplo:
Código HTML:
Ver original
  1. <input type="checkbox" name="letras[]" value="eliddelaentidad">

Así puedes rescatar en PHP $_POST['letras'] el cual sería un array con los checkbox que fueron marcados, solo tendrías que checar cuales checkbox te llegaron y en base a eso hacer el UPDATE.

Saludos.
  #3 (permalink)  
Antiguo 14/11/2011, 17:19
 
Fecha de Ingreso: mayo-2010
Mensajes: 66
Antigüedad: 13 años, 11 meses
Puntos: 2
Respuesta: Recuperar checkbox marcados

Gracias GatorV

Mirá ya pude recorrer todos los checkbox marcados y que me lo actualice en la base de datos, me quedó así

Código PHP:
<?php session_start(); 
include(
"../../clases/class_trabajos.php"); 

class 
Contenido extends Pagina
{
    function 
realizarCambios($array,$seccion,$seccionID,$cambio)
    {
        if (isset(
$_POST[$array]))
        {
            foreach (
$_POST[$array] as $cambio)
            {
                if (
$cambio != "")
                    
$consulta mysql_query("UPDATE $seccion SET Ficha='1' WHERE $seccionID = $cambio");
            }
        }
    }

    function 
MostrarCuerpo()
    { 
    if (!
$this -> DB_Connect())
                return 
"No ha podido ser ingresado en la Base de Datos, por favor intentalo mas tarde.";
        
        
$this->realizarCambios("tema","temas","TemaID",$cambio);
        
$this->realizarCambios("instrumental","instrumentales","InstrumentalID",$cambio);
        
$this->realizarCambios("video","videos","VideoID",$cambio);
        
$this->realizarCambios("letra","letras","LetraID",$cambio);
    
    
mysql_close();
    }
}

  
$pagina = new Contenido();
  
  
$pagina -> SetTitulo(" - Mis trabajos");
  
$pagina -> MostrarPagina();  
?>
Ahora necesito que los checkbox que no estan marcados me los actualice a 0, ¿Tenés alguna sugerencia?
  #4 (permalink)  
Antiguo 14/11/2011, 17:21
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Recuperar checkbox marcados

Para eso vas a tener que por ejemplo guardar todos los checkbox que tengas en un array, después usas array_diff para separar los checkbox que te vienen por POST desde tu pagina web, la diferencia seran los checkbox no marcados, y teniendo esa lista puedes pasarlos a 0.

Saludos.
  #5 (permalink)  
Antiguo 14/11/2011, 17:28
 
Fecha de Ingreso: mayo-2010
Mensajes: 66
Antigüedad: 13 años, 11 meses
Puntos: 2
Respuesta: Recuperar checkbox marcados

Array
(
[tema] => Array
(
[1] => 1
[2] => 2
[3] => 3
)

[instrumental] => Array
(
[1] => 1
[2] => 2
[3] => 3
[4] => 4
)

[video] => Array
(
[5] => 5
)

[letra] => Array
(
[1] => 1
[5] => 5
[23] => 23
[24] => 24
[37] => 37
[38] => 38
[39] => 39
)

)

Ya los tengo en un array, pero no entiendo cuales son los 2 arrays que tengo que diferenciar.

Esos son los valores que estar marcados sólo.

EDIT: Ya entendí lo que me dijiste, ahora lo intento hacer y te digo como me fue.

Última edición por Fabih24; 14/11/2011 a las 17:52
  #6 (permalink)  
Antiguo 14/11/2011, 18:46
 
Fecha de Ingreso: mayo-2010
Mensajes: 66
Antigüedad: 13 años, 11 meses
Puntos: 2
Respuesta: Recuperar checkbox marcados

Me salió GatorV, gracias por la ayuda.

Dejo el código, quizas a alguien le sirve en el futuro.

Código PHP:
<?php session_start(); 
include(
"../../clases/class_trabajos.php"); 

class 
Contenido extends Pagina
{
    function 
realizarCambios($array,$seccion,$seccionID)
    {
        
//Recupero todos los campos de los checkbox (marcados y no marcados)
        
$consultamysql_query("SELECT $seccionID FROM $seccion 
                                WHERE Subidopor ='1'"
);
        
//cantidad de resultados
        
$cantidad mysql_num_rows($consulta);
        
//guardo todos los valores en un array
        
for($i=0;$i<$cantidad;$i++)
        {
            
$arrayseccion mysql_fetch_array($consulta);
            
$valor $arrayseccion[$seccionID];
            
$guardoArray[$i] = $valor
        }
        
// si estan setiado los 2 arrays obtengo los nos marcados y hago el update...
        
if((isset($guardoArray)) && (isset($_POST[$array])))
        {
            
$array_nomarcados array_diff($guardoArray,$_POST[$array]);
        
            if (isset(
$array_nomarcados))
            {
                foreach (
$array_nomarcados as $cambio)
                {
                    if (
$cambio != "")
                    
$consulta mysql_query("UPDATE $seccion SET Ficha='0' WHERE $seccionID = $cambio");
                }
            }
        }
        
// si no esta esta seteado el array del POST quiere decir que todos los campos estan desmarcados, por lo tantos el UPDATE es para todos 0
        
elseif(isset($guardoArray))
        {
                
$consulta mysql_query("UPDATE $seccion SET Ficha='0'");
        }
        
        
// obtengo los marcados y hago el update
        
if (isset($_POST[$array]))
        {
            foreach (
$_POST[$array] as $cambio)
            {
                if (
$cambio != "")
                    
$consulta mysql_query("UPDATE $seccion SET Ficha='1' WHERE $seccionID = $cambio");
            }
        }
    }

    function 
MostrarCuerpo()
    { 
    if (!
$this -> DB_Connect())
                return 
"No ha podido ser ingresado en la Base de Datos, por favor intentalo mas tarde.";
    
        
$this->realizarCambios("tema","temas","TemaID");
        
$this->realizarCambios("instrumental","instrumentales","InstrumentalID");
        
$this->realizarCambios("video","videos","VideoID");
        
$this->realizarCambios("letra","letras","LetraID");
        
    
mysql_close();
    }
}

  
$pagina = new Contenido();
  
  
$pagina -> SetTitulo(" - Mis trabajos");
  
$pagina -> MostrarPagina();  
?>

Etiquetas: checkbox, formulario, tabla
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 23:23.