Foros del Web » Programando para Internet » PHP »

como guardar un valor en la base de datos dependiendo si se ha activado un check box

Estas en el tema de como guardar un valor en la base de datos dependiendo si se ha activado un check box en el foro de PHP en Foros del Web. Hola, como puedo activar un check box cuyo name esta asignado en un bucle while, asi: //Realiza la busqueda del equipo audiovisual $strsql3 = "select ...
  #1 (permalink)  
Antiguo 27/01/2004, 11:01
 
Fecha de Ingreso: diciembre-2003
Mensajes: 212
Antigüedad: 14 años
Puntos: 0
como guardar un valor en la base de datos dependiendo si se ha activado un check box

Hola, como puedo activar un check box cuyo name esta asignado en un bucle while, asi:

//Realiza la busqueda del equipo audiovisual
$strsql3 = "select BIEN_NAC,COD_EQ from equipos_aud where DISPONIB_EQ= 'SI'";
$rs3 = mysql_query($strsql3, $cni) ;

while ($row3 = mysql_fetch_array($rs3)){ //while1
$tem9 = $row3["BIEN_NAC"];

....
el check box tiene:
<input name="<?php echo $row3["BIEN_NAC"];?>" type="checkbox" value="N">
los valores loe estoy pasando como ocultos:
<input name="BIEN_NAC" type="hidden" value="<?php echo $row3["BIEN_NAC"]; ?>">
y luego cierro el while:
} #fin del while1

lo que necesito es guardar en DISPONIB_EQ='NO', lo estoy haciendo de esta manera:
if (!empty($acc)) { //if2 //para verificar que haya presionado el boton registrar

$cni = conectarse();
if ($BIEN_NAC=='N') {
//Ingreso los equipos audiovisuales
$sq1="UPDATE equipos_aud SET DISPONIB_EQ = 'NO' WHERE BIEN_NAC = $BIEN_NAC";
$rs2 = mysql_query($sq1, $cni) ;
echo $sq1;
}

el problema es que me esta leyendo el ultimo valor de BIEN_NAC, y si he seleccionado varios no actualiza los demas. Otro problema es que siempre me esta actualizando y no solamente cuando activo los checks box. Como puedo preguntar si han sido seleccionados para poder actualizar sólo el q este activado??
Que puedo hacer??No se si me explique bien, cualq cosa haganmelo saber

Gracias
  #2 (permalink)  
Antiguo 27/01/2004, 11:20
 
Fecha de Ingreso: diciembre-2003
Mensajes: 212
Antigüedad: 14 años
Puntos: 0
Hola, ya logre actualizar varios a la vez, pero aun nose como restringir que me actualice los BIEN_NAC que hayan sido marcados con check box??
la actualizacion la hice asi:
$strsql3 = "select BIEN_NAC from equipos_aud where DISPONIB_EQ= 'SI'";
$rs3 = mysql_query($strsql3, $cni) ;

while ($row3 = mysql_fetch_array($rs3)){ //while1
$tem9 = $row3["BIEN_NAC"];

//Ingreso los equipos audiovisuales
$sq1="UPDATE equipos_aud SET DISPONIB_EQ = 'NO' WHERE BIEN_NAC = $tem9";
$rs2 = mysql_query($sq1, $cni) ;
echo $sq1;
} #fin del while1
?>

por lo que me actualiza todos lo s que cumplen con la condicion DISPONIB_EQ='SI'.
como pregunto para saber cuales check box han sido seleccionados??
  #3 (permalink)  
Antiguo 27/01/2004, 16:52
Avatar de Ugho  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 487
Antigüedad: 15 años, 1 mes
Puntos: 0
Si tu pregunta es saber si un check box ha sido seleccionado con PHP es de la siguiente manera:
Por ejemplo:
----------------------------------------------------------
if(isset($HTTP_POST_VARS['nombre_check'])){
//instrucciones......
}
--------------------------------------------------------
espero que te sirva...
SALUDOS.
__________________
________________________________________

Ugho.
  #4 (permalink)  
Antiguo 28/01/2004, 07:56
 
Fecha de Ingreso: diciembre-2003
Mensajes: 212
Antigüedad: 14 años
Puntos: 0
Gracias Ughp, una de mis dudas era esa y ya me la aclaraste, ahora otra preguntilla, como puedo preguntar por un check box cuyo valor se genera en un buche while, y que se define por el numero de filas que genere ese while?? lo denomine asi:
<input name="check_<?php echo $fila;?>" type="checkbox" value="NO" >

si pregunto por su nombre, de la siguiente forma me da error:
if(isset($HTTP_POST_VARS['check_<?php echo $fila;?>'])){
echo $check.'_'.'$fila';?>}

en si lo que necesito es actualizar un capo de la base de datos sólo cuando determinados check box hayan sido marcados. el problema es que para la actualizacion necesito conocer el valor del bien nacional del equipo que esta en esa misma fila, y como se genera con un while nose como recuperarlo. Estaba pensando hacerlo con un forech, algo asi pero con update:
foreach ($serv as $valor){
$strsql2 = "insert into servevendgdevento ( num_even, cod_ser) values ('$id', '$valor')";

$rs2 = mysql_query($strsql2, $cni);
}
con el forech puedo recuperar ese valor de BIEN_NAC que comente arriba??

Disculpa tantas preguntas pero es que estoy confundida, en como hacer esto,??
  #5 (permalink)  
Antiguo 28/01/2004, 09:14
Avatar de Ugho  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 487
Antigüedad: 15 años, 1 mes
Puntos: 0
Hola Sofia2:
Puedes generar los nombres del check box asi:
-------------------------------------------------------------
<input name="<?php echo $fila;?>" type="checkbox" value="NO" >
------------------------------------------------------------------------
y referirte a ellos asi:
-----------------------------------------------------------------------
if(isset($HTTP_POST_VARS['$fila'])){
-----------------------------------------------------------------------
Espero te sirva....
SALUDOS...
__________________
________________________________________

Ugho.
  #6 (permalink)  
Antiguo 28/01/2004, 09:15
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
hola:

crea los check asi:

while (....)
{

<input type="checkbox" name="bien[]" value="bien nacional">

}

php solo te envia, en este caso en el arreglo bien[], los check que han sido seleccionados, por tanto no necesitas saber si fue o no checked tal bien, y los recibes asi:

$arr_bienes=$_POST['bien']; //recibes el arreglo
foreach ($arr_bienes as $bien)
{
$sql="insert into tabla (bien_nac) values ($bien)"
}

y estaras insertando el valor del bien nacional en tu tabla. Este comportamiento de php (pasar solo los que tengan valores) es para todos los arreglos (si me equivoque al leerlo de algun manual, me avisan)
__________________
Dedicado a proyectos web, actualmente desarrollando un sistema de diseño de flyers online muy fácil de usar.
  #7 (permalink)  
Antiguo 28/01/2004, 11:33
 
Fecha de Ingreso: diciembre-2003
Mensajes: 212
Antigüedad: 14 años
Puntos: 0
hola claudio, sabes que hice lo q me dices pero no realiza la actualizacion en mi base de datos, me sale el siguiente error:

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'And B.CO_MOD = A.CO And A.TIPO='e' group by MODULO' at line 1

$arr_bienes=$_POST['bien']; //recibes el arreglo
foreach ($arr_bienes as $bien)
{

$sql="UPDATE equipos_aud SET DISPONIB_EQ = 'NO' WHERE BIEN_NAC = $bien";
$rs2 = mysql_query($sq1, $cni) or die(mysql_error());
echo $sq1."<br>";
}

el check box lo declare asi:
<input name="bien[]" type="checkbox" value="<?php echo $tem9;?> " >

pero no hace la actualizacion, estoy haciendo algo mal??

Última edición por sofia2; 28/01/2004 a las 11:34
  #8 (permalink)  
Antiguo 28/01/2004, 11:51
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
tienes un error de sintaxis en tu instruccion sql, probablemente sea esto:

$sql="UPDATE equipos_aud SET DISPONIB_EQ = 'NO' WHERE BIEN_NAC = $bien";
$rs2 = mysql_query($sq1, $cni) or die(mysql_error());
echo $sq1."<br>";

esta pasando la variable $sq1 como parametro en lugar $sql.

Otro:
si el campo BIEN_NAC guarda caracteres entonces los valores que se le pasan deben ir entre comillas simples, asi:

$sql="UPDATE equipos_aud SET DISPONIB_EQ = 'NO' WHERE BIEN_NAC = '$bien' ";
$rs2 = mysql_query($sql, $cni) or die(mysql_error());
echo $sq1."<br>";
  #9 (permalink)  
Antiguo 28/01/2004, 13:33
 
Fecha de Ingreso: diciembre-2003
Mensajes: 212
Antigüedad: 14 años
Puntos: 0
sabes que aparentemente esta haciendo el update porque le quite el mysql_erro() y me muestra:
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in c:\appserv\www\intranet\scripts\equipos\aieditentr egaequipos.php on line 114
UPDATE equipos_aud SET DISPONIB_EQ = 'NO' WHERE BIEN_NAC = '00091 '

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in c:\appserv\www\intranet\scripts\equipos\aieditentr egaequipos.php on line 114
UPDATE equipos_aud SET DISPONIB_EQ = 'NO' WHERE BIEN_NAC = '3318 '

que viene de los check q he seleccionado, sin embargo si le coloco el mysql_error(), me sigue mostrando:

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in c:\appserv\www\intranet\scripts\equipos\aieditentr egaequipos.php on line 114
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'And B.CO_MOD = A.CO And A.TIPO='e' group by MODULO' at line 1

q puede ser. La actualizacion sola si funciona porque la probe en mysql Front
  #10 (permalink)  
Antiguo 28/01/2004, 13:39
 
Fecha de Ingreso: diciembre-2003
Mensajes: 212
Antigüedad: 14 años
Puntos: 0
listo Claudio, ya encontre el error es que no estaba declarando $cni, dentro del bucle que estaba haciendo las actualizaciones.

Gracias!!! Me has quitado un peso de encima con esta solución.

Gracias nuevamente
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 04:35.