Foros del Web » Programando para Internet » PHP »

Problemas con checkbox

Estas en el tema de Problemas con checkbox en el foro de PHP en Foros del Web. Hola, soy nuevo aqui, y ya antes me habia ayudado con ejemplos de este foro (muy bueno por cierto) pero hoy necesito ayuda. Tengo un ...
  #1 (permalink)  
Antiguo 10/08/2008, 01:23
 
Fecha de Ingreso: agosto-2008
Mensajes: 12
Antigüedad: 15 años, 8 meses
Puntos: 0
Problemas con checkbox

Hola, soy nuevo aqui, y ya antes me habia ayudado con ejemplos de este foro (muy bueno por cierto) pero hoy necesito ayuda. Tengo un formulario donde los clientes levantan reportes sobre sus equipos que estan fallando.

los datos de este formulario se van a una tabla que se llama reportes cuyos campos son "reporte, cliente, tipo de soporte, Equipo, Dispositivo de falla, Descripcion, servicios adicionales"

el problema esta cuando tengo que llenar el campo "dispositivo de falla", por que tengo esta opcion:

<tr>
<td colspan=3>
<center><font><b>Dispositivo Del problema</b></font></center>
<table>
<tr>
<td width=250px>
<INPUT TYPE="checkbox" NAME="chik[0]" VALUE=" cpu,">CPU<br>
<INPUT TYPE="checkbox" NAME="chik[1]" VALUE=" monitor,">Monitor<br>
<INPUT TYPE="checkbox" NAME="chik[2]" VALUE=" teclado,">Teclado<br>
<INPUT TYPE="checkbox" NAME="chik[3]" VALUE=" mouse,">Mouse
</td>
<td width=250px>
<INPUT TYPE="checkbox" NAME="chik[4]" VALUE=" bocinas,">Bocinas<br>
<INPUT TYPE="checkbox" NAME="chik[5]" VALUE=" impresora,">Impresora<br>
<INPUT TYPE="checkbox" NAME="chik[6]" VALUE=" escaner,">Escaner<br>
<INPUT TYPE="checkbox" NAME="chik[7]" VALUE=" otro.">Otro
</td>
</tr>
</table>
<hr>
</td>
</tr>

----------------------------------------------------------------------------------------------------

Que puedo hacer para que en ese campo se introduzcan los valores de los checkbox seleccionados, con un solo insert?
  #2 (permalink)  
Antiguo 10/08/2008, 01:23
 
Fecha de Ingreso: agosto-2008
Mensajes: 12
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Problemas con checkbox

Por cierto, gracias de antemano
  #3 (permalink)  
Antiguo 10/08/2008, 01:54
 
Fecha de Ingreso: enero-2008
Mensajes: 132
Antigüedad: 16 años, 3 meses
Puntos: 6
Respuesta: Problemas con checkbox

en name solo coloca chik[], y luego debes leer cuales fueron seleccionados con foreach

Código PHP:

$dispositivos
="";
$i=1;
foreach(
$chik as $dispositivo )
    {
    if(
$dispositivo)
        {
        
$dispositivos.="Dispositivo Fallando Nº $i: $dispositivo\r\n";
        
$i++;
        }
    } 
Espero te sirva, Suerte
__________________
surfiction.org
  #4 (permalink)  
Antiguo 10/08/2008, 02:04
 
Fecha de Ingreso: enero-2008
Mensajes: 132
Antigüedad: 16 años, 3 meses
Puntos: 6
Respuesta: Problemas con checkbox

Aqui te dejo un codigo mas completo

Código PHP:

<?php
if($_POST['x'])
    {
    
$chik $_POST['chik'];
    
$dispositivos="";
    
$i=1;
    foreach(
$chik as $dispositivo)
        {
        if(
$dispositivo)
            {
            
$dispositivos.="Dispositivo Fallando Nº $i: $dispositivo\r\n";
            
$i++;
            }
        }
    echo 
nl2br($dispositivos);
    }
?>
Código HTML:
<form method="post">
<input type="checkbox" name="chik[]" value="cpu">CPU<br /> 
<input type="checkbox" name="chik[]" value="monitor">Monitor<br />
<input type="checkbox" name="chik[]" value="teclado">Teclado<br />
<input type="checkbox" name="chik[]" value="mouse">Mouse <br />
<input type="checkbox" name="chik[]" value="bocinas">Bocinas<br />
<input type="checkbox" name="chik[]" value="impresoa">Impresora<br />
<input type="checkbox" name="chik[]" value="escaner">Escaner<br />
<input type="checkbox" name="chik[]" value="otro">Otro<br />
<input type="submit" name="x" value="Enviar" />
</form> 
Resultado:

__________________
surfiction.org
  #5 (permalink)  
Antiguo 10/08/2008, 04:10
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 19 años, 7 meses
Puntos: 71
Respuesta: Problemas con checkbox

