Foros del Web » Programando para Internet » PHP »

Multiples select multiples (?)

Estas en el tema de Multiples select multiples (?) en el foro de PHP en Foros del Web. Hola! que tal? Les cuento mi problema....... tengo un formulario que incluye un arreglo de SELECTs MULTIPLES -son categorias- pero no logro poder recuperar los ...
  #1 (permalink)  
Antiguo 09/09/2009, 10:38
 
Fecha de Ingreso: agosto-2009
Mensajes: 247
Antigüedad: 14 años, 8 meses
Puntos: 10
Exclamación Multiples select multiples (?)

Hola! que tal?

Les cuento mi problema....... tengo un formulario que incluye un arreglo de SELECTs MULTIPLES -son categorias- pero no logro poder recuperar los datos

Si hago un vardump de catego[][] me muestra un arreglo multi-dimensional pero no es como si fuera uni- porque si selecciono dos categorias en un mismo SELECT ... las veo como en SELECTs independientes:

Array
(
[0] => Array
(
[0] => Actualidad y noticias
)

[1] => Array
(
[0] => Opinion
)

[2] => Array
(
[0] => Sociedad
)

[3] => Array
(
[0] => Proteccion ambiental
)

)

En este caso he seleccionado 3 categorias en el primer SELECT y una ('Proteccion ambiental') en otro pero es como si hubieran sido 4 selects donde las seleccioné

Como se soluciona ?

Última edición por bigwhite; 09/09/2009 a las 10:44
  #2 (permalink)  
Antiguo 09/09/2009, 10:43
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Multiples select multiples (?)

Escribe lo que has hecho para poder indicarte
__________________
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 09/09/2009, 10:52
 
Fecha de Ingreso: agosto-2009
Mensajes: 247
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: Multiples select multiples (?)

Cita:
Iniciado por abimaelrc Ver Mensaje
Escribe lo que has hecho para poder indicarte
Abi... estoy haciendo uso de una clase que publicada aca... pero es lo de menos.. porque el HTML generado lo he chequeado

Código PHP:
<?php
require_once 'clases/adodb5/adodb.inc.php'// cargo la clase 
require_once "clases/adodb5/adodb-exceptions.inc.php"//////
require_once "connect.php"// DB connect  
require_once "clases/form.class.php";

if (isset(
$_POST['catego'])){
  
$cant count ($_POST['catego']);
  
$nombre $_POST['nombre'];
  
$catego $_POST['catego'];
  
  echo 
'<pre>';
  
print_r ($catego);
  echo 
'</pre>';
     
}


$formu = new form ('','POST');///////
$formu->addClass('renglon'); //css

$rs $DB->execute ("SELECT * FROM categorias ORDER BY id ASC"); 

For (
$i=0;$i<5;$i++){  

  
$formu->addText('nombre[]','');
  
$formu->setId('nombre');
  
$formu->setTitle('Network:');

  
$formu->openSelect('catego[]');
  
$formu->addClass('select');
  
$formu->setTitle('Categoria:');
  
$formu->setMultiple();
  
$formu->setSize(6);

  
$formu->addOption('nada','seleccionar <<<');
  foreach (
$rs as $rowi){
    
$id $rowi['id'];
    
$nombre $rowi['nombre'];
    
$formu->addOption($nombre,$nombre);    
    if (
$id_catego==$id){
      
$formu->setSelected();
    }         
  }  
  
$formu->closeSelect(); 
  
}  
  
$formu->addSubmit ('boton','enviar');
$formu->setId('enviar');
$formu->addClass('boton');

$formu->addHidden('modulo','procesar');

echo 
$formu->display(); 

?>  
</div>
Si en el SELECT -openSelect()- declaro como vector (matriz uni-dimensional)...es parecido, pues sale algo asi:

Array
(
[0] => Actualidad y noticias
[1] => Opinion
[2] => Proteccion ambiental
[3] => Esoterico
)

y yo esperaria... un arreglo donde [0] tiene 3 elmentos... {Actualidad y noticias, Opinion, Proteccion ambiental} y [1] a {Esoterico}
  #4 (permalink)  
Antiguo 09/09/2009, 11:00
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Multiples select multiples (?)

Ok, estoy tratando de entender lo que quieres hacer. Dale mejor un var_dump a los post
Código PHP:
Ver original
  1. var_dump($_POST);
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 09/09/2009, 11:04
 
Fecha de Ingreso: agosto-2009
Mensajes: 247
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: Multiples select multiples (?)

Abi... es un formulario donde creo "redes" y cada una puede tener multiples categorias... entendes?



y si hago el "var_dump" de $_POST declarando el SELECT como vector veo esto:

Array
(
[nombre] => Array
(
[0] => Red A
[1] => Red B
[2] =>
[3] =>
[4] =>
)

[catego] => Array
(
[0] => Actualidad y noticias
[1] => Opinion
[2] => Sociedad
[3] => Proteccion ambiental
)

[boton] => enviar
[modulo] => procesar
)

En la foto (que la saque antes),... la primera red es "Red A" y la segunda "Red B" de las 5 que puedo crear a la vez (el for va hasta 5)

Última edición por bigwhite; 09/09/2009 a las 11:11
  #6 (permalink)  
Antiguo 09/09/2009, 11:08
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Multiples select multiples (?)

Si ahi entiendo mejor lo que quieres hacer, pero hazle un var_dump a POST para ver que te trae y así ver como manipular los datos.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 09/09/2009, 11:17
 
Fecha de Ingreso: agosto-2009
Mensajes: 247
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: Multiples select multiples (?)

Ahora declaro el SELECT como matriz (2 dimensiones) y veras.....que es "lo mismo"

Cita:
$formu->openSelect('catego[][]');
  #8 (permalink)  
Antiguo 09/09/2009, 11:22
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Multiples select multiples (?)

Trata a ver si esto es lo que quieres
Código PHP:
Ver original
  1. foreach($_POST["catego"] as $k=>$v){
  2.   foreach($v as $kk=>$vv){
  3.     echo $vv."<br />";
  4.   }
  5. }
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #9 (permalink)  
Antiguo 09/09/2009, 11:28
 
Fecha de Ingreso: agosto-2009
Mensajes: 247
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: Multiples select multiples (?)

Abi: sale esto:

Actualidad y noticias
Opinion
Sociedad
Proteccion ambiental

El tema... que si ves el dumps que me pedistes... es que el segundo indice siempre tiene un elemento, el [0] y no multiples (como necesito)

Si no hay forma....... renuncio a algo que parece ser IMPOSIBLE -no previsto por quienes diseñan los navegadores-
  #10 (permalink)  
Antiguo 09/09/2009, 11:37
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Multiples select multiples (?)

Lo que sucede es que estas enviando en array el formulario y si te fijas estas usando primero un array que se encarga de contar por ejemplo [0] array [1] array [2] array eso representa la primera parte del array que declaraste la segunda se va a encargar del valor que esta en ese array y siempre va a ser [0]. Ahora ¿por qué si colocas solamente un [ ] te los trae individuales? Es porque cada select trabaja individual. Cada select tienes que visualizarlos como si fuera un campo de texto regular. Todos son individuales. De la mejor forma para trabajar es como estas haciendo creando dos [ ][ ] De esa forma manda todos en un array y los puedes manejar mejor.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #11 (permalink)  
Antiguo 09/09/2009, 11:44
 
Fecha de Ingreso: agosto-2009
Mensajes: 247
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: Multiples select multiples (?)

abi: no entiendo la solucion.........(si es que la hay)

podrias postearla?
  #12 (permalink)  
Antiguo 09/09/2009, 11:57
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Multiples select multiples (?)

Pero ya te la postee, si tu quieres manejar los datos tienes que usar multiples foreach como el que te postee.Pero si lo que quieres es convertirlos a la forma como tu quieres trabajarlo puedes hacer esto

Código PHP:
Ver original
  1. $a = array();
  2. foreach($_POST["catego"] as $k=>$v){
  3.   foreach($v as $kk=>$vv){
  4.     $a[] = $vv;
  5.   }
  6. }
  7. print_r($a);
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #13 (permalink)  
Antiguo 09/09/2009, 12:09
 
Fecha de Ingreso: agosto-2009
Mensajes: 247
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: Multiples select multiples (?)

Abi: lo que planteas no sirve porque los datos vienen ya mal al ser enviados... (no se envian con los indices correctos)

Invento algo.......y posteo la solucion
  #14 (permalink)  
Antiguo 09/09/2009, 12:20
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Multiples select multiples (?)

Mira a ver si este ejemplo te sirve entonces
Código PHP:
Ver original
  1. <?php
  2. echo "<pre>";
  3. print_r($_POST);
  4. echo "</pre>";
  5. ?>
  6. <html>
  7. <body>
  8. <form name="algo" action="b.php" method="POST" size="6">
  9. <select MULTIPLE name="catego1[]">
  10. <option value="Actualidad y noticias">Actualidad y noticias</option>
  11. <option value="Opinion">Opinion</option>
  12. <option value="Sociedad">Sociedad</option>
  13. <option value="Proteccion ambiental">Proteccion ambiental</option>
  14. <option value="Esoterico">Esoterico</option>
  15. <option value="Medios de comunicacion">Medios de comunicacion</option>
  16. </select>
  17. <select MULTIPLE name="catego2[]" size="6">
  18. <option value="Actualidad y noticias">Actualidad y noticias</option>
  19. <option value="Opinion">Opinion</option>
  20. <option value="Sociedad">Sociedad</option>
  21. <option value="Proteccion ambiental">Proteccion ambiental</option>
  22. <option value="Esoterico">Esoterico</option>
  23. <option value="Medios de comunicacion">Medios de comunicacion</option>
  24. </select>
  25. <input type="submit">
  26. </form>
  27. </body>
  28. </html>
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #15 (permalink)  
Antiguo 09/09/2009, 12:48
 
Fecha de Ingreso: agosto-2009
Mensajes: 247
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: Multiples select multiples (?)

SOLUCIONADO con eval()

Lo declaro asi:

Cita:
$formu->openSelect("catego{$i}[]");
Para leer pongo esto:

Cita:
for ($i=0;$i<MAX;$i++){
eval("\$var = 'catego'.\$i;");
var_dump ($_POST[$var]);
}
EDIT: abi.......eso lo se.... pero la idea de PHP es que sea dinamico..... fijate que yo fijo cuantos SELECT MULTIPLES quiero con la constante MAX
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:07.