.: comboboX anidadoS :.

17 07 2007

 El codigo es super sencillo, espero les sirva…

Primera parte : codigo javascript que hace todo el trabajo, les recomiendo que creen un archivo.js en donde colocan este codigo para que solo lo referencien desde los php donde crearan sus select.

<script language=”javascript”>

var peticion = false;
var  testPasado = false;
try {
peticion = new XMLHttpRequest();
} catch (trymicrosoft) {
try {
peticion = new ActiveXObject(“Msxml2.XMLHTTP”);
} catch (othermicrosoft) {
try {
peticion = new ActiveXObject(“Microsoft.XMLHTTP”);
} catch (failed) {
peticion = false;
}
}
}
if (!peticion)
alert(“ERROR AL INICIALIZAR!”);

function cargarCombo (url, comboAnterior, element_id) {

//Obtenemos el contenido del div
//donde se cargaran los resultados
var element =  document.getElementById(element_id);
//Obtenemos el valor seleccionado del combo anterior
var valordepende = document.getElementById(comboAnterior)
var x = valordepende.value
//construimos la url definitiva
//pasando como parametro el valor seleccionado
var fragment_url = url+’Id=’+x;
element.innerHTML = ‘<img src=”images/loading.gif” mce_src=”images/loading.gif” />’;
//abrimos la url
peticion.open(“GET”, fragment_url);
peticion.onreadystatechange = function() {
if (peticion.readyState == 4) {
//escribimos la respuesta
element.innerHTML = peticion.responseText;
}
}
peticion.send(null);
}</script>
 

Segunda parte: codigo php que se tiene que colocar en el php principal. Noten que en el onchange del select cuando mando como parametro el nombre del php donde estara el segundo select, dentro de las comillas simples incluyo un signo de interrogación  ‘capitulo.php?’ esto es importante ok. no lo olviden.

<head>
<script language=”javascript” src=”cargarcombo.js” mce_src=”cargarcombo.js”></script>
</head>

<select  name=”titulonum” onchange=”javascript:cargarCombo(‘capitulo.php?’, ‘titulo’, ‘div_capitulo’)”>
    <?php

    $tabla=$_GET["tabla"];
    $tabla=str_replace(“”,”_”,$tabla);

    $sql=”select distinct titulonum,titulosp from $tabla”;
    $result=mysql_query($sql,$link);
    while ($row = mysql_fetch_array($result))
    {
    $titulonum = $row["titulonum"];
    ?>
    <option value=”<?php echo $titulonum; ?>” ><?php echo $row['titulosp']; ?></option>
    <?php
    } 
    ?>
   </select>

El div a continuación es donde aparecera el segundo select con la data que filtraras atraves del primer select.  

   <div id=”div_capitulo” >
   <select id=”capitulo”><option></option>
   </select>
   </div>

Tercera parte: crear un php  capitulo.php

<head>
<script language=”javascript” src=”cargarcombo.js” mce_src=”cargarcombo.js”></script>
</head>

<?php
$titulonum = $_REQUEST['Id'];
?>
<select disabled id=”capitulo” name=”capitulonum” onchange=”javascript:cargarCombo(’search/articulo.php?’, ‘capitulo’, ‘div_articulo’)”>

<?php
include (“conex.php”);
$link=Conectarse();
   $query = “select * from constitucion where titulonum=’$titulonum’”;
   $result=mysql_query($query);
   $num=mysql_numrows($result);
   mysql_close();
   $i=0;
   while ($i < $num) {
   $capitulonum = mysql_result($result,$i,”capitulonum”);
   $capitulosp = mysql_result($result,$i,”capitulosp”);
   ?>
   <option value=”<?php echo $capitulonum; ?>”>
   <?php echo $capitulosp; ?>
   </option>
   <?php
   $i++;
   }
 echo $query;
?>
</select>

 y es es todo =D…