• Domingo 22 de Diciembre de 2024, 08:35

Autor Tema:  Problema con combobox dependientes  (Leído 3895 veces)

dark_monk9

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Problema con combobox dependientes
« en: Viernes 17 de Abril de 2009, 22:44 »
0
Buenas a todos!!!

Tengo el siguiente inconveniente con un par de combobox dependientes, aunque en google aparece mucho con respecto al tema, no he logrado hacer lo que necesito, espero que me puedan colaborar con la siguiente duda:

Tengo un par de combobox que se llaman "select_numero_obilga" y "select_ficha_catastral" respectivamente. En el "select_numero_obilga" cargo el los datos desde una base de datos y tiene una funcion que se invoca desde el evento onchange como se muestra a continuacion:

<select name="select_numero_obilga" id="select_numero_obilga" onchange="seleccion_destino(this,this.form.select_ficha_catastral)">
  <option></option>
       <?php
        $base_path = "../../";
      require_once( $base_path . 'configuration.php' );

      $datos= new Jconfig();
      $db_host= $datos->host;
      $db_nombre=$datos->db;
      $db_user=$datos->user;
      $db_pass=$datos->password;
   
      $conexion= mysql_connect($db_host, $db_user, $db_pass);
         
         mysql_select_db($db_nombre,$conexion);
         
         $consulta = "SELECT numero_obligacion FROM obligacion";
         
         if($resultado= mysql_query($consulta))      
            while ($query= mysql_fetch_array($resultado)){
         ?>
         <option value ="<?php echo $query['numero_obligacion']; ?>"><?php echo $query['numero_obligacion']; ?></option>
         <?php }
            mysql_free_result($resultado);
            mysql_close();
         ?>
    </select></td>

<select name="select_ficha_catastral" id="select_ficha_catastral">
      <option></option>
      
        </select>
Este combobox funciona sin problema, entonces se supone que al elegir una de las opciones que desplega, se debe tomar este dato, para posteriormente realizar una consulta con este dato a la base de datos y mostrar la lista en el combobox llamado "select_ficha_catastral", para esto tengo el siguiente script:

<script type="text/javascript">

var global;

function selectopcion(texto,valor){
   this.texto = texto
   this.valor = valor
}

var Amazonas=new Array()
var cont=0;
<?php
      
1      $base_path = "../../";
2      require_once( $base_path . 'configuration.php' );
      
3      $datos= new Jconfig();
4      $db_host= $datos->host;
5      $db_nombre=$datos->db;
6      $db_user=$datos->user;
7      $db_pass=$datos->password;
   
8      $conexion= mysql_connect($db_host, $db_user, $db_pass);
         
9         mysql_select_db($db_nombre,$conexion);
               
10      $consulta = "SELECT id_referencia FROM bien WHERE numero_obligacion_FK='748303'";

11         if($resultado= mysql_query($consulta))      
12            while ($query= mysql_fetch_array($resultado)){
            
13             echo "Amazonas[cont++]= new selectopcion('".$query['id_referencia']."','".$query['id_referencia']."');n";

14         }

15?>   

function seleccion_destino(cual,donde){
   if(cual.selectedIndex != 0){//selectIndex es el indice de la opcion por defecto empieza en 1
      donde.length=0
      cual = eval(cual.value)//value da nombre del objeto en este caso de la del menu lista
      for(m=0;m<cual.length;m++){
         var nuevaOpcion = new Option(cual[m].texto);
         donde.options[m] = nuevaOpcion;
         if(cual[m].valor != null){
            donde.options[m].value = cual[m].valor
         }
         else{
            donde.options[m].value = cual[m].texto
         }
      }
   }
}
</script>

En la linea 10, que es la consulta, esta esta correcta, pero en vez de hacer la comparacion con el numero '748303', se debe hacer con el valor que se selecciono en el combobox "select_numero_obilga" , esto como se hace??

Y el otro problema que tengo es en la linea 13, ya que se supone que deberia al menos funcionar, pero no me esta mostrando nada en el segundo combobox, tendre algun error??

Muchas gracias por la atencion!! y disculpen lo extenso

talcual

  • Nuevo Miembro
  • *
  • Mensajes: 17
  • Nacionalidad: co
    • Ver Perfil
    • http://www.codigolandia.com
Re: Problema con combobox dependientes
« Respuesta #1 en: Lunes 20 de Abril de 2009, 05:56 »
0
10 $consulta = "SELECT id_referencia FROM bien WHERE numero_obligacion_FK='748303'";
en ves de colocar el numero que esta en negrilla deberas colocar el valor del combo ya sea pasandolo por la variable que esta en el javascript o por post como prefieras o como lo estes desarrollando , yo te recomedaria  que trabajaras estos combos con ajax y te recuerdo estos no se llaman combobox estos son listas desplegables los combo box son de visual basic  :lol:  jajaja saludos

dark_monk9

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Problema con combobox dependientes
« Respuesta #2 en: Martes 21 de Abril de 2009, 17:52 »
0
Gracias por la recomendación, pero en el momento, tal y como esta el codigo, en la lista "menu select_ficha_catastral" no se me esta mostrando ningun valor, por lo que no se si la linea 13 echo "Amazonas[cont++]= new selectopcion('".$query['id_referencia']."','".$query['id_referencia']."');n"; tendra algun error, o habra un error en otra parte de este codigo

talcual

  • Nuevo Miembro
  • *
  • Mensajes: 17
  • Nacionalidad: co
    • Ver Perfil
    • http://www.codigolandia.com
Re: Problema con combobox dependientes
« Respuesta #3 en: Martes 21 de Abril de 2009, 18:01 »
0
hazlo en ajax te lo repito nuevamente si por alguna razon no tienes el departamento listado como haces te toca modificar todo el codigo trabaja con la base de datos ajax y php y veras que todo sera mas facil saludos

dark_monk9

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Problema con combobox dependientes
« Respuesta #4 en: Martes 21 de Abril de 2009, 19:25 »
0
Tengo lo siguiente:

----------form_eliminar_bien.php-----------


//Menu Lista 1

<select name="select_numero_obilga" id="select_numero_obilga" onchange="cargarContenido()">
<option></option>
<?php
$base_path = "../../";
require_once( $base_path . 'configuration.php' );

$datos= new Jconfig();
$db_host= $datos->host;
$db_nombre=$datos->db;
$db_user=$datos->user;
$db_pass=$datos->password;

$conexion= mysql_connect($db_host, $db_user, $db_pass);

mysql_select_db($db_nombre,$conexion);

$consulta = "SELECT numero_obligacion FROM obligacion";

if($resultado= mysql_query($consulta))
while ($query= mysql_fetch_array($resultado)){
?>
<option value ="<?php echo $query['numero_obligacion']; ?>"><?php echo $query['numero_obligacion']; ?></option>
<?php }
mysql_free_result($resultado);
mysql_close();
?>


//Menu lista 2
<select name="select_ficha_catastral" id="select_ficha_catastral">
<option></option>

</select>


<script language="javascript">
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 cargarContenido()
{
var t1, contenedor;
//Select donde se cargaran los resultados
contenedor = document.getElementById('select_ficha_catastral');
//Valor seleccionado del Select inicial
t1 = document.getElementById('select_numero_obilga').va lue;
ajax=nuevoAjax();
ajax.open("GET", "previo.php?t1=" + t1.value,true);
ajax.onreadystatechange=function(){
if (ajax.readyState==4)
{
contenedor.innerHTML = ajax.responseText
}
}
ajax.send(null)
}
</script>


---------previo.php--------------



<?php

$previo=$_GET["select_numero_obilga"];

$base_path = "../../";
require_once( $base_path . 'configuration.php' );

$datos= new Jconfig();
$db_host= $datos->host;
$db_nombre=$datos->db;
$db_user=$datos->user;
$db_pass=$datos->password;

$conexion= mysql_connect($db_host, $db_user, $db_pass);

mysql_select_db($db_nombre,$conexion);
$consulta = "SELECT id_referencia FROM bien WHERE numero_obligacion_FK='".$previo"'";
$resultado= mysql_query($consulta);

while ($query= mysql_fetch_array($resultado)){
?>
<option value ="<?php echo $query['id_referencia']; ?>"><?php echo $query['id_referencia']; ?></option>
}
<?

?>


No muestra error alguno, pero tampoco me esta desplegando los respectivos datos en el Menu Lista 2, que error estoy comentiendo??

Gracias a todos!!

talcual

  • Nuevo Miembro
  • *
  • Mensajes: 17
  • Nacionalidad: co
    • Ver Perfil
    • http://www.codigolandia.com
Re: Problema con combobox dependientes
« Respuesta #5 en: Jueves 23 de Abril de 2009, 00:58 »
0
ruedalo en firefox y luego buscas el menu herramientas en la opcion consola de errores y mira a ver q error te sale
y ejecuta por separado el php ademas

tbn puedes devolver en vez del innerhtml devuelve un alert con el contenido q te trae el php y tendras una guia de donde puede estar el error

dark_monk9

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Problema con combobox dependientes
« Respuesta #6 en: Viernes 24 de Abril de 2009, 20:05 »
0
Ya funciono usando AJAX, ahora el problema es que funciona solo en Internet Explorer, en FireFox no funciona, el FF es version 3.0.9. ya mire en google y he cambiado miles de veces la forma en que se hace la conexion pero no he logrado que funcione.

Este es el codigo:


function NuevoAjax(){
var xmlhttp=true;
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 Cargar(url){

var resultado='';

ajax=NuevoAjax();
ajax.open("GET", url,true);



ajax.onreadystatechange=function()
{
if(ajax.readyState==1)
{
// aqui va el preload si se requiere...";
}
else if(ajax.readyState==4)
{
if(ajax.status==200)
{
resultado=unescape(ajax.responseText);
}
else
{
resultado="Error:".ajax.status;
}
}
}

ajax.send(null);
return resultado;

}



function CargarMunicipios(estado,cmb_a_Cargar,seleccionado, divNombre)
{

var contenido,total,seleccionar=0,Lista;



var ComboList = document.getElementById(cmb_a_Cargar);
var divMunicipios=document.getElementById(divNombre);



Cargar("municipios.php?edo="+estado);
divMunicipios.innerHTML=Cargar("municipios.php?edo ="+estado);

Lista = document.getElementById('lista');



ComboList.innerHTML="";



if (Lista!=null)
{
Nodo = Lista.firstChild;
}


try
{
total=Lista.childNodes.length;
}
catch(E)
{
total=0;
}


for (i=1;i<=(total);i++)
{
id del Nodo
ComboList.options=new Option(unescape(Nodo.innerText),Nodo.id);


if (Nodo.id==seleccionado)
{
seleccionar=i-1;
}

Nodo=Nodo.nextSibling;
}


if (total>0)
{
//Borrar el elemento en blanco que se inserta al inicio
ComboList.options[0]=null;

//Posicionarse en la opcion seleccionada
ComboList.options[seleccionar].selected="selected";
}


}