|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |||
|
Invité de passage
![]() Inscription : mai 2007 Messages : 14 ![]() |
Bonjour,
Je tourne en rond depuis deux jours. Sur mon site en local, ma requête fonctionne lors que j'installe le source chez mon hébergeur, elle se comporte différemment. Ci-dessous le code : Code :
Citation:
Pourquoi? avez-vous une idée? Merci d'avance |
|||
|
|
00
|
|
|
#2 | ||||
|
Membre Expert
![]() Inscription : septembre 2010 Messages : 1 244 ![]() |
Cela vient de la configuration magic_quote_gpc du serveur qui est encore configuré à l'ancienne (sur on) alors qu'elle est sur off sur ton serveur d'évaluation (valeur standard maintenant par défaut).
Pour que ton code passe partout même sur des anciennes config, tu peux créer une petite fonction pour récupérer tes variables : Code :
Sinon pour protéger la chaine de ta requête tu dois toujours utiliser mysql_real_escape_string (ou l'équivalent quotes ou requêtes préparée avec PDO) sur les variables. Soit au final : Code :
__________________
- Réalisations - Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical. |
||||
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : mai 2007 Messages : 14 ![]() |
Merci pour ta réponse, j'ai fais les modifications nécessaire. la requête passe désormais chez l'hebergeur et le comportement est le même sur mon local mais elle ne ramène rien.
La requête qui s'exécute est la suivante avec tes modifications : Code :
select c_zone,c_annee,c_lieux,c_vacances,c_debut,c_fin from t_calendrier where c_zone='\"Zone A\"' and c_annee='\"2011 - 2012\"' order by c_debut Code :
select c_zone,c_annee,c_lieux,c_vacances,c_debut,c_fin from t_calendrier where c_zone='Zone A' and c_annee='2011 - 2012' order by c_debut |
|
|
00
|
|
|
#4 | ||
![]() ![]() |
Entoure les variables du WHERE avec des apostrophes :
Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
00
|
|
|
#5 | ||
|
Invité de passage
![]() Inscription : mai 2007 Messages : 14 ![]() |
Bonjour,
J'ai déjà fais ces modifications car j'ai suis une réponse qui m'a été faite ci-dessus et voici mon code : Code :
select c_zone,c_annee,c_lieux,c_vacances,c_debut,c_fin from t_calendrier where c_zone='\"Zone A\"' and c_annee='\"2011 - 2012\"' order by c_debut je voudrais au final que le \" disparaisse. |
||
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Inscription : septembre 2010 Messages : 1 244 ![]() |
Le principe du code que je t'ai montré en exemple est correct mais mon explication n'était certainement pas la bonne concernant la cause de ton pb car magic_quote_gpc ajoute des antislah pour protéger les "'" et les """ à l'intérieur de la variable or là il sont à l'extérieur.
Attention aussi j'ai mis "null" comme valeur par défaut dans le test de la variable : $selzone = isset($_POST['zone']) ? Verif_magicquotes($_POST['zone']) : null; mais tu peux choisir la valeur par défaut la plus adaptée à tes besoins. Faits afficher ta requête avec php le temps de débugguer $requete_result = "SELECT..."; echo $requete; puis copie le résultat pour le faire exécuter dans phpmyadmin pour voir.
__________________
- Réalisations - Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical. |
|
|
00
|
|
|
#7 | ||||
|
Invité de passage
![]() Inscription : mai 2007 Messages : 14 ![]() |
J'ai essayé et je pense trouver la raison du problème mais je ne comprends toujours pas.
Mes variables $selzone et $selannee contiennent des valeurs mais lorsque récupére ces valeurs, elles sont entourées de ". $selzone devrait par exemple être égale à Zone A et non à "Zone A". Dans mon code, j'ai mis en place de l'AJAX j'ai un script "remplir_calendrier.js" dont voici le code ci-dessous et qui appelle "Recuperation_donnees.php". remplir_calendrier.js : Code :
Code :
|
||||
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() Inscription : septembre 2010 Messages : 1 244 ![]() |
Je pense que c'est lors du post via ajax que les " sont ajoutées. Utilises une des trois fonctions de ce lien sur chaque variable qui construit ton data
par exemple : Code :
data = encodeURIComponent(chaine1)+encodeURIComponent(selzone)+encodeURIComponent(chaine2)+encodeURIComponent(selannee);
__________________
- Réalisations - Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical. |
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : mai 2007 Messages : 14 ![]() |
Tout d'abord merci de consacrer autant de temps à mon problème. On avance mais ce n'est toujours pas cela.
En mettant ces fonctions, d'après firebug, le post passe en paramettre zone="Zone A"&annee="2011 - 2012" Mais le $_POST['zone'] ne retourne rien du tout même chose pour l'autre variable. On obtient alors la requête : select c_zone,c_annee,c_lieux,c_vacances,c_debut,c_fin from t_calendrier where c_zone='' and c_annee='' order by c_debut. dur dur si tu as encore un atout je suis preneur |
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() Inscription : septembre 2010 Messages : 1 244 ![]() |
Ha oui je t'ai dis d'utiliser ces fonctions sur tes variables mais je n'avais pas regardé suffisamment ton code pour mon exemple. En fait il faut écrire un truc dans le genre :
Code :
data: 'zone='+encodeURIComponent(selzone)+'&selzone='+encodeURIComponent(selannee); Si ça fonctionne toujours pas peut-être que c'est au moment de la récupération javascript que tu prends ces '"' ... fais afficher alert(selzone) pour vérifier.
__________________
- Réalisations - Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical. |
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() Inscription : mai 2007 Messages : 14 ![]() |
Merci pour tout, je viens enfin de trouver et le problème se situait sur la récupération des valeurs dans le php en amont
selzone=document.getElementById("sel_zone").options[document.getElementById("sel_zone").selectedIndex].value; Les guillemets se trouvaient déjà dans le champs sel_zone. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com