Foros del Web » Programando para Internet » PHP »

Marcar Checkbox con valores de la BD

Estas en el tema de Marcar Checkbox con valores de la BD en el foro de PHP en Foros del Web. chicos, a veces mi autodidacta me falla y no se cosas novatas como esta. necesito hacer un array(2,45,54) los valores 2,45,54... supongo que los saco ...
  #1 (permalink)  
Antiguo 03/05/2005, 08:28
Avatar de ignacio_giri  
Fecha de Ingreso: febrero-2003
Ubicación: Argentina, Rosario
Mensajes: 585
Antigüedad: 21 años, 2 meses
Puntos: 0
Marcar Checkbox con valores de la BD

chicos, a veces mi autodidacta me falla y no se cosas novatas como esta.

necesito hacer un array(2,45,54)

los valores 2,45,54... supongo que los saco de un QUERY de la BD

SELECT id FROM $tabla1

se entiende cual es mi problema?

Saludos.
__________________
Ignacio

Última edición por ignacio_giri; 03/05/2005 a las 09:52
  #2 (permalink)  
Antiguo 03/05/2005, 09:21
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Tenes la funcion mysql_fetch_array que te da un vector asociativo o númerico según le especifiques (por default ambos).
Sino, con recorrer un while he ir cargando los elementos en un vector estarías logrando lo que necesitas. EJ:
declaras un vector:
$rs = array();
Recorres el resource:
while($rs[] = mysql_fetch_assoc($r)){}
Y limpias la memoria:
mysql_free_result($r);

Ahora en $rs tenes todo, podes hacer print_r($rs) para ver si contenido.

Esta de mas aclararte que $r es el puntero del query ($r= mysql_query("selec....")).
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #3 (permalink)  
Antiguo 03/05/2005, 09:55
Avatar de ignacio_giri  
Fecha de Ingreso: febrero-2003
Ubicación: Argentina, Rosario
Mensajes: 585
Antigüedad: 21 años, 2 meses
Puntos: 0
esto no me sirve... necesito ver los valores que haya en la bd para marcar los checkboxs y no tengo idea de como hacerlo...

en la bd tengo los id que tienen los checkbox... cuando haya iguales los tiene que marcar... obiamente en la bd tengo los que tienen que estar marcados...

saludos
__________________
Ignacio
  #4 (permalink)  
Antiguo 03/05/2005, 10:20
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Vos dijiste:

necesito hacer un array(2,45,54)
los valores 2,45,54... supongo que los saco de un QUERY de la BD...

Yo te respondi a eso...Tomate unos minutos y trata de explicar bien que es lo que necesitas.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #5 (permalink)  
Antiguo 03/05/2005, 10:52
Avatar de ignacio_giri  
Fecha de Ingreso: febrero-2003
Ubicación: Argentina, Rosario
Mensajes: 585
Antigüedad: 21 años, 2 meses
Puntos: 0
mira... estoy trabajando con relaciones muchos a muchos...

con checkbox asigno valores de una tabla a otra... si quiero modificaros, quiero que los checkbox esten seleccionados si previamente hubo una asignacion

Saludos
__________________
Ignacio
  #6 (permalink)  
Antiguo 03/05/2005, 11:50
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Tenes que listar los checks por medio de una consulta. O sea, si tenes usuarios y paises, y un usuario puede tener muchos paises, deber tener una tercer tabla usuarios_paises, en la cual vas a tener un registro por cada relacion usuario pais, por ejemplo, si el usuario 1 tiene asignado el pais 1 y 2 tendrás en la tabla algo asi en la tabla usuarios_paises:

codigo | usuario | pais
1 1 1
2 1 2
Lo que yo haría sería una consulta que me liste todos los pises, y joinee con un left con usuarios_paises y me diga cual pais esta en esa tabla para ese usuario (con un if en el select).
La idea te la di, si necesitas que te arme el query, y lo que necesitas es eso, avisa.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #7 (permalink)  
Antiguo 03/05/2005, 12:10
Avatar de ignacio_giri  
Fecha de Ingreso: febrero-2003
Ubicación: Argentina, Rosario
Mensajes: 585
Antigüedad: 21 años, 2 meses
Puntos: 0
por favor... dame una ayudita más

tengo la tabla que se llama personas y otra tabla que se llama actividades

las actividades varian... y por lo tanto las asignaciones tambien

las asignaciones es que, yo elijo que actividades tiene cada persona por medio de checkbox... que eso lo guardo en otra tabla más pers_act por ejemplo en donde tengo un id (sin autoincrement) que sería el id de la persona y otro id de la asignacion... (relaciones muchos a muchos)

Problema no muy importante, pero es medio sucio:
las guarda, pero si quiero modificar me guarda otra vez lo mismo y me hace basura la bd... y no quiero hacer una validacion, si que no pase por arriba si ya esta escrito (rewrite?, jeje)...

El problema principal:
cuando quiero modificar esta el tema... quiero que me marque ahi los checkbox que tienen la asignacion correspondiente guardada en la BD.

ahi creo que me expliqué un poco mejor.

Saludos.
__________________
Ignacio

Última edición por ignacio_giri; 03/05/2005 a las 12:49
  #8 (permalink)  
Antiguo 03/05/2005, 13:03
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Bueno, tenes dos falencias en lo que contas. Una, la tabla de relacion si tiene un autoincrement, es de esa tabla, no del usuario, O sea, tenes tres campos, un autoincrement (por si queres referenciar a un unico registro, para hacerlo mas simple, pero tampco es necesario), un int para el usuario, y un int para la actividad.

Cuando grabas vos lo haces por usuario, por lo que tenes que borrar TODOS los registros de esa tabla que pertenezcan al usuario ese, por ejemplo:
"delete from pers_act where persona = '".$codigoUsuario."' "
Una vez esto haras tu foreach sobre los checks y guardaras todo nuevamente.

Con el tema de la edicion, lo que haces es algo asi:
$codigo = 2; #Este seria el usuario que estas editando
$sql = "select
(CASE WHEN r.actividad IS NULL THEN 0 ELSE 1 END) chequeado,
a.codigo,
a.nombre,
from actividades a
left outer join pers_act r on r.actividad = a.codigo and r.usuario = '".$codigo."'
"
Este te dara todas las actividades, y un campo que tendrá, si esta elegida 1, y sino 0. Entonces, cuando hagas el while haras un if del campo, y si es 1 checkearas el check.

Espero te sirva.
__________________
Mi punto de partida es Que Bueno Lo Nuevo

Última edición por nicolaspar; 03/05/2005 a las 13:10
  #9 (permalink)  
Antiguo 03/05/2005, 13:13
Avatar de ignacio_giri  
Fecha de Ingreso: febrero-2003
Ubicación: Argentina, Rosario
Mensajes: 585
Antigüedad: 21 años, 2 meses
Puntos: 0
bueno, me encantó la respuesta... lo de borrar y volver a escribir lo capté perfectamente...

ahora... ese select que haces es medio complicado para mi, me podrías explicar un poco mejor que es lo que hace y listo por hoy,

esas relaciones a y r ... no las entiendo para nada...

muchisisisisisimas gracias.
__________________
Ignacio

Última edición por ignacio_giri; 03/05/2005 a las 13:28
  #10 (permalink)  
Antiguo 03/05/2005, 15:19
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Ese select tiene un left join que cruza a la tabla actividad y pers_act, si el id único de la actividad esta en la tabla pers_act te devolverá el mismo, sino esta, te devolverá null, entonces, se hace un case en el select sobre ese campo, y si tiene un valor no null se estima que esta guardada seteando el campo a 1, si no esta se setea a 0. Las a y r son alias, es como hacer "Select campo as nombre from tabla as Tableta" pero sin usar el "as".
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #11 (permalink)  
Antiguo 04/05/2005, 12:03
Avatar de ignacio_giri  
Fecha de Ingreso: febrero-2003
Ubicación: Argentina, Rosario
Mensajes: 585
Antigüedad: 21 años, 2 meses
Puntos: 0
Gracias Nicopar por tu ayuda, estoy va de pelos!

Saludos.
__________________
Ignacio
  #12 (permalink)  
Antiguo 16/12/2007, 21:39
 
Fecha de Ingreso: noviembre-2007
Ubicación: En caracas
Mensajes: 9
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Marcar Checkbox con valores de la BD

hola que tal... como estan??? mi pregunta es ¿cómo hago para que el id de una persona lo contenga el checkbox, como le asigno en un ciclo el id que corresponde a esa persona en particular ya se sacar la informacion de base de datos pero no se como hago para asignarle el id a los checkbox, espero respuesta


gracias y que esten bien.
  #13 (permalink)  
Antiguo 16/12/2007, 22:25
Avatar de ignacio_giri  
Fecha de Ingreso: febrero-2003
Ubicación: Argentina, Rosario
Mensajes: 585
Antigüedad: 21 años, 2 meses
Puntos: 0
Re: Marcar Checkbox con valores de la BD

while($row = mysq_fetch_array($query)) {
echo '<input type="checkbox" value="id[<?= $row['ID'] ?>]" name="id"/>';
}

Luego con un for each agarras en $_REQUEST['id'] y listop.
__________________
Ignacio
  #14 (permalink)  
Antiguo 16/12/2007, 22:43
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 3 meses
Puntos: 81
Re: Marcar Checkbox con valores de la BD

ignacio_giri creo que esto es mas sencillo (y creo que esos inicios de php y termino solo sirven cuando no estan dentro de una sentencia php):
Código PHP:
echo '<input type="checkbox" value="id['.$row['ID'].']" name="id"/>'
Suerte
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #15 (permalink)  
Antiguo 17/12/2007, 00:38
 
Fecha de Ingreso: noviembre-2007
Ubicación: En caracas
Mensajes: 9
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Marcar Checkbox con valores de la BD

epales marvin gracias pero lo del for no entiendo como lo costruyo... disculpa mi ignorancia
  #16 (permalink)  
Antiguo 17/12/2007, 01:21
Avatar de ignacio_giri  
Fecha de Ingreso: febrero-2003
Ubicación: Argentina, Rosario
Mensajes: 585
Antigüedad: 21 años, 2 meses
Puntos: 0
Re: Marcar Checkbox con valores de la BD

ah, si marvin tienes razón, error mío
__________________
Ignacio
  #17 (permalink)  
Antiguo 17/12/2007, 02:00
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 3 meses
Puntos: 81
Re: Marcar Checkbox con valores de la BD

Lo del for es algo como esto:
Código PHP:
//el $_POST['id'] dependera si tu formulario dice method post
//si le pusiste method get sera asi: $_GET['id']
foreach($_POST['id'] as $checkBox){
        echo 
$checkBox.'<br>';

Suerte
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #18 (permalink)  
Antiguo 17/12/2007, 02:24
 
Fecha de Ingreso: noviembre-2007
Ubicación: En caracas
Mensajes: 9
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Marcar Checkbox con valores de la BD

gracias a los dos. creanme se me a hecho util... que esten bien.. de verdad gracias...
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 14:23.