Comunidad de diseño web y desarrollo en internet online

crear mas selects dependientes y tomar valores

Citar            
MensajeEscrito el 21 Jun 2015 11:44 pm
Hola, les cuento que he intentado realizar un combo dependiente en varios niveles me he enfocado mas en la busqueda de internet. Actualmente tengo unos combos que me generan lo que necesito pero tengo dos pequeños problemas 1. no soy un muy buen conocedor de la programacion pero si soy bueno para aprender, 2. lo que tengo me muestra lo que requiero en tres niveles, como haria para que me mostrara mas niveles? - Como capturo esos resultados para ser enviados a la DB?.
los codigos que poseo son los siguientes:

Index.html
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>

<script type="text/javascript">
$(document).ready(function(){
cargar_comunidades();
$("#comunidad").change(function(){dependencia_provincia(); $("#localidad").attr("disabled",true);});
--> si la quito muestra sector con ella muestra institucion $("#provincia").change(function(){dependencia_localidad1();});
$("#provincia").change(function(){dependencia_localidad();});
$("#provincia").attr("disabled",true);
$("#localidad").attr("disabled",true);
});

function cargar_comunidades()
{
$.get("scripts/scripts/cargar-comunidades.php", function(resultado){
if(resultado == false)
{
alert("Error");
}
else
{
$('#comunidad').append(resultado);
}
});
}
function dependencia_provincia()
{
var code = $("#comunidad").val();
$.get("scripts/scripts/dependencia-provincias.php", { code: code },
function(resultado)
{
if(resultado == false)
{
alert("Error");
}
else
{
$("#provincia").attr("disabled",false);
document.getElementById("provincia").options.length=1;
$('#provincia').append(resultado);
}
}

);
}
function dependencia_localidad()
{
var code = $("#provincia").val();
$.get("scripts/scripts/dependencia-localidades.php?", { code: code }, function(resultado){
if(resultado == false)
{
alert("Error");
}
else
{
$("#localidad").attr("disabled",false);
document.getElementById("localidad").options.length=1;
$('#localidad').append(resultado);
}
});

}
function dependencia_localidad1()
{
var code = $("#provincia").val();
$.get("scripts/scripts/dependencia-localidades1.php?", { code: code }, function(resultado){
if(resultado == false)
{
alert("Error");
}
else
{
$("#localidad").attr("disabled",false);
document.getElementById("localidad").options.length=1;
$('#localidad').append(resultado);
}
});

}


</script>

</head>
<body>


<form method="post" action="" width="40%">
<dl>
<dt>Ubicaci&oacute;n:</dt>

<dd>Comunidad:</dd>
<dd>
<select name="com_id" id="comunidad">
<option value="0">Selecciona una...</option>
</select>
</dd>

<dd>Provincia:</dd>
<dd>
<select name="prov_id" id="provincia">
<option value="0">Selecciona una...</option>
</select>
</dd>

<dd>Localidad:</dd>
<dd>
<select name="loc_id" id="localidad">
<option value="0">Selecciona una...</option>
</select>
</dd>

<dd>Localidad1:</dd>
<dd>
<select name="loc_id" id="localidad">
<option value="0">Selecciona una...</option>
</select>
</dd>
</dl>

<div class="botones">
<input type="submit" name="submit" value="Enviar" />
</div>
</form>


</body>
</html>


cargar-comunidad
<?php
include("../clases/class.mysql.php");
include("../clases/class.combos.php");
$selects = new selects();
$comunidades = $selects->cargarComunidades();
foreach($comunidades as $key=>$value)
{
echo "<option value=\"$key\">$value</option>";
}
?>
Dependencia-provincias
<?php
include("../clases/class.mysql.php");
include("../clases/class.combos.php");
$provincias = new selects();
$provincias->code = $_GET["code"];
$provincias = $provincias->cargarProvincias();
foreach($provincias as $key=>$value)
{
echo "<option value=\"$key\">$value</option>";
}
?>
dependencia-localidades
<?php
include("../clases/class.mysql.php");
include("../clases/class.combos.php");
$localidades = new selects();
$localidades->code = $_GET["code"];
$localidades = $localidades->cargarLocalidades();
foreach($localidades as $key=>$value)
{
echo "<option value=\"$key\">$value</option>";
}
?>
dependencia-localidades1
<?php
include("../clases/class.mysql.php");
include("../clases/class.combos.php");
$localidades1 = new selects();
$localidades1->code = $_GET["code"];
$localidades1 = $localidades1->cargarLocalidades1();
foreach($localidades1 as $key=>$value)
{
echo "<option value=\"$key\">$value</option>";
}
?>

