Foros del Web » Programando para Internet » PHP »

Como cargar un combo a partir de una seleccion de checkbox

Estas en el tema de Como cargar un combo a partir de una seleccion de checkbox en el foro de PHP en Foros del Web. Hola a todos!!!estoy uniendome al foro ya que veo que hay respuestas muy acertadas y tengo fe de que me pueden ayudar ... Estoy haciendo ...
  #1 (permalink)  
Antiguo 12/09/2008, 00:59
 
Fecha de Ingreso: septiembre-2008
Mensajes: 18
Antigüedad: 15 años, 7 meses
Puntos: 0
Pregunta Como cargar un combo a partir de una seleccion de checkbox

Hola a todos!!!estoy uniendome al foro ya que veo que hay respuestas muy acertadas y tengo fe de que me pueden ayudar ... Estoy haciendo un proyecto que consiste en programar un "Demonio", estamos usando Php, html, modelo vista controlador con kumbia, y se me presenta un serio problema en lo siguiente: estoy guardando en un arreglo los campos de una tabla determinada. Con los nombres guardados en dicho arreglo voy creando checkbox (cada uno tendra el nombre del campo incluido en el arreglo y Habran tantos checkbox como campos tenga la tabla dada). Lo que el usuario hara sera seleccionar los checkbox (que corresponden a los campos de la tabla) de su interes. Necesito que dicha seleccion sera cargada en un combo. Obviamente se tendra que refrescar el formulario, preferiria que fuese luego de realizar todas las selecciones y al dar click a un boton para no tener que refrescar el formulario cada vez que haga un checked...He probado de todo, incluyendo programar el onchange del checkbox asociandolo a una funcion que defino al inicio del formulario pero nada. Lo tedioso es el hecho de que cada checkbox tendra el nombre obtenido desde el arreglo. Es algo asi:

<?php
$i=0;
while ($Arreglo[$i]!='')
{
?><tr><TD width="1" align="center">
<INPUT type="checkbox" name="<?php $Arreglo[$i] ?>" id="<?php $Arreglo[$i]?>" onchange="validacion(this)"></TD>
<td colspan="1"><?php echo $Arreglo[$i] . "\n";?></td>
<td colspan="1"><?php echo $Tipos[$i] . "\n";?></td>
</tr> <?php
$i++;
}
?>


Agradeceria enormemente que me pudieran orientar ya que al tener mucho tiempo tratando de solucionarlo ya no veo salida facil ...Gracias!!
  #2 (permalink)  
Antiguo 12/09/2008, 01:31
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Como cargar un combo a partir de una seleccion de checkbox

Hola:

En principio creo que es mejor que todos esos checkboxes tengan el mismo nombre terminado con un juego de corchetes, así php sabe que se trata de un array, y el nombre del arreglo, asignárselo a su value, entonces con un botón submit normal, al enviar ese formulario solo se enviarán los nombres de los checks seleccionados. Crear luego ese select creo que es trivial.

No sé si es lo que quieres.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 12/09/2008, 01:43
Avatar de .php  
Fecha de Ingreso: julio-2006
Mensajes: 481
Antigüedad: 17 años, 9 meses
Puntos: 5
Respuesta: Como cargar un combo a partir de una seleccion de checkbox

haber si entendi
vas a tener N checkbox (N son campos de una tabla). al seleccionar los check
quieres mostrar esos campos seleccionados en un combox (select).
__________________
~~[FiDeLio]~~
  #4 (permalink)  
Antiguo 12/09/2008, 11:59
 
Fecha de Ingreso: septiembre-2008
Mensajes: 18
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Como cargar un combo a partir de una seleccion de checkbox

Exacto eso es lo que quiero hacer...Voy a intentar lo que me dijo caricatos y les aviso de todas maneras agradezco su ayuda si consideran otras opciones!!Gracias!!!
  #5 (permalink)  
Antiguo 12/09/2008, 13:37
Avatar de .php  
Fecha de Ingreso: julio-2006
Mensajes: 481
Antigüedad: 17 años, 9 meses
Puntos: 5
Respuesta: Como cargar un combo a partir de una seleccion de checkbox

