Bonjour;
Avant d'exprimer ma question je tiens à préciser que je suis pas doué en programmation web.
Donc, Je suis entrain de mettre en place un site internet (Site d'annonces immobiliére) à l'aide du CMS Joomla+ Joomla estate Agency.
Pour adapter le site à mes préferences, j'ai décidé de modifier un peu le Pack (Joomla estate Agency) et plus précisément la page de recherche.
Le pack permet d'utiliser deux type de recherches paramétrables en back-end:
1- Soit en utilisant AJAX
2- Soit sans AJAX
La recherche est multi-critère (soit par type de biens-départements-villes-surface-nbre de chambre ...etc ) d'où la possibilité d'utiliser AJAX (voir l'image jointe 'recherche').
Avec AJAX activé, quand je clique sur le type du bien (Location ou Vente) les autre listes déroulantes se filtrent et n'affichent que les villes ou départements pour les qu'elle il éxiste une annonce(s) et faisant référence au type du bien choisie.
Or, moi je souhaite que quand l'utilisateur sélectionne un type de bien les listes déroulantes (villes-départements) m'affichent tous les éléments qu'elles contiennent, pour remédier à cela j'ai désactivé la fonction AJAX à partir du Back-end.
jusque ici pas de problème.
avant de continuer voici l'un des fichiers source qui permet d'afficher la page de recherche
search.php
La structure des tables town et departement sont comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95 <?php // no direct access defined('_JEXEC') or die('Restricted access'); JHTML::stylesheet('jea.css', 'media/com_jea/css/'); $use_ajax = $this->params->get('use_ajax', 0); if ($use_ajax ) { JHTML::script('search.js', 'media/com_jea/js/', true); $document =& JFactory::getDocument(); //initialize the form when the page load $document->addScriptDeclaration(" window.addEvent('domready', function() { refreshForm(); });"); } ?> <form action="<?php echo JRoute::_('&task=search&layout=default') ?>" method="post" id="jea_search_form" enctype="application/x-www-form-urlencoded" > <fieldset><legend><?php echo JText::_('Quick search') ?></legend> <center> <p> <input type="radio" name="cat" id="renting" value="renting" <?php echo $use_ajax ? 'onclick="refreshForm()"' : '' ?> > <label for="renting"><?php echo JText::_('Renting') ?></label> <input type="radio" name="cat" id="selling" value="selling" <?php echo $use_ajax ? 'onclick="refreshForm()"' : '' ?> > <label for="selling"><?php echo JText::_('Selling') ?></label> </p> </center> <br> <?php if ( $use_ajax ): ?> <p> <select id="type_id" name="type_id" onchange="updateList(this)" class="inputbox"><option value="0"> </option></select> <select id="town_id" name="town_id" onchange="updateList(this)" class="inputbox"><option value="0" </option></select> <select id="department_id" name="department_id" onchange="updateList(this)" class="inputbox" ><option value="0"> </option></select> </p> <?php else: ?> <p> <center><?php echo $this->getHtmlList('types', '--'.JText::_( 'Property type' ).'--', 'type_id' ) ?></center> <br> <center><?php echo $this->getHtmlList('towns', '--'.JText::_( 'Town' ).'--', 'town_id' ) ?></center> <?php echo $this->getHtmlList('departments', '--'.JText::_( 'Department' ).'--', 'department_id' )?> </p> <?php endif ?> </fieldset> <p><input type="submit" class="button" value="<?php echo JText::_('Search') ?>" /></p> <br> <?php if ( $this->params->get('advanced_search', 0)): ?> <fieldset><legend><?php echo JText::_('Advanced search') ?></legend> <table> <tr> <td class="jea_label"><label for="budget_min"><?php echo JText::_('Budget min') ?> : </label></td> <td><input id="budget_min" type="text" name="budget_min" size="5" /> <?php echo $this->params->get('currency_symbol', '€') ?></td> <td class="jea_label"><label for="budget_max"><?php echo JText::_('Budget max') ?> : </label></td> <td><input id="budget_max" type="text" name="budget_max" size="5" /> <?php echo $this->params->get('currency_symbol', '€') ?></td> </tr> <tr> <td class="jea_label"><label for="living_space_min"><?php echo JText::_('Living space min') ?> : </label></td> <td><input id="living_space_min" type="text" name="living_space_min" size="5" /> <?php echo $this->params->get( 'surface_measure' ) ?></td> <td class="jea_label"><label for="living_space_max"><?php echo JText::_('Living space max') ?> : </label></td> <td><input id="living_space_max" type="text" name="living_space_max" size="5" /> <?php echo $this->params->get( 'surface_measure' ) ?></td> </tr> </table> <p><?php echo JText::_('Minimum number of rooms') ?> : <input type="text" name="rooms_min" size="1" /> </p> <p><?php /*echo JText::_('Advantages') ?> : <br /> <?php echo $this->getAdvantages('', 'checkbox') */ ?> </p> </fieldset> <p><input type="submit" class="button" value="<?php echo JText::_('Search') ?>" /></p> <?php endif ?> <div> <input type="hidden" name="Itemid" value="<?php echo JRequest::getInt('Itemid', 0) ?>" /> <?php echo JHTML::_( 'form.token' ) ?> </div> </form>
Il y'a aussi le fichier js pour gérer la recherche AJAX.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 -- -------------------------------------------------------- -- -- Structure de la table `#__jea_areas` -- -- DROP TABLE IF EXISTS `#__jea_areas`; CREATE TABLE IF NOT EXISTS `#__jea_areas` ( `id` int(11) NOT NULL auto_increment, `value` varchar(255) NOT NULL default '', `ordering` int(11) NOT NULL default '0', PRIMARY KEY (`id`) ) AUTO_INCREMENT=0 DEFAULT CHARSET=utf8; -- -------------------------------------------------------- -- -- Structure de la table `#__jea_departments` -- -- DROP TABLE IF EXISTS `#__jea_departments`; CREATE TABLE IF NOT EXISTS `#__jea_departments` ( `id` int(11) NOT NULL auto_increment, `value` varchar(255) NOT NULL default '', `ordering` int(11) NOT NULL default '0', PRIMARY KEY (`id`), KEY `name` (`value`) ) AUTO_INCREMENT=0 DEFAULT CHARSET=utf8; -- --------------------------------------------------------
Les problèmes aux quelles je suis confrontés sont :
Q1: Je voulais faire en sorte que quand je choisisse un département la liste déroulante ville(town) se filtre par rapport au département choisie auparavant.
--> Pour cela j'ai décidé d'utiliser après une petite recherche sur le net le principe des listes liée d'AJAX mais comme vous le voyais la structure des table ne me le permet pas (vue que les deux tables ont toute deux "id" comme clé donc pas possible d'utiliser "id" comme clé étrangère dans la table "town" et quand je renomme "id" de la table "town" ou "departement" peu importe, ya plein d'erreur qui surviennent vue qu'il faut changer l'attribut dans toutes les pages ou il est utilisé, j'ai commencer à modifier quelques lignes mais il y en a dans presque toutes les pages !!!!).
Q2: Je voulais aussi faire en sorte que quand je sélectionne le type APPARTEMENT dans la liste déroulante "type de bien", une nouvelle liste déroulantes apparaissent pour sélectionner le type d'appartement (F2,F3,F4 ...) et puis le résultat (exemple: F2 correspondra au N° 2) sera envoyer vers la zone de texte "Nombre minimum de pièces" (voir l'image jointe 'recherche') qui sera bien sure caché pour et ainsi lancer la recherche avec ces critères.
Voici un peu ce qui me tracas ces temps-ci.
J'espère que j'ai étais un peu claire.
J'aimerai bien que quelqu'un puisse m'aider ne serai-ce qu'au moins m'orienter vers la démarche à entreprendre pour régler l'un des deux problèmes cités ci-dessus.
Merci infiniment de votre aide.
Merci.
Partager