Un select identique qui ne fonctionne pas

Un select identique qui ne fonctionne pas - PHP - Programmation

Marsh Posté le 16-09-2013 à 04:42:35    

Salut,  
 
J'ai un problème avec un système de filtre au sein de mon site wordpress utilisant ce thème pour mon agence immo: http://locality.inspirythemes.com/
 
Je tente de customiser le filtrage des biens immobiliers ("property search" sur la démo en lien, à droite du slider). Un select ne veut pas fonctionner. Le select Status fonctionne, mais pas le select mesure que j'ai créé. J'ai pourtant repris le même code que le filtre status et je l'ai adapté au nouveau champs que j'ai créé (c'est toujours mon astuce car je n'ai qu'une faible compréhension/connaissance du PHP, j'ai pourtant essayé).  
 
Le filtrage (dans mon fichier advanced-search.php):

Code :
  1. <!-- Filtre statut -->
  2.   <div class="option-bar">
  3.          <label class="option-title"><?php _e('Status','locality'); ?></label>
  4.           <select name="status" id="select-status" class="search-select">
  5.                 <?php
  6.         $status = "";
  7.                   if(!empty($_GET['status']))
  8.                    {
  9.                        $status = $_GET['status'];
  10.                    }
  11.                                    
  12.        if($status == "for-rent" )
  13.        {
  14.        echo '<option value="for-rent" selected="selected">'.__('For Rent','locality').'</option>';
  15.        }
  16.        else
  17.        {
  18.        echo '<option value="for-rent" >'.__('For Rent','locality').'</option>';
  19.        }
  20.        if($status == "for-sale" )
  21.        {
  22.        echo '<option value="for-sale" selected="selected">'.__('For Sale','locality').'</option>';
  23.        }
  24.        else
  25.        {
  26.        echo '<option value="for-sale" >'.__('For Sale','locality').'</option>';
  27.        }
  28.        if($status == "sold" )
  29.        {
  30.        echo '<option value="sold" selected="selected">'.__('Sold','locality').'</option>';
  31.        }
  32.        else
  33.        {
  34.        echo '<option value="sold" >'.__('Sold','locality').'</option>';
  35.        }
  36.                  
  37.                  
  38.                    if($status == 'any' || empty($status))
  39.                    {
  40.                       echo '<option value="any" selected="selected">'.__( 'Any', 'locality').'</option>';
  41.                    }
  42.                    else
  43.                    {
  44.                       echo '<option value="any">'.__( 'Any', 'locality').'</option>';
  45.                    }
  46.                  
  47.                   ?>
  48.           </select>
  49.   </div>
  50. <!-- Filtre Mesure -->
  51. <div class="option-bar">
  52.          <label class="option-title"><?php _e('Mesure','locality'); ?></label>
  53.           <select name="mesure" id="select-mesure" class="search-select">
  54.                 <?php
  55.         $mesure = "";
  56.                   if(!empty($_GET['mesure']))
  57.                    {
  58.                        $mesure = $_GET['mesure'];
  59.                    }
  60.                                    
  61.        if($mesure == "petit" )
  62.        {
  63.        echo '<option value="petit" selected="selected">'.__('Petit','locality').'</option>';
  64.        }
  65.        else
  66.        {
  67.        echo '<option value="petit" >'.__('Petit','locality').'</option>';
  68.        }
  69.        if($mesure == "moyen" )
  70.        {
  71.        echo '<option value="moyen" selected="selected">'.__('Moyen','locality').'</option>';
  72.        }
  73.        else
  74.        {
  75.        echo '<option value="moyen" >'.__('Moyen','locality').'</option>';
  76.        }
  77.        if($mesure == "grand" )
  78.        {
  79.        echo '<option value="grand" selected="selected">'.__('Grand','locality').'</option>';
  80.        }
  81.        else
  82.        {
  83.        echo '<option value="grand" >'.__('Grand','locality').'</option>';
  84.        }
  85.                  
  86.                  
  87.                    if($mesure == 'any' || empty($mesure))
  88.                    {
  89.                       echo '<option value="any" selected="selected">'.__( 'Any', 'locality').'</option>';
  90.                    }
  91.                    else
  92.                    {
  93.                       echo '<option value="any">'.__( 'Any', 'locality').'</option>';
  94.                    }
  95.                  
  96.                   ?>
  97.           </select>
  98.   </div>


 
Ils correspondent avec ces champs (metabox-config.php):  
 

