PHP - Select Dependientes HTML PHP

 
Vista:
sin imagen de perfil
Val: 7
Ha aumentado su posición en 23 puestos en PHP (en relación al último mes)
Gráfica de PHP

Select Dependientes HTML PHP

Publicado por Alejandro (5 intervenciones) el 25/10/2018 06:11:08
hola gente necesito su ayuda ,soy un novato y estoy intentando adaptar un código que encontre,
lo que necesito es tener select 3 dependientes es decir cuenta ,subcuenta y subsubcuenta este es el codigo

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
<div class="row">
    <div class="col-lg-6">
        <label for="cuentas" class="control-label">Seleccionar Cuenta</label>
        <select name="cuentas_slc" id="cuentas" class="form-control" required title="Debe seleccionar una cuenta." onchange="from(document.asiento_gral_frm.cuentas_slc.value, 'div-subcuentas', 'cuentas.php')">
        <option value="">Seleccione una de esta lista</option>
        <?php
            if(!isset($conexion)){
                include("conexion.php");
            }
            $consulta = "SELECT * FROM cuentas";
            $ejecutar_consulta = $conexion->query($consulta);
            while($registro = $ejecutar_consulta->fetch_assoc()){
                echo "<option value='";
                echo $registro["codigo_cuenta"];
                echo "'>";
                echo $registro["codigo_cuenta"];
                echo ". ";
                echo utf8_encode($registro["nombre_cuenta"]);
                echo "</option>";
            }
        ?>
        </select>
    </div>
 
    <div class="col-lg-6" id="div-subcuentas">
        <label for="subcuentas" class="control-label">Seleccionar Subcuenta</label>
            <select name="subcuentas_slc" id="subcuentas" class="form-control">
                <option value="0">Seleccione Subcuenta</option>
            </select>
    </div>

ahora bien note que hace referencia en el onchange al archivo cuentas.php
es este
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
if(!isset($conexion)){
	include ("conexion.php");
}
//print_r ($_GET);
$id_cuenta = $_GET["id"];
$consulta = "SELECT * FROM subcuentas WHERE cuenta = '$id_cuenta'";
$ejecutar_consulta = $conexion->query($consulta);
?>
<label for="subcuentas" class="control-label">Seleccionar Subcuenta</label>
<select name="subcuentas_slc" id="subcuentas" class="form-control">
    <option value="">Seleccione Subcuenta</option>
    <?php
        while($registro = $ejecutar_consulta->fetch_assoc()){
            ?>
            <option value="<?php echo $registro["codigo_subcuenta"]; ?>"><?php echo $registro["codigo_subcuenta"] .". ". utf8_encode($registro["nombre_subcuenta"]); ?></option>
            <?php
        }
    ?>
</select>

les agradecería mucho su ayuda...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Select Dependientes HTML PHP

Publicado por xve (6935 intervenciones) el 25/10/2018 08:00:49
Hola Alejandro, el onchange, llama a la función from() de javascript, y entre otros parámetros, envía el nombre de la pagina php.

Nos puedes mostrar el código de javascript para ver exactamente que hace?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 7
Ha aumentado su posición en 23 puestos en PHP (en relación al último mes)
Gráfica de PHP

Select Dependientes HTML PHP

Publicado por Alejandro (5 intervenciones) el 25/10/2018 08:04:00
perdon se me olvidaba
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
function obtiene_http_request()
{
var req = false;
try
  {
    req = new XMLHttpRequest(); /* p.e. Firefox */
  }
catch(err1)
  {
  try
    {
     req = new ActiveXObject("Msxml2.XMLHTTP");
  /* algunas versiones IE */
    }
  catch(err2)
    {
    try
      {
       req = new ActiveXObject("Microsoft.XMLHTTP");
  /* algunas versiones IE */
      }
      catch(err3)
        {
         req = false;
        }
    }
  }
return req;
}
var miPeticion = obtiene_http_request();
//***************************************************************************************
function from(id,ide,url){
		var mi_aleatorio=parseInt(Math.random()*99999999);//para que no guarde la página en el caché...
		var vinculo=url+"?id="+id+"&rand="+mi_aleatorio;
		//alert(vinculo);
		miPeticion.open("GET",vinculo,true);//ponemos true para que la petición sea asincrónica
		miPeticion.onreadystatechange=miPeticion.onreadystatechange=function(){
               if (miPeticion.readyState==4)
               {
				   //alert(miPeticion.readyState);
                       if (miPeticion.status==200)
                       {
                                //alert(miPeticion.status);
                               //var http=miPeticion.responseXML;
                               var http=miPeticion.responseText;
                               document.getElementById(ide).innerHTML= http;
 
                       }
               }/*else
               {
			document.getElementById(ide).innerHTML="<img src='ima/loading.gif' title='cargando...' />";

                }*/
       }
       miPeticion.send(null);
 
}
//************************************************************************************************
function limpiar()
{
	document.form.reset();
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Select Dependientes HTML PHP

Publicado por xve (6935 intervenciones) el 25/10/2018 14:51:46
Hola Alejandro, creo que tu problema esta en la linea 46:
1
document.getElementById(ide).innerHTML= http;

Si te fijas ahí utilizas una variable denominada "ide" que la recibe la función, pero como es una peticion asincrona, cuando se ejecuta la linea indicada, la función ya se ha finalizado y la variable ide no existe!!!

Para ver si es este el problema, puedes modificar la linea 46 y ponerla así?
1
document.getElementById("div-subcuentas").innerHTML= http;

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 7
Ha aumentado su posición en 23 puestos en PHP (en relación al último mes)
Gráfica de PHP

Select Dependientes HTML PHP

Publicado por Alejandro (5 intervenciones) el 26/10/2018 00:02:28
noce si me entendiste mal, el codigo funciona
solo que quisiera poner otro select

1
2
3
4
5
6
<div class="col-lg-6" id="div-subcuentas">
        <label for="subcuentas" class="control-label">Seleccionar Subcuenta</label>
            <select name="subcuentas_slc" id="subcuentas" class="form-control" onchange="from(document.asiento_gral_frm.subcuentas_slc.value, 'div-subsubcuentas', 'cuentasx.php')">>
                <option value="0">Seleccione Subcuenta</option>
            </select>
    </div>

1
2
3
4
5
6
<div class="col-lg-6" id="div-subsubcuentas">
        <label for="subsubcuentas" class="control-label">Seleccionar Subsubcuenta</label>
            <select name="subsubcuentas_slc" id="subsubcuentas" class="form-control" >
                <option value="0">Seleccione Subsubcuenta</option>
            </select>
    </div>

y otro archivo cuentasx.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
if(!isset($conexion)){
	include ("conexion.php");
}
//print_r ($_GET);
$id_subcuenta = $_GET["id2"];
$consulta = "SELECT * FROM subsubcuentas WHERE subcuenta = '$id_subcuenta'";
$ejecutar_consulta = $conexion->query($consulta);
?>
<label for="subsubcuentas" class="control-label">Seleccionar Subsubcuenta</label>
<select name="subsubcuentas_slc" id="subsubcuentas" class="form-control">
    <option value="">Seleccione Subsubcuenta</option>
    <?php
        while($registro = $ejecutar_consulta->fetch_assoc()){
            ?>
            <option value="<?php echo $registro["codigo_subsubcuenta"]; ?>"><?php echo $registro["codigo_subsubcuenta"] .". ". utf8_encode($registro["nombre_subsubcuenta"]); ?></option>
            <?php
        }
    ?>
</select>
pero no tengo idea de que hacer en el archivo JS y en el <select> para que funcione
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar