IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[DOM] Interroger en temp réel mysql


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    829
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 829
    Par défaut [DOM] Interroger en temp réel mysql
    Bonjour à tous,

    Je voudrait savoir si c'est possible en temps réel d'interroger ma base mysql et d'afficher les informations récolter sur ma page web.

    En fait la personne arrive sur la page web et rentre le code client et je voudrait qu'en javascript il interroge ma base (mysql)en temps réel et récupérer les informations et les affiches dans ma page web (nom prénom numéros etc...).

    Je recherche un exemple un tuto pour m'aiguiller sur la bonne voix.

    Merci d'avance

    guigui69

  2. #2
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    C'est tout à fait possible et on appelle ca l'Ajax ^^

    Ya pas mal de tutoriels sur le site que tu peux consulter pour commencer, par exemple celui la ou celui la

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    829
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 829
    Par défaut
    Merci pour ces exemples.

    est quelqu'un aurait deja réaliser ceci et me donner une piste.

    Merci

    guigui69

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    Citation Envoyé par guigui69 Voir le message
    Merci pour ces exemples.

    est quelqu'un aurait deja réaliser ceci et me donner une piste.
    DoubleU vient de t'en donner 2.

    Y a qu'à suivre les liens

    A+

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    le tuto de siddh est très abordable ...

    en plus ce que tu cherches à faire est moins complexe.

    il te suffit d'ouvrir une insatnce d'axaj et de la faire pointer sur une page php qui fera la requete.
    cette page de traitement est indentique à une page de traitement de formulaire
    il suffit juste qu'elle retourne le resultat de la requete sous forme de texte
    voire utiliser un séparateur dans le texte si tu veux ensuite splitter les infos en javascript ...
    Coté javascript tu récupères le responseText..
    que tu splitte ou non ... et ensuite tu affiches les infos dasn un value ou un innerHMLT ....

    Voilà c'est tout
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    829
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 829
    Par défaut
    Merci

    Je vient te commencer a adapter le code pour ma page

    Page web
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    <html>
    	<head>
    		<title></title>
    		<script type='text/javascript'>
     
    			function getXhr(){
                                    var xhr = null; 
    				if(window.XMLHttpRequest) // Firefox et autres
    				   xhr = new XMLHttpRequest(); 
    				else if(window.ActiveXObject){ // Internet Explorer 
    				   try {
    			                xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			            } catch (e) {
    			                xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			            }
    				}
    				else { // XMLHttpRequest non supporté par le navigateur 
    				   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    				   xhr = false; 
    				} 
                                    return xhr;
    			}
     
    			/**
    			* Méthode qui sera appelée sur le click du bouton
    			*/
    			function go(){
    				var xhr = getXhr();
    				// On défini ce qu'on va faire quand on aura la réponse
    				xhr.onreadystatechange = function(){
    					// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    					if(xhr.readyState == 4 && xhr.status == 200){
    						leselect = xhr.responseText;
    						// On se sert de innerHTML pour rajouter les options a la liste
    						document.getElementById('information').innerHTML = leselect;
    					}
    				}
     
    				// Ici on va voir comment faire du post
    				xhr.open("POST","ajax.php",true);
    				// ne pas oublier ça pour le post
    				xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    				// ne pas oublier de poster les arguments
    				// ici, l'id de l'auteur
    				idauteur = document.getElementById('code_client').value;
    				xhr.send(idauteur);
    			}
    		</script>
    	</head>
    	<body>
    <input type="text" name="code_client" id="code_client" value="" maxlength="11" onKeyUp=go()></td>
     
     
    <div id='information' style='display:inline'>
    ICI la réponse:
    </div>
    <?php
    print_r($_POST)
    ?>
    	</body>
    </html>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    <?php
            
            if(isset($_POST["idauteur"])){
                    mysql_connect("localhost","root","*****");
                    mysql_select_db("qualite");
                    $res = mysql_query("SELECT nom_client, tel_client, fax_client, contact_client FROM client WHERE code_client=".$_POST["idauteur"]." ORDER BY nom_client");
                    while($row = mysql_fetch_assoc($res)){
                    ?>
    		ENCORE UN TEST
    <input type="text" name="nom_client" id="nom_client" value="<?echo $row["nom_client"];?>" maxlength="32"></td>
    <input type="text" name="contact_client" id= "contact_client"value="<?echo $row["contact_client"];?>" maxlength="32"></td>
    <input type="text" name="tel_client" id ="tel_client"value="<?echo $row["tel_client"];?>" maxlength="32"></td>
    <input type="text" name="fax_client" id="fax_client" value="<?echo $row["faxs_client"];?>" maxlength="32"></td>
    				<?php
                                    }
            }
     
    ?>
    Pourriez vous me dire si j'ai compris: (#1#)

    La personne tape le code client en question dans le champ input, après avoir taper le code ça appelle la fonction go(). En premier il regarde si notre navigateur est compatible si oui il configurer ,puis

    xhr.onreadystatechange... Je n'ai pas compris?? si quelqu'un pourrait m'éclairer?

    après on stocks les réponses dans un format text si toutes les données sont envoyées et que le serveur est ok.... Et après on insérer les données stocker dans la page web dans l'ID "information"

    On ouvre la connexion avec le serveur , avec la méthode "post", la page.
    On assigne un header pour que le serveur l'interprète correctement.
    Et en dernier on récupérer la valeur du code client qu'on rentre dans idauteur et on l'envoie avec xlr.send(idauteur)

    Que me manque-t-il- pour que mes champs s'affiche avec les informations de ma base?

    Car actuellement quand je tape le numéros d'un client les champs n'apparaissent pas ( par contre le "ICI la réponse" disparait).

    Quel sont mes erreurs?
    Pourrait-on mettre un certain temps (une pause) avant d'aller d'effectuer la fonction?


    Merci d'avance pour votre aide

    guigui69

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    829
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 829
    Par défaut
    Je pense avoir trouver mon erreur, mais j'ai encore quelque question

    voici mon code:
    ajax.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    <?php
            
            if(isset($_POST["idauteur"])){
                    mysql_connect("localhost","root","*******");
                    mysql_select_db("qualite");
                    $test= $_POST["idauteur"];
                    $res = mysql_query("SELECT nom_client, tel_client, fax_client, contact_client FROM client WHERE code_client='$test' ORDER BY nom_client");
                    while($row = mysql_fetch_assoc($res)){
                    ?>
    		<br>
    		ENCORE UN TEST
    <input type="text" name="nom_client" id="nom_client" value="<?echo $row["nom_client"];?>" maxlength="32"></td>
    <input type="text" name="contact_client" id= "contact_client"value="<?echo $row["contact_client"];?>" maxlength="32"></td>
    <input type="text" name="tel_client" id ="tel_client"value="<?echo $row["tel_client"];?>" maxlength="32"></td>
    <input type="text" name="fax_client" id="fax_client" value="<?echo $row["faxs_client"];?>" maxlength="32"></td>
    <br>			
    			<?php
                                    }
            }
     
    ?>
    mapage.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    <html>
    	<head>
    		<title></title>
    		<script type='text/javascript'>
     
    			function getXhr(){
                                    var xhr = null; 
    				if(window.XMLHttpRequest) // Firefox et autres
    				   xhr = new XMLHttpRequest(); 
    				else if(window.ActiveXObject){ // Internet Explorer 
    				   try {
    			                xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			            } catch (e) {
    			                xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			            }
    				}
    				else { // XMLHttpRequest non supporté par le navigateur 
    				   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    				   xhr = false; 
    				} 
                                    return xhr;
    			}
     
    			/**
    			* Méthode qui sera appelée sur le click du bouton
    			*/
    			function go(){
    				var xhr = getXhr();
    				// On défini ce qu'on va faire quand on aura la réponse
    				xhr.onreadystatechange = function(){
    					// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    					if(xhr.readyState == 4 && xhr.status == 200){
    						leselect = xhr.responseText;
    						// On se sert de innerHTML pour rajouter les options a la liste
    						document.getElementById('information').innerHTML = leselect;
     
    					}
    				}
     
    				// Ici on va voir comment faire du post
    				xhr.open("POST","ajax.php",true);
    				// ne pas oublier ça pour le post
    				xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    				// ne pas oublier de poster les arguments
    				// ici, l'id de l'auteur
    				idauteur = document.getElementById('code_client').value;
    				alert(idauteur);
    				xhr.send("idauteur="+idauteur);
    			}
    		</script>
    	</head>
    	<body>
    <input type="text" name="code_client" id="code_client" value="" maxlength="11" onKeyUp="go()"></td>
     
     
    <div id='information' style='display:inline'>
    ICI la réponse:
    </div>
    <?php
    print_r($_POST)
    ?>
    	</body>
    </html>
    Pour moi sa a l'air de marcher, mais pourriez-vous regarder mon code pour voir si il y a des erreurs a eviter.

    J'ai remarquer aussi qu'il envoie 2 requêtes POST, je pense c'est le fait que j'ai mis onkeyup. Peut-on mettre en place une pause de 1 ou 2 secondes (pour être sur que la personne a taper est taper le code client entier)?

    Merci d'avance

    guigui69

  8. #8
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par guigui69 Voir le message
    J'ai remarquer aussi qu'il envoie 2 requêtes POST, je pense c'est le fait que j'ai mis onkeyup. Peut-on mettre en place une pause de 1 ou 2 secondes (pour être sur que la personne a taper est taper le code client entier)?
    Mieux vaudrait dans ce cas déclencher ton appel sur onchange (ou onkeyup mais en testant qu'un nombre minimum de caractères soient présents).

    Sinon, pour modifier un select via Ajax, mieux vaut utiliser le DOM.
    Un exemple
    Ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var objListe=document.getElementById('id_liste');
    	Ajout = new Option("text", "value");
    	objListe.options[objListe.length]=Ajout;
    A+

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 63
    Par défaut
    Bon , pas mal de gens l'ont dit au dessus , il faut que tu utilises l'ajax.

    Je te donne un code d'exemple qui marche seulement sous firefox pour recupérer le contenu d'une des pages de ton site (seulement ton site , si tu fais ca vers une autre page d'un autre site cela ne marchera pas ) et l'afficher sur ta page , tout en "temp réel".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    var req = new XMLHttpRequest; //création de la requête
    var url = "mapage.php"; // on paramètre la variable de l url
     
    req.open("GET",url,true); //get : méthode utilisée , true : requête asynchrome ou pas
     
    req.onreadystatechange = function ()
    { document.getElementById('monid').innerHTML = req.reponseText }
     
    // on fait que quand le ready state change (4 est quand la requête est finie et réussie) , on réalise une fonction qui change l'innerhtml de monid par le contenu HTML de la page affichée lors de la requête GET
     
    req.send(null); // ce qu'on envoie a la page , si on utilise la méthode get on met null , si la méthode est post on met les données sous forme de : "data1=lala&data2=lolol&data3=lili"

    voilà j'ai mis des commentaires pour bien expliquer clairement

  10. #10
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par KawaJVC Voir le message
    Bon , pas mal de gens l'ont dit au dessus , il faut que tu utilises l'ajax.

    Je te donne un code d'exemple qui marche seulement sous firefox pour recupérer le contenu d'une des pages de ton site (seulement ton site , si tu fais ca vers une autre page d'un autre site cela ne marchera pas ) et l'afficher sur ta page , tout en "temp réel".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    var req = new XMLHttpRequest; //création de la requête
    var url = "mapage.php"; // on paramètre la variable de l url
     
    req.open("GET",url,true); //get : méthode utilisée , true : requête asynchrome ou pas
     
    req.onreadystatechange = function ()
    { document.getElementById('monid').innerHTML = req.reponseText }
     
    // on fait que quand le ready state change (4 est quand la requête est finie et réussie) , on réalise une fonction qui change l'innerhtml de monid par le contenu HTML de la page affichée lors de la requête GET
     
    req.send(null); // ce qu'on envoie a la page , si on utilise la méthode get on met null , si la méthode est post on met les données sous forme de : "data1=lala&data2=lolol&data3=lili"

    voilà j'ai mis des commentaires pour bien expliquer clairement
    Ca on avait déjà
    En plus détaillé, faut suivre les liens

    A+

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    829
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 829
    Par défaut
    Merci pour vos réponses.

    Le code que j'ai rajouté plus haut n'est pas de l'ajax??

    (Le site doit marcher sous internet explorer ou firefox).

    guigui69

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    829
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 829
    Par défaut
    Pour l'envoie de la fonction, les personnes peuvent avoir comme code 1 ou 123456 donc je peut pas faire en fonction du caractère.

    Est-il possible de faire appel a la fonction au bout de x secondes?

    Ou bien en fonction du dernier caractère? ( elle tape le dernier caractère si une seconde après elle na pas rentré de nouveau caractère cela signifie que c'est le code définitif)

    Merci d'avance

    guigui69

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/03/2013, 10h50
  2. observer le dom en temps réel
    Par CaviarNAS dans le forum jQuery
    Réponses: 10
    Dernier message: 19/11/2009, 12h05
  3. Intéraction en temps réel avec PHP/MySQL?
    Par Amallric dans le forum Débuter
    Réponses: 7
    Dernier message: 17/07/2008, 13h33
  4. Réponses: 2
    Dernier message: 13/10/2007, 11h36
  5. [AJAX] Comment faire => resultat de mysql en affichage temps réel
    Par noellepere dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/09/2007, 09h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo