PHP - Relaciones entre checkbox

 
Vista:
sin imagen de perfil

Relaciones entre checkbox

Publicado por Hugo S. (47 intervenciones) el 09/11/2006 20:08:32
Tengo esta situacion. A partir de 2 consultas a tablas en una base de datos. Con una consulta armo un listbox donde quiero que el usuario pueda seleccion un solo elemento y con la otra consulta armo una lista de checkbox para que el usuario pueda seleccionar la cantidad de elementos que quiera.
Mi problema es que no consigo volcar en variables los elementos que el usuario seleccionó de los checkbox. O sea que si el usuario elijio 5 de los 10 que habia, yo necesito volcar en variables los 5 esos e identificarlos uno por uno para poder luego hacer inserts, updates y deletes en tablas relacionadas a cada uno de esos elementos elegidos.
Y como esto es dinamico en el sentido que la cantidad de checkbox disponibles será en relacion a cuantos registros tenga su tabla, seguro habrá que armar una especie de while o for para recorrer los checkbox y tomar los que el usuario haya elegido. Entonces, en resumen, no se por donde agarrar a cada uno de esos checkbox cuando necesito usarlos para hacer inserts, deletes y updates en otras tablas de la base de datos.
Espero me pueda ayudar alguien porfa, muchas gracias!

<?php
$SQL = "SELECT * FROM areas ORDER BY descrip_area" ;
$res_areas = mysql_query($SQL, $coneccion) ;

$SQL = "SELECT * FROM subareas ORDER BY descrip_subarea" ;
$res_subareas = mysql_query($SQL, $coneccion) ;

//calculo la cantidad de resultados
$cant_areas = mysql_num_rows($res_areas) ;
$cant_suba = mysql_num_rows($res_subareas) ;

if ($cant_areas > 0 || $cant_suba > 0) {
//Si el tipo es distinto de enviar mostramos el formulariO
if($HTTP_POST_VARS["cmdRelacionar"] <> "Relacionar"){
?>
<form method="post" action="relacA-S_altafinal.php">
<table border="0" width="50%" cellspacing="0" cellpadding="4" align="center" bgcolor="#003366">
<tr><td colspan="2" width="100%" align="left" bgcolor="#990000">
<font color="#FFFFFF"><b>Seleccione lo que desea relacionar: </b></font></td>
</tr><tr>
<td width="50%" align="left">
<font color="#FFFFFF"><b>Areas </b></font></td>
<td width="50%" align="left">
<font color="#FFFFFF"><b>Subareas </b></font></td>
</tr><tr>
<td width="50%" align="left">
<select size="10" name="areas">
<?php
while($q_areas = mysql_fetch_array($res_areas)) {
echo "<option value=$q_areas[id_area]>
$q_areas[descrip_area] </option>" ;
}?>
</select>
</td><td width="50%" align="right"><font color="#FFFFFF"><b>
<?php
while($q_subareas = mysql_fetch_array($res_subareas)) {
echo "</input>$q_subareas[descrip_subarea]
<input type='checkbox' name='subareas'
value=$q_subareas[id_subarea]><br>" ;
}?></b></font>
<?php
while($q_subareas = mysql_fetch_array($res_subareas)) {
echo "<option value=$q_subareas[id_subarea]>
$q_subareas[descrip_subarea] </option>" ;
?>
</td>
</tr><tr>
<td colspan="2" width="100%" align="right">
<input type="submit" name="cmdRelacionar" value="Relacionar">
</td>
</tr>
</table>
</form>
<?php
}
}
else
{ ?><font color="#000099"><?php
echo "No se han encontrado elementos disponibles para relacionar.<br>" ;
?></font><?php
}
mysql_close($coneccion) ;
?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Relaciones entre checkbox

Publicado por Ery (65 intervenciones) el 09/11/2006 20:12:58
<input type='checkbox' name='subareas[]'
value=$q_subareas[id_subarea]><br>" ;

Te falta en el name los corchetes de array
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Relaciones entre checkbox

Publicado por Hugo S. (47 intervenciones) el 09/11/2006 20:28:34
Ok gracias!!
Pero luego cuando el usuario presiona el boton del form, pasa a una siguiente pagina donde esta lo siguiente y ahi esta mi problema:

<?php
require("../conexion.php") ;
$cod_area = $HTTP_POST_VARS["areas"] ;

$subarea = $HTTP_POST_VARS["subareas"] ;

Aqui intento tomar los checkbox "subareas" y de ahi me falta poder hacer un recorrido sobre los checkbox para saber cual fue seleccionado y cual no...
Por eso hago una nueva consulta para traer todas las subareas de la tabla en cuestion para ponerle un limite al recorrido...

$SQL = "SELECT * FROM subareas ORDER BY descrip_subarea" ;
$res_subareas = mysql_query($SQL, $coneccion) ;

while($q_subareas = mysql_fetch_array($res_subareas)) {?><
if($subarea[$q_subareas[descrip_subarea]].checked == true)
echo "SUBAREA= $q_subareas[descrip_subarea]" ;?></b></font>
<?php
}

La idea de ese while es que me muestre como texto en la pagina solo los nombres de las subareas que el usuario eligio de todas las disponibles y no me sale... que estare haciendo mal? Y ese checked es una ocurrencia mia jaja por que vi q lo usan en javascript pero a mi no me responde en php.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Relaciones entre checkbox

Publicado por Ery (65 intervenciones) el 09/11/2006 21:39:59
Imagin este creo 10 checkbox desde una aplicacion con un SQL

while($row = fetch_array($qry))
{

echo "<input type=\"checkbox\" name=\"chk[]\" value=\"".$row["codigo"].\">".$row["nombre"];
}

Ok cuando haces submit

$chk = $_REQUEST["chk"];

foreach($chk as $valor)
{
}

$s = "";
for(i = 0 ; j = count($chk), $i<$j ; i++)
{
$v = intval($chk[$i]);
if($v)
{
if($s != "") $s .= ",";
$s .= $chk[$i];
}
}

if($s != "")
{ sql = " select * from tabla where codigo in ($s ) "; }
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Relaciones entre checkbox

Publicado por Daniel (2 intervenciones) el 12/09/2009 23:27:20
Yo tengo un problema muy parecido, tengo una tabla con 38 registros (estos son los que hay actualmente, pueden variar mas adelante porque se traen de la base de datos) y cada fila de la tabla tiene 3 checkbox, lo que yo quiero es que pueda seleccionar por fila 1, 2, 3 o ningun check y a que los registros que se hayan seleccionado al menos una vez se envien a otra pagina en donde se guardan simultaneamente.

Ejemplo:
Check1 Check2 Check3
Registro 1 = x x
Registro 5 = x x x
Registro 6 = x
Registro 7 = x
Registro 23 = x
Registro 25 = x x
Registro 37 = x x

Y al pasar a la otra pagina,

SQL = "INSERT TO tabla (Registro, check1, check2, check3) VALUES (1,1,1,0)"
y asi sucesivamente por registro.

Si alguien pudiera ayudarme, mis grandes dudas son las siguientes como defino los arreglos en el formulario, para empezar, yo se que se coloca arreglo[] en el name del input, pero es un arreglo[] para los tres checks o uno para cada uno, ademas donde paso el id.
El otro problema es al guardarlo en la BD como paso la variable, como arreglo[$i], no entiendo, yo creo que solucionando lo primero voy a tener mas claridad del asunto.

De antemano muchas gracias.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar