bueno pues hago un select combinado, o sea dos selcts y el segundo toma vaalores segun el primero. quiero cojer los datos de una bd, pero no se donde meter las consultas porque cuando llama a la funcion generar select no piya los datos de la bd y los necesito para rellenar el vector poblaciones. Bueno les dejo el codigo a ver si lo entienden mejor. Para que no se lien, provincias serian categorias y poblaciones subcategorias.
Código:
<?php
//incluímos la clase ajax
require ('xajax/xajax.inc.php');
//instanciamos el objeto de la clase xajax
$xajax = new xajax();
$xajax->setCharEncoding('ISO-8859-1');
$xajax->configure('decodeUTF8Input',true);
function select_combinado($id_provincia){
$poblaciones = array();
$i=0;
$_sql = mysql_query("SELECT * FROM categoria_link ORDER BY id ASC" ); //o IRDER BY id DESC
while ($row = mysql_fetch_row($_sql)){
$j=0;
$_sql2 = mysql_query("SELECT * FROM subcategoria_link WHERE categoria_padre = '$row[1]' ORDER BY id ASC"); //o IRDER BY id DESC
while ($row2 = mysql_fetch_row($_sql2)){
$pob[$i][$j] = $row2[1];//nombre de la subcategoria
$j++;
}
$i++;
}
$nuevo_select = "<select name='poblaciones'>";
for ($i=0; $i<count($poblaciones[$id_provincia]); $i++){
//for ($i=0; $i<2; $i++){
$nuevo_select .= '<option value="' . $i . '">' . $poblaciones[$id_provincia][$i] . '</option>';
}
$nuevo_select .= "</select>";
return $nuevo_select;
}
function generar_select($cod_provincia){
//instanciamos el objeto para generar la respuesta con ajax
$respuesta = new xajaxResponse();
if ($cod_provincia==999){
//escribimos el select de poblaciones vacío
$nuevo_select = '<select name="poblaciones">
<option value=0>Elegir provincia</option>
</select>
';
}else{
$nuevo_select = select_combinado($cod_provincia,$pob);
}
//escribimos en la capa con id="seleccombinado"
$respuesta->assign("seleccombinado","innerHTML",$nuevo_select);
//tenemos que devolver la instanciación del objeto xajaxResponse
return $respuesta;
}
//asociamos la función creada anteriormente al objeto xajax
$xajax->registerFunction("generar_select");
//El objeto xajax tiene que procesar cualquier petición
$xajax->processRequest();
?>
<?
$h=0;
$categorias_pad = array();
$_sql = mysql_query("SELECT * FROM categoria_link"); //o IRDER BY id DESC
while ($row = mysql_fetch_row($_sql)){
$categorias_pad[$h] = $row[1];//nombre de la categoria
$h++;
}
?>
<form name="formulario">
Provincia:
<br>
<select name="provincia" onChange="xajax_generar_select(document.formulario.provincia.options[document.formulario.provincia.selectedIndex].value)">
<option value="999">Selecciona provincia</option>
<? For ($size=0;$size<$h;$size++)
{
echo '<option value="'.$size.'">'.$categorias_pad[$size].'</option>';
}
?>
</select>
<br>
<br>
Población: <div id="seleccombinado">
<select name="poblaciones">
<option value=0>Elegir provincia</option>
</select>
</div>
</form>
?>