Foros del Web » Programando para Internet » PHP »

Ayuda recibir checkbox con php

Estas en el tema de Ayuda recibir checkbox con php en el foro de PHP en Foros del Web. Como estan? Cargue una serie de tareas a realizar "las carque de una base de datos" cada tarea la meti en un checkbox por medio ...
  #1 (permalink)  
Antiguo 08/10/2007, 14:02
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 18 años, 7 meses
Puntos: 50
Ayuda recibir checkbox con php

Como estan?

Cargue una serie de tareas a realizar "las carque de una base de datos" cada tarea la meti en un checkbox por medio de un while "mientras hayan tareas imprimalas algo asi este" Este es el echo que imprime cada tarea.

Código PHP:
     echo "<br /><input type=checkbox name=ManVehiculo id=ManVehiculo /> ".$Tareas['NomTarea']; 
Ya todo eso funciona ya crea todos los checkbox con cada tarea.

con esto todos los checkbox quedarian con el mismo nombre y ID no se si esto este bien o mal hecho. Ahora lo que deseo saber es como recibir UNICAMENTE todos los checkbox que haya chuleado el usuario.

Gracias por su ayuda.
  #2 (permalink)  
Antiguo 08/10/2007, 14:20
Avatar de xempro  
Fecha de Ingreso: marzo-2007
Ubicación: Chile
Mensajes: 222
Antigüedad: 17 años, 9 meses
Puntos: 6
Re: Ayuda recibir checkbox con php

lo que puede hacer es lo siguiente:

Una opcion es que en el ciclo actual con el cual generas los checkbox agregues una variable la cual con cada vuelta se incremente en 1 (osea un contador).

EJEMPLO

