Combo 4 dependencias con una doble
Publicado por Noel (1 intervención) el 17/02/2020 22:00:19
Hola
Tengo una consulta que no soy capaz a que me haga la web
Quiero 4 combos dependientes pero que el 3 y el 4 muestre los mismos datos
este es el js
y este el php del js
consulta y consulta 2 deberia de mostrar lo mismo
a ver si me sacais del bucle!!!!
gracias!!!!
Tengo una consulta que no soy capaz a que me haga la web
Quiero 4 combos dependientes pero que el 3 y el 4 muestre los mismos datos
este es el js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
function nuevoAjax()
{ /* Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por lo que se puede copiar tal como esta aqui */ var xmlhttp=false;try
{ // Creacion del objeto AJAX para navegadores no IExmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
}catch(e)
{try
{ // Creacion del objet AJAX para IExmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}catch(E)
{if (!xmlhttp && typeof XMLHttpRequest!='undefined') xmlhttp=new XMLHttpRequest();
} }return xmlhttp;
}// Declaro los selects que componen el documento HTML. Su atributo ID debe figurar aqui.var listadoSelects=new Array();
listadoSelects[0]="paises";
listadoSelects[1]="estados";
listadoSelects[2]="concepto";
listadoSelects[3]="concepto2";
function buscarEnArray(array, dato)
{ // Retorna el indice de la posicion donde se encuentra el elemento en el array o null si no se encuentra var x=0;while(array[x])
{if(array[x]==dato) return x;
x++;
}return null;
}function cargaContenido(idSelectOrigen)
{ // Obtengo la posicion que ocupa el select que debe ser cargado en el array declarado mas arribavar posicionSelectDestino=buscarEnArray(listadoSelects, idSelectOrigen)+1;
// Obtengo el select que el usuario modificovar selectOrigen=document.getElementById(idSelectOrigen);
// Obtengo la opcion que el usuario seleccionovar opcionSeleccionada=selectOrigen.options[selectOrigen.selectedIndex].value;
// Si el usuario eligio la opcion "Elige", no voy al servidor y pongo los selects siguientes en estado "Selecciona opcion..."if(opcionSeleccionada==0)
{var x=posicionSelectDestino, selectActual=null;
// Busco todos los selects siguientes al que inicio el evento onChange y les cambio el estado y deshabilitowhile(listadoSelects[x])
{selectActual=document.getElementById(listadoSelects[x]);
selectActual.length=0;
var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Selecciona Opción...";
selectActual.appendChild(nuevaOpcion); selectActual.disabled=true;
x++;
} } // Compruebo que el select modificado no sea el ultimo de la cadenaelse if(idSelectOrigen!=listadoSelects[listadoSelects.length-1])
{ // Obtengo el elemento del select que debo cargarvar idSelectDestino=listadoSelects[posicionSelectDestino];
var selectDestino=document.getElementById(idSelectDestino);
// Creo el nuevo objeto AJAX y envio al servidor el ID del select a cargar y la opcion seleccionada del select origenvar ajax=nuevoAjax();
ajax.open("GET", "select_dependientes_3_niveles_proceso.php?select="+idSelectDestino+"&opcion="+opcionSeleccionada, true);
ajax.onreadystatechange=function()
{if (ajax.readyState==1)
{ // Mientras carga elimino la opcion "Selecciona Opcion..." y pongo una que dice "Cargando..."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.responseText;
} }ajax.send(null);
}}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php
// Array que vincula los IDs de los selects declarados en el HTML con el nombre de la tabla donde se encuentra su contenido$listadoSelects=array(
"paises"=>"clientes",
"estados"=>"subclientes",
"concepto" =>"productos",
"concepto2" => "productos"
);function validaSelect($selectDestino)
{ // Se valida que el select enviado via GET existaglobal $listadoSelects;
if(isset($listadoSelects[$selectDestino])) return true;
else return false;
}function validaOpcion($opcionSeleccionada)
{ // Se valida que la opcion seleccionada por el usuario en el select tenga un valor numericoif(is_numeric($opcionSeleccionada)) return false;
else return true;
}$selectDestino=$_GET["select"];
$opcionSeleccionada=$_GET["opcion"];
if(validaSelect($selectDestino) && validaOpcion($opcionSeleccionada))
{$tabla=$listadoSelects[$selectDestino];
include_once 'conexion.php';conectar();
$consulta=mysql_query("SELECT * FROM $tabla WHERE cliente='$opcionSeleccionada' order by nombre") or die(mysql_error());
desconectar();
// Comienzo a imprimir el selectecho "<select name='".$selectDestino."' id='".$selectDestino."' onChange='cargaContenido(this.id)'>";
echo "<option value='0'>Elige</option>";while($registro=mysql_fetch_row($consulta))
{ // Convierto los caracteres conflictivos a sus entidades HTML correspondientes para su correcta visualizacion$registro[1]=htmlentities($registro[1]);
// Imprimo las opciones del selectecho "<option value='".$registro[1]."'>".$registro[2]."</option>";
} echo "</select>";}?>
consulta y consulta 2 deberia de mostrar lo mismo
a ver si me sacais del bucle!!!!
gracias!!!!
Valora esta pregunta


0