[clos] PHP + MySQL + JQuery et... Je m'arrache les cheveux ! [Fermé]

Signaler
Messages postés
1313
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
20 juin 2014
-
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
-
Hello,

alors voilà : je suis en train de faire un site avec membres, et je rélaise un moteur de recherche pour afficher différents membres suivant des critères divers tels que le pays, la région, et le département.

Pour ce faire j'ai une base de données MySQL où sont stockées les infos ; les données "pays", "region", et "dept" sont de type INT.

J'ai donc 4 pays : france, belgique, suisse, et luxembourg. Seule la france permet une recherche par région et département.

Le problème :

- Lorsque j'effectue une recherche par pays, et que je recherche soit en belgique, suisse, ou luxembourg, la requête fonctionne et les membres recherchés s'affichent correctement sur ma page de résultats.

- Mais lorsque j'effectue une recherche sur la france, et que par conséquent je sélectionne une région et un département, la requête ne me renvoie aucun résultat -> les lignes de ma BDD ne matchent jamais !

Les hypothèses :

- J'utilise donc 3 technologies pour faire fonctionner mon moteur de recherche : PHP, MySQL, et JQuery.
Pour sélectionner le pays j'ai une liste déroulante statique (<SELECT></SELECT>) dans mon formulaire.
Lorsque c'est la France qui est sélectionnée, j'affiche dynamiquement une nouvelle liste déroulante via JQuery, puis lorsque la région est à son tour sélectionnée, j'en affiche une troisième toujours via JQuery.

Une partie de mon code JQuery pour afficher ces listes déroulantes :

$(document).ready(function() {

var longueurListe = "";

$("#maRegion").hide();
$("#listeRegion").hide();

$("#monDpt").hide();
$("#listeDpt").hide();

$("#listePays").change(function() {
if ( $("#listePays").val() == "0"){
$("#listeRegion").hide(200);
$("#maRegion").hide(200);
$("#listeRegion").get(0).selectedIndex = 0;
$("#monDpt").hide(200);
$("#listeDpt").hide(200);
$("#listeDpt").get(0).selectedIndex = 0;
}else if ( $("#listePays").val() == "1"){
$("#listeRegion").show(200);
$("#maRegion").show(200);
}else if ( $("#listePays").val() == "2"){
$("#listeRegion").hide(200);
$("#maRegion").hide(200);
$("#listeRegion").get(0).selectedIndex = 0;
$("#monDpt").hide(200);
$("#listeDpt").hide(200);
$("#listeDpt").get(0).selectedIndex = 0;
}else if ( $("#listePays").val() == "3"){
$("#listeRegion").hide(200);
$("#maRegion").hide(200);
$("#listeRegion").get(0).selectedIndex = 0;
$("#monDpt").hide(200);
$("#listeDpt").hide(200);
$("#listeDpt").get(0).selectedIndex = 0;
}else if ( $("#listePays").val() == "4"){
$("#listeRegion").hide(200);
$("#maRegion").hide(200);
$("#listeRegion").get(0).selectedIndex = 0;
$("#monDpt").hide(200);
$("#listeDpt").hide(200);
$("#listeDpt").get(0).selectedIndex = 0;
}
});

$("#listeRegion").change(function() {
if ( $("#listeRegion").val() == "0"){
$("#listeDpt").hide(200);
$("#monDpt").hide(200);
$('#listeDpt').children().remove().end().append('<option selected value="0">critère sans importance</option>');
}else if ( $("#listeRegion").val() == "1"){
$("#listeDpt").show(200);
$("#monDpt").show(200);
$('#listeDpt').children().remove().end().append('<option selected value="0">critère sans importance</option>');
$("#listeDpt").append("<option value='67'>BAS RHIN - 67</option>");
$("#listeDpt").append("<option value='68'>BAS RHIN - 68</option>");
}else if ( $("#listeRegion").val() == "2"){
$("#listeDpt").show(200);
$("#monDpt").show(200);
$('#listeDpt').children().remove().end().append('<option selected value="0">critère sans importance</option>');
$("#listeDpt").append("<option value='24'>DORDOGNE - 24</option>");
$("#listeDpt").append("<option value='33'>GIRONDE - 33</option>");
$("#listeDpt").append("<option value='40'>LANDES - 40</option>");
$("#listeDpt").append("<option value='47'>LOT ET GARONNE - 47</option>");
$("#listeDpt").append("<option value='64'>PYRENEES ATLANTIQUES - 64</option>");
}else if ( $("#listeRegion").val() == "3"){
...etc...


J'envoie donc les données de mon formulaire avec la méthode POST, et je compare avec les données de ma base. Mais après x tests, il m'est impossible de faire coïncider les données "region" et "dpt" envoyées avec les données de ma bdd, donc je ne comprends pas... J'ai essayé plein de choses :
- j'ai tenté tous les encodages/décodages possibles et inimaginables mais sans succès.
- j'ai tenté de changer le type INT de ces données dans ma base en "VARCHAR" mais sans succès.
- j'ai essayé de comparer mes données avec stripos mais sans succès.
- Partant dans l'hypothèse que ce serait peut-être un problème dû à un conflit de type, j'ai essayé de biaiser en soustrayant les données envoyées aux données stockées, et si le résultat est égal à 0 -> ça matche. Le résultat est bien égal à 0 pour les données sensées matcher... Mais ça ne matche pas.
- et encore bien d'autres tests....

Je précise que j'ai effectué ces tests dans l'environnement du site (donc avec le formulaire dynamique) et également dans une page "test" où les données à chercher sont tapées en dur dans la page, et ... Sur la page "test" à chaque fois ça matche lorsque ça le doit...

La conclusion que j'en tire :

Etant donné que j'ai d'autres données INT dans ma base qui sont comparées à d'autres données envoyées par le formulaire, et que ces données ne posent pas de problème, j'en déduis que ce sont mes deux listes déroulantes dynamiques qui sèment le trouble (du moins je ne vois que ça...).
Le problème : et bien je ne sais comment le résoudre le problème justement , donc j'en appelle à vos compétences si parmi vous quelqu'un a une idée.

D'avance mille mercis pour vos réponses


BBFUNK01

//C'est en forgeant qu'on devient forgeron... ;-) ;

musichrono

2 réponses

Messages postés
50
Date d'inscription
dimanche 6 mai 2007
Statut
Membre
Dernière intervention
14 novembre 2011

Il serait bien d'avoir le reste du code, notamment les lignes de la recherche dans la bdd et l'affichage.

Essaye avant tout de faire fonctionner ton code sans le javascript ça sera beaucoup plus facile et tu réduit la marge d'erreur.
@('(°)_(°) )@
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
342
Bonjour,

Quand ta question concerne plusieurs langages, essayes de choisir le forum le plus approprié pour la réponse.

Pour ceux qui veulent répondre au sujet c'est ici : http://www.javascriptfr.com/forum/sujet-PHP-MYSQL-JQUERY-JE-DEVIENS-FOU_1549082.aspx

Je sais que ton message concerne les trois langages sur lesquels tu l'as déposé, mais je clos pour que tout le monde réponds sur le meme sujet.