Código PHP:
$i=0;
while(
$i<$n){
   echo 
"<br /><input type='checkbox' name='ManVehiculo".$i' id='ManVehiculo".$i' /> ".$Tareas['NomTarea'];
   
$i++;


adicionalmente a esto deberias enviar el valor final de la variable $i como campo oculto para que en lado en que rescatas los datos realices un ciclo y que esta variable sea el limite.



EJEMPLO

Código PHP:
$i=0;
while(
$i<$_POST['i']){
    echo 
'<br>Valor :'.$_POST['ManVehiculo'.$i];
    
$i++;



Aaaah, se me olvidada comentar que debes agregar a tu input el value...

EJEMPLO

Código HTML:
<input type='checkbox' name='ManVehiculo".$i' id='ManVehiculo".$i' value='1' /> 
Entonces todo aquello que tenga valor 1 significa que fue seleccionado.

Última edición por xempro; 08/10/2007 a las 14:25 Razón: me falto agregar algo...
  #3 (permalink)  
Antiguo 08/10/2007, 14:22
 
Fecha de Ingreso: julio-2005
Mensajes: 220
Antigüedad: 19 años, 4 meses
Puntos: 0
Re: Ayuda recibir checkbox con php

Ten en cuenta que un ID es único, es decir, no puedes tener el mismo ID en la misma página 2 veces. Por tanto deberias tener :

Código PHP:
echo "<br /><input type='checkbox name='ManVehiculo' id='ManVehiculo_1' value='1' /> ".$Tareas['NomTarea']; 
echo 
"<br /><input type='checkbox name='ManVehiculo' id='ManVehiculo_2' value='2' /> ".$Tareas['NomTarea']; 
A la hora de recibir los datos, la variable $_POST[ManVehiculo] es una array que contiene los valores de los checkbox que han sido marcados. En este ejemplo
si han seleccionado el segundo, el $_POST[ManVehiculo] contendra el valor "2" pero debes tratarlo como un array de un elemento.

Salu2!!
  #4 (permalink)  
Antiguo 08/10/2007, 14:30
Avatar de xempro  
Fecha de Ingreso: marzo-2007
Ubicación: Chile
Mensajes: 222
Antigüedad: 17 años, 9 meses
Puntos: 6
Re: Ayuda recibir checkbox con php

Cita:
Iniciado por GoRaK Ver Mensaje
Ten en cuenta que un ID es único, es decir, no puedes tener el mismo ID en la misma página 2 veces. Por tanto deberias tener :

Código PHP:
echo "<br /><input type='checkbox name='ManVehiculo' id='ManVehiculo_1' value='1' /> ".$Tareas['NomTarea']; 
echo 
"<br /><input type='checkbox name='ManVehiculo' id='ManVehiculo_2' value='2' /> ".$Tareas['NomTarea']; 
A la hora de recibir los datos, la variable $_POST[ManVehiculo] es una array que contiene los valores de los checkbox que han sido marcados. En este ejemplo
si han seleccionado el segundo, el $_POST[ManVehiculo] contendra el valor "2" pero debes tratarlo como un array de un elemento.

Salu2!!


Tus comentarios son erraticos...


Si varios input pueden tener el mismo id, salvo que estes manipulando los datos con javascript para hacer alguna validacion.

EJEMPLO

Código HTML:
var id_obj = document.getElementById('id_obj').value;

Otra cosa, no es necesario que tengan un value diferente los input.
  #5 (permalink)  
Antiguo 09/10/2007, 04:08
 
Fecha de Ingreso: julio-2005
Mensajes: 220
Antigüedad: 19 años, 4 meses
Puntos: 0
Re: Ayuda recibir checkbox con php

Cita:
Iniciado por xempro Ver Mensaje
Si varios input pueden tener el mismo id, salvo que estes manipulando los datos con javascript para hacer alguna validacion.
Te equivocas. No se trata de que los input pueden tener mismo id, sino que ningun tag de html debe tener el mismo id. Funcionar funciona, pero si quieres que tus páginas validen cómo xhtml, no puedes repetir un id. Por tanto, los IDs deben ser únicos.

Cita:
Iniciado por xempro Ver Mensaje
Otra cosa, no es necesario que tengan un value diferente los input.
Los input de tipo checkbox no tienen porque tener valor diferentes, pero encuentras alguna razón para que tengan el mismo?

Salu2!
  #6 (permalink)  
Antiguo 12/08/2008, 00:58
 
Fecha de Ingreso: agosto-2008
Mensajes: 1
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Ayuda recibir checkbox con php

Cita:
Iniciado por helacer Ver Mensaje
Como estan?

Cargue una serie de tareas a realizar "las carque de una base de datos" cada tarea la meti en un checkbox por medio de un while "mientras hayan tareas imprimalas algo asi este" Este es el echo que imprime cada tarea.

Código PHP:
     echo "<br /><input type=checkbox name=ManVehiculo id=ManVehiculo /> ".$Tareas['NomTarea']; 
Ya todo eso funciona ya crea todos los checkbox con cada tarea.

con esto todos los checkbox quedarian con el mismo nombre y ID no se si esto este bien o mal hecho. Ahora lo que deseo saber es como recibir UNICAMENTE todos los checkbox que haya chuleado el usuario.

Gracias por su ayuda.



Hola

lo que pasa es que yo estoy haciendo más o menos lo mismo

como es eso de agrgar el 1 en el value, ¿quedan todos los checkbox con value=1?

y lo otro es que ¿como hago despues para llamar el chackbox?

lo que pasa es que tengo varios checkbox, y lo que quiero hacer despues es que si tal checkbox está seleccionado pueda sumar un valor que se encuentra en un campo de texto al lado

el codigo que tengo es el siguiente:

<html>
<head><title>Pedido</title></head>

<body>

<?php

require_once('Conexion.php');

mysql_select_db($base, $conexion);

$mostrar_dim = "select * from DIMENSION,MADERA where MADERA.CODIGO_DIMENSION=DIMENSION.CODIGO_DIMENSION ";
$ejecucion_mostrar_dim = mysql_query($mostrar_dim, $conexion) or die(mysql_error());
$filas_mostrar_dim = mysql_fetch_assoc($ejecucion_mostrar_dim);
$num_filas_dim = mysql_num_rows($ejecucion_mostrar_dim);


$mostrar_mad = "select * from MADERA";
$ejecucion_mostrar_mad = mysql_query($mostrar_mad, $conexion) or die(mysql_error());
$filas_mostrar_mad = mysql_fetch_assoc($ejecucion_mostrar_mad);
$num_filas_mad = mysql_num_rows($ejecucion_mostrar_mad);



$mostrar_tipo = "select * from TIPO_PAGO ";
$ejecucion_mostrar_tipo = mysql_query($mostrar_tipo, $conexion) or die(mysql_error());
$filas_mostrar_tipo = mysql_fetch_assoc($ejecucion_mostrar_tipo);
$num_filas_tipo = mysql_num_rows($ejecucion_mostrar_tipo);


?>

<table>

<table>

<tr>
<th align="center"> </th>
<th align = "center">Dimension</th>
<th align = "center">Precio</th>
<th align = "center">Cantidad</th>
</tr>

<?php


$i=1;
do {

?>

<tr>
<td align= "center"><input type="checkbox" name="<?php "dimension".$i ?>"></td>
<td align = "center"><?php echo $filas_mostrar_dim ['ALTO_DIMENSION']?> X <?php echo $filas_mostrar_dim ['ANCHO_DIMENSION']?></td>
<td align = "center"> <?php echo $filas_mostrar_dim ['PRECIO_MADERA']?></td>
<input type="hidden" name= "<?php echo "precio".$i ?>" value="<?php echo $filas_mostrar_dim ['PRECIO_MADERA']?>">
<td align = "center"><input type="text" name="<?php echo "cantidad".$i ?>"></td>
</tr>



<?php
$i++;
} while($filas_mostrar_dim = mysql_fetch_assoc($ejecucion_mostrar_dim));

$var=$i-1;


?>

</table>

<input type="submit" name="calcular" value="CALCULAR">





</body>


</html>



ojalá me respondan

gracias
  #7 (permalink)  
Antiguo 12/08/2008, 01:37
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 20 años, 4 meses
Puntos: 102
Respuesta: Re: Ayuda recibir checkbox con php

Cita:
Iniciado por xempro Ver Mensaje
[...] generas los checkbox agregues una variable la cual con cada vuelta se incremente en 1 (osea un contador).
[...]
adicionalmente a esto deberias enviar el valor final de la variable $i como campo oculto para que en lado en que rescatas los datos realices un ciclo y que esta variable sea el limite.
[...]
Entonces todo aquello que tenga valor 1 significa que fue seleccionado.
Otro planteamiento es variar el value y enviar todos los checkbox-es como un arreglo. Te olvidas de contadores y recibes la información útil
Código PHP:
<input type="checkbox" name="cajitas[]" value="<?php echo $row['algo'?>" />
<?php
// Y entonces...
echo "Seleccionaste: <br />";
foreach (
$_POST['cajitas'] as $cajita) {
    echo 
$cajita."<br />";
}
Resulta más práctico . Otra opción podría ser asignar directamente la clave del arreglo con el valor variable (de la BD) y mantener el value estático (con 1, como mencionas), es similar a lo que sugieres, pero sin contadores por los que preocuparse.

Cita:
Iniciado por GoRaK Ver Mensaje
A la hora de recibir los datos, la variable $_POST[ManVehiculo] es una array que contiene los valores de los checkbox que han sido marcados. En este ejemplo
si han seleccionado el segundo, el $_POST[ManVehiculo] contendra el valor "2" pero debes tratarlo como un array de un elemento.
... igual se te fue, pero en el código que manejas no es cierto eso. Si todos los name son iguales (como lo marcas) solo se enviará el último seleccionado. De hecho, es un error HTML, eso no debería ser (así como los IDs duplicados que mencionas). Hay que especificar que es un arreglo en el name.

Cita:
Iniciado por GoRaK Ver Mensaje
Te equivocas. No se trata de que los input pueden tener mismo id, sino que ningun tag de html debe tener el mismo id. Funcionar funciona, pero si quieres que tus páginas validen cómo xhtml, no puedes repetir un id. Por tanto, los IDs deben ser únicos.
"Funciona" porque para PHP eso no tiene implicaciones, pero, en efecto --y más allá de preocuparse por la validación--, es un error... un error HTML; lenguaje independiente.
Sí, los IDs tienen que ser únicos.

Cita:
Iniciado por GoRaK Ver Mensaje
Los input de tipo checkbox no tienen porque tener valor diferentes, pero encuentras alguna razón para que tengan el mismo?
Sí, puede haberlas; todo depende del planteamiento del problema (o de la solución ).

Se manejó la posibilidad de tener name's dinámicos con un mismo value; es válido, solo interesaría saber si seleccionó o no el elemento asociado a dicho name. Mencioné igual manejar un arreglo con claves dinámicas, igual solo se necesitaría saber si se seleccionó o no dicho checkbox; tradúscase, el mismo value pa' todos.

@claudio87: Revisa y analiza bien lo dicho aquí. Igual busca en el foro y --sobre todo-- en las FAQ que habrá ejemplos más completos.
www.php.net/variables.external

Por lo poco que entiendo la --breve-- explicación de tu objetivo, creo lo que mencioné inicialmente te convendría (porque obtienes y manejas solo los valores, la información útil) aunque creo igual estarías buscando algo en JavaScript .. no alcanzo a entenderte bien.

Como sea, inténtalo y si tienes problemas concretos mencionalos. Suerte

-----------
Edito: ... y no... no me había fijado de la fecha
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #8 (permalink)  
Antiguo 25/08/2008, 09:00
 
Fecha de Ingreso: agosto-2008
Mensajes: 2
Antigüedad: 16 años, 4 meses
Puntos: 0
Ayuda de checkbox con php

Hola..!
Soy nuevo en el trabajo con los checkbox y necesito guardar y luego modificar los datos en 2 tablas de la BD en la cual utilizo PostgreSQL. Son descripciones de exámenes de laboratorio y emplean campos tipo text (nombre, ci, fecha) en una tabla, así como checkbox (100 checkbox-es) en la otra tabla.... y no se como realizar el primer evento (guardar), se dado por necesidad debo convertirlos a arreglos.... Por aquí muestro algo del código....

<tr> <td><div align="right"><span class="eticampo3"> FECHA </span><br>&nbsp;<input type="text" name="fecha" value="<? echo $fecha;?>" size="10" maxlength="10" id="fecha"></div> </tr>

<tr> <td><div align="left"><span class="eticampo3"> Cédula: </span>&nbsp;<input type="text" name="cedula" value="<? echo $cedula?>" size="8" maxlength="10" id="cedula"></div></td>
<td><div align="left"><span class="eticampo3"> Nombre:</span><input type="text" name="nombre" value="<?echo $nombre?>" size="17" id="nombre"></div></td> </tr>

<table width="300" cellspacing="0" border="0" cellpadding="3" align="left" bgcolor="#FFDD6F" frame="border">

<TR>
<TD width="50%">
<font class="eticampo4"><B> Hematológicos </B></font>

<div align="left"><span class="eticampo3"> <INPUT name="checked[]" id="hemcom" size="20" type="checkbox" value="<? echo $hemcom?>">Hematología Completa

<div align="left"><span class="eticampo3"> <INPUT name="checked[]" id="ser_roja" size="20" type="checkbox" value="<? echo $ser_roja?>">Serie Roja

<div align="left"><span class="eticampo3"> <INPUT name="checked[]" id="ser_blanca" size="20" type="checkbox" value="<? echo $ser_blanca ?>">Serie Blanca

<div align="left"><span class="eticampo3"> <INPUT name="checked[]" id="hemoglobina" size="20" type="checkbox" value="<? echo $hemoglobina ?>">Hemoglobina

<div align="left"><span class="eticampo3"> <INPUT name="checked[]" id="hematocrito" size="20" type="checkbox" value="<? echo $hematocrito ?>">Hematocrito

<div align="left"><span class="eticampo3"> <INPUT name="checked[]" id="reticul" size="20" type="checkbox" value="<? echo $reticul ?>">Reticulocitos

<div align="left"><span class="eticampo3"> <INPUT name="checked[]" id="drepanoci" size="20" type="checkbox" value="<? echo $drepanoci ?>">Drepanocitos

<div align="left"><span class="eticampo3"> <INPUT name="checked[]" id="vel_sedimentacion" size="20" type="checkbox" value="<? echo $vel_sedimentacion ?>">Velocidad de Sedimentación

<div align="left"><span class="eticampo3"> <INPUT name="checked[]" id="plaquetas" size="20" type="checkbox" value="<? echo $plaquetas ?>">Plaquetas

<div align="left"><span class="eticampo3"> <INPUT name="checked[]" id="tiempo_sangria" size="20" type="checkbox" value="<? echo $tiempo_sangria ?>">Tiempo de Sangria

<div align="left"><span class="eticampo3"> <INPUT name="checked[]" id="tiempo_coagul" size="20" type="checkbox" value="<? echo $tiempo_coagul ?>">Tiempo de Coagulación

<div align="left"><span class="eticampo3"> <INPUT name="checked[]" id="pt" size="20" type="checkbox" value="<? echo $pt ?>">P.T.

<div align="left"><span class="eticampo3"> <INPUT name="checked[]" id="ptt" size="20" type="checkbox" value="<? echo $ptt ?>">P.T.T.

<div align="left"><span class="eticampo3"> <INPUT name="checked[]" id="fibrinogeno" size="20" type="checkbox" value="<? echo $fibrinogeno ?>">Fibrinogeno

<div align="left"><span class="eticampo3"> <INPUT name="checked[]" id="gruporh" size="20" type="checkbox" value="<? echo $gruporh ?>">Grupo y RH

<div align="left"><span class="eticampo3"> <INPUT name="checked[]" id="coombs" size="20" type="checkbox" value="<? echo $coombs ?>">Coombs Directo
...
...
...
...
Y así hasta llegar a 100 checkbox... Por cierto trabajo con php5, postgretSQL y Programación Orientada a Objeto (POO).....

Agradezco enormemente la ayuda y colaboración....
  #9 (permalink)  
Antiguo 03/11/2008, 09:44
 
Fecha de Ingreso: agosto-2008
Mensajes: 2
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Ayuda recibir checkbox con php

Hola Buen día... Compañero necesito un gran favor de su parte o de las personas que puedan ayudarme con una parte del sistema que me encuentro desarrollando.

Te explico.... Estoy desarrollando un formulario para la emisión de Exámenes Médicos de Laboratorio y ésta tiene una cantidad de Checkbox, 98 para ser exactos y me resulta un problema a la hora de modificar estos checkboxes, donde el usuario puede equivocarse llenando la planilla y marcando los check, y a la hora de actualizarlos el sistema no lo hace.

El formulario tiene dos partes en las cuales:
La primera (un encabezado para especificar los datos del paciente) se almacena en una tabla y de hecho realiza todas las operaciones (guarda, actualiza y elimina)
La segunda parte que son los check (donde especifica el tipo de examen a realizar) que se almacena en otra tabla que esta relacionada con la PK de la anterior, en esta tabla de los check Guarda y Elimina pero cuando le realizo el código para actualizar un check que por equivocación lo marqué y guarde en BD y ahora deseo desmarcar y volver a guardar, es decir, actualizar... este guarda pero al consultar el registro me vuelve aparecer el check marcado como si nunca se modificó.......... Ahora si vez mi problema???........ Ya no sé que hacer porque es la primera vez que me presento con este problema y trabajar con tanta cantidad de check es engorroso.

Será posible que me puedas ayudar con esto.... De ante mano te lo agradezco....

Te agrégo en este e-mail el código y me hallo trabajando con PHP5, POSTGRESQL, JAVASCRIPT, XJAX y Programación Orientada a Objetos...

Función PHP de la Clase donde Almaceno y Actualizo la Orden del Examen

function guardar_orden($check) ////////////////// Guarda y Modifica la Orden de Laboratorio //////////////
{
$cone_pgar=new cone();
$pdo=$cone_pgar->cone_pg();

$insertar= "INSERT INTO examen_paciente(fecha_solicitud,observac_exam,ci_t rab,ci_med,otro_examen) VALUES ('$this->fecha_sol','$this->obs_orden',$this->cedula,$this->ci_med,'$this->descrip_examen')";
echo $insertar;

$modif= "UPDATE examen_paciente SET fecha_solicitud='$this->fecha_sol', observac_exam='$this->obs_orden', ci_trab=$this->cedula, ci_med= $this->ci_med, otro_examen= '$this->descrip_examen' WHERE fecha_solicitud='$this->fecha_sol' and ci_trab=$this->cedula";

if(!$this->exist_ordenlabora())
{
if($rep=$pdo->query($insertar)){
$this->msj="Los datos fueron guardados satisfactoriamente";
}else{$this->msj="Error al insertar datos";}

}else{
$gg = "DELETE FROM detalle_examen where id_exam=$id_exam";
$pdo->query($gg); echo $gg;
$rep=$pdo->query($modif); echo $rep;

for ($i=0;$i<count($check);$i++)
{
$Inserta = "INSERT INTO detalle_examen(id,id_exam) VALUES ($check[$i],$id_exam)";
echo $Inserta;

$In=$pdo->query($Inserta);

}

$id_exam=$this->busca_ordenlabo();

/*$queryInsert= "INSERT INTO descrip_orden_laboratorio(id_exam,descrip_examen) VALUES ($id_exam,'$this->descrip_examen')";
echo $queryInsert;*/

$queryUpdate= "UPDATE descrip_orden_laboratorio SET descrip_examen='$this->descrip_examen' WHERE id_exam=$id_exam";

$desp = $pdo->query($queryInsert);
echo $queryUpdate;


$this->msj="Actualización de Checkbox exitosa";

}
$pdo= null;
return $this->msj;
}
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 15:52.