Mysql_query($query) renvoie toujours false avec requête créer dans JavaScript.

jbiloeb Messages postés 3 Date d'inscription jeudi 18 octobre 2007 Statut Membre Dernière intervention 12 mars 2010 - 26 févr. 2010 à 10:36
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 - 12 mars 2010 à 19:00
Bonjour
Je suis débutant en JavaScript et j’apprends en autodidacte par l’exemple donc désolé s’il y a une (des) grosse(s) bêtise(s) dans mon code ou ma logique de codage
Mon problème est, je pense, à la croisé entre le JavaScript et le MySQL, mais je pencherai plus pour un Pb JavaScript donc je dépose ma demande sur ce forum.
J’expose l’environnement qui me pose problème :
Je développe actuellement un site qui a pour page d’accueil un formulaire avec des listes déroulantes.
Sur chaque liste je fais une détection onclick="***" qui exécute un JavaScript, qui récupère la (les) valeur(s) saisi dans le formulaire pour créer une requête du type :
SELECT element1 FROM `table1`,`table2` WHERE `element2` 'Valeur sélectionner dans la liste' AND `table1. ID` `table2.ID`;

Une fois la requête créée je fais ;
larequete="SELECT element1 FROM `table1`,`table2` WHERE `element2` = 'Valeur sélectionner dans la liste' AND `table1. ID` = `table2.ID`;";

var xhr_object = null;

if(window.XMLHttpRequest) // Firefox
       xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
       xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else { // XMLHttpRequest non supporté par le navigateur
       alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
       return;
}

xhr_object.open("POST", "executionRequete.php", true);

xhr_object.onreadystatechange = function()
 {
if(xhr_object.readyState == 4){ eval(xhr_object.responseText);}
}

xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
var data = 'requete='+requetedata+'&select=NbResult';
xhr_object.send(data);


Dans le fichier executionRequete.php je fais :

<?php
mysql_connect ('*** :***', '***', '***');
mysql_select_db ('***', $base);
$query =$_POST['requete'];
$result = mysql_query($query);
if(!$result)
{
echo 'var s = document.forms["formulaire"].elements["NbResult"];';
echo 's.options.length = 0;';
echo 's.options[s.options.length] = new Option("");';	
echo 's.options[s.options.length] = new Option("'.$query.'");'; 
echo 's.options[s.options.length] = new Option("false");';
} 
else
{
echo 'var o = null;';
echo 'var s = document.forms["formulaire"].elements["NbResult"];';
echo 's.options.length = 0;';
echo 's.options[s.options.length] = new Option("");';
$r = mysql_fetch_array($result);
echo 's.options[s.options.length] = new Option("'.$query.'");';
echo 's.options[s.options.length] = new Option("true");';
echo 's.options[s.options.length] = new Option("'.$r['element1'].'");';
}	
mysql_close();
?>


J’ai mis ce test pour afficher la requête ainsi que le résultat du mysql_query, et il retourne toujours faux, mais la requête est bien écrite sur ma page.
Or, lorsque je remplace la 4eme ligne du fichier executionRequete.php par :
<?php
$query  " SELECT element1 FROM `table1`,`table2` WHERE `element2` 'Valeur sélectionner dans la liste' AND `table1. ID` = `table2.ID`;";
?>

Ça fonction niquel.
Est-ce que quelqu’un a déjà eu le problème est saurai m’aider?

PS : j’ai déjà tenter de faire du "serialize"->"unserialize" pour le passage de donnée, ainsi faire un strval($query) ou du $query= "".$query.

5 réponses

PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 16
5 mars 2010 à 13:12
Bonjour,
pas spécialiste du tout mais alors pas du tout
seulement voila je lis
larequete= "SELECT element1 FROM ...etc..
et plus loin
var data = 'requete=' + requetedata +'&select =NbResult';
xhr_object.send(data);
que vaut requetedata ?
;O)
0
jbiloeb Messages postés 3 Date d'inscription jeudi 18 octobre 2007 Statut Membre Dernière intervention 12 mars 2010
6 mars 2010 à 21:21
autant pour moi j'ai légèrement modifie mon code pour le posé sur le forum, et j'ai oublier de modifier cette ligne et j'aurais du mettre:
var data = 'requete=' + larequete +'&select =NbResult';
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 16
7 mars 2010 à 15:55
Bonjour,
as tu vérifié que ce que tu envoies est égal à ton attente en réception, problème d'encodage, de caractères d'échappement...
;O)
0
jbiloeb Messages postés 3 Date d'inscription jeudi 18 octobre 2007 Statut Membre Dernière intervention 12 mars 2010
12 mars 2010 à 12:52
Disons que ce que je lit a l'oeil humain, correspond a ce que j'ai envoyé, mais peut etre que l'encodage n'ai pas bon. Mais dans ce cas comment le rendre compatible.

PS: désolé si je répond pas vite, mais mon probleme a lieu au boulot, est je suis dans une période un peut chaude ou je fais pas mal de truc en paralèlle
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 16
12 mars 2010 à 19:00
Bonjour,
essaies peut être avec les méthodes escape et unescape
var szTmp "SELECT element1 FROM `table1`,`table2` WHERE `element2` 'Valeur sélectionner dans la liste' AND `table1. ID` = `table2.ID`;";
var szEscape = escape(szTmp);
alert( szEscape);
var szUnescape = unescape( szEscape);
alert( szUnescape);


;O)
0
Rejoignez-nous