IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

modification d'un formulaire de recherche [PHP 5.2]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Points : 15
    Points
    15
    Par défaut modification d'un formulaire de recherche
    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
    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', '&euro;') ?></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', '&euro;') ?></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>
    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
     
    -- --------------------------------------------------------
    -- 
    -- 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;
     
    -- --------------------------------------------------------
    Il y'a aussi le fichier js pour gérer la recherche AJAX.
    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.
    Images attachées Images attachées  

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Q1 : le fait que tu aies deux champs nommés ID ne gêne en rien (a part qu'avoir des noms identiques dans toutes les tables donnent la migraine au developpeur).
    Il faut que ta table towns ait une clef étrangère, que tu appelles comme tu veux, departement_id ou dpt_id par exemple, donnant l'information du departement de la ville.

    Q2 : La c'est du javascript modifiant l'attribut CSS "visible".
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Points : 15
    Points
    15
    Par défaut
    bonsoir sabotage;
    merci beaucoup pour tes éclaircissements, mais S'il te plais je voulais savoir comment remédier à la 2éme question, sincèrement je ne vois pas trop comment faire, quand tu dit que c'est du java-script, dois-je écrire carrément un script et lui faire appelle.
    Si ca te dérange pas j'aimerai bien avoir un petit exemple, je dis bien si ca ne te dérange pas bien sure.
    En tout cas Merci beaucoup.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Formulaire de recherche et de modification
    Par bibi28 dans le forum Langage
    Réponses: 4
    Dernier message: 19/08/2014, 13h40
  2. Réponses: 11
    Dernier message: 02/07/2013, 16h34
  3. Réponses: 3
    Dernier message: 20/10/2005, 12h42
  4. Réponses: 5
    Dernier message: 18/10/2005, 14h09
  5. Enregistrer une modification dans un formulaire
    Par micheline dans le forum Access
    Réponses: 5
    Dernier message: 26/06/2005, 19h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo