Mysql_query($query) renvoie toujours false avec requête créer dans JavaScript.
jbiloeb
Messages postés3Date d'inscriptionjeudi 18 octobre 2007StatutMembreDernière intervention12 mars 2010
-
26 févr. 2010 à 10:36
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 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.
A voir également:
Mysql_query($query) renvoie toujours false avec requête créer dans JavaScript.
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 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)
jbiloeb
Messages postés3Date d'inscriptionjeudi 18 octobre 2007StatutMembreDernière intervention12 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';
jbiloeb
Messages postés3Date d'inscriptionjeudi 18 octobre 2007StatutMembreDernière intervention12 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 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);