class.mysql.php
<?php
class MySQL
{
var $conexion;
function MySQL()
{
if(!isset($this->conexion))
{
$this->conexion = (mysql_connect('localhost', 'root', '')) or die(mysql_error());
mysql_select_db('combobox',$this->conexion) or die(mysql_error());
}
}

function consulta($consulta)
{
$resultado = mysql_query($consulta,$this->conexion);
if(!$resultado)
{
echo 'MySQL Error: ' . mysql_error();
exit;
}
return $resultado;
}

function fetch_array($consulta)
{
return mysql_fetch_array($consulta);
}

function num_rows($consulta)
{
return mysql_num_rows($consulta);
}

function fetch_row($consulta)
{
return mysql_fetch_row($consulta);
}
function fetch_assoc($consulta)
{
return mysql_fetch_assoc($consulta);
}
}

?>

class.combos.php
<?php

class selects extends MySQL
{
var $code = "";

function cargarComunidades()
{
$consulta = parent::consulta("SELECT departamento,com_id FROM localidad ORDER BY departamento ASC");
$num_total_registros = parent::num_rows($consulta);
if($num_total_registros>0)
{
$comunidades = array();
while($comunidad = parent::fetch_assoc($consulta))
{
$code = $comunidad["com_id"];
$name = $comunidad["departamento"];
$comunidades[$code]=$name;
}
return $comunidades;
}
else
{
return false;
}
}
function cargarProvincias()
{
$consulta = parent::consulta("SELECT municipio,prov_id FROM localidad WHERE com_id = '".$this->code."' ORDER BY municipio ASC ");
$num_total_registros = parent::num_rows($consulta);
if($num_total_registros>0)
{
$provincias = array();
while($provincia = parent::fetch_assoc($consulta))
{
$code = $provincia["prov_id"];
$name = $provincia["municipio"];
$provincias[$code]=$name;
}
return $provincias;
}
else
{
return false;
}
}
function cargarLocalidades()
{
$consulta = parent::consulta("SELECT nombre,loc_id FROM localidad WHERE prov_id = '".$this->code."'");
$num_total_registros = parent::num_rows($consulta);
if($num_total_registros>0)
{
$localidades = array();
while($localidad = parent::fetch_assoc($consulta))
{
$code = $localidad["loc_id"];
$name = $localidad["nombre"];
$localidades[$code]=$name;
}
return $localidades;
}
else
{
return false;
}
}
function cargarLocalidades1()
{
$consulta = parent::consulta("SELECT sector,sect_id FROM localidad");
$num_total_registros = parent::num_rows($consulta);
if($num_total_registros>0)
{
$localidades1 = array();
while($localidad1 = parent::fetch_assoc($consulta))
{
$code = $localidad1["sect_id"];
$name = $localidad1["sector"];
$localidades1[$code]=$name;
}
return $localidades1;
}
else
{
return false;
}
}

}
?>

Por nitramara

30 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 22 Jun 2015 03:36 pm
Demasiado código, mira el ejemplo que escribi en:

http://elporfirio.com/wp/2013/10/como-hacer-un-combo-select-option-dinamico/

Ahora lo siguiente es revisar el patrón.

La primera funcion recupera todos los valores necesarios ya que no depende de nada.

La segunda funcion depende del valor elegido del primero, entonces debes enviar el valor elegido del primero.

La tercer funcion, depende del valor del segundo, ¿por que ya no del primero? por que el segundo ya verifico al primero, no necesita hacerlo de nuevo.

Entonces si alguien cambia el valor del primero, los valores subsecuentes se regresan a su valor por "default"

Si quisieras hacer un "cuarto", tendrías que hacerlo dependiente del tercero y asi subsecuente.

En la página encontrarás un tutorial funcionando. Cualquier duda comentarla aquí para resolverla y evita poner códigos. Saludos.

Por elporfirio

Claber

652 de clabLevel

1 tutorial

Genero:Masculino  

FullStack Web Developer

chrome
Citar            
MensajeEscrito el 11 Jul 2015 06:24 pm
Hola Gracias por la respuesta.. te cuento he visitado el link. que me dejaste pero la verdad no encuentro como realizar los cuatro o mas selects dependientes, y adicional a esto tomar los valores para despues trabajarlos en otras paginas.. si no es mucha molestia me puedes colaborar... Gracias..

Por nitramara

30 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 12 Jul 2015 11:05 pm

elporfirio escribió:

Demasiado código, mira el ejemplo que escribi en:

http://elporfirio.com/wp/2013/10/como-hacer-un-combo-select-option-dinamico/

Ahora lo siguiente es revisar el patrón.

La primera funcion recupera todos los valores necesarios ya que no depende de nada.

La segunda funcion depende del valor elegido del primero, entonces debes enviar el valor elegido del primero.

La tercer funcion, depende del valor del segundo, ¿por que ya no del primero? por que el segundo ya verifico al primero, no necesita hacerlo de nuevo.

Entonces si alguien cambia el valor del primero, los valores subsecuentes se regresan a su valor por "default"

Si quisieras hacer un "cuarto", tendrías que hacerlo dependiente del tercero y asi subsecuente.

En la página encontrarás un tutorial funcionando. Cualquier duda comentarla aquí para resolverla y evita poner códigos. Saludos.


Hola gracias por la respuesta, he visitadotu link, pero la verdad por los pocos conocimientos que tengo en esto me ha sido dificil realizar lo que requiero, no se si es posible que me informes en que me estoy equivocando en este codigo que tengo, ya que el ponerme a estudiar tu codigo pues me generara mas demoras en mi proyecto.. Mil gracias por tu interes..

Por nitramara

30 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 13 Jul 2015 06:23 pm
Lo siento, si no entiendes la lógica de tu código es por que posiblemente lo copiaste de internet, intenta preguntar al creador para mayor referencia.

En este punto ya debes tener bien claro cuales son las relaciones entre los 4 elementos que vas a poner en el drop down.

Esto ya es un ejemplo avanzado >>> http://jsfiddle.net/elporfirio/2ea6v35c/

La verdad solo te queda estudiar y hacer preguntas más concretas. Suerte y saludos

Por elporfirio

Claber

652 de clabLevel

1 tutorial

Genero:Masculino  

FullStack Web Developer

chrome
Citar            
MensajeEscrito el 14 Jul 2015 01:12 pm

elporfirio escribió:

Lo siento, si no entiendes la lógica de tu código es por que posiblemente lo copiaste de internet, intenta preguntar al creador para mayor referencia.

En este punto ya debes tener bien claro cuales son las relaciones entre los 4 elementos que vas a poner en el drop down.

Esto ya es un ejemplo avanzado >>> http://jsfiddle.net/elporfirio/2ea6v35c/

La verdad solo te queda estudiar y hacer preguntas más concretas. Suerte y saludos


Ok.. gracias.. mil disculpas por ocupar tu tiempo.. en cuanto al codigo te comento que efectivamente lo he copiado de internet, pero he adicionado uno o varios selectecs diferentes de los que traia.. este codigo lo comprendo lo que no se pese a haber revisado en manuales y libros es como capturar las variables que he seleccionado..
La verdad agradezco cualquier colaboracion bien sea tuya o de otras personas que visites este link..
Vuelvo y reitero.. lo que requiero y no he podico realizar es: se tienen tres o mas combos dependientes traidos de una DB para el caso tengo cuatro la informacion se muestra bien.. sin inconvenientes.. pero a la hora de tomar esos valores que el usuario selecciono y trabajarlos en otra pagina no me los transfiere.. solo me transfiere el ultimo de los selects es decir.. si escojo COLOMBIA - CUNDINAMARCA - PANDI - LOS_OCALES............. solo me toma el valor: LOS_OCALES.. y como es logico necesito tomar todos los datos...

Por nitramara

30 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 15 Jul 2015 04:19 pm
Bueno por tu paciencia.. te dejo este código basado en el tuyo.

Esta hecho con lo mejor que se puede de mejores practicas...

OLVIDE AGREGAR LA LIBRERIA DE JQUERY, por favor agregala, y fijate que ahora tdas tus funciones estan en un solo archivo..

ya que hacen lo mismo practicamente,

y tambien el 4to combo en tu QUERY no utilizas el $this->code, de todas lo envio para que veas que pasa.

Suerte, trate de hacerlo repetitivo para que veas las pequeñas diferencias, si despues de esto no le entienes nada... te sugiero regresar a estudiar lógica de programación.. Saludos.

https://gist.github.com/elporfirio/47c95b5d0a5c8ba7854c

Por elporfirio

Claber

652 de clabLevel

1 tutorial

Genero:Masculino  

FullStack Web Developer

chrome
Citar            
MensajeEscrito el 16 Jul 2015 07:34 pm
Ok.. muchas gracias.. por tu colaboracion, y si la verdad creo que debo estudiar un poco mas.. pero bueno esto es parte de la enseñanza que estoy recibiendo, me dedicare a esto y despues de haberlo cazado te informo.. con el permiso tuyo cuando lo tenga listo lo subire a este foro para que otros lo puedan adoptar y mejorar.. muchas gracias.

Por nitramara

30 de clabLevel



Genero:Masculino  

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.