Foros del Web » Programando para Internet » PHP »

problema con checkbox y php

Estas en el tema de problema con checkbox y php en el foro de PHP en Foros del Web. Hola, tengo un problema con mis checkbox en html y la insercción de 0 o 1 en la base de datos. esta es mi estructura ...
  #1 (permalink)  
Antiguo 12/01/2016, 13:02
 
Fecha de Ingreso: diciembre-2015
Mensajes: 36
Antigüedad: 4 años
Puntos: 0
problema con checkbox y php

Hola, tengo un problema con mis checkbox en html y la insercción de 0 o 1 en la base de datos.

esta es mi estructura de la base de datos
Código:
barniz	tinyint(1)	
sin_impresion	tinyint(1)
como veis solo es 0 o 1. En mi código de HTML tengo lo siguiente:

Código HTML:
<td>Barniz:</td>
 <td><center>
<input type="checkbox" name="barniz" value="1">
Si
<input type="checkbox" name="barniz" value="0">
No
</td> 
para los checkboxes de sin impresión estarían con la misma estructura.

los values se los he cambiado hace poco, antes ponia si o no, y los he cambiado por 0 y 1 por probar....

ahora mi código PHP

Código PHP:
$barniz $_POST["barniz"];
$sin_impresion $_POST['sin_impresion']; 
recojo los valores seleccionados del formulario html con $_POST... pero en la base de datos no me inserta nada, dejo la consulta sql también

Código:
$result = mysql_query ("INSERT INTO presupuesto (presupuesto_n,descripcion,alto,ancho,cantidad_etiquetas,cliente,aa,fecha,et_rollo,diametro,mandril,papel,salida,adhesivo,tintas,banda_papel,metros_lineales,metros_cuadrados,costo_papel,tiempo_tirada,tiempo_tirada_mas_preparacion,coste_tirada,coste_total,coste_millar,sin_impresion,costo_sinimpresion,barniz,grabados,cantidad_grabados,coste_troquel,estampacion,total_pedido,beneficio_bruto,coste_millar_mas_gastos,porcentaje_sinImpresion,porcentaje_estampacion,troquel) VALUES ('$presupuesto_n','$descripcion','$alto','$ancho','$cantidad_etiquetas','$cliente','$aa','$fecha','$et_rollo','$diametro','$mandril','$papel','$salida','$adhesivo','$tintas',
				'$banda_papel','$metros_lineales','$metros_cuadrados','$costo_papel','$tiempo_tirada','$tiempo_tirada_mas_preparacion','$coste_tirada','$coste_total','$coste_millar','$sin_impresion','$costo_sinimpresion','$barniz','$grabados','$cantidad_grabados','$coste_troquel','$estampacion','$total_pedido','$beneficio_bruto','$coste_millar_mas_gastos','$porcentaje_sinImpresion','$porcentaje_estampacion','$troquel')");
he estado leyendo que hay que hacer un array...pero cuando los checkbox son de mas de 2 opciones...yo solo quiero insertar 0 ó 1 en caso de que sea verdadero o falso y en la base de datos es un tinyint

gracias de ante mano y un saludo
  #2 (permalink)  
Antiguo 12/01/2016, 13:12
 
Fecha de Ingreso: diciembre-2015
Mensajes: 529
Antigüedad: 4 años
Puntos: 39
Respuesta: problema con checkbox y php

Leyendo la consulta, no es buena práctica colocar tantos datos en una sola tabla, puedes dividirlas para un mejor entendimiento tuyo y en futuras actualizaciones, del programador que lo haga.

Tú mismo te estás dando la respuesta
Cita:
he estado leyendo que hay que hacer un array...pero cuando los checkbox son de mas de 2 opciones...
Es más de una opción, ahí ya tienes dos opciones, ya necesitas cambiar a name="barniz[]"

Edito. Y si van a seleccionar una sola opción por qué no usas mejor un radio button? Qué pasa si alguien selecciona ambos checkbox?
  #3 (permalink)  
Antiguo 12/01/2016, 13:17
 
Fecha de Ingreso: diciembre-2015
Mensajes: 36
Antigüedad: 4 años
Puntos: 0
Respuesta: problema con checkbox y php

Cita:
Iniciado por rodocoyote15 Ver Mensaje
Leyendo la consulta, no es buena práctica colocar tantos datos en una sola tabla, puedes dividirlas para un mejor entendimiento tuyo y en futuras actualizaciones, del programador que lo haga.

Tú mismo te estás dando la respuesta Es más de una opción, ahí ya tienes dos opciones, ya necesitas cambiar a name="barniz[]"

Edito. Y si van a seleccionar una sola opción por qué no usas mejor un radio button? Qué pasa si alguien selecciona ambos checkbox?
gracias por tu respuesta y sugerencia, ya lo he cambiado, pero como recojo con php si o no, 0 ó 1¿?
  #4 (permalink)  
Antiguo 12/01/2016, 13:47
 
Fecha de Ingreso: diciembre-2015
Mensajes: 36
Antigüedad: 4 años
Puntos: 0
Respuesta: problema con checkbox y php

Cita:
Iniciado por rodocoyote15 Ver Mensaje
Leyendo la consulta, no es buena práctica colocar tantos datos en una sola tabla, puedes dividirlas para un mejor entendimiento tuyo y en futuras actualizaciones, del programador que lo haga.

Tú mismo te estás dando la respuesta Es más de una opción, ahí ya tienes dos opciones, ya necesitas cambiar a name="barniz[]"

Edito. Y si van a seleccionar una sola opción por qué no usas mejor un radio button? Qué pasa si alguien selecciona ambos checkbox?
he conseguido solucionar el radio buttom de barniz... ya coge 0 ó 1 dependiendo de lo elegido, pero con sin_impresión sigue fallando y los tengo igual

Código HTML:
<td>Barniz:</td>
<td><center>
<input type="radio" name="barniz" value="1">
Si
<input type="radio" name="barniz" value="0">
No
</td> 
Código HTML:
<td>Sin impresion:</td>
<td><center>
<input type="radio" name="sin_impresion" value="1">
Si
<input type="radio" name="sin_impresion" value="0">
No
</td> 
y en el php

Código PHP:
$barniz $_POST['barniz'];
$sin_impresion $_POST['sin_impresion']; 
como creo que se observa, están iguales....o yo no lo veo, pero barniz ya si me funciona sin_impresión no. lo inserta en la BD siempre como 0

EDITO: en la base de datos los dos campos son tinyint(1)...

Última edición por daviserraalonso; 12/01/2016 a las 13:54 Razón: datos de la base de datos
  #5 (permalink)  
Antiguo 12/01/2016, 14:05
Avatar de carlillos  
Fecha de Ingreso: febrero-2007
Ubicación: México
Mensajes: 245
Antigüedad: 12 años, 10 meses
Puntos: 21
Respuesta: problema con checkbox y php

Pues sí son iguales, supongo que el error está en cómo lo estás insertando en tu base de datos.
Si haces "echo $sin_impresion" ¿te arroja el valor correcto?
  #6 (permalink)  
Antiguo 13/01/2016, 03:34
 
Fecha de Ingreso: diciembre-2015
Mensajes: 36
Antigüedad: 4 años
Puntos: 0
Respuesta: problema con checkbox y php

Cita:
Iniciado por carlillos Ver Mensaje
Pues sí son iguales, supongo que el error está en cómo lo estás insertando en tu base de datos.
Si haces "echo $sin_impresion" ¿te arroja el valor correcto?
si, me pone 0 ó 1 dependiendo de lo elegido pero no lo inserta en la base de datos.

esto sería el campo de la base de datos
Código:
sin_impresion 	tinyint (1)
esto sería la consulta sql

Código:
mysql_query ("INSERT INTO presupuesto (presupuesto_n,descripcion,alto,ancho,cantidad_etiquetas,cliente,aa,fecha,et_rollo,diametro,mandril,papel,salida,adhesivo,tintas,
			banda_papel,metros_lineales,metros_cuadrados,costo_papel,tiempo_tirada,tiempo_tirada_mas_preparacion,
			coste_tirada,coste_total,coste_millar,sin_impresion,costo_sinimpresion,barniz,grabados,cantidad_grabados,
			coste_troquel,estampacion,total_pedido,beneficio_bruto,coste_millar_mas_gastos,porcentaje_sinImpresion,porcentaje_estampacion,troquel) 
		VALUES ('$presupuesto_n','$descripcion','$alto','$ancho','$cantidad_etiquetas','$cliente','$aa','$fecha','$et_rollo','$diametro','$mandril','$papel','$salida','$adhesivo','$tintas',
				'$banda_papel','$metros_lineales','$metros_cuadrados','$costo_papel','$tiempo_tirada','$tiempo_tirada_mas_preparacion',
				'$coste_tirada','$coste_total','$coste_millar','$sin_impresion','$costo_sinimpresion','$barniz','$grabados','$cantidad_grabados','$coste_troquel',
				'$estampacion','$total_pedido','$beneficio_bruto','$coste_millar_mas_gastos','$porcentaje_sinImpresion','$porcentaje_estampacion','$troquel')");
