11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Je souhaite mettre des informations provenant d'une requete mySQL dans une infos bulle qui apparait au survol de la souris sur certains elements de la page. J'arrive, au survol de la souris a recuperer l'identifiant de mon element qui va me servir de condition dans ma requete.

Mon seul souci est de realiser la requete (via Ajax) et savoir si la methode que j'emploie est la bonne. J'ai realise un fichier php (verifelement.php)me permettant de faire seulement la requete.

mysql_query("SELECT element FROM table WHERE element='".$_GET["element"]."'");


J'ai aussi ajouter dans mon formulaire un input de type texte dont le nom est element.Au survol de la souris sur mes elements, j'appelle une fonction me permettant d'initialiser la valeur de mon champ input à l'idenfiant de mes elements puis juste apres j'appelle le fichier php correspondant à la requete :

file('verifelement.php?element='+escape(element))


ou file est mon fichier ajax:

function file(fichier)
     {
     if(window.XMLHttpRequest) // FIREFOX
          xhr_object = new XMLHttpRequest(); 
     else if(window.ActiveXObject) // IE
          xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); 
     else 
          return(false); 
     xhr_object.open("GET", fichier, false); 
     xhr_object.send(null); 
     if(xhr_object.readyState == 4) return(xhr_object.responseText);
     else return(false);
     }


Je n'ai pas de resultat avec cette methode est ce normale ?

Merci pour votre aide
Revois le fonctionnement d'ajax avec la méthode GET .. xhr_object.send(null) doit se trouver après avoir récuperer les informations normalement
voila un code qui devrait marcher :


function file(fichier)

     {

     if(window.XMLHttpRequest) // FIREFOX

          xhr_object = new XMLHttpRequest(); 

     else if(window.ActiveXObject) // IE

          xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); 

     else 

          return(false); 

     xhr_object.open("GET", fichier, false); 

     xhr_object.onreadystatechange = function() {

		if(xhr_object.readyState == 4) {

			return(xhr_object.responseText);
                else return false;

		}	

	}
     xhr_object.send(null); 

     }
Merci pour la reponse c'est mieux mais ce ne marche toujours pas .

c'est peut etre un probleme de methode. Je mets à jour mon input de la facon suivante :

document.getElementById('divElement').innerHTML = "<input type='text' name='element' value='"+Id+"'>";

à chaque fois que ma souris passe sur element


Le but etant de recuperer le resultat de la requete suivante :

mysql_query("SELECT element FROM table WHERE element='".$_GET["element]."'");

Je me demande si la variable $_GET["element] est bien initialisé ?? (comment verifier?)

Y aurait-il une une methode permettant d'executer la requete avec la condition directement sans utiliser un champ input (c'est le seul moyen que j'ai trouve pour passer une valeur au serveur)
pour faire des tests sur cette variable, avant de lancer la requete tu peux déja faire :

echo $_GET["element"]; 


sinon pour tester si cette variable existe et n'est pas vide tu peux faire cela :

if (!empty($_GET["element"]))
             echo " ok";
        else 
             echo " la variable n'existe pas";

ok , c'est presque bon. Un dernier point comment fait-on pour recuperer le resultat de la requête ?

Je fais pour l'instant comme ca :

fonction php :

$resultat = mysql_query("SELECT element FROM table WHERE element='".$_GET["element"]."'");
echo mysql_fetch_object($resultat)->Id;


Où Id est un des champs de ma table. J'ai mis echo pour renvoyer l'élement, puis je le recupère de cette facon dans ma fonction ajax:

document.getElementById('divSection2').innerHTML = xhr.responseText


Est ce la bonne méthode ?
cela dépend si la requête est susceptible de te fournir plusieurs résultats !
par précaution , s'il y en a plusieurs tu peux faire cela :


$resultat = mysql_query("SELECT element FROM table WHERE element='".$_GET["element"]."'");

while($donnees = mysql_fetch_object($resultat))
{
echo $donnees->Id;
}


si tu n'as qu'un résultat, alors la façon dont tu fais est bonne pour ma part
J'avance doucement mais surement.. j'arrive a afficher mon resultat en faisant une requete ecrit en dur (j'inscris moi meme la condition WHERE = un id se trouvant dans la table) . Par contre quand je mets la condition .. WHERE $_GET['element'] je ne recupere pas de valeur. Je n'ai apparemment pas de valeur pour $_GET['element'] (j'ai fais une verification en faisant un echo.

echo "<input type='text' name='element' value='".$_GET["element"]."'>";


Mon code HTML de ma page est le suivant :

    <FORM  METHOD='GET' ACTION='index.php' NAME='Text'>

	<?php
	  // affichage de mon fomulaire sous forme d'une tableau	
               echo $tableGeneral->tableauHTML();
	?>
	<div id="divelement"></div> // recuperation de la valeur de l'id dans l'input (se trouvant dans le div) au passge du curseur sur les elements
	<div id="divSection2"></div>  // affichage du resultat de la requete dans un input se trouvant dans le div
	</FORM>


En fait je me pose la question suivante, quand je balade mon curseur sur l'element et que la valeur de l'input est mise a jour, est ce que $_get['element '] est bien passé au serveur ? Je pense que le probleme est là...