Foros del Web » Programando para Internet » PHP »

Problema con Select

Estas en el tema de Problema con Select en el foro de PHP en Foros del Web. Aupa amigos, Tengo una web en php que tiene 2 select. Mi idea es pasar los valores de un select a otro clickando en un ...
  #1 (permalink)  
Antiguo 29/05/2007, 14:13
 
Fecha de Ingreso: abril-2007
Mensajes: 24
Antigüedad: 17 años
Puntos: 0
Problema con Select

Aupa amigos,

Tengo una web en php que tiene 2 select. Mi idea es pasar los valores de un select a otro clickando en un boton para asi ir rellenando una lista. Esto lo he conseguido hacer con javascript y me lo hace bien, los elementos van pasando a la lista. Mi problema viene cuando al acabar de pasar esos elementos a la lista, le clicko a un boton submit para que me mande por POST los valores que he metido en la lista a otra pagina para meterlas en la BD. Pues por post solo recibo NULL y no se porque pasa. Al principio pense que igual estaba mal el javascript y que no me copiaba los Values de los Option del select original pero si que lo hace. Alguien sabe como podria solucionar esto? Es que no encuentro ninguna explicacion a este problema y me estoy volviendo un pelin loco con el tema. Saludos y gracias!
  #2 (permalink)  
Antiguo 29/05/2007, 14:27
 
Fecha de Ingreso: marzo-2007
Mensajes: 347
Antigüedad: 17 años, 1 mes
Puntos: 2
Re: Problema con Select

Para ayudarte seria mejor que posteases el codigo, gracias!!


Un saludo
  #3 (permalink)  
Antiguo 29/05/2007, 15:33
 
Fecha de Ingreso: abril-2007
Mensajes: 24
Antigüedad: 17 años
Puntos: 0
Re: Problema con Select

Aupa,

Postearia el codigo pero es que ocupa demasiado, y aparte uso una clase en php que tambien ocupa lo suyo. Resumidamente te puedo decir que lo tengo asi:

<select name="SelDirector[]">
<option value---Aqui cargo Id del director desde la BD>Nombre del Director</option>
</select>

<select name="director[]" disabled>
<option value="null">Directores seleccionados</option>
</select>

El javascript va dentro de una clase php a la que le paso el nombre del form de origen, los name de los select y una cadena que puedo usar para avisar de que no se ha seleccionado ningun director. Aqui te pongo el codigo:

<!--

function <?php print ($this->get_function_name ()); ?> (fromForm, toForm, fromItem, toItem, advice)

{

var fItem = fromItem +"[]";

var tItem = toItem +"[]";



if (document.forms[fromForm].elements[fItem].options.selectedIndex >= 0)

{



while (document.forms[fromForm].elements[fItem].options.selectedIndex >= 0)

{

ind = document.forms[fromForm].elements[fItem].options.selectedIndex;



text = document.forms[fromForm].elements[fItem].options[ind].text;

value = document.forms[fromForm].elements[fItem].options[ind].value;



document.forms[fromForm].elements[fItem].options[ind] = null;



var newOption = new Option(text, value);

toFormLength = document.forms[toForm].elements[tItem].options.length;

document.forms[toForm].elements[tItem].options[toFormLength] = newOption;

}

}

else

{

if ((advice != null) && (advice != ""))

{ alert (advice); }

}

return (false);

}

//-->

</script>

El javascript recibe como parametros los name de los 2 select y quita el texto y el value de un option y los mete en el segundo select usando la funcion NewOption. O sea mueve desde SelDirector[] a director[] sin problema. El problema viene que cuando le doy a Submit la siguiente pagina deberia de recibir por POST los values que tengo en el select director[] pero en vez de eso solo recibe null.

Espero que asi me podais ayudar. Un saludo y muchisimas gracias!!
  #4 (permalink)  
Antiguo 31/05/2007, 02:31
 
Fecha de Ingreso: abril-2007
Mensajes: 24
Antigüedad: 17 años
Puntos: 0
Re: Problema con Select

Nadie??¿?¿? Es que me estoy volviendo loco con esto. Un saludo!!!
  #5 (permalink)  
Antiguo 31/05/2007, 03:39
Avatar de laaccaal  
Fecha de Ingreso: julio-2003
Ubicación: Murcia
Mensajes: 147
Antigüedad: 20 años, 9 meses
Puntos: 1
Re: Problema con Select

Hola Kurido, tal ves con tanto codigo se te paso esto, que tu select director se encuentra deshabilitado, por eso es que no te pasa las variables al enviar el formulario.

<select name="director[]" disabled>
<option value="null">Directores seleccionados</option>
</select>
__________________
Album Fotos
Blog MisApuntes
  #6 (permalink)  
Antiguo 31/05/2007, 06:52
 
Fecha de Ingreso: abril-2007
Mensajes: 24
Antigüedad: 17 años
Puntos: 0
Re: Problema con Select

Aupa,

Pos va ser que no. He probado todas las formas posibles pero no entiendo porque no me envia ese select por POST. Alguien mas sabe porque? Saludos y gracias!!!
  #7 (permalink)  
Antiguo 31/05/2007, 08:25
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Problema con Select

Cuando estas enviando ese tipo de selects a tu boton submit le tienes que aplicar alguna funcion que lo que haga es seleccionar todos los valores de tu select, de lo contrario no vas a recibir ninguno.

Saludos.
  #8 (permalink)  
Antiguo 31/05/2007, 08:45
 
Fecha de Ingreso: abril-2007
Mensajes: 24
Antigüedad: 17 años
Puntos: 0
Re: Problema con Select

Aupa,

Gracias GatorV, luego probare lo que me has dicho. A ver si consigo quitarme ya de encima esta historia.

Saludos y muchisimas gracias!!!
  #9 (permalink)  
Antiguo 31/05/2007, 10:38
 
Fecha de Ingreso: abril-2005
Mensajes: 14
Antigüedad: 19 años
Puntos: 0
De acuerdo Re: Problema con Select - Solucionado

hola yo tambien tenia el mismo problema y ya lo solucione .

lo que debes es hacerlo con ajax

el primer select le pones que cuando haga click llame una funcion en javascript que consulte a otra pagina en php por medio de ajax donde tenes la consulta.

y luego te imprima los datos en otro select y luego de seleccionar este ya envias el formulario o en otro caso haces lo mismo si tenes que generar otro tercero

si no me entendiste contactame para poderte explicar mejor ([email protected])

mira la pagina virtualllantas.com para que veas un ejemplo en la busqueda con 3 select anidados
  #10 (permalink)  
Antiguo 31/05/2007, 14:09
 
Fecha de Ingreso: abril-2007
Mensajes: 24
Antigüedad: 17 años
Puntos: 0
Re: Problema con Select

Aupa,

GatorV tenias razon, al seleccionar un elemento del select director[] este si que me lo envia. El tema es que estoy un poco pez en javascript y todos las funciones tipo select all que encuentro no me valen porque mi select se llama director[] en vez de un nombre simple director. Alguien tiene a mano o sabe como conseguir un seleccionar todos los options usando como nombres los nombres que acaban con []. Un saludo y muchisimas gracias!!
  #11 (permalink)  
Antiguo 31/05/2007, 14:15
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Problema con Select

Puedes usar esta:
Código:
function selectAllOptions(theSel) {
	for(i=theSel.length-1; i>=0; i--) {
		theSel.options[i].selected = true;
	}
}
La usas asi:
Código:
selectAllOptions( document.getElementById("selDirector") );
Y en tu select lo haces asi:
Código:
<select name="director[]" id="selDirector">
  #12 (permalink)  
Antiguo 01/06/2007, 03:49
 
Fecha de Ingreso: abril-2007
Mensajes: 24
Antigüedad: 17 años
Puntos: 0
Re: Problema con Select

Aupa,

GatorV he usado tu funcion y no me da ningun error en la consola de error por tanto la tengo bien pero al pasar por POST la variable director, la tengo puesta con la funcion array_keys($_POST['director']) y no me da error pero añadiendo a la lista 2 directores ese arraykeys solo recibe uno. Lo he mirado con size o count, no me acuerdo ahora mismo de la funcion exacta que muestra el tamaño del array y añadiendo 2 directores solo recibe 1, porque me dice que el tamaño es 1. Estoy intentando afinarlo un poco pero no me sale. Alguien me ayuda con el ultimo empujoncito???Muchisimas gracias y Saludos!!!
  #13 (permalink)  
Antiguo 01/06/2007, 08:49
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Problema con Select

Recuerda usar la funcion justo antes de enviar el formulario tipo:
Código:
<form action="" onsubmit="selectAllOptions( document.getElementById('selDirector') );">

</form>
  #14 (permalink)  
Antiguo 01/06/2007, 09:44
 
Fecha de Ingreso: abril-2007
Mensajes: 24
Antigüedad: 17 años
Puntos: 0
Re: Problema con Select

Aupa GatorV,

Si si asi lo tengo hecho y por eso digo que la consola de errores no me da ningun error, eso quiere decir que el javascript se ejecuta correctamente. Lo que me ha parecido raro es que tu dentro de action no haya puesto nada. Se te ha colado no? En fin, toy dandole vueltas pero no me sale y ya me estoy quedando sin ideas. GatorV si tienes msn podrias agregarme y ayudarme mejor con esto? que sera una chorrada para ti pero es que yo no lo veo. Saludos y muchisimas gracias!
  #15 (permalink)  
Antiguo 01/06/2007, 09:54
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Problema con Select

En action no puse nada, a proposito, ya que no se cual es tu pagina destino, es para tu lo llenes, prueba al principio de la pagina que recibes este codigo:
Código PHP:
var_dump$_POST['destino'] ); 
Para que veas si lo estas recibiendo de forma correcta.

Saludos.
  #16 (permalink)  
Antiguo 01/06/2007, 13:11
 
Fecha de Ingreso: abril-2007
Mensajes: 24
Antigüedad: 17 años
Puntos: 0
Re: Problema con Select

Aupa,

Lo he hecho como me has dicho y aun seleccionando 2 directores la funcion var_dump me devuelve esto:

array(1) { [0]=> string(1) "2" }

Es como si solo me pillara el ultimo o algo asi. Se os ocurre algo? Saludos y muchisimas gracias!!!

Edito: Lo he mirado mejor y me dado cuenta de que solo pilla el primero que he metido. Que raro no? Saludos
  #17 (permalink)  
Antiguo 01/06/2007, 14:22
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Problema con Select

mmm tu select si se llama destino[]? y ya checaste que si se esten seleccionando todos? puedes probar algo asi en tu forma:
Código PHP:
<input type="button" name="selTest" value="Probar" onclick="selectAllOptions( document.getElementById('selDirector') );" /> 
Y checa si se seleccionan todas tus filas, tambien algo que puedo pensar tu select tiene la propiedad de multiple?

Código:
<select name="director[]" id="selDirector" multiple="multiple">
  #18 (permalink)  
Antiguo 02/06/2007, 02:01
 
Fecha de Ingreso: abril-2007
Mensajes: 24
Antigüedad: 17 años
Puntos: 0
Re: Problema con Select

Aupa,

GRACIAS GATORV!!!!Ya lo conseguimos!!! Era lo de multiple, que de tanto modificar ya lo tenia sin poner. Ahora todo funciona de maravilla!!!Por fin!!!muchisimas gracias!!!

Saludos
  #19 (permalink)  
Antiguo 29/06/2007, 19:48
 
Fecha de Ingreso: abril-2005
Mensajes: 14
Antigüedad: 19 años
Puntos: 0
Re: Problema con Select - Solucionado

mira te explico yo creo un archivo js para crear el metodo ajax lo llame ajax.js
---------------------------------------------------------------------------------------------------------------
// JavaScript Document
function nuevoAjax(){
var xmlhttp=false;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}

if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}

function buscarRef(){
var id, contenedor;
contenedor = document.getElementById ('ref');
id = document.getElementById('id_marcas').value;
//t = campo;
ajax=nuevoAjax();
ajax.open("GET", "generar.php?id="+id,true);
ajax.onreadystatechange=function() {
if (ajax.readyState==4) {
contenedor.innerHTML = ajax.responseText
}
}
ajax.send (null)
}

function buscarMod(){
var id, contenedor;
contenedor = document.getElementById('modelo'); //donde ba a salir el resultado
id = document.getElementById('referencia').value; //obtener el resultado de la seleccion
//t = campo;
ajax=nuevoAjax(); //crea el objeto ajax
ajax.open("GET", "generar2.php?id="+id,true); //pasar datos por el metodo get
ajax.onreadystatechange=function () {
if (ajax.readyState==4) {
contenedor.innerHTML = ajax.responseText
}
}
ajax.send(null)
}


---------------------------------------------------------------------------------------------------------------
luego lo incluyo en la pagina que necesito el ajax
<head>
<script language="javascript" src="ajax.js"></script>
</head>

luego creo un select y le agrego la propiedad onchange=""
<select name="id_marcas" id="id_marcas" onchange="buscarRef();">

y el la parte de la pagina que quiero que salga el resultado (puede ser otro select) creo un div con un nombre de identificacion.

<div align="left" id="ref"></div>


espero me entinedas sino mandame el codigo para ayudarte...


Cita:
Iniciado por andrwsv Ver Mensaje
hola yo tambien tenia el mismo problema y ya lo solucione .

lo que debes es hacerlo con ajax

el primer select le pones que cuando haga click llame una funcion en javascript que consulte a otra pagina en php por medio de ajax donde tenes la consulta.

y luego te imprima los datos en otro select y luego de seleccionar este ya envias el formulario o en otro caso haces lo mismo si tenes que generar otro tercero

si no me entendiste contactame para poderte explicar mejor ([email protected])

mira la pagina virtualllantas.com para que veas un ejemplo en la busqueda con 3 select anidados
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 04:23.