Combos Actualizables

edited septiembre 2008 in Dudas/Problemas
Buen dia,

He seguido el libro y he podido hacerlo (Un combo que actualice de otro) a la perfeccion; resulta q ahora tengo un formulario donde son 3 combos y pues dependen uno del otro.
Clase->Marca->Tipo
Trate de hacer lo mismo q en el ejemplo del libro pero no me resulto el tercer combo(Tipo) no me actualiza.

Creo q es problema del script pero no se cual es... podrian ayudarme??

Aqui mi codigo

automotores_controller.php:
function obtener_tipo($marca){
			$this->set_response("view");
			$this->tipo = $this->Tipos->find("marcas_id = '$marca'");
		}
function obtener_marca($clase){
			$this->set_response("view");
			$this->marca = $this->Marcas->find("clases_id = '$clase'");
		}

index.phtml
<tr>
		<td align='right' valign="botton"><b>Clase:</b></td>
		<td align='left' >
			<select name='clase' id='clase'>
				<?=	option_tag('0', 'Seleccione una...',"selected: true") ?>
				<? foreach($Clases->find() as $clase): ?>
				<?= option_tag($clase->id, $clase->detalle) ?>
				<? endforeach; ?>
			</select>
		</td>
	</tr>
	<tr>
		<td align='right' valign="botton"><b>Marca:</b></td>
		<td align='left' >
			<div id='div_marca'>
					<select name='marca' id='marca'>
						<?=	option_tag('0', 'Seleccione una...',"selected: true") ?>
					</select>
				</div>
		</td>
	</tr>
<script type="text/javascript">
	new Event.observe("clase", "change", function(){
	new AJAX.viewRequest({
	action: "automotores/obtener_marca/"+$F("clase"),
	container: "div_marca"
	})
	})
</script>
	<tr>
		<td align='right' valign="botton"><b>Tipo:</b></td>
			<td align='left' >
				<div id='div_tipo'>
					<select name='tipo' id='tipo'>
						<?=	option_tag('0', 'Seleccione una...',"selected: true") ?>
					</select>
				</div>
		</td>
	</tr>
	
<script type="text/javascript">
	new Event.observe("marca", "change", function(){
	new AJAX.viewRequest({
	action: "automotores/obtener_tipo/"+$F("marca"),
	container: "div_tipo"
	})
	})
</script>

obtener_marca.phtml
<select name='marca' id='marca'>
	<option>Seleccione una...</option>
		<? foreach($marca as $mar): ?>
	<option value='<?= $mar->id ?>'><?= $mar->detalle ?></option>
		<? endforeach; ?>
</select>


obtener_tipo.phtml
<select name='tipo' id='tipo'>
	<option>Seleccione una...</option>
		<? foreach($tipo as $tip): ?>
	<option value='<?= $tip->id ?>'><?= $tip->detalle ?></option>
		<? endforeach; ?>
</select>

Comentarios

  • Pudiste hacer lo del combo, cual era el error?
    Yo lo hice pero no me funciona el iexplorer.
    Si pudiste hacerlo me gustaria que pegues el codigo, gracias
  • RhapsodyOfFire, Yo hice hace un tiempo un how to de combos actualizables con ajax puedes buscarlo en la lista de correo del grupo colocas en la busqueda, "combos-dinamicos"...
  • Gracias por responder.
    El archivo (combos-demo.zip) que esta en el grupo de google, funciona bien, en IE y FIREFOX.
    Pero...., si le asigno un layout, ya deja de funcionar.
    lo que esta en rojo es el codigo que le agrego a ese ejemplo
    En el Controller (ejemplo_controler.php)

    <?php

    class EjemploController extends ApplicationController {
    public $template = "template";
    public function index(){

    }

    public function mostrar_combo($id){
    echo "asdfsfdfdasfs";
    $this->set_response('view');

    # Busco el departamento cuyo id = $id
    $this->Departamento->find($id);

    # Busco las ciudades que pertenecen al departamento
    $this->ciudades = $this->Departamento->getCiudades();

    }

    }

    ?>


    y creo el layout( template.phtml )

    <div id="container">
    <?php content(); ?>
    </div>


    Ya NO funciona en el IE, en FIREFOX si funciona.

    Como ven solo cree un layout llamado template.phtml y en el controller como es logico agrego public $template = "template";, y nada mas, y deja de funcionar.
Sign In or Register to comment.