Cita:
Iniciado por Surfiction Ver Mensaje
Aqui te dejo un codigo mas completo

Código PHP:

<?php
if($_POST['x'])
    {
    
$chik $_POST['chik'];
    
$dispositivos="";
    
$i=1;
    foreach(
$chik as $dispositivo)
        {
        if(
$dispositivo)
            {
            
$dispositivos.="Dispositivo Fallando Nº $i: $dispositivo\r\n";
            
$i++;
            }
        }
    echo 
nl2br($dispositivos);
    }
?>
Código HTML:
<form method="post">
<input type="checkbox" name="chik[]" value="cpu">CPU<br /> 
<input type="checkbox" name="chik[]" value="monitor">Monitor<br />
<input type="checkbox" name="chik[]" value="teclado">Teclado<br />
<input type="checkbox" name="chik[]" value="mouse">Mouse <br />
<input type="checkbox" name="chik[]" value="bocinas">Bocinas<br />
<input type="checkbox" name="chik[]" value="impresoa">Impresora<br />
<input type="checkbox" name="chik[]" value="escaner">Escaner<br />
<input type="checkbox" name="chik[]" value="otro">Otro<br />
<input type="submit" name="x" value="Enviar" />
</form> 
Resultado:

te corrijo una cosa, si me permites;
desde un formulario hacia un fichero php, los checkbox que se mandan, son solo los seleccionados, con lo que, el if(..) dentro del foreach, no es necesario, ya que en todas las iteraciones entrara en el if.
De todos modos, yo hago mi pequeño aporte:
Código PHP:
<?php
if($_POST){
  if(
is_array($_POST['chick'])){
    
$dispositivos implode(', '$_POST['chick']);
  }
  echo 
$dispositivos// CPU, Mouse, Bocinas
}
?>
Espero te sirva :)
  #6 (permalink)  
Antiguo 10/08/2008, 04:28
 
Fecha de Ingreso: agosto-2008
Mensajes: 12
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Problemas con checkbox

hola surfiction, me sirve mas el ejemplo corto , por que asi puedo concatenar los valores en una sola variable y se adapta mas a mi formulario, pero me marca un error en el foreach, me dice que la sintaxis no es correcta...
  #7 (permalink)  
Antiguo 10/08/2008, 04:51
 
Fecha de Ingreso: agosto-2008
Mensajes: 12
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Problemas con checkbox

Aqui les coloco mas o menos como tengo el codigo.
Código HTML:
<form method="POST" action="principal.php?op=10">

<tr>
          <td colspan=3>
          <center><font><b>Dispositivo Del problema</b></font></center>          
          <table>
             <tr>
                <td width=250px>                
              <INPUT TYPE="checkbox" NAME="chik[]" VALUE=" cpu,">CPU<br>               
              <INPUT TYPE="checkbox" NAME="chik[]" VALUE=" monitor,">Monitor<br>
              <INPUT TYPE="checkbox" NAME="chik[]" VALUE=" teclado,">Teclado<br>
              <INPUT TYPE="checkbox" NAME="chik[]" VALUE=" mouse,">Mouse   
                </td>        
                <td width=250px>
                <INPUT TYPE="checkbox" NAME="chik[]" VALUE=" bocinas,">Bocinas<br>
                <INPUT TYPE="checkbox" NAME="chik[]" VALUE=" impresora,">Impresora<br>
                <INPUT TYPE="checkbox" NAME="chik[]" VALUE=" escaner,">Escaner<br>
                <INPUT TYPE="checkbox" NAME="chik[]" VALUE=" otro.">Otro

</td>
             </tr>                    
          </table>   

<INPUT TYPE="submit" value="Generar Reporte"> 
Ahi podran ver que utilizo el metodo post y (action="principal.php?op=10") en realidad es un manejador que me manda a un documento que se llama reportesfuncion.php, en ese documento realizo toda la coneccion y el llenado de mis tablas, bien, lo que necesito es meter los valores de los checkbox seleccionados (concatenados), para poder usarlos en la sentencia mysql.
  #8 (permalink)  
Antiguo 10/08/2008, 08:02
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 19 años, 7 meses
Puntos: 71
Respuesta: Problemas con checkbox

pon la parte de la sentencia sql, el manejo del formulario y demas codigo para poder ayudarte mejor
  #9 (permalink)  
Antiguo 10/08/2008, 18:12
 
Fecha de Ingreso: agosto-2008
Mensajes: 12
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Problemas con checkbox

Hola Doobie, no te puedo poner todo el codigo del formulario por que es demasiado pero si te puedo poner el codigo PHP que se encarga de hacer el "Insert".

Código PHP:
<?php  
$chik
=$_POST['chik[]']  
$dispositivos=""
foreach($chik as $dispositivos )
    {
    if(
$dispositivos)
        {
        
$dispositivos.= $dispositivos ;
        }
    }  
  
  
