Foros del Web » Programando para Internet » PHP »

Guardar checkbox

Estas en el tema de Guardar checkbox en el foro de PHP en Foros del Web. Hola a todos, haber si podeis echarme una mano con un checkbox de un formulario. El formulario está en html y los datos de este ...
  #1 (permalink)  
Antiguo 01/06/2010, 05:26
Avatar de Cristy_blk  
Fecha de Ingreso: abril-2010
Ubicación: Granada
Mensajes: 66
Antigüedad: 14 años, 7 meses
Puntos: 0
Guardar checkbox

Hola a todos, haber si podeis echarme una mano con un checkbox de un formulario.

El formulario está en html y los datos de este los guardo en una base de datos mysql, pero no consigo almacenar el valor de ese checkbox (si está seleccionado o no).

¿Cómo lo hago?, gracias de antemano.
  #2 (permalink)  
Antiguo 01/06/2010, 07:54
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: Guardar checkbox

Si no sabes manejar las peticiones en php te recomiendo que leas este manual http://php.net/manual/en/language.va...s.external.php o este manual http://www.forosdelweb.com/wiki/Manual_de_PHP
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 01/06/2010, 08:31
Avatar de Cristy_blk  
Fecha de Ingreso: abril-2010
Ubicación: Granada
Mensajes: 66
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Guardar checkbox

ok, le echaré un vistazo, gracias.
  #4 (permalink)  
Antiguo 01/06/2010, 08:48
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Tema movido desde Configuración PHP a PHP
  #5 (permalink)  
Antiguo 02/06/2010, 05:01
Avatar de Cristy_blk  
Fecha de Ingreso: abril-2010
Ubicación: Granada
Mensajes: 66
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Guardar checkbox

He estado mirando los links pero la verdad sk no me han servido de mucho :(
  #6 (permalink)  
Antiguo 02/06/2010, 07:41
Avatar de oswalgogra  
Fecha de Ingreso: septiembre-2007
Ubicación: En algún lugar del territorio Colombiano
Mensajes: 140
Antigüedad: 17 años, 2 meses
Puntos: 5
Respuesta: Guardar checkbox

Hola, qué tal?
Mira, yo proceso los checkboxes de la forma siguiente:
1. En el formulario html los agrupo según las opciones, por ejemplo:
Código PHP:
<p>Seleccione los permisos a grabar</p>
<
form name="frmGrabarPermisos" action="la_accion.php" method="post">
  <
input type='checkbox' name='permisos[consultar]' value='1'  Consultar
  
<input type='checkbox' name='permisos[modificar]' value='1'  Modificar
  
<input type='checkbox' name='permisos[borrar]' value='1'  Borrar
  
<input type='submit' value='Enviar'  />
</
form
2. En el script que recibe los datos (la_accion.php) se verifica si llegaron datos en el arreglo "permisos" del request:
Código PHP:
// obtienes el arreglo con los checkboxes seleccionados
$permisosGrabar = (isset($_REQUEST["permisos"]) && count($_REQUEST["permisos"])>0)?$_REQUEST["permisos"]:array();
if(
is_array($permisosGrabar) && count($permisosGrabar)){
            foreach (
$permisosGrabar as $permiso => $seleccionado){
                
/* haces las verificaciones o procedimientos que requiera tu programa.... 
                                */
            
}
        } 
3. No olvides hacer debug, por ejemplo, con var_dump($variable)

Listo! creo que con eso ya puedes verificar cuáles checkboxes se han seleccionado en el formulario, ten en cuenta que los checkboxes del mismo grupo tienen un "name" igual (yo lo hago así para agruparlos más fácil en el request ), y que normalmente tienen un value "true" o 1, o lo que tu quieras, aunque si el checkbox llega en el request, es porque fué seleccionado en el formulario.

Espero haberte ayudado un poco con tu problema.
Éxitos y hasta pronto!
__________________
Oswaldo: El que gobierna con el poder de Dios.
  #7 (permalink)  
Antiguo 04/06/2010, 03:58
Avatar de Cristy_blk  
Fecha de Ingreso: abril-2010
Ubicación: Granada
Mensajes: 66
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Guardar checkbox

Me gustaria saber si puede ser más simple, puesto que sólo tengo un checkbox, por lo que no necesitaria el array no??

Gracias!!! :)
  #8 (permalink)  
