Foros del Web » Programando para Internet » PHP »

mostrar y editar checkbox agregados

Estas en el tema de mostrar y editar checkbox agregados en el foro de PHP en Foros del Web. hola. yo puse mi consulta ghace unos dias y parece k mi pregunta no fue clara. voy a tratar de explicar para k se entienda ...
  #1 (permalink)  
Antiguo 03/03/2009, 09:16
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
mostrar y editar checkbox agregados

hola. yo puse mi consulta ghace unos dias y parece k mi pregunta no fue clara. voy a tratar de explicar para k se entienda mi problema. yo tengo una lista de capacidades de USB. es una tabla de capacidades. yo los muestro con checkbox las capacidades de USB k son de 2GB, 4GB, 8GB, 16GB, 32GB. yo hago check a dos capacidades de 2GB y 4GB. me inserta las capacidades separado por comas utilizando la funcion implode.

este es mi codigo que realiza la siguiente funcion:

Código PHP:

$sql_producto = "SELECT * FROM miusb_productos where idproducto = '".$_GET['id']."'";
$rpta_producto = mysql_query($sql_producto) or die(mysql_error());
$fila = mysql_fetch_array($rpta_producto);

<?php
    
    $sql_capacidad 
"SELECT * FROM miusb_capacidades";
    
$rpta_capacidad mysql_query($sql_capacidad) or die(mysql_error());
    
$capacidad explode(",",$fila['capacidad']); //hago un explode para separar las capacidades que fueron separadas por comas,
    
       //hago un count para saber cuantas capacidades fueron agregadas.
    
$contamosvariablesdelexplode count($capacidad);
    
    for(
$i=0;$i<$cap mysql_fetch_array($rpta_capacidad);$i++) {

    
?>
        <label>
            <input name="capacidad[]" type="checkbox" id="capacidad" value="<?php echo $cap['capacidad']; ?>
            <?php
                
                                
//pregunto k si la variable $capacidad[$i] es igual a la variale k esta haciendo el count, que haga checked. pero solo a las capacidades k he agregado.
                
if($capacidad[$i]==$contamosvariablesdelexplode[$i]){    
                    echo 
"checked='checked'";
                }
            
            
?>             
            />
            <?php echo $cap['capacidad']; ?>
        </label>

<?php
    
}
?>
hago este procedimiento y me marca todas las capacidades de los USB. yo quiero k solo marque los usb k he agregado. por ejemplo si hice check a 2, 3 ó 4 capacidades de USB, solo me debe marcar las capacidades k haya ingresado. como lo soluciono ?.

he sido lo mas claro k pude hacer mi pregunta. solo pido k me ayuden.

gracias y saludos.
  #2 (permalink)  
Antiguo 03/03/2009, 10:13
Avatar de p3rikl3s  
Fecha de Ingreso: febrero-2009
Ubicación: Valencia
Mensajes: 216
Antigüedad: 15 años, 2 meses
Puntos: 9
Respuesta: mostrar y editar checkbox agregados

Creo que tu duda fue respondida en su momento. La manera como lo puedes resolver es haciendo una busqueda en las cadena que contiene las "capacidades". Te doy un ejemplo:

<input id="capacidad" name="capacidad[]" type="checkbox" value="<?php echo $cap['capacidad']; ?>"<?php if (eregi($cap['capacidad'],$capacidad[$i])) echo "checked"; ?> >

La idea es que hagas una busqueda directa en el arrelgo donde guardas las capacidades.

Saludos.
  #3 (permalink)  
Antiguo 03/03/2009, 10:29
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
hola p3rikl3s. gracias por responder a mi pregunta. implemente el codigo pero no me salia y no tuve el tiempo para publicar el codigo k hice. voy a probar el ejemplo k pusiste. y un ultima pregunta. como haria esa busqueda del arreglo de las capacidades del USB ?.

saludos.

hola probe el ejemplomk pusiste y no me marca los checks.

un ayuda p3rikl3s.

Última edición por GatorV; 03/03/2009 a las 10:48
  #4 (permalink)  
Antiguo 03/03/2009, 13:16
Avatar de p3rikl3s  
Fecha de Ingreso: febrero-2009
Ubicación: Valencia
Mensajes: 216
Antigüedad: 15 años, 2 meses
Puntos: 9
Respuesta: mostrar y editar checkbox agregados

Pienso que deberías tener 2 ciclos: 1 while para manejar los registro de tu base de datos – que en tu caso son los datos referentes a las usb guardados en la tabla “capacidades” - y otro ciclo para manejar los checks a mostrar que en tu caso son 5 (esto no es absoluto). Esto es un ejemplo:

Código PHP:
<?php
$capacidades 
= array ("2gb""4gb""8gb""16gb""32gb"); // esto puedes traerlo desde una bd.
$sql_capacidad "SELECT * FROM capacidades";
$result mysql_query($sql_capacidad ) or die ($error_sel);
while(
$row mysql_fetch_array($result)) {
         
        echo 
"aqui va la demas informacion de los registro como : marca, color, etc..."//Esto de seguro es más elaborado, pero esto es ejemplo.
         
for($i=0;  $i < = count($capacidades); i++) {
?>

<input  id="capacidad"  name="capacidad[]"  type="checkbox"  value="
<?php 
     
echo $capacidades[i] ;
?>"
<?php
     
if (eregi($row['capacidad'],$capacidades[$i])) //$row['capacidad'] es el campo de la tabla de tu base de datos que contiene las capacidades del n registro.
     
echo "checked"
?> >
<?   
     }  
?>

Lo que hago es buscar las capacidades – que están almacenadas en la tabla “capacidades” – en un arreglo que contiene todas las capacidades que tú manejas – que son 5, esto puede ser una constante o también puedes manejarlas desde una tabla en tu base de datos -. Esa búsqueda la hago con la función trim de php.


Saludos.

Última edición por p3rikl3s; 03/03/2009 a las 13:51
  #5 (permalink)  
Antiguo 03/03/2009, 20:51
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
Respuesta: mostrar y editar checkbox agregados

gracias por responder de nuevo p3rikl3s. puse el codigo k publicaste como ejemplo. lo implemente y me sale varios checkbox repetidos.

como lo soluciono ?.

saludos.
  #6 (permalink)  
Antiguo 04/03/2009, 07:56
Avatar de p3rikl3s  
Fecha de Ingreso: febrero-2009
Ubicación: Valencia
Mensajes: 216
Antigüedad: 15 años, 2 meses
Puntos: 9
Respuesta: mostrar y editar checkbox agregados

Cuantos checkbox se repiten ? Muestranos el código fuente y la salida en pantalla, eso ayudará a ver mas rapido el problema.

Saludos.
  #7 (permalink)  
Antiguo 04/03/2009, 09:03
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
Respuesta: mostrar y editar checkbox agregados

hola p3rikl3s. arregle mi problema. el bucle for lo puse dentro del checkbox. este es mi codigo:

Código PHP:

<?php

    $sql_capacidad 
"SELECT * FROM miusb_capacidades";
    
$rpta_capacidad mysql_query($sql_capacidad) or die(mysql_error());
    
$capacidad explode(",",$fila['capacidad']);
    
    
$contamosvariablesdelexplode count($capacidad);
    
    while(
$cap mysql_fetch_array($rpta_capacidad)){
?>
        <label>
            <input name="capacidad[]" type="checkbox" id="capacidad" value="<?php echo $cap['capacidad']; ?>"
            <?php
            
                
for($i=0;$i<=$contamosvariablesdelexplode;$i++) {    
                    if (
eregi($cap['capacidad'],$capacidad[$i])){ //$row['capacidad'] es el campo de la tabla de tu base de datos que contiene las capacidades del n registro.
                        
echo "checked='checked'";
                    }
                    
                }
            
            
?>             
            /> 
            <?php echo $cap['capacidad']; ?>
        </label>

<?php
    
}
?>
saludos.
  #8 (permalink)  
Antiguo 04/03/2009, 09:09
Avatar de p3rikl3s  
Fecha de Ingreso: febrero-2009
Ubicación: Valencia
Mensajes: 216
Antigüedad: 15 años, 2 meses
Puntos: 9
Respuesta: mostrar y editar checkbox agregados

Mmm si lo vez desde ese punto de vista, entonces te quedo de lo lindo. Excelente !.

Saludos.
  #9 (permalink)  
Antiguo 04/03/2009, 09:23
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
Respuesta: mostrar y editar checkbox agregados

bueno al final me salio. como el bucle for estaba dentro de un while se repetia los checkbox. lo unico k hice es poner el bucle for dentro del checkbox (como lo mencione antes). culquier duda te la hago saber p3rikl3s.

saludos y gracias.
  #10 (permalink)  
Antiguo 04/03/2009, 09:43
Avatar de p3rikl3s  
Fecha de Ingreso: febrero-2009
Ubicación: Valencia
Mensajes: 216
Antigüedad: 15 años, 2 meses
Puntos: 9
Respuesta: mostrar y editar checkbox agregados

Bueno mi código derbería muestrar para cada registro - memoria usb - todas las capacidades y solo muestra checkeadas o marcadas las que corresponde a dicho registro. Ejemplo:

Registro 1:

2gb [x] 4gb[ ] 8gb[x] 16[x] 32[ ]

En tu caso solo muestra un checkbox marcado por cada registro. usar un código u otro va depender de las necesidades del sistema que estes implementando, cualquier duda no tardes en comentarla .

Saludos.
  #11 (permalink)  
Antiguo 16/03/2009, 15:35
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
mostrar y editar checkbox agregdos (parte II)

buenas a todos. yo puse mi consulta hace unos dias de como mostrar y editar checkbo agregados sin embargo veo un error. voy a tratar de explicar para k se entienda mi problema. yo tengo una lista de capacidades de USB. es una tabla de capacidades. yo los muestro con checkbox las capacidades de USB k son de 2GB, 4GB, 8GB, 16GB, 32GB. yo hago check a dos capacidades de 2GB y 4GB. me inserta las capacidades separado por comas utilizando la funcion implode. luego muestro con un bucle while las capacidades del usb y deontro del bucle whioe un bucle for contanto las cpacidades ingresadas por comas utilizando la funcion implode. despues cuando muestro los checkbox agregados, me marca una capacidad que no habia ingresado. es decir si yo marco 16GB Y 32GB, me marca la capacidad de 2GB.

mi pregunta es como lo soluciono. cuando hice una comparacion, me marcaba todas las capacidades de los checkbox. en cambio cuando coloque la funcino eregi (coincidencia de expresiones regulares sin diferenciar mayúsculas y minúsculas) me marco los checkbox k hbia agregado. hasta alli esta bien. pero como hago para k no me marque una capacidad k no he ingresado.

aqui les dejo mi codigo.

Código PHP:

<?php

    $sql_capacidad 
"SELECT * FROM miusb_capacidades";
    
$rpta_capacidad mysql_query($sql_capacidad) or die(mysql_error());
    
$capacidad explode(",",$fila['capacidad']);
    
    
$contamosvariablesdelexplode count($capacidad);
    
    while(
$cap mysql_fetch_array($rpta_capacidad)){
?>
        <label>
            <input name="capacidad[]" type="checkbox" class="objetoformulario" id="capacidad" value="<?php echo $cap['capacidad']; ?>"
            <?php
            
                
for($i=0;$i<=count($contamosvariablesdelexplode);$i++) {    
                    if (
eregi($cap['capacidad'],$capacidad[$i])){ //$cap['capacidad'] es el campo de la tabla de tu base de datos que contiene las capacidades del n registro.
                        
echo "checked='checked'";
                    }
                    
                }
            
            
?>             
            /> 
            <?php echo $cap['capacidad']; ?>
        </label>

<?php
    
}
?>
  #12 (permalink)  
Antiguo 16/03/2009, 15:49
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: mostrar y editar checkbox agregdos (parte II)

En el caso de 32gb, comparando contra 2gb, eregi encuentra la '2gb' y por eso en ambos te devuelve verdadero.

En vez de eregi usa in_array(aguja, pajar) para saber si la capacidad fue seleccionada.
__________________
- León, Guanajuato
- GV-Foto
  #13 (permalink)  
Antiguo 16/03/2009, 15:53
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
grcias por responder triby. voy a colocar la funcion in_array().

coloque el codigo asi y no me marca los agregados.

Código PHP:

if(in_array($cap['capacidad'],$capacidad[$i])){ 
    echo 
"checked='checked'";


Última edición por GatorV; 17/03/2009 a las 16:09
  #14 (permalink)  
Antiguo 16/03/2009, 16:20
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: mostrar y editar checkbox agregdos (parte II)

Seguro que revisaste como funciona in_array()?

Código php:
Ver original
  1. <label>
  2.             <input name="capacidad[]" type="checkbox" class="objetoformulario" id="capacidad" value="<?php echo $cap['capacidad']; ?>"
  3.             <?php
  4.                 if(in_array($cap['capacidad'], $capacidad))
  5.                         echo " checked='checked'";
  6.             ?>            
  7.             />
__________________
- León, Guanajuato
- GV-Foto
  #15 (permalink)  
Antiguo 16/03/2009, 16:31
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
Respuesta: mostrar y editar checkbox agregdos (parte II)

voy a revisarlo triby. gracias.
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 03:36.