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

Signaler
Messages postés
3
Date d'inscription
jeudi 18 octobre 2007
Statut
Membre
Dernière intervention
12 mars 2010
-
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
-
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

Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
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)
Messages postés
3
Date d'inscription
jeudi 18 octobre 2007
Statut
Membre
Dernière intervention
12 mars 2010

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';
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
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)
Messages postés
3
Date d'inscription
jeudi 18 octobre 2007
Statut
Membre
Dernière intervention
12 mars 2010

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
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
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)