elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  arrays con select multiple
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: arrays con select multiple  (Leído 1,883 veces)
romanjr55

Desconectado Desconectado

Mensajes: 5


Ver Perfil
arrays con select multiple
« en: 16 Marzo 2019, 01:13 am »

Hola especialistas, hoy traigo un tema que no he podido resolver y espero me puedan ayudar porque no encuentro en que me estoy equivocando.

 Tengo una serie de n selects determinados por la variable $regcue, el formulario muestra los 7 selects y permite la seleccion de sus opciones, de esta forma:

$respb=array('Siempre','Casi siempre','Casi nunca','Nunca','');

$regcue=7; //este varia segun un select de una bd

@$p2ap1=array();
for($x1 = 0; $x1 < $regcue; $x1++)
{   
   echo '<td><select name="p2ap[$x1]" value="$p2ap[$x1]" class="form-control" >';      
   for($x1a = 0; $x1a < count($respb); $x1a++)
  {
     if($respb[$x1a] == $_POST['p2ap[$x1a]']){$selected = ' selected';}
     else{$selected = '';}           
     echo '<option value="'.$respb[$x1a].'"'.$selected.'>'.$respb[$x1a].'</option>';
  }
  echo '</select>';
  @$p2v=$p2ap[$x1];
  array_push($p2ap1,$p2v);
}

echo " <td><input type='submit' name='botonenv' value='Continuar a la parte 3'";   
if (@$_POST['botonenv']=='Continuar a la parte 3')
{
     print_r($p2ap1);
}

Al presionar el submit el problema es que no me esta tomando ningun valor y obtengo como resultado:

Array (
  • => [1] => [2] => [3] => [4] => [5] => [6] => )       

podrian ayudarme a saber en donde me estoy equivocando?????

por su gran ayuda como siempre, Gracias.


En línea

mchojrin

Desconectado Desconectado

Mensajes: 49



Ver Perfil WWW
Re: arrays con select multiple
« Respuesta #1 en: 24 Abril 2019, 16:47 pm »

Es un poco difícil leer el código así... te recomiendo para empezar usar nombres de variables algo más descriptivos.

Copié tu código tal cual está y me da un error en la línea

Código:
if($respb[$x1a] == $_POST['p2ap[$x1a]']){$selected = ' selected';}

Nada grave, podrías ocultarlo usando @ (Aunque no te lo recomiendo).

Para hacerlo funcionar tuve que hacerle algunas modificaciones, la versión ejecutable es:

Código:
<?php

$respb=array('Siempre','Casi siempre','Casi nunca','Nunca','');

$regcue=7; //este varia segun un select de una bd

@$p2ap1=array();
?>
<form method="post">
<?php
for($x1 = 0; $x1 < $regcue; $x1++)
{
   echo '<td><select name="p2ap[$x1]" value="$p2ap[$x1]" class="form-control" >';
   for($x1a = 0; $x1a < count($respb); $x1a++)
  {
     echo '<option value="'.$respb[$x1a].'"'.( array_key_exists( 'p2ap[$x1a]', $_POST ) && $respb[$x1a] == $_POST['p2ap[$x1a]'] ? 'selected' : '').'>'.$respb[$x1a].'</option>';
  }
  echo '</select>';
  @$p2v=$p2ap[$x1];
  array_push($p2ap1,$p2v);
}

echo " <td><input type='submit' name='botonenv' value='Continuar a la parte 3'/>";
?>
</form>
<?php
if (@$_POST['botonenv']=='Continuar a la parte 3')
{
     print_r($p2ap1);
}

  Y ahí sí me da la salida que dices:

Código:
Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => )

El problema es que todos los select tienen el mismo nombre... si ves el código HTML generado verás esto:

Código:
<select name="p2ap[$x1]" value="$p2ap[$x1]" class="form-control" ><option value="Siempre">Siempre</option><option value="Casi siempre">Casi siempre</option><option value="Casi nunca">Casi nunca</option><option value="Nunca">Nunca</option><option value=""></option></select><td><select name="p2ap[$x1]" value="$p2ap[$x1]" class="form-control" ><option value="Siempre">Siempre</option><option value="Casi siempre">Casi siempre</option><option value="Casi nunca">Casi nunca</option><option value="Nunca">Nunca</option><option value=""></option></select><td><select name="p2ap[$x1]" value="$p2ap[$x1]" class="form-control" ><option value="Siempre">Siempre</option><option value="Casi siempre">Casi siempre</option><option value="Casi nunca">Casi nunca</option><option value="Nunca">Nunca</option><option value=""></option></select><td><select name="p2ap[$x1]" value="$p2ap[$x1]" class="form-control" ><option value="Siempre">Siempre</option><option value="Casi siempre">Casi siempre</option><option value="Casi nunca">Casi nunca</option><option value="Nunca">Nunca</option><option value=""></option></select><td><select name="p2ap[$x1]" value="$p2ap[$x1]" class="form-control" ><option value="Siempre">Siempre</option><option value="Casi siempre">Casi siempre</option><option value="Casi nunca">Casi nunca</option><option value="Nunca">Nunca</option><option value=""></option></select><td><select name="p2ap[$x1]" value="$p2ap[$x1]" class="form-control" ><option value="Siempre">Siempre</option><option value="Casi siempre">Casi siempre</option><option value="Casi nunca">Casi nunca</option><option value="Nunca">Nunca</option><option value=""></option></select><td><select name="p2ap[$x1]" value="$p2ap[$x1]" class="form-control" ><option value="Siempre">Siempre</option><option value="Casi siempre">Casi siempre</option><option value="Casi nunca">Casi nunca</option><option value="Nunca">Nunca</option><option value=""></option></select>

  Esto sucede por las comillas (simples) que usas para generar el nombre (y el value) del select.

  Me falta algo de info para darte una versión completamente funcional, pero creo que con esto tendrás una base para avanzar:

Código:
<?php

$respb=array('Siempre','Casi siempre','Casi nunca','Nunca','');

$regcue=7; //este varia segun un select de una bd

@$p2ap1=array();
?>
<form method="post">
<?php
for($x1 = 0; $x1 < $regcue; $x1++)
{
   echo '<td><select name="p2ap['.$x1.']" value="'.$p2ap[$x1].'" class="form-control" >';
   for($x1a = 0; $x1a < count($respb); $x1a++)
  {
     echo '<option value="'.$respb[$x1a].'"'.( array_key_exists( 'p2ap['.$x1.']', $_POST ) && $respb[$x1a] == $_POST['p2ap['.$x1.']'] ? 'selected' : '').'>'.$respb[$x1a].'</option>';
  }
  echo '</select>';
  @$p2v=$p2ap[$x1];
  array_push($p2ap1,$p2v);
}

echo " <td><input type='submit' name='botonenv' value='Continuar a la parte 3'/>";
?>
</form>
<?php
if (@$_POST['botonenv']=='Continuar a la parte 3')
{
     print_r($p2ap1);
}


En línea

¿Docker te trae de cabeza? https://mautic.leewayweb.com/docker-101
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda con arrays dentro de arrays « 1 2 »
PHP
Servia 11 7,214 Último mensaje 10 Marzo 2011, 09:04 am
por Servia
"SELECT en DataTable" vs "SELECT en SqlServer"
.NET (C#, VB.NET, ASP)
.::IT::. 2 4,958 Último mensaje 10 Mayo 2011, 21:01 pm
por [D4N93R]
SELECT MULTIPLE
Bases de Datos
Shell Root 3 3,378 Último mensaje 17 Octubre 2012, 10:28 am
por HdM
Funcion RecomendarButacas Ayuda!! (Recorrer arrays de arrays)
Java
elenfatico 2 2,937 Último mensaje 7 Abril 2016, 00:44 am
por 50ShadesOfKenyi
[Resuelto] Consulta Select múltiple PHP
PHP
Yaldabaot 4 2,995 Último mensaje 21 Abril 2018, 20:31 pm
por Yaldabaot
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines