Foros del Web » Programando para Internet » PHP »

cómo leo los valores de un select muliple en php?

Estas en el tema de cómo leo los valores de un select muliple en php? en el foro de PHP en Foros del Web. Hola a todos. Tengo un select de opción multiple que me funciona perfecto, pero cuando deseo leer los datos no puedo, ya que en php ...
  #1 (permalink)  
Antiguo 20/05/2002, 14:24
 
Fecha de Ingreso: febrero-2002
Mensajes: 100
Antigüedad: 22 años, 2 meses
Puntos: 0
cómo leo los valores de un select muliple en php?

Hola a todos.

Tengo un select de opción multiple que me funciona perfecto, pero cuando deseo leer los datos no puedo, ya que en php me muestra el ultimo valor que se escogió y no todos como deseo.

Lo trate como un arreglo pero no funciona, estoy pidiendo ayuda en el foro de javascript para poder convertirlo en cadena antes de enviarlo a mi pagina php para que lo procese pero de todas maneras me gustaria saber si alguien lo sabe leer directo?



Gracias
  #2 (permalink)  
Antiguo 20/05/2002, 15:45
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 22 años, 5 meses
Puntos: 69
Re: cómo leo los valores de un select muliple en php?

reyj, para leerlo, debes nombrarlo asi :

<select name="nombre[]" multiple>

De esa manera, cuando lo leas en el script que recibe los datos, lo podrás leer completamente como un array, que contendrá solo las opciones marcadas.

Saludos.

<hr><font size=2 face="verdana">- Pablo Daniel Rigazzi (Webstudio)
<font size=1 color="#333333">COORDINADOR PROYECTO REGIONALIZACION ARGENTINA
Visita <a href="http://www.web-studio.com.ar" target="_blank">Web Studio</a> - Tutoriales Photoshop</fo
  #3 (permalink)  
Antiguo 20/05/2002, 15:47
 
Fecha de Ingreso: mayo-2002
Mensajes: 25
Antigüedad: 21 años, 11 meses
Puntos: 0
Re: cómo leo los valores de un select muliple en php?

Si estás utilizando Mysql lo que tienes que hacer es utilizar la función mysql_fetch_array() dentro de un bucle while.

Por ejemplo tenemos la siguiente consulta:

Código:
$result=mysql_query(&quot;select * from usuario&quot;,$link);
Para leer todos los valores generados por la consulta se hace:
Código:
while ($row=mysql_fetch_array($result))
      {
	printf(&quot;&lt;B&gt;Usuario: &lt;/B&gt;&amp;nbsp;%s
  &lt;B&gt;E-mail:&lt;/B&gt;&quot;, $row[&quot;nombre&quot;],$row[&quot;email&quot;]);	
}
Donde &quot;nombre&quot; y &quot;email&quot; hacen referencia al nombre de los atributos de la tabla a la que se está haciendo el select.
  #4 (permalink)  
Antiguo 21/05/2002, 09:00
 
Fecha de Ingreso: febrero-2002
Mensajes: 100
Antigüedad: 22 años, 2 meses
Puntos: 0
Re: cómo leo los valores de un select muliple en php?

Gracias por contestarme.

La solución de Pablo es la que mas se aproxima sin embargo da error, esto es debido a que estoy usando un listbox que produce otro, esto aplica para mostrar los productos de una categoria.

Es importante destacar que esta discusión esta en este tema porque necesito leer esos valores en php y no se como.

Les voy a colocar el código para que puedan copiarlo y pegarlo en algun editor para que puedan apreciar el problema y me puedan ayudar mejor, cuestión que aprecio muchisimo. Si les interesa el código yo logre hacer que php lo genere leyendo directamente de una base de datos, y lo desplega perfecto, pero obviamente no sirve de nada si no puedo leer los datos.

Muchas Gracias
  #5 (permalink)  
Antiguo 21/05/2002, 09:03
 
Fecha de Ingreso: febrero-2002
Mensajes: 100
Antigüedad: 22 años, 2 meses
Puntos: 0
Re: cómo leo los valores de un select muliple en php?

El codigo es:

&lt;html&gt;
&lt;head&gt;

&lt;SCRIPT LANGUAGE=&quot;JavaScript&quot;&gt;
team = new Array(
new Array(
new Array(&quot;prueba&quot;, 45634),
new Array(&quot;Escultura&quot;, 6534),
new Array(&quot;prueba2&quot;, 4365346)
),
new Array(
new Array(&quot;construccion1&quot;, 43634),
new Array(&quot;construccion2&quot;, 34634)
),

new Array(
new Array(&quot;b&quot;, 346),
new Array(&quot;otro&quot;, 435634)
)
);

function fillSelectFromArray(selectCtrl, itemArray, goodPrompt, badPrompt, defaultItem) {
var i, j;
var prompt;
// empty existing items
for (i = selectCtrl.options.length; i &gt;= 0; i--) {
selectCtrl.options[I] = null;
}
prompt = (itemArray != null) ? goodPrompt : badPrompt;
if (prompt == null) {
j = 0;
}
else {
selectCtrl.options[0] = new Option(prompt);
j = 1;
}
if (itemArray != null) {
// add new items
for (i = 0; i &lt; itemArray.length; i++) {
selectCtrl.options[j] = new Option(itemArray[i][0]);
if (itemArray[i][1] != null) {
selectCtrl.options[j].value = itemArray[1];
}
j++;
}
// select first item (prompt) for sub list
selectCtrl.options[0].selected = true;
}
}
// End --&gt;
&lt;/script&gt;
&lt;/HEAD&gt;

&lt;body bgcolor=&quot;#FFFFFF&quot; text=&quot;#000000&quot;&gt;
&lt;FORM NAME=&quot;main&quot; method=&quot;get&quot; action=&quot;eje_incluir_subcategoria.php3&quot; enctype=&quot;multipart/form-data&quot;&gt;
&lt;SELECT NAME=&quot;Make&quot; onChange=&quot;fillSelectFromArray(this.form.Team, ((this.selectedIndex == -1) ? null : team[this.selectedIndex-1]));&quot;&gt;
&lt;OPTION VALUE=&quot;-1&quot;&gt;Select Team
&lt;OPTION VALUE=1&gt;Categoria1
&lt;OPTION VALUE=2&gt;Categoria2
&lt;OPTION VALUE=3&gt;Categoria3
&lt;OPTION VALUE=4&gt;Categoria4
&lt;/SELECT&gt;
&lt;BR&gt;
&lt;SELECT NAME=&quot;Team&quot; SIZE=&quot;5&quot; multiple&gt;
&lt;OPTION&gt; &lt;/OPTION&gt;
&lt;OPTION&gt; &lt;/OPTION&gt;
&lt;OPTION&gt; &lt;/OPTION&gt;
&lt;OPTION&gt; &lt;/OPTION&gt;
&lt;OPTION&gt; &lt;/OPTION&gt;
&lt;/SELECT&gt;
&lt;input type=&quot;submit&quot; name=&quot;Submit&quot; value=&quot;Submit&quot;&gt;
&lt;/FORM&gt;
&lt;/body&gt;
&lt;/html&gt;

Gracias
  #6 (permalink)  
Antiguo 21/05/2002, 11:22
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 22 años, 5 meses
Puntos: 69
Re: cómo leo los valores de un select muliple en php?

Entonces, si tu problema está en que no puedes renombrar el Select porque está siendo utilizado en un SCript, entonces lo que te queda es hacer algún truquito.

Digamos que el Select múltiple se llame &quot;opciones&quot; no ?
entonces. en el botón de Submit de tu formulario, haces algo como

&lt;input type=&quot;submit&quot; onclick=&quot;preparar(this.form.opciones, this.form.opciones2);&quot;&gt;

Luego, creas una Input Hidden en tu form, que se llame &quot;opciones2&quot;:

&lt;input type=&quot;hidden&quot; name=&quot;opciones2&quot;&gt;

Y finalmente, codeas una funcion que haga más o menos lo siguiente :
Código:
function preparar(Opciones, Opciones2)
{
Opciones2.value='';
for (i=0; i&lt;Opciones.options.length; i++)
{
if(Opciones.options.selected)
Opciones2.value += Opciones.options.value+&quot;:&quot;;
}
}
  

Entonces, cuando submitas tu Formulario, en el PHP vas a tener una variable que se llama $opciones2, que va a tener todos los valores del Select Múltiple, separados por &quot;:&quot;...
Después le haces un explode() y listo.

Ojo, tené cuidado que el script que hice yo, te deja un : al final de los valores, por lo que el explode, la última posición del Array que te devuelve, va a estar vacia.

Saludos.


<hr><font size=2 face="verdana">- Pablo Daniel Rigazzi (Webstudio)
<font size=1 color="#333333">COORDINADOR PROYECTO REGIONALIZACION ARGENTINA
Visita <a href="http://www.web-studio.com.ar" target="_blank">Web Studio</a> - Tutoriales Photoshop</fo
  #7 (permalink)  
Antiguo 22/05/2002, 11:31
 
Fecha de Ingreso: febrero-2002
Mensajes: 100
Antigüedad: 22 años, 2 meses
Puntos: 0
Re: cómo leo los valores de un select muliple en php?

De verdad es que este foro es una maravilla, simplemente cada quien me responde lo mejor que puede y es impresionante lo cerquita que estoy, les doy las gracias a todos por ello en especial a Pablo, pero ya que he llegado hasta aqui por favor ayudenme a terminar, me di cuenta que mi inexperiencia en javascript me esta matando al final.

Explico que el codigo que Pablo me dió no me trabajó no se por qué, pero el codigo que me dió un chamo de Rusia lo estoy adaptando a lo que me dijo Pablo y casi casi le llego, simplemente no se cómo decirle que me asigne en el HIDDEN el valor del arreglo recogido .


El form se llama Main, el select se llama Team y la variable se llama opciones2.

Necesito algo como document.main.opciones2.value += +cadena;

creo que alli está el pelón, no lo se!

En el próximo mensaje voy a colocar el codigo que hice de las pruebas.

ayudenme por favor

gracias
  #8 (permalink)  
Antiguo 22/05/2002, 11:35
 
Fecha de Ingreso: febrero-2002
Mensajes: 100
Antigüedad: 22 años, 2 meses
Puntos: 0
Re: cómo leo los valores de un select muliple en php?

&lt;html&gt;
&lt;head&gt;
&lt;SCRIPT LANGUAGE=&quot;JavaScript&quot;&gt;
function preparar(Opciones, Opciones2)
{
Opciones2.value='';
for (i=0; i&lt;Opciones.options.length; i++)
{
if(Opciones.options.selected)
Opciones2.value += Opciones.options.value+&quot;:&quot;;
}
}
&lt;/script&gt;
&lt;script language=&quot;JavaScript&quot;&gt;
&lt;!--
function getSels3(){
var list=document.forms['main'].elements['Team'];
var sels=&quot;&quot;;
for (i=0;i&lt;list.options.length;i++)
if (list.options[I].selected)
{
sels += list.options[i].text+&quot;\n&quot;;
document.main.opciones2.value += list.options[i];
}
if (sels.length&gt;0)
{
document.main.opciones2.value+= +sels;
document.forms.submit();
}
else alert(&quot;You have not selected anything.&quot;);
}
//--&gt;
&lt;/script&gt;
&lt;script language=&quot;JavaScript&quot;&gt;
&lt;!--
function getSels(){
var list=document.forms['main'].elements['Team'];
var sels=&quot;&quot;;
for (i=0;i&lt;list.options.length;i++)
if (list.options[i].selected)
sels += list.options.text+&quot;\n&quot;;
if (sels.length&gt;0)
{
document.forms['main'].opciones2+= +sels;
document.forms.submit();
}
else alert(&quot;You have not selected anything.&quot;);
}
//--&gt;
&lt;/script&gt;
  #9 (permalink)  
Antiguo 22/05/2002, 11:36
 
Fecha de Ingreso: febrero-2002
Mensajes: 100
Antigüedad: 22 años, 2 meses
Puntos: 0
Re: cómo leo los valores de un select muliple en php?

el otro codigo es el que coloque primero y le agrgo estas llamadas

&lt;input type=&quot;hidden&quot; name=&quot;opciones2&quot;&gt;
&lt;input type=&quot;submit&quot; onclick=&quot;preparar(this.form.Team, this.form.opciones2);&quot;&gt;
&lt;input type=&quot;submit&quot; name=&quot;Submit&quot; onclick=&quot;getSels()&quot; value=&quot;get&quot;&gt;
&lt;input type=&quot;submit&quot; name=&quot;Submit&quot; onclick=&quot;getSels3()&quot; value=&quot;get3&quot;&gt;
&lt;/FORM&gt;
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 14:27.