lo haces en kumbia??
__________________
~~[FiDeLio]~~
  #6 (permalink)  
Antiguo 12/09/2008, 14:01
 
Fecha de Ingreso: septiembre-2008
Mensajes: 18
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Como cargar un combo a partir de una seleccion de checkbox

Cita:
Iniciado por .php Ver Mensaje
lo haces en kumbia??
Sip en kumbia. Te explico para que entiendas: tengo mi formulario el cual tiene un combo con las bases de datos que tengo en mysql. Cuando un usuario selecciona una BD de dicho combo automaticamente se carga otro combo con todas las tablas que tiene dicha BD. Al seleccionar una tabla se me carga un grid en pantalla que se trae los campos de la tabla y su tipo, junto a ellos estara su checkbox respectivo que le permitira al usuario elegir los campos con los que quiere trabajar. Es alli donde estoy trancada, debo programar que: luego de que el usuario termine de seleccionar todos los campos con los checkbox entonces se me cargue otro combo con dichos nombres de los campos. Ya caricatos me corrigio el hecho de que debo poner el nombre es en el value y en el name un nombre unico con corchetes para que sea reconocido como un arreglo. Pero como y en que parte de mi formulario programo la carga del combo??el form se debe actualizar para que ello sea visto... Ayuda please
  #7 (permalink)  
Antiguo 12/09/2008, 14:04
 
Fecha de Ingreso: septiembre-2008
Mensajes: 18
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Como cargar un combo a partir de una seleccion de checkbox

Cita:
Iniciado por caricatos Ver Mensaje
Hola:

En principio creo que es mejor que todos esos checkboxes tengan el mismo nombre terminado con un juego de corchetes, así php sabe que se trata de un array, y el nombre del arreglo, asignárselo a su value, entonces con un botón submit normal, al enviar ese formulario solo se enviarán los nombres de los checks seleccionados. Crear luego ese select creo que es trivial.

No sé si es lo que quieres.

Saludos
Te explico para que entiendas: tengo mi formulario el cual tiene un combo con las bases de datos que tengo en mysql. Cuando un usuario selecciona una BD de dicho combo automaticamente se carga otro combo con todas las tablas que tiene dicha BD. Al seleccionar una tabla se me carga un grid en pantalla que se trae los campos de la tabla y su tipo, junto a ellos estara su checkbox respectivo que le permitira al usuario elegir los campos con los que quiere trabajar. Es alli donde estoy trancada, debo programar que: luego de que el usuario termine de seleccionar todos los campos con los checkbox entonces se me cargue otro combo con dichos nombres de los campos. Ya caricatos me corrigio el hecho de que debo poner el nombre es en el value y en el name un nombre unico con corchetes para que sea reconocido como un arreglo. Pero como y en que parte de mi formulario programo la carga del combo??el form se debe actualizar para que ello sea visto... Ayuda please
  #8 (permalink)  
Antiguo 12/09/2008, 14:23
Avatar de .php  
Fecha de Ingreso: julio-2006
Mensajes: 481
Antigüedad: 17 años, 9 meses
Puntos: 5
Respuesta: Como cargar un combo a partir de una seleccion de checkbox

ya mira hice un ejemplo pequeño. en kumbia, te puede servir como guía


primero
tu controlador llamado tabla_controller.php

Código PHP:
<?php
class TablaController extends ApplicationController {
    function 
index(){
        unset(
$this->arreglo);
        
$db     =    db::raw_connect();
        
$sql    =    "SHOW FIELDS FROM vacunas";    
        foreach(
$db->in_query($sql) as $item){
            
$this->arreglo[]    .= $item["Field"];
        }
        
$db->close();
    }
    function 
combos(){
        unset(
$this->arregloB);
        foreach(
$this->request("pos") as $arreglo){
             
$this->arregloB[] .= $arreglo;
         }
    }
}
?>
ahora debes tener 2 vistas
1 para mostrar los check y otra para el select

view index.phtml