Code :
  1. // Statut
  2.  array(
  3.   'name'  => __('Status','locality'),
  4.   'id'  => "{$prefix}status",
  5.   'type'  => 'select',
  6.   'options' => array(    
  7.    'for-rent'  => __('For Rent','locality'),
  8.    'for-sale'  => __('For Sale','locality'),
  9.    'sold'  => __('Sold','locality'),
  10.   ),
  11.   'std'  => array( '' ),
  12.   'desc'  => __('Choose For Rent or For Sale or any other given option.','locality')
  13.  ),
  14. // Mesure
  15.  array(
  16.   'name'  => __('mesure','locality'),
  17.   'id'  => "{$prefix}mesure",
  18.   'type'  => 'select',
  19.   'options' => array(    
  20.    'Petit'  => __('Petit','locality'),
  21.    'Moyen'  => __('Moyen','locality'),
  22.    'Grand'  => __('Grand','locality'),
  23.   ),
  24.   'std'  => array( '' ),
  25.   'desc'  => __('Surface.','locality')
  26.  ),


 
Et c'est d'ailleurs pareil lorsque je mets deux fois le filtre "Status" (un simple copier-coller). L'un filtre, l'autre ne fonctionne pas.  
 
Y'a t-il peut-être un troisième fichier en jeu pour la mise en place de ce système de filtrage (du javascript que j'ai trouvé et dont je ne comprends rien...)?
 
Auriez vous sympathiquement une solution à ce problème?
 
Je vous remercie par avance pour votre précieuse aide.


Message édité par nullosdu59 le 16-09-2013 à 04:47:51
Reply

Marsh Posté le 16-09-2013 à 04:42:35   

Reply

Marsh Posté le 16-09-2013 à 09:20:01    

:hello:  
 
Est-ce que ça pourrait venir de la casse dans le nom de tes variables ? :??:
 
Dans ta page de filtrage, tu testes :

Code :
  1. if($mesure == "petit" )
  2. if($mesure == "moyen" )
  3. if($mesure == "grand" )


 
Alors que dans ton tableau, cela apparaît de la manière suivante :
 

Code :
  1. 'Petit'  => __('Petit','locality'),
  2. 'Moyen'  => __('Moyen','locality'),
  3. 'Grand'  => __('Grand','locality'),


---------------
And in the end, the love you take is equal to the love you make
Reply

Marsh Posté le 16-09-2013 à 15:05:12    

Salut Soleih,  
 
Merci pour ta réponse. Malheureusement ce n'est pas ça. J'ai modifié à de nombreuses reprises les majuscules pour éviter, justement, un éventuel problème. Ca ne donne rien.  
 
-_-'

Reply

Marsh Posté le 16-09-2013 à 16:05:26    

Là tu n'as créé qu'un formulaire, derrière il te faut une base de données et un fichier pour récupérer et faire le tri dans la ta base de données.
Il te faudra aussi un fichier pour ajouter ces critères dans ta base de données.

Reply

Marsh Posté le 16-09-2013 à 19:13:53    

Merci Maybeeijornot;
 
C'est sur Wordpress, donc j'image que la base de donnée actuelle du site prend en compte ce que je mets dans le champs. D'ailleurs, cela s'affiche sur le site, dans les biens en question.  
 
Je comprends alors qu'il y a un fichier qui gère le filtre. Ce pourrait-il que ce soit un fichier en javascript? Il y en a plusieurs dans mon thème, mais comme le javascript me semble incompréhensible (à la différence du php où j'arrive à m'y retrouver grosso merdo) je n'ai pas regardé ce qui s'y passe.  
 
Merci pour vos précieuses réponses.

Reply

Marsh Posté le 16-09-2013 à 19:33:27    

Je ne sais pas comment tu as fait ton coup, est-ce que quelque part quand tu rentres un nouveau bien tu peux préciser sa taille? Si oui alors au moins tout ça se trouve dans la base de données, il n'y a donc plus qu'un fichier qui pose problème, celui du tri.
Ensuite il y a 3 possibilités pour le tri :
- un fichier php qui envoie une requête à ta base de données et récupère tout une table de données qui est envoyée au client puis le javascript fait le tri et l'affiche. (peu probable)
- un fichier javascript qui envoie une requête de tri à un fichier php, ce dernier envoie une requête à ta base de données pour récupérer uniquement les données répondant aux critères de tri, le fichier javascript "écoute" la réponse du fichier php et affiche le résultat du tri. (c'est ce qui se passe si ta page n'est pas chargée de nouveau après avoir demandé le tri)
- un fichier php qui envoie une requête de tri à ta base de données et récupère uniquement les données triées puis les affiche. (fort probable si ta page est chargée de nouveau après la demande de tri)
 
 
Bref à moins d'une aberration il y a un fichier php qui se cache derrière le tri.

Reply

Marsh Posté le 18-09-2013 à 15:48:00    

J'ai enfin trouvé grâce au conseil précédent. Le bout de code se trouve dans mon homepage.php. Ca fonctionne désormais nickel. Merci à tous et surtout à maybeeijornot.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed