Foros del Web » Programando para Internet » PHP »

Guardar valor select dependientes

Estas en el tema de Guardar valor select dependientes en el foro de PHP en Foros del Web. Buenas, Estoy intentando modificar un select dependiente de 3 niveles para que me guarde los valores de los select elegidos (si se utilizan) en variables. ...
  #1 (permalink)  
Antiguo 16/01/2011, 05:31
 
Fecha de Ingreso: enero-2011
Mensajes: 3
Antigüedad: 13 años, 3 meses
Puntos: 0
Guardar valor select dependientes

Buenas,

Estoy intentando modificar un select dependiente de 3 niveles para que me guarde los valores de los select elegidos (si se utilizan) en variables. Seguro que es facil pero mis conocimientos son muy limitados. Os dejo a continuación el codigo:

Lo que una vez escogido el primer select, el segundo o el tercero al dar alboton de IR del select me lo redirija a una pagina o otra de mi web.

<?php

function generaSelect()
{
$consulta=mysql_query("SELECT id, opcion FROM select_1");

echo "<select name='select1' id='select1' style='background-color: #CCC;' onChange='cargaContenido(this.id)'>";
echo "<option value='0'>Elige una opcion</option>";
while($registro=mysql_fetch_row($consulta))
{
echo "<option value='".$registro[0]."'>".$registro[1]."</option>";
}
echo "</select>";
}


?>


<form action="XXXXX".php" method="post" target="_blank">

<div id="demo" style="width: 540px; height:auto">

<div id="demoboton">
<input type="submit" value="IR" />
</div>

<div id="Der">

<select disabled="disabled" name="select3" id="select3">
<option value="0">Selecciona opci&oacute;n...</option>
</select>

</div>

<div id="Med">

<select disabled="disabled" name="select2" id="select2" style="background-color:#CCC; list-style-type:lower-alpha; width:auto; text-align: center; display:marker;">
<option value="0">Selecciona opci&oacute;n...</option>
</select>

</div>

<div id="Izq">
<?php generaSelect(); ?>
</div>

</div>
</form>


------ select_dependiente.js------

function nuevoAjax()
{

var xmlhttp=false;
try
{

xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(E)
{
if (!xmlhttp && typeof XMLHttpRequest!='undefined') xmlhttp=new XMLHttpRequest();
}
}
return xmlhttp;
}


var listadoSelects=new Array();
listadoSelects[0]="select1";
listadoSelects[1]="select2";
listadoSelects[2]="select3";



function buscarEnArray(array, dato)
{

var x=0;
while(array[x])
{
if(array[x]==dato) return x;
x++;
}
return null;
}

function cargaContenido(idSelectOrigen)
{

var posicionSelectDestino=buscarEnArray(listadoSelects , idSelectOrigen)+1;

var selectOrigen=document.getElementById(idSelectOrige n);

var opcionSeleccionada=selectOrigen.options[selectOrigen.selectedIndex].value;

if(opcionSeleccionada==0)
{
var x=posicionSelectDestino, selectActual=null;

while(listadoSelects[x])
{
selectActual=document.getElementById(listadoSelect s[x]);
selectActual.length=0;

var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Selecciona Opci&oacute;n...";
selectActual.appendChild(nuevaOpcion); selectActual.disabled=true;
x++;
}
}

else if(idSelectOrigen!=listadoSelects[listadoSelects.length-1])
{

var idSelectDestino=listadoSelects[posicionSelectDestino];
var selectDestino=document.getElementById(idSelectDest ino);

var ajax=nuevoAjax();
ajax.open("GET", "select_dependientes_proceso.php?select="+idSelect Destino+"&opcion="+opcionSeleccionada, true);
ajax.onreadystatechange=function()
{
if (ajax.readyState==1)
{

selectDestino.length=0;
var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Cargando...";
selectDestino.appendChild(nuevaOpcion); selectDestino.disabled=true;
}
if (ajax.readyState==4)
{
selectDestino.parentNode.innerHTML=ajax.responseTe xt;
}
}
ajax.send(null);
}
}



------select_dependientes_proceso.php--------

<?php require_once('Connections/XX.php'); ?>

<?php

$listadoSelects=array(
"select1"=>"select_1",
"select2"=>"select_2",
"select3"=>"select_3"
);

function validaSelect($selectDestino)
{

if(isset($listadoSelects[$selectDestino])) return true;
else return false;
}

function validaOpcion($opcionSeleccionada)
{

if(is_numeric($opcionSeleccionada)) return true;
else return false;
}

$selectDestino=$_GET["select"]; $opcionSeleccionada=$_GET["opcion"];

if(validaSelect($selectDestino) && validaOpcion($opcionSeleccionada))
{
$tabla=$listadoSelects[$selectDestino];
$consulta=mysql_query("SELECT id, opcion FROM $tabla WHERE relacion='$opcionSeleccionada'") or die(mysql_error());



echo "<select name='".$selectDestino."' id='".$selectDestino."' onChange='cargaContenido(this.id)'>";
echo "<option value='0'>Elige</option>";
while($registro=mysql_fetch_row($consulta))
{

$registro[1]=htmlentities($registro[1]);

echo "<option value='".$registro[0]."'>".$registro[1]."</option>";
}
echo "</select>";
}
?>


