Bonjour a tous ,
je suis débutante sur cakephp , je suis entrain de developper une application de gestion de delegués médicaux donc quand je veux ajouter un medecin je dois remplir un formulaire dont j'aimerais afficher deux listes une des régions et une autre des villes. la liste de la ville doit afficher juste les villes de la région sélectionnée .
j'ai beau chercher sur internet mais je ne trouve pas qqc de claire car je suis coincée :/
Merci pour votre aide .
Bonjour twita,
essaye l'ajax pour faire appel à ta base de données :
Moi c'est comme cela que j'aurai fait ;)
justement j'ai pas su cmment faire appel a ajax pck je travaille avec Cakephp.
j'ai 3 model
regions(id, nom)
villes(id, nom,regions_id)
medecins(id,nom,villes_id)
peux tu m’éclaircir encore plus
oui pas de problème :
dans ta vue tu fait une fonction javascript que tu va appeler à chaque changement de ton premier select.
par exemple :
function getVilles()
{
var myselect = document.getElementById("id_select_region");
var id_region = myselect.options[myselect.selectedIndex].value;
<?php
$url = $this->Html->url(array("action" => "mafonctionControllerGetVilles"),true);
?>
$.ajax({
type: 'POST', // Le type de ma requete
url: <?php echo '"'.$url.'"' ;?>, // L'url vers laquelle la requete sera envoyee
data: {
id: id_region, // Les donnees que l'on souhaite envoyer au serveur au format JSON
},
success: function(data, textStatus, jqXHR)
{
//ici tu fait ce que tu veux avec les donnée
},
error: function(jqXHR, textStatus, errorThrown)
{
console.log('ERROR on mafonctionControllerGetVilles');
}
});
dans ton controller :
public function mafonctionControllerGetVilles()
{
$id_region = htmlspecialchars($_POST'id_region']);
//tu fait ta requete pour recupere les villes de la regions
$result = $this->villes->find('all', array(
'conditions' => array('region_id' => $id_region ,
)
));
//tu traite ton resultat
echo json_encode($result);
//ne pas oublier le exit pour eviter que cake ne prenne la main et renvoie une erreur
exit();
}
Je ne dit pas que c'est comme cela que l'on doit faire exactement mais c'est comme cela que je fait en général et cela fonctionne tres bien ;)
Tu as plus grand chose a faire à par adapter le code pour ton usage personnel ;)
J'espère que je t'ai bien aider ;)
Cordialement ,
Jeremy
jai une confusion pour la fonction getVilles je la met dans ma vue add.ctp?? aussi pour les input j'ai trouvé sur net qqc comme ca :
?>
echo $this->Form->input('regions_id',array($regions, 'empty' => 'choisir', 'onchange' =>'change(this.select)'));
echo $this->Form->input('villes_id' ,array('clas' => 'loader' ,'stypr' => 'display:hidden'));
$this->Js->get('#MedecineRegionId')->event('change',
$this->Js->request(array('controller'=>'villes','action'=>'getRegions'),
array(
'update'=>'#MedecineRegionId',
'async' => true,
'method' => 'post',
'dataExpression'=>true,
'data'=> $this->Js->serializeForm(array(
'isForm' => true,
'inline' => true
))
))
);
oui la fonction getVilles tu la met dans ta vue qui va appelé donc en ajax ton controller :)
bonjour à tous j'ai à peu pres le meme probleme ou je dois calculer des subventions, sachant que pour moi j'ai une table villes region et departements avec une value dans chacune des tables.
Pour eviter de faire une requete avec un find all de toutes mes villes qui est beaucoup trop lourde (36 000 villes) je souhaite utiliser ce systeme dans mon formulaire pour ainsi selon la region il me selectionne les departements associé et seleon le departements les villes.
mais voilà j'avoue je suis également débutant et cela fait 4 jours que je me prend la tete la dessus .
Si vous pouvez m'aiguiller Merci à vous