Foros del Web » Programando para Internet » PHP »

Checkbox con PHP

Estas en el tema de Checkbox con PHP en el foro de PHP en Foros del Web. Buenas compañeros! a ver si me pueden ayudar con mi problema que me va a estallar la cabeza. 1. A partir de una consulta genero ...
  #1 (permalink)  
Antiguo 13/04/2012, 05:54
 
Fecha de Ingreso: abril-2011
Mensajes: 103
Antigüedad: 13 años, 7 meses
Puntos: 3
Checkbox con PHP

Buenas compañeros! a ver si me pueden ayudar con mi problema que me va a estallar la cabeza.

1. A partir de una consulta genero un listado de trabajos y que muestro en pantalla. Cada elemento está identificado por un idtrabajo y hay un checkbox por cada línea.

2. Quiero poder seleccionar varios de esos trabajos y cuando pulse el botón de validar, que se me actualicen los valores de esos trabajos.

mi problema yo creo que está en la validación del checkbox ya que siempre me lo pilla como si estuviera en estado activo (valor 1).

Os dejo el código que he hecho:

El checkbox en la plantilla:
Código:
 <td><input type="checkbox" name="validacion"/></td>
La función que valida el checkbox
Código:
    public function validarCampoValidacion($validacion){
            if ($validacion == null || $validacion == ''){
                $valido=0;
            }
            else{
                $valido=1;
            }
            return $valido;
	echo $valido;
    }
el código que recoge las variables del formulario y ejecuta la consulta:
Código:
		   if (isset($_POST['idtrabaj']) && count($_POST['idtrabaj'])>0) {
    $i=1;
    
    foreach($_POST['idtrabaj'] as $trabajo) {
	$j=1;
	
			$valid = new InformeCliente($_POST['idtrabajo']);
			$valido = new InformeCliente($_POST['idtrabajo']);
			$valido=$valid->validarCampoValidacion($_POST['validacion']);
				
				
			if ($valido=0){
				
			}
			else{
			  $query2="UPDATE trabajos SET estadocliente ='SI' WHERE idtrabajo ='$trabajo'";
			    echo $query2;
		        
			$consulta = new Consulta($query2);
		        
			if(!$consulta){throw new Exception("Error al validar las Actividades");}   
			}
			  
			}
Es decir que me hace tantos "UPDATE = SI" como trabajos hay.

Bueno muchas gracias por adelantado
  #2 (permalink)  
Antiguo 13/04/2012, 06:00
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 2 meses
Puntos: 331
Respuesta: Checkbox con PHP

Este echo no se ejecuta nunca:

Código PHP:
Ver original
  1. return $valido;
  2.     echo $valido;

Estás dentro de un bucle foreach pero siempre pasas la misma variable a la función:

Código PHP:
Ver original
  1. foreach($_POST['idtrabaj'] as $trabajo) {
  2.     $j=1;
  3.    
  4.             $valid = new InformeCliente($_POST['idtrabajo']);
  5.             $valido = new InformeCliente($_POST['idtrabajo']);
  6.             $valido=$valid->validarCampoValidacion($_POST['validacion']);
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 13/04/2012, 06:18
 
Fecha de Ingreso: abril-2011
Mensajes: 103
Antigüedad: 13 años, 7 meses
Puntos: 3
Respuesta: Checkbox con PHP

Muchas gracias por contestar! Pero me siguen saliendo dudas.
Cuando dices que siempre paso la misma variable, te refieres a $_POST['validacion'] cierto?

Si intento lo que viene a continuación, me sale el mensaje "Warning: Invalid argument supplied for foreach() in"
Código:
    foreach($_POST['idtrabaj'] as $trabajo) {
	$j=1;
	foreach($_POST['validacion'] as $validar){
	    $m=1;
¿cómo puedo hacer para pasarle ambas variables a la vez? Es decir el identificador del trabajo y el valor que haya en ese momento en el checkbok?

Muchas gracias de nuevo!
  #4 (permalink)  
Antiguo 13/04/2012, 06:37
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 7 meses
Puntos: 406
Respuesta: Checkbox con PHP

sería mejor que publiques el código del formulario
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #5 (permalink)  
Antiguo 13/04/2012, 06:47
 
Fecha de Ingreso: abril-2011
Mensajes: 103
Antigüedad: 13 años, 7 meses
Puntos: 3
Respuesta: Checkbox con PHP

Gracias! la plantilla del formulario sería algo así

Código:
<table border="1" bgcolor="#ffffff" cellspacing="0" cellpadding="3" width="50%" align="left">
<form action="informecliente.admin.php" method="post">
    
<input type="hidden" name="accion" value="<?php if(isset($accion)) print $accion;?>">

<?php 
if (isset($resultado_informe) && count($resultado_informe)>0) {
    $i=1;
    foreach($resultado_informe as $resultado) {
	$j=1;
	
?>

<tr>
    <td><input style="visibility:hidden; width:1px; " value="<?=$resultado['idtrabajo']?>" name="idtrabaj[<?=$resultado['idtrabajo']?>]"/></td>
    <td><?=$resultado['cliente'];?></td>
    <td><?=$resultado['proyecto'];?></td>
    <td><?=$resultado['descripcion'];?></td>
    <td><?=$resultado['actividad'];?></td>
    <td><?=$resultado['f_inicio'];?></td>
    <td><?=$resultado['talla'];?></td>
    <td><?=$resultado['cantidad'];?></td>
    <td><?=$resultado['escalado'];?></td>
    <td><?=$resultado['preciototalK25'];?></td>
    <td><?=$resultado['nocturna'];?></td>
    <td><?=$resultado['comentarios'];?></td>
    <td><?=$resultado['estadocliente'];?></td>
    <td><?=$resultado['comentariosclientes'];?></td>
    <td><?=$resultado['comentariosaltran'];?></td>
    <td><a href="informecliente.admin.php?accion=vercompleto&resultado=<?=$resultado['idtrabajo'];?>">Ver Completo</a> </td>
    <td><input type="checkbox" value"on/off" name="validacion"/></td>
    
</tr>

<tr>
<td colspan="15" align="right">
<input class="envio" type="submit" name="" value="Validar">
</td>
</tr>

</form>
</table>
  #6 (permalink)  
Antiguo 13/04/2012, 07:51
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 7 meses
Puntos: 406
Respuesta: Checkbox con PHP

Tienes varios problemas, para comenzar el campo 'validacion' no lo estas definiendo como un array, por lo tanto estas sobre escribiendo su valor, ahora, en la validación que haces no estas comparando, estas definiendo!

Código PHP:
Ver original
  1. if ($validar = 0) { //defines el valor 0  $validar
  2.  
  3. if ($validar == 0) { //comparas si el valor de $validar es 0

por otro lado, no me parece del todo correcta la validación, puedes hacerlo directamente en el loop, eliminas lineas de código innecesarias y tendrás una mejor código...

Código PHP:
Ver original
  1. // tu código
  2. $valid = new InformeCliente($_POST['idtrabajo']);
  3.             $valido = new InformeCliente($_POST['idtrabajo']);
  4.             $valido=$valid->validarCampoValidacion($_POST['validacion']);
  5.                
  6.                
  7.             if ($valido=0){
  8.                
  9.             }
  10.             else{
  11.               $query2="UPDATE trabajos SET estadocliente ='SI' WHERE idtrabajo ='$trabajo'";
  12.                 echo $query2;
  13.                
  14.             $consulta = new Consulta($query2);
  15.                
  16.             if(!$consulta){throw new Exception("Error al validar las Actividades");}  
  17.             }
  18.  
  19. //código "resumido"
  20. if (isset($_POST['validar'][$item])) {
  21. $query2="UPDATE trabajos SET estadocliente ='SI' WHERE idtrabajo ='$trabajo'";
  22. echo $query2;
  23. $consulta = new Consulta($query2);
  24. if(!$consulta){throw new Exception("Error al validar las Actividades");}
  25. }

Ojo, la variable $item deberás definirla en algún lado eh ir incrementandola por cada item, y obviamente debes primero convertir la variable 'validacion' en un array en el formulario
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #7 (permalink)  
Antiguo 19/04/2012, 07:37
 
Fecha de Ingreso: abril-2011
Mensajes: 103
Antigüedad: 13 años, 7 meses
Puntos: 3
Respuesta: Checkbox con PHP

Muchas gracias compañeros! ya casi casi lo tengo! en cuanto esté cuelgo la solucióno. un saludo!

Etiquetas: checkbox, formulario, variables
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 22:33.