Gracias!
  #2 (permalink)  
Antiguo 17/01/2011, 14:36
Avatar de silvanha  
Fecha de Ingreso: marzo-2006
Ubicación: En mi mundo de sueños
Mensajes: 653
Antigüedad: 18 años, 1 mes
Puntos: 65
Respuesta: Guardar valor select dependientes

primero, mete los selects dentro del form, es decir el primer select que generas.. ponlo después de: <form action="XXXXX".php" method="post" target="_blank">

y ahora la pregunta es, has intentado imprimir, los valores que llegan a esa página... "XXXXX.php", si los mandas a imprimir, aún cuando sean dependientes, tienen que llegar.. a menos que no se seleccione ningún valor..

intentalo, y nos dices.. ;) saluditos! ;)
__________________
●•· No hay nada imposible..
●•· Vico-X.. ;)
  #3 (permalink)  
Antiguo 18/01/2011, 13:20
 
Fecha de Ingreso: enero-2011
Mensajes: 3
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Guardar valor select dependientes

Buenas,

Tal como lo tengo ahora los selects dependientes me funcionan bien. Cuando selecciono el select1, se me activa el select2 y cuando selecciono el selec2 se me activa el 3 y lo puedo seleccionar.

Mi problema está q lo que quiero hacer es que cuando seleccione el select1 cuando de a "IR" me acceda a www.??.com/(lo seleccionado en select1).php

Si selecciono el select2 que al dar a "IR" me acceda a www.??.com/(lo seleccionado en select1)/(lo seleccionado en select2).php

Si además tb selecciono el select3 que al dar a "IR" me acceda a www.??.com/(lo seleccionado en select1)/(lo seleccionado en select2)/(lo seleccionado en select3).php

Eso lo tendria que hacer con sentencias "if" pero no me aclaro donde me quedan registrados los selects para guardarlos en alguna variable para que varie el enlace al dar a "IR"

Muchas gracias por vuestro interes y tiempo!
  #4 (permalink)  
Antiguo 18/01/2011, 13:32
Avatar de silvanha  
Fecha de Ingreso: marzo-2006
Ubicación: En mi mundo de sueños
Mensajes: 653
Antigüedad: 18 años, 1 mes
Puntos: 65
Respuesta: Guardar valor select dependientes

o sea que quieres que se vean en la barra de dirección???

Porque eso va con el método que envíes los datos, si lo envías por post, no se ven, pero llegan si o si, a la página que especifiques en el formulario.. si lo mandas por GET, se envían por encabezado y los puedes ver.. obviamente te quedaría algo del tipo:

Código HTML:
Ver original
  1. http://midominio.com/mipagina.php?select1=xxx&select2=yyy&select3=zzz

Si quieres, que te lo envíe como url amigable (con las diagonales), ahí si necesitas mandarla a otra página auxiliar, para saber que valores son los seleccionados, y hacer un script que te convierta los datos con ifs como dices.. después podrías lanzar el llamado a la página final o en donde los necesites por medio de un header(). No se, es una opción... Porque me parece que también puedes saber que datos son los seleccionados con AJAX, y eso ya lo has hecho con lo de los combos dependientes, con respecto al valor de uno cambias el otro..

saluditos! ;)
__________________
●•· No hay nada imposible..
●•· Vico-X.. ;)
  #5 (permalink)  
Antiguo 22/01/2011, 04:44
 
Fecha de Ingreso: enero-2011
Mensajes: 3
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Guardar valor select dependientes

Buenas!

Siento contestar tan tarde, pero por diversos motivos no m he podido poner con ello hasta ahora.

Lo que me gustaria hacer es algo parecido a lo siguiente:
<form action=

<?php

if ((select1!="") AND (empty($_POST["select2"])) AND (empty($_POST["select3"])))
{
$A=$_POST["select1"];
echo ("http://localhost/public_html/$A.php");
}
elseif ((select1=="") AND (select2!="") AND (empty($_POST["select3"])))
{
$A=$_POST["select1"];
$B=$_POST["select2"];
echo ("http://localhost/public_html/$A/$B.php");
}
elseif ((select1!="") AND (select2!="") AND (select3!=""))
{
$A=$_POST["select1"];
$B=$_POST["select2"];
$C=$_POST["select3"];
echo ("http://localhost/public_html/$A/$B/$C.php");
}

method="post" target="_blank">


?>


Seguro que esta mal el codigo, pero esta es mi idea. Mi gran problema es que no se como agregar el valor del select 1, select 2 y select 3 a A,B y C pq tal como lo tengo no encuentra estas variables.

Como son selects dependientes las variables A,B y C tendrian que coger el valor escogido al ser seleccionado.

Muchas gracias por todo!
  #6 (permalink)  
Antiguo 24/01/2011, 15:57
Avatar de silvanha  
Fecha de Ingreso: marzo-2006
Ubicación: En mi mundo de sueños
Mensajes: 653
Antigüedad: 18 años, 1 mes
Puntos: 65
Respuesta: Guardar valor select dependientes

pues, pues.. creo que ya tienes idea del código, del porque no recibes los valores en las variables que lees.. así como pegaste es tu código???
__________________
●•· No hay nada imposible..
●•· Vico-X.. ;)

Etiquetas: dependientes, select
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 08:56.