Lister les articles "à partir de" au lieu de correspondance exacte.

Petit nouveau ! | 5 Messages

01 déc. 2020, 09:45

Bonjour
Sur un site web de location immobilière, j'ai un module de recherche paramétrable, qui liste les maisons en fonction du nombre de chambres et de salles de bains.
Comment modifier le code pour que le nombre sélectionné soit le minimum requis, et non le nombre exact ? C.à.d. sélection 3 chambres => liste des maisons avec au moins 3 chambres.
Code actuel :
<div class="form-group">
                                    <select name="beds" id="beds" class="form-control">
                                        <option value="" <?php echo ($beds == '') ? 'selected="selected"' : ''; ?>><?php echo JText::_('MOD_SPPROPERTY_SEARCH_BED'); ?></option>

                                        <?php
                                        foreach ($numerics as $key => $numeric) {
                                            $bed_text = ($key == 0) ? JText::_('MOD_SPPROPERTY_SEARCH_BED') : JText::_('MOD_SPPROPERTY_SEARCH_BEDS');
                                            ?>
                                            <option value="<?php echo $numeric; ?>" <?php echo ($beds == $numeric) ? 'selected="selected"' : ''; ?>><?php echo $numeric . ' ' . $bed_text; ?></option>
                                        <?php } ?>

                                    </select>
                                </div>

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

01 déc. 2020, 12:20

Bonjour,

Ce n'est pas dans ce code là qu'il faut faire le changement mais dans le code qui traite le résultat du formulaire.

Si c'est une requête SQL, en gros, au lieu de faire nb_chambres=3, il faut que tu fasses nb_chambres >=3
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 5 Messages

01 déc. 2020, 12:52

Est-ce que je ne peux pas modifier cette partie du fichier PHP( pour les lignes beds et baths) ?
$input      = JFactory::getApplication()->input;
$keyword    = $input->get('keyword', NULL, 'STRING');
$pstatus    = $input->get('pstatus', NULL, 'STRING');
$city_name  = $input->get('city', NULL, 'STRING');
$minsize    = $input->get('minsize', NULL, 'INT');
$maxsize    = $input->get('maxsize', NULL, 'INT');
$beds       = $input->get('beds', NULL, 'INT');
$baths      = $input->get('baths', NULL, 'INT');

(effectivement, je ne suis pas programmeur...)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

01 déc. 2020, 23:48

Non ce n'est pas là, mais il faudrait que tu fasses appel à un vrai développeur car là c'est de la bidouille de faire ça à l'aveugle :-/
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 5 Messages

02 déc. 2020, 19:40

C'est pour ne pas bidouiller à l'aveugle que je pose la question sur ce forum, à de vrais développeurs :wink: .

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

02 déc. 2020, 20:44

Certes, mais il s'agit d'un forum d'entraide entre développeurs. :-D
Et nous ne connaissons pas du tout ton code, c'est nous qui sommes à l'aveugle et toi qui va forcément avoir du mal à nous guider pour pouvoir t'aider.
Comme si tu faisais une opération chirurgical sans aucune compétence, où tu tiens le bistouri, et tu prends des photos que tu envoies à un chirurgien par sms en disant "je dois couper là ?", "ou peut être là ?", etc... et encore car le chirurgien aura + de chance que nous car le corps humain est a peu près constitué pareil chez tout le monde, ce qui n'est pas le cas du code informatique :-D


PHP est l'un des langages les plus faciles à appréhender pour des débutants, donc aucun problème si tu veux t'y mettre, mais il est nécessaire d'avoir un minimum de bases pour éviter de faire des erreurs et pour qu'on puisse t'aider efficacement.

Une portion de code peut être réutilisée à différents endroits de ton site, donc si tu fais une modif sans comprendre ce que tu fais, tu risques d'avoir des effets de bord.
Par exemple (simple hypothèse) si la fonction qui fait sélectionner une location de 3 chambres, est la même pour faire l'affichage dans une page (ce que tu veux modifier) ainsi que la facturation (ce que tu ne veux pas modifier).
Si tu la modifies pour afficher 3 chambres et +, tu risques de faire de la surfacturation de façon aléatoire.
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 5 Messages

03 déc. 2020, 12:54

Bonne parabole :)
J'avais bien suivi une formation PHP/JS il y a 11 ans (au CNAM), mais ça s'est pas mal évaporé depuis, car j'ai rarement besoin de modifier le PHP dans les sites que je construis sous Joomla. (En général les modifications de CSS suffisent).
Je me demande si la modif (remplacer "= valeur" par ">= valeur" pour beds et baths ) ne pourrait pas se faire dans ce fichier JS. Extrait :
$('.sp-property-search .spproperty-adv-search').submit(function (e) {
e.preventDefault();
........
var beds = $('.spproperty-adv-search #beds').val();
var baths = $('.spproperty-adv-search #baths').val();

..........
var p_features = [];
var search_queries = '';
//Handles property features
var property_features = '';
p_features = $('#p_features').chosen().val();

if (typeof p_features !== 'undefined' && p_features != null && p_features.length > 0) {
p_features = p_features.join('-');
}

var searchitem = '&searchitem=' + 1;
.......................

if (minsize) {
minsize = '&minsize=' + (minsize);
search_queries += minsize;
}

if (maxsize) {
maxsize = '&maxsize=' + (maxsize);
search_queries += maxsize;
}

if (beds) {
beds = '&beds=' + beds;
search_queries += beds;
}

if (baths) {
baths = '&baths=' + baths;
search_queries += baths;
}
...................

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

03 déc. 2020, 15:17

Il faut que tu trouves et modifies le code qui fait le traitement de ta requête.
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 5 Messages

03 déc. 2020, 15:25

Il m'avait semblé que c'était ce 2e code , en JS.