Lo que necesito hacer es lo siguiente: tengo una tabla con todos los autos de una bd ya impresa.
Lo que quiero mediante dos selects (marca y modelo) es ir filtrando según la opción elegida por el usuario.
Entonces, el primer select de marcas debería imprimir el select de modelos (lo cual hace bien) y luego actualizar la tabla con los modelos de esa marca. Como para ya ir filtrando.
Los códigos son los siguientes, más o menos en resumen:
Generador de selects:
Código PHP:
function selectMarcas(){
$query = "SELECT m.idMarca, m.Marca FROM Marcas m ORDER BY m.Marca ASC";
$res = mysql_query($query) or die(mysql_error());
echo "<option value='0'>Todas</option>";
while ($row = mysql_fetch_array($res)){
echo "<option value=".$row[0].">".$row[1]."</option>";
}
}
// $id_marca viene del formulario!
function selectModelos($id_marca){
$respuesta = new xajaxResponse('ISO-8859-1');
if ($id_marca==0){
// Imprimo "todos"
$nuevo_select = "<select name='modelos' class='search'><option value='999'>Todos</option></select>";
$respuesta->addAssign("modelosDiv","innerHTML",$nuevo_select);
return $respuesta;
}else{
$nuevo_select = getModfromMarca($id_marca);
$respuesta->addAssign("modelosDiv","innerHTML",$nuevo_select);
return $respuesta;
}
}
// Registro la funcion para poder usarla mediante js ¿?
$xajax->registerFunction("selectModelos");
//El objeto xajax tiene que procesar cualquier petición
$xajax->processRequests();
Así defino filtrado_ajax.php:
function autosMarca($idMarca){
Código PHP:
$respuesta = new xajaxResponse();
$query = "SELECT v.idVehiculo, v.idModelo, v.idTipo FROM Vehiculos v INNER JOIN Modelos m ON (m.idModelo = v.idModelo) WHERE m.idMarca = $idMarca";
$res = mysql_query($query);
$i = 1;
$tabla = "<table class='result'><th colspan='5'>".imprimeThead("Vehiculos", $res)."</th>";
while ($row = mysql_fetch_array($res)){
/* si es par */
$aux = $i;
$id = $row[0];
$modelo = htmlentities(nombreModelo($row[1]));
$tipo = htmlentities(nombreTipo($row[2]));
$marca = htmlentities(nombreMarcaSegunModelo($row[1]));
if ($aux%2==0){
$tabla .= "<tr class='par'><td><p class='result'>$id</p></td><td><p class='result'>".$marca."</p></td><td><p class='result'>".$modelo."</p></td><td><p class='result'>".$tipo."</p></td><td><a href='borrar.php?id=$id&op=$operacion' onclick='return confirm(\"Ud. esta a punto de borrar este elemento. Desea continuar? \")' >$del</a> <a href='#' onclick=\"xajax_imprimirModificar($id,'$operacion')\">$edit</a></td></tr>";
}else{
$tabla .= "<tr class='impar'><td><p class='result'>$id</p></td><td><p class='result'>".$marca."</p></td><td><p class='result'>".$modelo."</p></td><td><p class='result'>".$tipo."</p></td><td><a href='borrar.php?id=$id&op=$operacion' onclick='return confirm(\"Ud. esta a punto de borrar este elemento. Desea continuar? \")' >$del</a> <a href='#' onclick=\"xajax_imprimirModificar($id,'$operacion')\">$edit</a></td></tr>";
}
$i++;
}
$respuesta->addAssign("tablaResult","innerHTML",$tabla);
return $respuesta;
}
Código PHP:
Ver original
include('../includes/php/libs/conectar.php'); $link = conectar(); require_once('../includes/php/xajax/xajax.inc.php'); $xajax = new xajax(); include('includes/php/libs/operacionesLibs.php'); include('includes/php/libs/filtrado_ajax.php'); include('../includes/php/libs/form_generate.php'); include('includes/php/libs/impresorLibs.php'); $xajax->registerFunction("imprimirModificar"); $xajax->registerFunction("imprimirCrear"); $xajax->registerFunction("autosMarca"); $xajax->processRequests();
Y asi lo llamo desde los selects:
Código HTML:
Ver original
El select de marca se carga y al seleccionar una carga el select de modelos pero me manda un alert js que dice "unknown function autosMarca".
La funcion esta registrada que sucede ?.
Desde ya muchas gracias.