Código PHP:
<?= form_tag("tabla/combos"?>
<table>
<? for($i=0;$i<count($arreglo);$i++){ ?>
<tr>
    <td><?= checkbox_field_tag("pos[$i]""value: $arreglo[$i]"?></td>
    <td><?=  $arreglo[$i?></td>
</tr>
<??>
<tr>
<td colspan="2"><?= submit_tag("aceptar"?></td>
</tr>
</table>
<?= end_form_tag() ?>
view combos.phtml

Código PHP:
<?= select_tag("campos"?>    
<?= option_tag("0""Seleccione una...""selected: true"?>
<?  
for($i=0;$i<count($arregloB);$i++){ ?>
    <?= option_tag($i$arregloB[$i]) ?>
<? 
?>
</select>

esto lo puedes combinar con ajax y quedara super bien.


suerte!!!
__________________
~~[FiDeLio]~~
  #9 (permalink)  
Antiguo 12/09/2008, 15:03
Avatar de pepeverastegui  
Fecha de Ingreso: septiembre-2008
Ubicación: Pedernales, Michoacan
Mensajes: 82
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Como cargar un combo a partir de una seleccion de checkbox

Código PHP:
<html>
<head>
<title>Prueba Combo</title>
<script type="text/javascript">
function cambio(chk)
{
   if(chk.checked == true)
   {   
      var j = document.f1.op.options.length;
      document.f1.op.options[j] = new Option(chk.value);
   }
   else
   {
      var i = 0;
      for(i=0; i<document.f1.op.options.length; i++)
      {
         if(document.f1.op.options[i].value == chk.value)
         {
            var sel = document.f1.op;
            sel.options[i] = null;
         }
      }
   }
}
</script>
</head>
<body>
<form name=f1>
<?php
$db 
mysql_connect("localhost""root""verastegui");
mysql_select_db("prueba");
$res mysql_query("select * from prueba1");
for(
$i=0$i<mysql_num_rows($res); $i++)
{
   
mysql_data_seek($res$i);
   
$row mysql_fetch_object($res);
   print 
"<input type='checkbox' value='$row->c1' name=chk onclick='return cambio(this)'>$row->c1<br>";
}
?>
<select name=op>
<option>-----</option>
</select>
<?php
mysql_close
($db);
?>
</form>
</body>
</html>
ps alo que te entendi haber si es lo que pides y te sirve el codigo, cualquier cosa
[email protected] mi correo
  #10 (permalink)  
Antiguo 12/09/2008, 15:52
 
Fecha de Ingreso: septiembre-2008
Mensajes: 18
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Como cargar un combo a partir de una seleccion de checkbox

Cita:
Iniciado por pepeverastegui Ver Mensaje
Código PHP:
<html>
<head>
<title>Prueba Combo</title>
<script type="text/javascript">
function cambio(chk)
{
   if(chk.checked == true)
   {   
      var j = document.f1.op.options.length;
      document.f1.op.options[j] = new Option(chk.value);
   }
   else
   {
      var i = 0;
      for(i=0; i<document.f1.op.options.length; i++)
      {
         if(document.f1.op.options[i].value == chk.value)
         {
            var sel = document.f1.op;
            sel.options[i] = null;
         }
      }
   }
}
</script>
</head>
<body>
<form name=f1>
<?php
$db 
mysql_connect("localhost""root""verastegui");
mysql_select_db("prueba");
$res mysql_query("select * from prueba1");
for(
$i=0$i<mysql_num_rows($res); $i++)
{
   
mysql_data_seek($res$i);
   
$row mysql_fetch_object($res);
   print 
"<input type='checkbox' value='$row->c1' name=chk onclick='return cambio(this)'>$row->c1<br>";
}
?>
<select name=op>
<option>-----</option>
</select>
<?php
mysql_close
($db);
?>
</form>
</body>
</html>
ps alo que te entendi haber si es lo que pides y te sirve el codigo, cualquier cosa
[email protected] mi correo
Gracias! entendi todo y lo agregue a mi codigo pero no me carga los datos en el combo =oS en que estare fallando? estoy revisando pero no capto la falla
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 13:15.