Antiguo 04/06/2010, 07:04
Avatar de oswalgogra  
Fecha de Ingreso: septiembre-2007
Ubicación: En algún lugar del territorio Colombiano
Mensajes: 140
Antigüedad: 17 años, 2 meses
Puntos: 5
Información Respuesta: Guardar checkbox

Hola, qué tal?

Si suponemos que se tiene un solo checkbox (como es tu caso), entonces el formulario sería:
Código HTML:
<form name="nombre_form" action="accion_del_form" method="post">
<input type="checkbox" name="miCheckbox" value="1" /> Me gusta la pizza
<input type="submit" value="Enviar" />
</form> 
Y lo puedes leer así:
Código PHP:
$valor_del_checkbox= (isset($_REQUEST["miCheckbox"])?$_REQUEST["miCheckbox"]:2;
// el valor 1 viene desde el formulario, el valor 2 es el que le ponemos por defecto (puede ser lo que tu quieras) 
// ahora la variable $valor_del_checkbox puede tener 1 o 2 
Lo que se hace es validar si el checkbox fue seleccionado, si no, entonces le pones un valor por defecto a $valor_del_checkbox.

Yo uso la función isset($variable) para verificar que la variable nombre_del_checkbox venga en los datos de la petición (cuando has seleccionado el checkbox).

Espero haberte ayudado con tu problema.
__________________
Oswaldo: El que gobierna con el poder de Dios.
  #9 (permalink)  
Antiguo 04/06/2010, 07:27
Avatar de Cristy_blk  
Fecha de Ingreso: abril-2010
Ubicación: Granada
Mensajes: 66
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Guardar checkbox

ok, lo entiendo. Verás tengo un formulario desde donde introduzco los datos
y enn este tengo este código:

Código HTML:
Pagado:
             <input name="pagado" type="checkbox" value="1"> 
después tengo un archivo guardar.php donde guardo todos los datos en la tabla:
Código PHP:
<?php
$conexion
=mysql_connect("localhost","root","");
mysql_select_db("poker",$conexion) or die ("***** Conexión a base de datos no realizada*****");
$pagado= (isset($_REQUEST["pagado"])?$_REQUEST["pagado"]:2);

echo 
"INSERT INTO socios VALUES ('', '$nombre', '$apellidos', '$dni', '$direccion', '$poblacion', '$codigopos', '$telefono', '$otro','$foto', '$pagado')";

$resul=mysql_query("INSERT INTO socios VALUES ('', '$nombre', '$apellidos', '$dni', '$direccion', '$poblacion', '$codigopos', '$telefono', '$otro','$foto', '$pagado')",$conexion); 

if (
mysql_errno ($conexion)==0)
    echo 
"<center><b>Socio insertado</b></center>";
else
    echo 
"<center><b>Error en la inserción</b></center>";        
$conexion=mysql_close($conexion);
?>
hasta ahí he seguido los pasos que tu me has puesto, ahora tengo otro archivo donde visualizo los datos k e guardado, ahí tendré que hacer un if para comprobar el valor de pagado y depende de ese valor lo ponga a checked o no.
Ahí me pierdo, porque lo tengo así, pero no me sale.
Echale un vistazo por si lo he hecho mal, please.


Pagado:
Código PHP:
<input type="checkbox" name="pagado" <? if ($fila[pagado==1]) {echo checked;}?>>
Muchas gracias por todo!!
  #10 (permalink)  
Antiguo 04/06/2010, 09:40
Avatar de oswalgogra  
Fecha de Ingreso: septiembre-2007
Ubicación: En algún lugar del territorio Colombiano
Mensajes: 140
Antigüedad: 17 años, 2 meses
Puntos: 5
Información Respuesta: Guardar checkbox

Hola, que bien que ya vas cuadrando tu script

Prueba con lo siguiente:

Código PHP:
// ... todo el proceso anterior
// consultas el registro que acabas de grabar en la tabla de socios y obtienes si fue pagado o no
$pagado $registro_encontrado["pagado"];
$checked = ($pagado == 1)?:" checked ":"";
// ahora si puedes mostrar la variable checked, que es un string con el texto checked o vacío, para mostrar el checkbox seleccionado a no. 
Código HTML:
<input type="checkbox" name="pagado" <?php echo $checked; ?>> Pagado
Listo ahora puedes mostrar el checkbox marcado o no dependiendo si el socio ha pagado.

Espero haberte ayudado, éxitos.
Hasta pronto.
__________________
Oswaldo: El que gobierna con el poder de Dios.
  #11 (permalink)  
Antiguo 04/06/2010, 10:52
Avatar de Cristy_blk  
Fecha de Ingreso: abril-2010
Ubicación: Granada
Mensajes: 66
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Guardar checkbox

ok ya lo hice pero me da error en una de las lineas (123)... :(
te dejo el codigo haber si le ves algún error. Mil gracias!!

Código PHP:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Asociación Royal Flush</title>
<meta name="keywords" content="" />
<meta name="description" content="" />
<link href="default.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="jquery/jquery.slidertron-0.1.js"></script>
<style type="text/css">
@import "gallery.css";
.Estilo1 {font-size: 18px}
.Estilo2 {font-size: large}
.Estilo4 {font-size: xx-large; }
a:link {
    color: #999999;
    text-decoration: none;
}
a:visited {
    text-decoration: none;
    color: #990000;
}
a:hover {
    text-decoration: underline;
}
a:active {
    text-decoration: none;
}
.Estilo7 {font-size: medium; color: #990000; }
.Estilo8 {font-size: small}
</style>
</head>
<body>

<?php
$conexion
=mysql_connect("localhost","root","");
mysql_select_db("poker",$conexion)or die ("*****Conexion a base de datos no realizada*****");
$dni=$_REQUEST['dni'];
$resul=mysql_query("SELECT * FROM socios WHERE dni='$dni'",$conexion);
$fila=mysql_fetch_array($resul);
?>

<div id="wrapper">
<div id="header">
    <div id="logo">
        <h1><a href="#">Asociación </a>Royal flush</h1>
  </div>
    <!-- end div#logo -->
  <div id="menu">
      <ul>
          <li class="active"><a href="#">socios</a></li>
          <li></li>
          <li></li>
          <li><!-- end div#menu -->
</li>
      </ul>
    </div>
  </div>
<div>
    <div id="page">
        <div id="page-bgtop">
            <div align="center"></div>
            <div id="content">
                <div id="gallery-bg">
                    <div id="gallery-bgtop">
                      <div id="gallery-bgbtm"><!-- end -->
                            <form id="form4" method="post" action="">
                              <p>
                                <label><span class="Estilo7">Nº Socio:</span>
                                  <input name="nsocio" type="text" size="7" value="<? echo $fila[nsocio];?>"/>
                                </label>
                              </p>
                            <p align="left"><img name="foto" src="<? echo $fila[foto];?>" width="103" height="111" alt="" /></p>
                            
                              <p>
                                <label><span class="Estilo7">                                Nombre:</span>
                                  <input type="text" name="nombre" value="<? echo $fila[nombre];?>"/>
                                </label>
                              </p>
                              <p>
                                <label><span class="Estilo7">Apellidos:</span>
                                  <input name="apellidos" type="text" size="30" value="<? echo $fila[apellidos];?>"; />
                                </label>
                              </p>
                          
                            
                              <p>
                                <label><span class="Estilo7">DNI:</span>
                                <input name="dni" type="text" size="20" value="<? echo $fila[dni];?>" method="get" />
                                </label>
                              </p>
                        
                              <p>
                                <label><span class="Estilo7">Dirección:</span>
                                <input name="direccion" type="text" size="40" value="<? echo $fila[direccion];?>"/>
                                </label>
                              </p>
                          
                              <p>
                                <label><span class="Estilo7">Población:</span>
                                <input name="poblacion" type="text" size="30" value="<? echo $fila[poblacion];?>"/>
                                </label>
                              </p>
                          
                              <p>
                                <label><span class="Estilo7">Código Postal:</span>
                                <input name="codigopos" type="text" size="12" value="<? echo $fila[codigopos];?>"/>
                                </label>
                              </p>
                          
                              <p>
                                <label><span class="Estilo7">Teléfono:</span>
                                <input type="telefono" name="textfield26" value="<? echo $fila[telefono];?>" />
                                </label>
                              </p>
                         
                              <p>
                                <label><span class="Estilo7">Otros datos de interés:</span><br />
                                <textarea name="otro" cols="50" rows="4"> <? echo $fila[otro];?> </textarea>
                                </label>
                              </p>
                                <? $pagado $registro_encontrado["pagado"];
                                
$checked = ($pagado == 1)?:" checked ":"";     ?>    
                              <p>
                                <label class="Estilo7">
                                  Pagado:</label>
                                <label>
                                <input type="checkbox" name="pagado" <?php echo $checked?>>
                                </label>
                              </p>
                              <p>
                              <label>
                                  <div align="center">
                              </label>
                            </form>
                            
                        <div align="center"></div>
                              <label>
                              <div align="center">
                              <div align="center">
                                <input type="submit" name="boton" value="Borrar" onClick="this.form.action='borrar.php'"/>
                                
                              </div>
                              </label>
                   </div>
              </div>
          </div>
      </div>
    </div>
</div>     
            <!-- end div#content -->
            <div id="sidebar">
                <div id="sidebar-bgtop">
                  <div id="sidebar-bgbtm">
                    <ul>
                        <li id="search"></li>
                      <li>
                              <h2 align="center" class="Estilo4">Opciones</h2>
<ul class="Estilo1">
                                <li><a href="ver.php" class="Estilo2">Volver</a></li>
                        </ul>
                      </li>
                    </ul>
                  </div>
                </div>
            </div>
            <!-- end div#sidebar -->
            <div style="clear: both; height: 1px"></div>
    </div> 
    <!-- end div#page -->
<!-- end div#wrapper -->
<div id="footer-wrapper"></div>
<!-- end div#footer -->
</body>
</html>
  #12 (permalink)  
Antiguo 04/06/2010, 11:10
Avatar de oswalgogra  
Fecha de Ingreso: septiembre-2007
Ubicación: En algún lugar del territorio Colombiano
Mensajes: 140
Antigüedad: 17 años, 2 meses
Puntos: 5
Respuesta: Guardar checkbox

Hola,
Cambia la variable $registro_encontrado por $fila, ese se uno de los problemas, el otro es que cometí un error de digitación en la línea que verifica el valor de "pagado" (sobran los dos puntos después del primer paréntesis), mira:

Código PHP:
// ...
<?php
$pagado 
$fila["pagado"]; // la variable $pagado captura lo que hay en el atributo "pagado" del registro que estás mostrando
$checked = ($pagado == 1)?" checked ":"";
?>    
 <p>
 <label class="Estilo7">
Pagado:</label>
<label>
<input type="checkbox" name="pagado" <?php echo $checked?>>
</label>
</p>
Éxitos, hasta pronto!

Pdta: usa la etiqueta <?php en vez de <?, porque puede haber conflictos con otros lenguajes como asp. La etiqueta ?> puede ser la misma.
__________________
Oswaldo: El que gobierna con el poder de Dios.

Última edición por oswalgogra; 04/06/2010 a las 11:12 Razón: Cometí un error de digitación
  #13 (permalink)  
Antiguo 04/06/2010, 12:55
Avatar de Cristy_blk  
Fecha de Ingreso: abril-2010
Ubicación: Granada
Mensajes: 66
Antigüedad: 14 años, 7 meses
Puntos: 0
De acuerdo Respuesta: Guardar checkbox

ok muchas gracias!!!!!! ya funcionó!!!! aunke he tenido k modificar alguna cosilla, ya que al seleccionar el checkbox no me guarda un 1 sino la palabra "checkbox" asi que lo que hice fue esto:

Código PHP:
<?php $pagado $fila["pagado"];
 
$checked = ($pagado != 2)?" checked ":"";     ?>
para que mientras sea distinto que 2 me lo seleccione.
muchas gracias por tu ayuda, tengo otra dudiya haber si me puedes ayudar, sabes como tengo k hacer para que me muestre imagenes de una carpeta??

Por ejemplo yo tengo una carpeta llamada fotos y de ahi selecciono una y me la guarda en la tabla, para despues mostrarla. Lo he conseguido hacer pero sin meter las fotos en ninguna carpeta...

De todas formas muxas gracias, llevaba tiempo con lo del checkbox.
  #14 (permalink)  
Antiguo 04/06/2010, 13:03
Avatar de Cristy_blk  
Fecha de Ingreso: abril-2010
Ubicación: Granada
Mensajes: 66
Antigüedad: 14 años, 7 meses
Puntos: 0
De acuerdo Respuesta: Guardar checkbox

ya solucioné lo de las fotos!!! gracias x todo!!!!!!!!!
  #15 (permalink)  
Antiguo 04/06/2010, 14:52
Avatar de oswalgogra  
Fecha de Ingreso: septiembre-2007
Ubicación: En algún lugar del territorio Colombiano
Mensajes: 140
Antigüedad: 17 años, 2 meses
Puntos: 5
De acuerdo Respuesta: Guardar checkbox

Ok, me alegra que hayas resuelto la dificultad!

Éxitos y hasta pronto!
__________________
Oswaldo: El que gobierna con el poder de Dios.

Etiquetas: checkbox
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 12:13.