Partage
  • Partager sur Facebook
  • Partager sur Twitter

executer une requete toutes les secondes

Sujet résolu
    16 juillet 2012 à 11:37:47

    Bonjour à tous,


    Je suis actuellement en stage pour mon IUT Informatique, et la je sèche... C'est pourquoi j'aurais besoin d'un petit coup de main svp :)

    Ma problématique :

    Je dois réaliser un site web qui permettra la supervision d'un automate programmable Entrée/Sortie.
    Il gère 2 sondes de température et 5 bouton on/off.

    Je travaille avec EasyPHP sur windows 7.

    L'automate possède des variables (sondes températures (int) et entrées TOR (boolean))
    J'arrive à accdéder à ces variables grace à un fichier PHP, exécuté coté serveur donc, et à les stocker dans une base de données MySQL.


    recup_variables.php :

    <?php
    
    ////////// PARAMS
    // $url = url de la page souhaitée
    $url="http://192.168.5.234/ReadGV";
     
    // $valeurs contenant les variables qui seront envoyées par POST au serveur
    $valeurs = array("temp1;temp2;chauffe;ventilation;sonde1;sonde2;inter;defaut");
    
    
    // Tableau contenant les options de téléchargement
    $options=array(
          CURLOPT_URL            => $url,       // Url cible (l'url de la page que vous voulez télécharger)
          CURLOPT_RETURNTRANSFER => true,       // Retourner le contenu téléchargé dans une chaine (au lieu de l'afficher directement)
          CURLOPT_HEADER         => false,      // Ne pas inclure l'entête de réponse du serveur dans la chaine retournée
          CURLOPT_FAILONERROR    => true,       // Gestion des codes d'erreur HTTP supérieurs ou égaux à 400
              CURLOPT_CUSTOMREQUEST         => "POST",                // effectuer un "POST" sans les parametres "POST" (&)
              CURLOPT_POSTFIELDS     => "temp1;temp2;chauffe;ventilation;sonde1;sonde2;inter;defaut"        
    );
    
    ////////// MAIN
    // Création d'un nouvelle ressource cURL
    $CURL=curl_init();
    // Erreur suffisante pour justifier un die()
                    if(empty($CURL)){
                            die("ERREUR curl_init : Il semble que cURL ne soit pas disponible.");
                    }
    
          // Configuration des options de téléchargement
          curl_setopt_array($CURL,$options);
     
          // Exécution de la requête
          $content=curl_exec($CURL);            // Le contenu téléchargé est enregistré dans la variable $content
      
          // Si il s'est produit une erreur lors du téléchargement
          if(curl_errno($CURL)){
                // Le message d'erreur correspondant est affiché
                echo "ERREUR curl_exec : ".curl_error($CURL);
          }
     
    // Fermeture de la session cURL
    curl_close($CURL);
    
    
    // Split de la chaine des variables en les mettant dans des $donnee[x]
    $donnee=explode(";",$content); //chaines séparées par un point virgule
    
    /*                                                        Liste des variables séparées :                                
                                                                            $donnee[0] = temp1
                                                                            $donnee[1] = temp2
                                                                            $donnee[2] = chauffe
                                                                            $donnee[3] = ventilation
                                                                            $donnee[4] = sonde1
                                                                            $donnee[5] = sonde2
                                                                            $donnee[6] = inter
                                                                            $donnee[7] = defaut
    */
    
    
    //************ Insertion des éléments dans la base de données ************//
    
    // on se connecte à MySQL
    $db = mysql_connect('localhost', 'root', '');
    
    // on sélectionne la base
    mysql_select_db('aio');
    
    // on crée la requête SQL
    $sql=("UPDATE `variables` SET `temp1`='$donnee[0]', `temp2`='$donnee[1]', `chauffe`='$donnee[2]', `ventilation`='$donnee[3]', `sonde1`='$donnee[4]', `sonde2`='$donnee[5]', `inter`='$donnee[6]', `defaut`='$donnee[7]' WHERE `id` = '1'");
    
    // on envoie la requête + affichage erreur si pb
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
    
            
    // fermeture de la connexion à mysql
    mysql_close();
    //************ Insertion des éléments dans la base de données ************//
    
    
    
    ?>
    





    Jusque là tout vas bien, les valeurs s'affichent bien dans ma page de test :


    (...)
    
            require_once("recup_variables.php");
    
    (...)
    
    
    
            <td>
                    <?php                                        
                    // on se connecte à MySQL
                    $db = mysql_connect('localhost', 'root', '');
                    // on sélectionne la base
                    mysql_select_db('aio');
    
                    // on crée la requête SQL
                    $sql=("SELECT `temp1` FROM `variables` WHERE `id` = '1'");
    
                    // on envoie la requête + affichage erreur si pb
                    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
                    
                    $result = mysql_result ($req,0)/10; 
    
                    echo $result;
                    
                    // fermeture de la connexion à mysql
                    mysql_close();
                    ?>
                    °C
            </td>
    


    Le problème c'est que les valeurs doivent être misent à jour toute les seconde...
    J'arrive à le faire en rafraichissant ma page grace à setTimeout en Javascript, mais c'est moche !

    Je ne doit pas bien m'y prendre, car je pense qu'il ne faut pas que j'appelle mon fichier "recup_variables.php" dans le HTML.


    Mes questions

    - Existe-t-il une technique qui permette d'executer une requete SQL toutes les seconde ? (à savoir l'update dans "recup_variables.php", et le "select" dans le code HTML) ?

    - Dois-je séparer mon fichier "recup_variables" en 2 parties, une pour récupérer et l'autre pour inserer dans la bas ?

    - Ou avez-vous une autre idée à me soumettre ? ^^.


    Si vous avez besoin de précision n'hésitez pas car résumer tout ce projet en quelques lignes est difficile quand on a le nez dedans depuis 2 semaines !!
    Merci d'avoir pris le temps de me lire.

    A bientot,
    --
    Vincent
    • Partager sur Facebook
    • Partager sur Twitter
      16 juillet 2012 à 11:46:45

      regarde du côté de la techno AJAX, ton problème correspond tout à fait à la réponse que te donne AJAX: refresh
      • Partager sur Facebook
      • Partager sur Twitter
        16 juillet 2012 à 11:53:59

        Salut, :)

        Tu fais juste un refresh en html :
        <meta http-equiv="refresh" content="1;URL=ta-page-a-rafraichir.php"
        

        • Partager sur Facebook
        • Partager sur Twitter
          16 juillet 2012 à 11:58:23

          Salut,

          Christouphe, n'y a-t-il pas plus simple que de l'AJAX ?

          Mika0007, ça ne marche pas, ça me refresh la page entière.

          Sinon faudrait-il que je crée un script qui appel en boucle mon fichier "recup_variable.php" ?
          • Partager sur Facebook
          • Partager sur Twitter
            16 juillet 2012 à 11:59:17

            il le fait déjà en JS, donc à mon avis, il ne veux pas rafraichir TOUTE la page.

            EDIT, répondu après toi:

            L'avantage d'AJAX c'est que tu peux rafraichir la/les DIV que tu veux dans ta page. Sinon il utilise aussi le timout de JS, pas d'autre moyen, mais AJAX te permets d'envoyer une requête SQL au serveur.
            • Partager sur Facebook
            • Partager sur Twitter
              16 juillet 2012 à 13:56:32

              Merci Christouphe, en fait j'avais déjà testé cela avec comme code :

              <script>
              	function refresh_div(){
              		var xhr_object = null;
              		if(window.XMLHttpRequest){ // Firefox
              			xhr_object = new XMLHttpRequest();
              		}
              		else if(window.ActiveXObject){ // Internet Explorer
              			xhr_object = new ActiveXObject('Microsoft.XMLHTTP');
              		}
              		var method = 'POST';
              		var filename = 'test.php';
              		xhr_object.open(method, filename, true);
              		xhr_object.onreadystatechange = function(){
              			if(xhr_object.readyState == 4){
              			var tmp = xhr_object.responseText;
              			document.getElementById('to_refresh').innerHTML = tmp;
              			}
              		}
              		xhr_object.send(null);
              		setTimeout('refresh_div()', 1000);
              	}
              </script>
              


              Ca avait l'air de fonctionner au niveau du rafraichissement des div concernées, mais il y avait un pb d'affichage en double de l'entete, pieds...etc. Comme si ca me rechargeait la div complète dans ma page. Je ne sais pas si je me suis bien fait comprendre...^^.

              En gros je pense que c'est l'appel du fichier à la ligne 11 : var filename = 'test.php'; qui ne vas pas car ce script est déjà dans "test.php"
              Mais je ne vois pas comment faire autrement....
              Désolé de mon niveau très bas, ça ne doit pas être très compliqué..

              Merci d'avance
              • Partager sur Facebook
              • Partager sur Twitter
                16 juillet 2012 à 14:04:47

                voilà une partie des scripts que j'utilise:

                /*
                 * Creation d'un objet XmlHttpRequest,
                 * appele par les autres fonctions.
                 */
                function getXMLHttpRequest() {
                	var xhr = null;
                	
                	if (window.XMLHttpRequest || window.ActiveXObject) {
                		if (window.ActiveXObject) {
                			try {
                				xhr = new ActiveXObject("Msxml2.XMLHTTP");
                			} catch(e) {
                				xhr = new ActiveXObject("Microsoft.XMLHTTP");
                			}
                		} else {
                			xhr = new XMLHttpRequest();
                		}
                	} else {
                		alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
                		return null;
                	}
                	
                	return xhr;
                }
                
                /**
                 * Fonction permettant d'afficher les options de deplacement a  partir de l'ID de la case
                 */
                function optionsDeplacement(idCase) {
                    var xhr = getXMLHttpRequest();
                
                	if (xhr && xhr.readyState != 0) {
                		xhr.abort();
                		delete xhr;
                	}
                
                	xhr.onreadystatechange = function() {
                		if (xhr.readyState == 4 && xhr.status == 200){
                			document.getElementById('options').innerHTML = xhr.responseText;
                		} else if (xhr.readyState == 3){
                			document.getElementById('options').innerHTML = "<div style=\"text-align: center;\">Chargement en cours...</div>";
                		}
                	}
                
                	xhr.open("POST", "ajax/optionsdeplacement.ajax.php", true);
                	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=iso-8859-1");
                	xhr.send("idcase="+idCase);
                }
                


                Par contre, tu ne dois pas avoir de texte dans le DIV au départ:

                <div id="options" style="position: absolute; display: inline;border: 1px solid red;z-index: 100;top: 100px;left: 710px; width: 400px;">
                
                </div>
                
                • Partager sur Facebook
                • Partager sur Twitter
                  16 juillet 2012 à 14:08:04

                  Salut Vic38 ;) ,

                  Je rejoins les autres en te confirmant d'utiliser AJAX, et même directement Jquery.
                  Cela va te permettre de rendre ce rafraichissement plus fluide et moins contraignant pour l'utilisateur.



                  • Partager sur Facebook
                  • Partager sur Twitter
                    16 juillet 2012 à 14:24:35

                    Merci pour vos réponses, mais je n'y connais vraiment pas grand chose.

                    Christouphe, ton script ressemble vaguement au miens en amélioré, j'essaye de l'utiliser, mais où met tu ce script ?
                    J'ai mon fichier test.php dans lequel je veux afficher la valeur (de température par exemple), donc je faisais dans un tableau :

                    (...)
                    
                            require_once("recup_variables.php");
                    
                    (...)
                    
                    
                    
                            <td>
                                    <?php                                        
                                    // on se connecte à MySQL
                                    $db = mysql_connect('localhost', 'root', '');
                                    // on sélectionne la base
                                    mysql_select_db('aio');
                    
                                    // on crée la requête SQL
                                    $sql=("SELECT `temp1` FROM `variables` WHERE `id` = '1'");
                    
                                    // on envoie la requête + affichage erreur si pb
                                    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
                                    
                                    $result = mysql_result ($req,0)/10; 
                    
                                    echo $result;
                                    
                                    // fermeture de la connexion à mysql
                                    mysql_close();
                                    ?>
                                    °C
                            </td>
                    


                    Ce qui me donne par exemple :
                    25,7 °C



                    Ce qui marche, mais il faut rafraichir la page.
                    C'est la qu'entre en jeu AJAX, mais je ne vois pas où mettre ton script Christouphe.. J'ai essayé dans mon fichier test.php mais ça ne donne rien...
                    Je ne vois pas non plus à quoi servent ces 3 dernières lignes :

                    xhr.open("POST", "ajax/optionsdeplacement.ajax.php", true);
                    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=iso-8859-1");
                    xhr.send("idcase="+idCase);

                    désolé, mais si quelqu'un a un exemple je suis preneur.
                    Et en ce qui concerne JQuery, déjà qu'avec l'AJAX je pars de zero, n'en parlons pas ^^ !


                    • Partager sur Facebook
                    • Partager sur Twitter
                      16 juillet 2012 à 14:31:37

                      je l'inclue avec la balise <script> </script>. Il est dans un script JS à part.

                      Puis après (et c'est important que ce soit après à cause du DOM), donc après la création de ton DIV, tu appelles dans ta page l'affichage via la fonction JS.


                      xhr.open("POST", "chemin/vers/ton/fichier/affichageDiv1.php", true); => permet de dire quel fichier tu vas ouvrir pour la DIV1
                      xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=iso-8859-1"); => le charset
                      xhr.send("idcase="+idCase); => les paramètres passés en POST
                      • Partager sur Facebook
                      • Partager sur Twitter
                        16 juillet 2012 à 14:34:28

                        En gros,

                        Ces trois dernières lignes représentent ta requête:
                        xhr.open("POST", "ajax/optionsdeplacement.ajax.php", true);
                        

                        indique quelle page va être appelé (recup_variables.php dans ton cas), la méthode d'envoi de la requete (POST OU GET) et enfin l'activation de l'Asynchrone ou non (true ou false).

                        xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=iso-8859-1");
                        

                        indique l’entête de la requête, notamment le "charset".

                        xhr.send("idcase="+idCase);
                        

                        et enfin la variable si tu dois en envoyer une.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          16 juillet 2012 à 14:43:07

                          Je m'incruste pour poser une question que pourrait sans doute intéresser l'auteur.
                          Qu'est ce que l'asynchrone ? Que change l'activation ou la non-activation ?
                          • Partager sur Facebook
                          • Partager sur Twitter
                            16 juillet 2012 à 14:45:42

                            @Zazou: tu es "mimi" dans ton bikini ;)
                            • Partager sur Facebook
                            • Partager sur Twitter
                              16 juillet 2012 à 14:55:25

                              Salut zazou ;) ,

                              SI je ne me trompe pas, l'activation de cette option te permet d'effectuer ou non une autre action en même temps.
                              Donc soit le navigateur reste bloqué le temps que la requête soit fini soit la requête s'effectue en tâche de fond...
                              ...en gros :-°
                              • Partager sur Facebook
                              • Partager sur Twitter
                                16 juillet 2012 à 15:05:32

                                Il y a un header qui le permet, je l'ai sous le bout de la langue...
                                je crois c'est un truc du genre
                                header('refresh:'1');
                                

                                c'est un truc dans le genre mais c'est pas ça...

                                EDIT : j'ai trouvé ça sur le net :
                                $delai=1; 
                                $url='http://mondomaine.com/';
                                header("Refresh: $delai;url=$url");
                                

                                En fait c'est similaire au meta refresh en html, sauf qu'on peut y introduire des variables facilement...
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  16 juillet 2012 à 15:08:20

                                  Arf je ne comprends plus rien et je crois que je vais péter l'ordi !!

                                  Quand j'intègre le script :

                                  function refresh_div(){
                                  		var xhr_object = null;
                                  		if(window.XMLHttpRequest){ // Firefox
                                  			xhr_object = new XMLHttpRequest();
                                  		}
                                  		else if(window.ActiveXObject){ // Internet Explorer
                                  			xhr_object = new ActiveXObject('Microsoft.XMLHTTP');
                                  		}
                                  		var method = 'POST';
                                  		var filename = 'test.php';
                                  		xhr_object.open(method, filename, true);
                                  		xhr_object.onreadystatechange = function(){
                                  			if(xhr_object.readyState == 4){
                                  			var tmp = xhr_object.responseText;
                                  			document.getElementById('to_refresh').innerHTML = tmp;
                                  			}
                                  		}
                                  		xhr_object.send(null);
                                  		setTimeout('refresh_div()', 1000);
                                  	}
                                  


                                  Ca "marche", enfin le rafraichissement se fait, mais il y a un vielle affichage en double ou triple du menu entete, pieds...

                                  et quand je le met dans un fichier .js à coté, ça ne marche pas !

                                  Sinon voici la tete de mon fichier test.php (fichier d'affichage final client) :

                                  <!DOCTYPE html>
                                  <html>
                                  	<head>
                                  		<meta name="description" content="Supervision Etuve" />
                                  		<meta name="keywords" content="etuve, supervision, aim" />
                                  		<meta name="author" content="Vincent" />
                                  		<meta name="revised" content="Vincent, 28/06/2012" />
                                  		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
                                  		<LINK rel=stylesheet type="text/css" href="style_test.css">
                                  		<script type="text/javascript" src="jquery.js"></script>
                                  		<script type="text/javascript" src="temp.js"></script>
                                  
                                  		<script type=text/javascript>
                                  	
                                  		function visibilite(thingId){
                                  			var targetElement;
                                  			targetElement = document.getElementById(thingId) ;
                                  			if (targetElement.style.display == "none"){
                                  			targetElement.style.display = "" ;
                                  			}
                                  			else {
                                  			targetElement.style.display = "none" ;
                                  			}
                                  		}
                                  
                                  		</script>
                                  		 
                                  		 
                                  	 </head>
                                  	 
                                  	 
                                  	<?php
                                  	require_once("menu.inc.php");
                                  	require_once("recup_variables.php");
                                  	?>
                                  	
                                  	
                                  	<body>
                                  		<div id="corps_homepage">
                                  			<h1>Page test affichage test des variables</h1> 
                                  		
                                  			<div>
                                  				<h1> Etuve numero 1 </h1>
                                  
                                  				<fieldset>
                                  					<legend>Températures</legend>
                                  					<table border="0">
                                  					  <tr>
                                  						<th>Position</th>
                                  						<th>Température</th>
                                  					  </tr>
                                  					  <tr>
                                  						<td>haut</td>
                                  						<td>
                                  							<?php
                                  							// on se connecte à MySQL
                                  							$db = mysql_connect('localhost', 'root', '');
                                  							// on sélectionne la base
                                  							mysql_select_db('aio');
                                  
                                  							// on crée la requête SQL
                                  							$sql=("SELECT `temp1` FROM `variables` WHERE `id` = '1'");
                                  
                                  							// on envoie la requête + affichage erreur si pb
                                  							$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
                                  							
                                  							$result = mysql_result ($req,0)/10; 
                                  
                                  							echo $result;
                                  							
                                  							// fermeture de la connexion à mysql
                                  							mysql_close();
                                  							?>
                                  							°C
                                  						</td>
                                  					  </tr>
                                  					  <tr>
                                  						<td>bas</td>
                                  						<td>
                                  							<?php					
                                  							// on se connecte à MySQL
                                  							$db = mysql_connect('localhost', 'root', '');
                                  							// on sélectionne la base
                                  							mysql_select_db('aio');
                                  
                                  							// on crée la requête SQL
                                  							$sql=("SELECT `temp2` FROM `variables` WHERE `id` = '1'");
                                  
                                  							// on envoie la requête + affichage erreur si pb
                                  							$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
                                  							
                                  							$result = mysql_result ($req,0)/10; 
                                  
                                  							echo $result;
                                  							
                                  							// fermeture de la connexion à mysql
                                  							mysql_close();
                                  							?>
                                  							°C
                                  						</td>
                                  					  </tr>
                                  					</table>
                                  				</fieldset>
                                  	
                                  			</div>
                                  		</div>
                                  		
                                  	</body>
                                  	
                                  	<?php
                                  	require_once("pied.inc.php");
                                  	?>
                                  </html>
                                  


                                  on m'a dit qu'il fallait aussi supprimer : require_once("recup_variables.php"); et l'appeler par l'intermédiaire d'un fichier .js
                                  mais je ne vois pas pourquoi ni comment...

                                  merci Nightmare06 mais cette methode actualise toute la page et non d'une partie
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    16 juillet 2012 à 15:13:31

                                    Citation : Nightmare06

                                    Il y a un header qui le permet, je l'ai sous le bout de la langue...
                                    je crois c'est un truc du genre
                                    header('refresh:'1');
                                    

                                    c'est un truc dans le genre mais c'est pas ça...

                                    EDIT : j'ai trouvé ça sur le net :
                                    $delai=1; 
                                    $url='http://mondomaine.com/';
                                    header("Refresh: $delai;url=$url");
                                    

                                    En fait c'est similaire au meta refresh en html, sauf qu'on peut y introduire des variables facilement...


                                    Nghtmare06, il ne veut pas recharger la page toutes les secondes, il veut juste qu'une donnée de sa page se mettre à jour toutes les secondes.
                                    ajax est donc tout indiqué ici.


                                    @christouphe, bah j'essaie de me convaincre que c'est l'été...

                                    @bobyrock, je vois ce que tu as voulu dire, j'ai bien compris et te remercie.
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      16 juillet 2012 à 15:17:34

                                      crée une condition if php avec du get.

                                      si le get existe => ne pas afficher le header et footer.

                                      sinon on affiche tout !

                                      dans ton js sur xhr.send("GET","tonurl?maget=oui");

                                      comme cela tu n’aura pas de problèmes du haut et bas si j'ais bien compris.

                                      Désoler si je suis hors sujet j'ais pas tout lu ^^.
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      Alwayscard.fr, les cartes de visites éternelles : Jamais obsolètes !
                                        16 juillet 2012 à 15:19:06

                                        Salut Nightmare06 ;) ,

                                        Oui ce code est possible mais il rafraichirait toute la page toute les secondes, sa va être indigeste à voir o_O .

                                        @Vic38,

                                        Oui, si tu décides d'utiliser AJAX, il va falloir supprimer ce "require_once" car c'est l'AJAX qui s'occupera de récupérer tes données toute les secondes.
                                        L'AJAX, tu as compris c'est du javascript, et toute les secondes il va se connecter à ton script "recup_variables.php" et attendre une réponse. Il va falloir que tu exploites cette réponse afin de remplir ou remplacer le contenu de ton div.
                                        Si tu n'as jamais fait de javascript ou que tu n'as JAMAIS pratiquer l'AJAX, dirige toi vers les différents tutoriel du site car c'est asseez particulier comme technologie.
                                        En lisant CE tutoriel, tu sera à l'aise en Asynchrone ;)
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          16 juillet 2012 à 15:33:53

                                          Merci AlwaysCard, je vais essayer mais je ne pense pas que ce soit ça.

                                          Merci Bobyrock,
                                          Je pense avoir saisi le problème :
                                          Dans mon fichier recup_variable.php (voir script dans 1er msg), j'ai ma requête d'update qui met à jour les éléments dans la bas de donnée.
                                          Et cela doit se faire toutes les secondes.
                                          Et justement comment faire ?

                                          Car dans ma première version ou je rafraichissais la page toutes les 1 secondes (ce qui était vraiment horrible), tout marchait bien.

                                          Mais justement, est-ce que la requête s’effectuait parce que toutes les secondes, ca rafraichissait entièrement ma page principale (test.php), et donc le "require_once( recup_variable.php)" qui rechargeais et relançais le fichier ?
                                          Parce que dans mon problème, il faudrait que toutes les secondes j'ai une requête qui mette à jour la base (coté serveur), et parallèlement, une requête qui vienne consulter la base (coté client).

                                          Je commence un peu à m'embrouiller...
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            16 juillet 2012 à 15:39:07

                                            C'est le code ajax qui s'occupe de faire appel au fichier toutes les secondes.
                                            Ton fichier lui ne fait que retourner les informations textuelles à afficher.
                                            ajax lui appelle le fichier toutes les 2ndes et met à jour la page.
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              16 juillet 2012 à 16:02:06

                                              J'ai pas suivi depuis le début.
                                              Mais quel est ton niveau en php et javascript?
                                              L'AJAX est une technologie pas forcément évidente à comprendre.
                                              Comme dit Zazou, ton fichier "recup_variables.php" fonctionne exactement pareil seulement au lieu de l'afficher en brut en php donc à chaque chargement de la page, tu le gère en javascript/AJAX, qui va s'occuper de récupérer les données.
                                              Et oui, tu afficheras le résultat non plus en php mais en javascript.
                                              Je t'aurais bien fait un schéma mais un peu compliqué au clavier :-°
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                16 juillet 2012 à 16:16:10

                                                Un petit schema qui je le pense, peut t'aider à comprendre le principe.

                                                Image utilisateur


                                                A savoir que dans le schéma, recup.php est totalement indépendante et doit le rester. La connexion à la base de donnée doit se faire dans recup.php
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  16 juillet 2012 à 16:24:56

                                                  Eheh,

                                                  En ce qui concerne mon niveau, je finis mon année spéciale informatique (IUT Info en 1 an car déjà titulaire d'un DUT, à savoir un TC qui ne me sert à rien ici :lol: )
                                                  Et comme c'est une formation accélérée, on a eu des cours en HTML, et un peu de PHP, mais rien en javascript... Et donc je galère depuis 2 semaines en essayant d'apprendre tant bien que mal...
                                                  Mais c'est la vie !

                                                  Je viens de discuter avec l'informaticien qui n'était pas dispo ce matin et m'a expliqué les grandes lignes avec un schéma en prime, et Bobyrock je crois que tu as cerné mon pb car il me semble que ce qu'il ma dit est proche de ce que tu me décris.

                                                  Il faut créer un fichier PHP : ReadData.php par exemple, qui va s'occuper de récupérer mes variables sur la base de données.
                                                  Je rajoute en javascript les affectations des variables dans mes div grace aux id et ça devrait le faire.

                                                  Ai-je bien interprété ?

                                                  Je vais tester et vous tiens au courant



                                                  edit : merci Zazou ça confirme en partie ce que je pensais ;)
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    16 juillet 2012 à 16:31:42

                                                    Oui, il faut tester dans tous les cas, même si tu fais des erreurs au début, tu cerneras mieux le domaine ;)
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      16 juillet 2012 à 16:36:08

                                                      Ca semble simple et logique comme schema ....

                                                      C'est vrais quand on sait pas ... ben on sait pas !

                                                      Sinon une autre piste aussi pour toi :

                                                      réactualise grace a l'ajax toute les 2 ou 3 secondes suffi le temps d'enregistrer les donnée dans le cerveau de l'utilisateur ... par contre crée un schell tout simple qui récupere les temperature de l'autre coté et les insert en bdd mysql sans php ou avec (avec execution grace au tache cron sou unix et donc pour toi je sait pas comment cela s'appel sous windows) comme ca php plus rapide a éxecuté et les temperatures seront actualise en bdd celon le serveur pas celon le cpu de l'user car js tire dessus ^^.

                                                      Enfin c'est juste mon avis
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                      Alwayscard.fr, les cartes de visites éternelles : Jamais obsolètes !
                                                        16 juillet 2012 à 16:38:19

                                                        Si tu as un peu de mal avec le Javascript et Ajax (comme moi :D) je te conseil vraiment d'utiliser XAjax ça te permettra d'utiliser du php il y a un très bon tutoriel ici : http://www.siteduzero.com/tutoriel-3-3 [...] et-xajax.html
                                                        Si tu n'a vraiment pas envie de lire tu peux prendre le code du Chat et essayer de bidouiller un peu
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          16 juillet 2012 à 17:03:22

                                                          Bonjour,

                                                          J'ai pas tout lu mais appelé un script comme sa toute les seconde sur le navigateur me parait etrange.

                                                          Ne faudrait-il pas plutot un script unix sur ton serveur qui appele la commande php ?
                                                          Une tache cron pourait lancer ce script
                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            16 juillet 2012 à 17:09:25

                                                            euh .. c'est ce que j'ais dit 2 message plus haut ^^

                                                            mais il est sous windows pour le serv easyphp
                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                            Alwayscard.fr, les cartes de visites éternelles : Jamais obsolètes !
                                                              16 juillet 2012 à 17:14:42

                                                              Merci pour vos réponses et pour xajax que je ne connaissais pas !

                                                              En fait Arnich et AlwaysCard vous avez raison, je pense que c'est mieux de faire un appel de recup_variable.php coté serveur avec un truc de type cron.

                                                              Du coté client, je vais faire un fichier ajax qui récupère les variables dans la BDD et les associent aux div voulues.
                                                              Ensuite je mettrais un include de mon fichier ajax, dans mon test.php pour rafraichir les div.

                                                              Ca pourrait marcher comme ça ?
                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              executer une requete toutes les secondes

                                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                              • Editeur
                                                              • Markdown