Sandra, mi consejo, despues de haber investigado un poco es con jquery.
Voy a colocar codigo de una aplicacion que realice hace poco con lo que
deseas.
en mi vista add.ctp
<?php //debug($form); ?>
<?php echo $html->css("themes/smoothness/jquery-ui-timepicker")?>
<?php echo $html->script("ui/jquery.ui.datepicker")?>
<?php echo $html->script("ui/jquery.ui.timepicker")?>
<?php echo $html->script('ui/i18n/jquery.ui.datepicker-es');?>
<div class="citaProgramadas form">
<?php echo $this->Form->create('CitaProgramada');?>
<div id="tipo_aseguradora">
<?php echo $form->input('aseguradorastypes',array('label'=>__('Tipo de
Aseguradora',true),'empty'=>'Seleccione','type'=>'select','options'=>$aseguradorastypes,
"onchange"=>"aseguradora(this.value)"));?>
</div>
<br clear="all"/>
<div id="aseguradora">
<?php if($this->data["CitaProgramada"]["aseguradorastypes"]):?>
<?php if($this->data["CitaProgramada"]["aseguradorastypes"]==2):?>
<?php echo $form->input("CitaProgramada.aseguradora_id",
array("label"=>__("Aseguradora", true), "options"=>$prepagas,
"empty"=>"--"))?>
<?php endif;?>
<?php if($this->data["CitaProgramada"]["aseguradorastypes"]==1):?>
<?php echo $form->input("CitaProgramada.aseguradora_id",
array("label"=>__("Aseguradora", true), "options"=>$epss, "empty"=>"--"))?>
<?php echo $form->input("CitaProgramada.numorden", array("label"=>__("Número
de Orden", true)))?>
<?php echo $form->input("CitaProgramada.fechaorden",
array("label"=>__("Fecha de la Orden", true), "type"=>"text"))?>
<script>
$(document).ready
(
function()
{
$("#CitaProgramadaFechaorden").datepicker({dateFormat: 'yy-mm-dd'});
}
);
</script>
<?php endif;?>
<?php endif;?>
</div>
<br clear="all"/>
<div id="tipo_consulta">
<?php echo $this->Form->input('typeconsulta_id',array('label'=>__('Tipo de
Consulta',true),'empty'=>'Seleccione'));?>
</div>
<br clear="all"/>
<div id="especialidad">
<?php echo
$this->Form->input('speciality_id',array('label'=>__('Especialidad',true),'empty'=>'Seleccione','type'=>'select','options'=>$especialidades,
"onchange"=>"medico(this.value)"));?>
</div>
<br clear="all"/>
<div id="medico">
</div>
<br clear="all"/>
<?php echo $this->Form->input('start_date', array("type"=>"text"));?>
<?php echo $this->Form->input('start_time', array("type"=>"text"));?>
<br clear="all"/>
<?php echo $this->Form->end(__('Crear Cita', true));?>
</div>
<script>
$(document).ready
(
function()
{
$("#CitaProgramadaStartDate").datepicker({minDate: +0,dateFormat:
'yy-mm-dd'});
$("#CitaProgramadaStartTime").timepicker();
}
);
function aseguradora(tipo)
{
$("#aseguradora").html('<?php echo $html->image("ajax-loader.gif")?>');
$.ajax
(
{
url: "<?php echo $html->url(array("controller"=>"cita_programadas",
"action"=>"aseguradora"))?>/"+tipo,
success: function(m)
{
$("#aseguradora").html(m);
}
}
);
}
function medico(especialidad)
{
$("#medico").html('<?php echo $html->image("ajax-loader.gif")?>');
$.ajax
(
{
url: "<?php echo $html->url(array("controller"=>"cita_programadas",
"action"=>"medico"))?>/"+especialidad,
success: function(m)
{
$("#medico").html(m);
}
}
);
}
</script>
en el controlador..... la funcion aseguradora
function aseguradora($aseguradoratypes_id= null)
{
if(!$aseguradoratypes_id)
{
echo "";
exit;
}
$conditions= array();
$conditions["user_id"]= $this->Auth->user("id");
if($aseguradoratypes_id)
$conditions["aseguradoratypes_id"]= $aseguradoratypes_id;
$uas= $this->UserAseguradora->find("all",
array("conditions"=>$conditions));
$aseguradoras= array();
if($uas)
{
foreach($uas as $ua)
$aseguradoras[$ua["Aseguradora"]["id"]]= $ua["Aseguradora"]["name"];
}
$this->set(compact("aseguradoras"));
if(count($aseguradoras)==1)
{
$this->data["CitaProgramada"]["aseguradora_id"]= key($aseguradoras);
$this->set("aseguradora", array_shift($aseguradoras));
}
//SI ES 1 ES EPS!!! Esto esta quemado, asi que hay que estar pendiente si
esto cambia.
if($aseguradoratypes_id==1)
$this->set("numorden", true);
}
La funcion medico el cual se llama tambien.......
function medico($speciality_id=null)
{
$conditions= array();
if($speciality_id)
$conditions["speciality_id"]= $speciality_id;
$ss= $this->Speciality->findById($speciality_id);
//debug($ss);exit;
$medics= array();
if($ss)
{
foreach($ss["Medic"] as $s)
$medics[$s["id"]]= $s["fullname"];
}
$this->set(compact("medics"));
if(count($medics)==1)
{
$this->data["CitaProgramada"]["medic_id"]= key($medics);
$this->set("medic", array_shift($medics));
}
}
Espero te sirva.
El 14 de junio de 2011 08:16, Luis M@ster <[email protected]
> escribió:
> Hola Sandra!
>
> para hacer esto necesita Ajax, puede usar una libreria como jQuery o
> Mootools, para ser mas preciso lo que necesita hacer son Consulta
> atraves de ajax, te dejare unso enlaces que te podran servir para
> esto.
>
> jQuery.ajax Api: http://api.jquery.com/category/ajax/
> Mootool Cass request: http://mootools.net/docs/core/Request/Request -
> demo site: http://mootools.net/demos/?demo=Request
>
> Prototype Ajax Api: http://api.prototypejs.org/ajax/
>
>
> Te recomiendo Prototype en este caso, ya que Cakephp tiene una
> libreria para Prototype.
>
> Espero que esto te sirva de ayuda.
>
> Saludos,
>
> On Jun 13, 11:14 pm, sandra milena mendoza <[email protected]>
> wrote:
> > Lo que quiero es tener un select donde salgan los datos de mi tabla
> > status y poder filtrar mi consulta por el estado seleccionado en mi
> > select. Por ejemplo si en mi select selecciono Pendiente me salga en
> > mi paginate solo los datos que essten en estado pendiente. Alguien
> > sabe como hacerlo??
> >
> > On 12 jun, 12:58, harenson henao <[email protected]> wrote:
> >
> >
> >
> >
> >
> >
> >
> > > Cordial saludo,
> >
> > > lo que quieres hacer te lo hace el paginate, cuando utilizas el
> paginate de
> > > cakePHP, en la vista puedes hacer algo como:
> >
> > > <table>
> > > <thead>
> > > <tr>
> > > <th><?php echo $this->Paginator->sort(__('Nombre', true),
> > > 'name'); ?></th>
> > > <th><?php echo $this->Paginator->sort(__('Estado', true),
> > > 'status'); ?></th>
> > > </tr>
> > > </thead>
> > > <tbody>
> > > <?php foreach($tramites as $tramite): ?>
> > > <tr>
> > > <td><?php echo $tramite['Tramite']['name']; ?></td>
> > > <td><?php echo $tramite['Tramite']['status']; ?></td>
> > > </tr>
> > > <?php endforeach; ?>
> > > </tbody>
> > > </table>
> >
> > > source =>http://book.cakephp.org/view/1233/Pagination-in-Views
> >
> > > De esta forma, los encabezados de tu tabla funcionaran como un filtro,
> es
> > > decir, si ese ejemplo fuese funcional, al darle clic a la columna que
> se
> > > llama "Nombre", los resultados se van a filtrar por la columna "name"
> de la
> > > tabla del modelo usado en esta vista
> > > que sería la tabla "tramites" del modelo "Tramite", en orden ASC o
> DESC;
> > > igual pasa al darle clic a la columna con el nombre "Estado".
> >
> > > Nota: al usar este método, no se van a mostrar solamente los datos de
> un
> > > estado en específico, se muestran todos. Si lo que quieres es mostrar
> sólo
> > > los trámites relacionados a cierto estado, te recomiendo usar jQuery o
> > > Mootools para no recargar la página por completo cada vez que
> selecciones un
> > > estado diferente, pero ahí si no te puedo dar ejemplos ni nada, nunca
> he
> > > usado cakePHP con jQuery o framework similar.
> >
> > > Cordialmente,
> > > Harenson Henao
> >
> > > El 11 de junio de 2011 21:32, sandra milena mendoza
> > > <[email protected]>escribió:
> >
> > > > Algun ejemplo del que me pueda guiar?
> >
> > > > On 11 jun, 19:24, sandra milena mendoza <[email protected]>
> wrote:
> > > > > Gracias por responderme.
> >
> > > > > Yo tengo una tabla llamada status donde estan los estados de mis
> > > > > tramites (otra tabla de mi base de datos) los estados son por
> ejemplo
> > > > > Pendiente, Tramitado, Negado, etc.
> >
> > > > > Lo que quiero es que cuando seleccione un estado, se me filtre mi
> > > > > paginate y me muestre solo los tramites que estan en ese estado.
> >
> > > > > On 11 jun, 19:19, harenson henao <[email protected]> wrote:
> >
> > > > > > Hola, la verdad no entiendo muy bien tú problema (en el codigo
> :P), si
> > > > lo
> > > > > > que buscas es que se filtren los resultados cada vez que
> seleccionas un
> > > > > > estado, te recomiendo usar {'jQuery','Mootools'} o js puro, para
> no
> > > > hacer
> > > > > > consultas a la base de datos cada que selecciones un estado
> nuevo.
> >
> > > > > > Regálanos por favor un ejemplo de un "dato de estado" que es lo
> que
> > > > dices
> > > > > > que no te muestra el sistema.
> >
> > > > > > Perdón de nuevo si no es lo que necesitas, la verdad no te
> entendí el
> > > > > > inconveniente que tienes en este momento al usar cakePHP.
> >
> > > > > > Éxitos.
> >
> > > > > > El 11 de junio de 2011 18:28, sandra milena mendoza
> > > > > > <[email protected]>escribió:
> >
> > > > > > > En mi vista tengo:
> > > > > > > <?php echo $this->Form-
> > > > > > > >create('Tramite',array('controller'=>'tramite',
> > > > > > > 'action'=>'tramitar')); echo $this->Form->input('statu_id'); ?>
> > > > > > > y me muestra los estados.
> >
> > > > > > > En mi controlador tengo:
> > > > > > > $status = $this->Tramite->Statu->find('list',
> > > > > > > array('fields'=>'Statu.estado'));
> > > > > > > $this->set('status', $status);
> >
> > > > > > > $this->Tramite->recursive = 1;
> > > > > > > $tramites = $this->paginate('Tramite',
> array('documento' =>
> > > > $cc,
> > > > > > > 'statu_id' => $this->data['Statu']['id']));
> > > > > > > //$tramites = $this->paginate('Tramite');
> > > > > > > $this->set(compact('tramites'));
> >
> > > > > > > Pero me arroja nulo el campo de estados en el sql entonces no
> me
> > > > > > > muestra ningun dato.
> >
> > > > > > > Que error estoy cometiendo???
> >
> > > > > > > On 11 jun, 18:00, sandra milena mendoza <[email protected]>
> > > > wrote:
> > > > > > > > Buenas tardes
> >
> > > > > > > > Necesito de su ayuda. Quiero filtrar los datos de mi
> paginate por
> > > > > > > > medio de un combo que traiga los datos de los estados de mi
> tabla
> > > > de
> > > > > > > > la bd. Estoy intentando traer los datos pero no ha sido
> posible.
> > > > > > > > Alguien tiene algunn ejemplo que me pueda ayudar?
> >
> > > > > > > --
> > > > > > > Has recibido este mensaje porque estás suscrito al grupo
> "CakePHP-es"
> > > > de
> > > > > > > Grupos de Google.
> > > > > > > Para publicar una entrada en este grupo, envía un correo
> electrónico
> > > > a
> > > > > > > [email protected].
> > > > > > > Para anular tu suscripción a este grupo, envía un correo
> electrónico
> > > > a
> > > > > > > [email protected]
> > > > > > > Para tener acceso a más opciones, visita el grupo en
> > > > > > >http://groups.google.com/group/cakephp-es?hl=es.-Ocultartextodela
> > > > cita -
> >
> > > > > > - Mostrar texto de la cita -- Ocultar texto de la cita -
> >
> > > > > - Mostrar texto de la cita -
> >
> > > > --
> > > > Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es"
> de
> > > > Grupos de Google.
> > > > Para publicar una entrada en este grupo, envía un correo electrónico
> a
> > > > [email protected].
> > > > Para anular tu suscripción a este grupo, envía un correo electrónico
> a
> > > > [email protected]
> > > > Para tener acceso a más opciones, visita el grupo en
> > > >http://groups.google.com/group/cakephp-es?hl=es.-Ocultar texto de la
> cita -
> >
> > > - Mostrar texto de la cita -
>
> --
> Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es" de
> Grupos de Google.
> Para publicar una entrada en este grupo, envía un correo electrónico a
> [email protected].
> Para anular tu suscripción a este grupo, envía un correo electrónico a
> [email protected]
> Para tener acceso a más opciones, visita el grupo en
> http://groups.google.com/group/cakephp-es?hl=es.
>
>
--
Carlos Andrés Becerra Galarza.
--
Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es" de Grupos
de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a
[email protected].
Para anular tu suscripción a este grupo, envía un correo electrónico a
[email protected]
Para tener acceso a más opciones, visita el grupo en
http://groups.google.com/group/cakephp-es?hl=es.