y aquí recogeríamos el $_POST en php

Código PHP:
$sin_impresion $_POST['sin_impresion']; 
si hago echo $sin_impresion; pone 0 ó 1 dependiendo si he elegido si o no. pero en la BD no lo inserta
  #7 (permalink)  
Antiguo 13/01/2016, 06:27
 
Fecha de Ingreso: diciembre-2015
Mensajes: 36
Antigüedad: 4 años
Puntos: 0
Respuesta: problema con checkbox y php

el fallo lo tengo en este condicional, ya que he estado probando y a veces me inserta 1 ó 0 dependiendo de la condición. Si le pongo un else al final, else(sin_impresion == 0) me da error, pero faltaría una condición para el primer if, he intentado colocarlo por otras zonas depende de donde lo ponga me coge 0 ó 1 pero cuando me coge el 1 no me coge el 0....

Código PHP:
Ver original
  1. if($sin_impresion == 1){
  2.         if($tintas == 1){
  3.             $sin_impresion = ($sin_impresion * 1.05);
  4.             }elseif ($tintas == 2){
  5.                 $sin_impresion = ($sin_impresion * 1.10);
  6.                 }elseif ($tintas == 3){
  7.                     $sin_impresion = ($sin_impresion * 1.15);
  8.                     }elseif ($tintas == 4){
  9.                         $sin_impresion = ($sin_impresion * 1.2);
  10.                         }elseif ($tintas == 5){
  11.                             $sin_impresion = ($sin_impresion * 1.25);
  12.                             }elseif ($tintas == 6){
  13.                                 $sin_impresion = ($sin_impresion * 1.3);
  14.                                 }elseif ($tintas == 7){
  15.                                     $sin_impresion = ($sin_impresion * 1.35);
  16.                                     }
  17.             else if ($sin_impresion == 0){
  18.                     if($barniz == 1){
  19.                         $sin_impresion = ($sin_impresion * 1.4);
  20.                         }else{
  21.                             $barniz = 0;
  22.                         }
  23.             }
  24.         }
  #8 (permalink)  
Antiguo 13/01/2016, 10:48
 
Fecha de Ingreso: diciembre-2015
Mensajes: 529
Antigüedad: 4 años
Puntos: 39
Respuesta: problema con checkbox y php

El else if está aninado con el primer if, su corchete es el último, por lo tanto siempre te retornará 0.

Prueba así

Código PHP:
Ver original
  1. if($sin_impresion == 1){
  2.         if($tintas == 1){
  3.             $sin_impresion = ($sin_impresion * 1.05);
  4.             }elseif ($tintas == 2){
  5.                 $sin_impresion = ($sin_impresion * 1.10);
  6.                 }elseif ($tintas == 3){
  7.                     $sin_impresion = ($sin_impresion * 1.15);
  8.                     }elseif ($tintas == 4){
  9.                         $sin_impresion = ($sin_impresion * 1.2);
  10.                         }elseif ($tintas == 5){
  11.                             $sin_impresion = ($sin_impresion * 1.25);
  12.                             }elseif ($tintas == 6){
  13.                                 $sin_impresion = ($sin_impresion * 1.3);
  14.                                 }elseif ($tintas == 7){
  15.                                     $sin_impresion = ($sin_impresion * 1.35);
  16.                                     }
  17.          
  18.         }
  19.   else if ($sin_impresion == 0){
  20.                     if($barniz == 1){
  21.                         $sin_impresion = ($sin_impresion * 1.4);
  22.                         }else{
  23.                             $barniz = 0;
  24.                         }
  25.             }

P.d. Los else no llevan condicional.

Etiquetas: checkbox, formulario, html, mysql, sql
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 00:45.