Ver Mensaje Individual
  #4 (permalink)  
Antiguo 24/10/2008, 10:45
guarus
 
Fecha de Ingreso: agosto-2006
Mensajes: 18
Antigüedad: 18 años, 4 meses
Puntos: 0
Ayuda con listas dependientes usando XAJAX

Saludos a la comunidad, recientemente he conocido Xajax y comenze a realizar unos ejemplos para irme adaptando al mismo, mas sin embargo he tenido ciertos errores que no he logrado corregir y espero me ayuden.
Tengo tres listas dinamicas, que muestran informacion sobre las BD, tablas y campos de la pc local. en donde la 1era se carga inicialmente, la segunda depende del valor seleccionado de la primera y la tercera del valor seleccionado de la segunda. ahora bien no consigo cargar los valores de la tercera lista . Abajo el codigo que tengo:


<?php

require ('./xajax/xajax_core/xajax.inc.php');

$xajax = new xajax();

function procesar_campos($indice, $form_entrada)
{
if ($indice!=0)
{


/*$bd="127.0.0.1";
$puerto="3306";
$usuario="root";
$passw="";

$conex = mysql_connect($bd.":".$puerto, $usuario, $passw);
mysql_select_db ($form_entrada["nombre"],$conex);

$res = mysql_query('select * from '.$form_entrada["tablas"], $conex);

$nuevo_select = '<td>';
echo '<select name="campos" id="campos">';
for ($i=0; $i<mysql_num_fields($res); $i++){
echo '<option>'.$row->Tablas;
echo mysql_field_name($res, $i) . "\n";}

mysql_free_result($res);

$nuevo_select .= '</td></tr></table></form></div>';*/

$salida = "Datos seleccionados:<p>";
$salida .= "Tabla: ". $form_entrada["tablas"];
$salida .= "<br> id: ". $indice;

}
else
{ //$nuevo_select = '</tr></table></form></div>';
$salida = "Debe seleccionar la tabla" ;
}

$respuesta = new xajaxResponse();
$respuesta->assign("seleccampo", "innerHTML", $salida);

return $respuesta;
}

function crear_form($form)
{
$bd="127.0.0.1";
$puerto="3306";
$usuario="root";
$passw="";
$db=$form["nombre"];

$link = mysql_connect($bd.":".$puerto, $usuario, $passw);
$db_list = mysql_list_dbs($link);

$cuerpo = '<div id="mensaje">';
$cuerpo .= '<form name="formulario" id="formulario">';
$cuerpo .= '<table>';
$cuerpo .= '<tr>';
$cuerpo .= '<td>Base de datos</td>';
$cuerpo .= '<td>Tablas</td>';
$cuerpo .= '<td>Campos</td>';
$cuerpo .= '</tr>';
$cuerpo .= '<tr><td>';
$cuerpo .= '<select name="nombre" id="nombre" onchange="xajax_procesar_formulario(document.formu lario.nombre.selectedIndex, xajax.getFormValues(\'formulario\'))">';
$cuerpo .= '<option value=0 selected>Seleccione una BD</option>';
while ($row = mysql_fetch_object($db_list)) {
if ($db==$row->Database) {$cuerpo .= '<option value='.$row->Database.' selected>'.$row-> Database; }
else {$cuerpo .= '<option value='.$row->Database.'>'.$row->Database; }
}
mysql_free_result($db_list);
$cuerpo .= '</td>';
return $cuerpo;
}

function procesar_formulario($indice, $form_entrada)
{

if ($indice!=0)
{
$bd="127.0.0.1";
$puerto="3306";
$usuario="root";
$passw="";

mysql_connect($bd.":".$puerto, $usuario, $passw);
$result = mysql_list_tables($form_entrada["nombre"]);

$nuevo_select = crear_form($form_entrada);
$nuevo_select .= '<td>';
$nuevo_select .= '<select name="tablas" id="tablas" onchange="xajax_procesar_campos(document.formulari o.tablas.selectedIndex, xajax.getFormValues(\'formulario\'))">';
$nuevo_select .= '<option value=0 selected>Seleccione una Tabla</option>';
while ($row = mysql_fetch_row($result)) {
$nuevo_select .= '<option '.$row->Tablas.'>'.$row->Tablas;
$nuevo_select .= "$row[0]\n";
}
mysql_free_result($result);

$nuevo_select .= '</td><td><div id="seleccampo"> </div></td></tr></table></form></div>';

}
else
{ $nuevo_select = crear_form($form_entrada);
$nuevo_select .= '</tr></table></form></div>';

}

$respuesta = new xajaxResponse();
$respuesta->assign("mensaje", "innerHTML", $nuevo_select);

return $respuesta;
}

$xajax->registerFunction("procesar_formulario");
$xajax->registerFunction("procesar_campos");
$xajax->processRequest();
?>


<html>

<head>
<title>Lista dinámica con xajax</title>
<?php $xajax->printJavascript('./xajax/'); ?>
</head>

<body>
<div id="mensaje">
<form name="formulario" id="formulario">

<table>

<tr>
<td>Base de datos</td>

<td>Tablas</td>

<td>Campos</td>
</tr>

<?php

$bd="127.0.0.1";
$puerto="3306";
$usuario="root";
$passw="";
$i=1;

$link = mysql_connect($bd.":".$puerto, $usuario, $passw);
$db_list = mysql_list_dbs($link);
echo '<tr><td>';?>
<select name="nombre" id="nombre" onchange="xajax_procesar_formulario(document.formu lario.nombre.selectedIndex, xajax.getFormValues('formulario'))">
<?php echo '<option value=0 selected>Seleccione una BD</option>';
while ($row = mysql_fetch_object($db_list)) {
if ($sel1==$row->Database) {echo '<option value='.$row->Database.' selected>'.$row->Database; }
else {echo '<option value='.$row->Database.'>'.$row->Database; }
}
mysql_free_result($db_list);
echo '</td>';
echo '<td><div id="selectabla"> </div></td>';
echo '<td><div id="seleccampo"> </div></td></tr>';
?>
</table>

</form>
</div>
</body>
</html>


Se que no me trae el valor seleccionado de la 2da lista, pero no logro como traerlo, si alguien podria indicarme como hacerlo se los agradeceria