$check=$_POST['check[]']  
$Servicios=""
foreach($check as $servicios )
    {
    if(
$servicios)
        {
        
$servicios.= $servicios ;
        }
    }  
  
  
$tiposoporte=$_POST["coboxts"];
  
$equipo=$_POST["cmbequip"];
  
$descripcion=$_POST["txtdesfalla"];

           
$cn=mysql_connect("localhost","root","123");
           if(
$cn){
           
mysql_select_db("helpdesk",$cn);
           
           
                
$sql="INSERT into clireport(clientes,tipsoporte,equipo,dispfalla,descrision,servadicional)VALUES({$_SESSION['cli']},'$tiposoporte','$equipo','$dispositivos','$descripcion','$servicios')";
           
                     if(
mysql_query($sql,$cn)){
                   echo 
"Informacion Guardada";
                   echo  
$dispositivos;
                }else{
               echo 
"Problemas en SQL <BR> $sql";
              }
  
             }else{
             echo 
"Error en la conexion";
           }
?>
pero ahora me marca el error en las variables "$servicio" y "$dispositivos"

me marca este error : Parse error: syntax error, unexpected T_VARIABLE in C:\AppServ\www\Helpdesk\Contenido\Documentos\CLeRe porte2.php on line 4.

las variables "$chik=$_POST['chik[]']" y "$check=$_POST['check[]']"

los saqué de aqui:

Código HTML:
<td colspan=3>
          <center><font><b>Dispositivo Del problema</b></font></center>          
          <table>
             <tr>
                <td width=250px>                
              <INPUT TYPE="checkbox" NAME="chik[]" VALUE=" cpu,">CPU<br>               
              <INPUT TYPE="checkbox" NAME="chik[]" VALUE=" monitor,">Monitor<br>
              <INPUT TYPE="checkbox" NAME="chik[]" VALUE=" teclado,">Teclado<br>
              <INPUT TYPE="checkbox" NAME="chik[]" VALUE=" mouse,">Mouse   
                </td>        
                <td width=250px>
                <INPUT TYPE="checkbox" NAME="chik[]" VALUE=" bocinas,">Bocinas<br>
                <INPUT TYPE="checkbox" NAME="chik[]" VALUE=" impresora,">Impresora<br>
                <INPUT TYPE="checkbox" NAME="chik[]" VALUE=" escaner,">Escaner<br>
                <INPUT TYPE="checkbox" NAME="chik[]" VALUE=" otro.">Otro 
                   
                   
                </td>
             </tr>                    
          </table>             
              <hr>
            </td>

<td colspan=3>
             <b>Servicios Adicionales:</b><br><br>
                Mantenimiento Preventivo<font color=white>__</font><INPUT TYPE="checkbox" NAME="check[]" VALUE="Mantenimiento Preventivo"><br>
                Instalacion de perifericos<font color=white>___</font><INPUT TYPE="checkbox" NAME="check[]" VALUE="Instalacion de Perifericos">              
           </td> 
espero me puedan ayudar, gracias

Última edición por maik-o-billy; 10/08/2008 a las 18:45
  #10 (permalink)  
Antiguo 10/08/2008, 18:36
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problemas con checkbox

pues ami ojo... tienes mucho errores

mira, para empezar... el name="chik[]" significa que chik[] es, y sera una arreglo... así que cuando lo leas con GET/POST hazlo sin las llaves.... que no tienen función, siquiera

Código PHP:
// correcto?
print_r($_POST['chik']); 
otra, es la variable que asignas en los ciclos for() también, estas cometiendo un error de lógica....

dice asi

Código:
PARA ( $chik COMO $dispositivos )
{
  SI HAY ( $dispositivos ) ENTONCES
    AUMENTAS $dispositivos con $dispositivos rn;
}
la pregunta facil es, que demonios hace ese tal rn; '??

y la otra, y como que mas compleja para mi es.... no crees que es redundante tu forma de hacer estos ciclos ???

osea, si OK... existe $a ¡¡pero ¿porque la concatenas con $a!!? ya que después del asignador AS dentro del ciclo for() asignas de inmediato el valor a cierta variable, la cual... comparas y reusas???!!! (es todo un rollo)

deveras, eso veo yo.... una mas, y por ultimo... me parece que si creas la variable $A ... y usas la variable $a (notas la diferencia) no es lo mismo, suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 10/08/2008, 18:59
 
Fecha de Ingreso: agosto-2008
Mensajes: 12
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Problemas con checkbox

Cita:
Iniciado por pateketrueke Ver Mensaje
pues ami ojo... tienes mucho errores



la pregunta facil es, que demonios hace ese tal rn; '??

y la otra, y como que mas compleja para mi es.... no crees que es redundante tu forma de hacer estos ciclos ???

osea, si OK... existe $a ¡¡pero ¿porque la concatenas con $a!!? ya que después del asignador AS dentro del ciclo for() asignas de inmediato el valor a cierta variable, la cual... comparas y reusas???!!! (es todo un rollo)

deveras, eso veo yo.... una mas, y por ultimo... me parece que si creas la variable $A ... y usas la variable $a (notas la diferencia) no es lo mismo, suerte!
en realidad "rn" eran \r\n que se habian colado, por alguna razon no aparecieron las diagonales, concateno $a con $a, por que necesito guardar los valores de los checkbox seleccionados, entonces si tengo tres checkbox seleccionados, cada vez que el inicie el ciclo se borrara el valor que ya tenia la variable con el nuevo dando como resultado que solo se guarde el valor del ultimo checkbox(por lo menos asi lo vi yo)

no creo que sea tan dificil, solo que creo que mi logica es mala.

supongamos que el cliente selecciono el CPU, monitor y mouse

lo que intento hacer es leer todos los checkbox y tomar los valores de los que si esten seleccionados (en este caso cpu,monitor y mouse) y meter esos valores un una variable $tres_valores, para poder insertar los tres valores en un solo campo de la tabla que en este caso es "dispositivo que falla"...
  #12 (permalink)  
Antiguo 10/08/2008, 19:03
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Problemas con checkbox

Cita:
me marca este error : Parse error: syntax error, unexpected T_VARIABLE in C:\AppServ\www\Helpdesk\Contenido\Documentos\CLeRe porte2.php on line 4.
Se te olvidaron unos cuantos puntos y comas (;)

Código PHP:
<?php  
$chik
=$_POST['chik[]'];
$dispositivos="";
foreach(
$chik as $dispositivos )
    {
    if(
$dispositivos)
        {
        
$dispositivos.= $dispositivos;
        }
    }  
  
  
$check=$_POST['check[]'];
$Servicios="";
foreach(
$check as $servicios )
    {
    if(
$servicios)
        {
        
$servicios.= $servicios;
        }
    }  
  
  
$tiposoporte=$_POST["coboxts"];
  
$equipo=$_POST["cmbequip"];
  
$descripcion=$_POST["txtdesfalla"];

           
$cn=mysql_connect("localhost","root","123");
           if(
$cn){
           
mysql_select_db("helpdesk",$cn);
           
           
                
$sql="INSERT into clireport(clientes,tipsoporte,equipo,dispfalla,descrision,servadicional)VALUES({$_SESSION['cli']},'$tiposoporte','$equipo','$dispositivos','$descripcion','$servicios')";
           
                     if(
mysql_query($sql,$cn)){
                   echo 
"Informacion Guardada";
                   echo  
$dispositivos;
                }else{
               echo 
"Problemas en SQL <BR> $sql";
              }
  
             }else{
             echo 
"Error en la conexion";
           }
?>
  #13 (permalink)  
Antiguo 10/08/2008, 21:23
 
Fecha de Ingreso: agosto-2008
Mensajes: 12
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Problemas con checkbox

ya corregi lo de los punto y coma, gracias, pero el error esta en el ciclo, vere si puedo hacer algo...
  #14 (permalink)  
Antiguo 10/08/2008, 23:10
 
Fecha de Ingreso: agosto-2008
Mensajes: 12
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Problemas con checkbox

Hola, tecnicamente ya funciona, ya puedo guardar y todo, pero solo guarda el valor del ultimo checkbox seleccionado y si trato de concatenar aparece "valorseleccionado, 0 "

¿que puedo hacer para que los valores de todos los checkbox seleccionados se junten en una sola cadena?
  #15 (permalink)  
Antiguo 10/08/2008, 23:13
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Problemas con checkbox

http://www.php.net/implode
  #16 (permalink)  
Antiguo 11/08/2008, 08:50
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Respuesta: Problemas con checkbox

Cita:
Iniciado por DooBie Ver Mensaje
te corrijo una cosa, si me permites;
desde un formulario hacia un fichero php, los checkbox que se mandan, son solo los seleccionados, con lo que, el if(..) dentro del foreach, no es necesario, ya que en todas las iteraciones entrara en el if.
De todos modos, yo hago mi pequeño aporte:
Código PHP:
<?php
if($_POST){
  if(
is_array($_POST['chick'])){
    
$dispositivos implode(', '$_POST['chick']);
  }
  echo 
$dispositivos// CPU, Mouse, Bocinas
}
?>
Espero te sirva :)
Probaste esta solución también?, no debes de tener ningún problema


Saludos.
  #17 (permalink)  
Antiguo 13/08/2008, 03:07
 
Fecha de Ingreso: agosto-2008
Mensajes: 12
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Problemas con checkbox

Bien gracias a todos los que me ayudaron, ya solucione mi problema.
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 21:06.