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

AJAX Discussion :

Lire un les lignes d'un fichier csv à intervalles réguliers


Sujet :

AJAX

  1. #1
    Membre éclairé Avatar de tigunn
    Homme Profil pro
    Développeur de bug
    Inscrit en
    Janvier 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de bug

    Informations forums :
    Inscription : Janvier 2003
    Messages : 608
    Points : 658
    Points
    658
    Par défaut Lire un les lignes d'un fichier csv à intervalles réguliers
    Bonjour,

    Je voudrais lire les lignes d'un fichier csv qui est mis à jour en continu ; en fait, c'est un fichier de détection de passage. Il contient donc un numéro d'identifiant de badge et une heure.
    Ensuite, il faudrait que je fasse une requête sql pour faire correspondre l'id du badge avec une personne réelle (nom, prénom et n° de téléphone portable).
    Enfin, j'enverrais un sms à cette personne.

    Bon, tout est fait ou bien avancé sauf la première partie.
    Les infos de détection doivent être stockées dans la bdd, comparées (cas des détections en doublon) ; les données de chaque personne doivent être récupérées ; un sms doit être envoyés.
    Des détections sont ajoutés constamment au fichier ; alors, parfois à la lecture, aucune ligne n'aura été ajoutée, et à d'autres moments, il pourrait y en avoir 100 de plus par exemple.
    Bref, pour faire tout cela je pensais utiliser AJAX et une fonction settimeout ou setinterval de javascript.
    Voilà les deux solutions essayées pour l'instant (ce sont des tests) :

    1/ Dans un fichier detections.php :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    //	affichage
    echo '<!-- Body -->
    <section id="content">
        <div class="content-wrap">
    		<div class="container clearfix">
    			<input type="button" value="'.$txt_btn_submit.'" onclick="lectureDetections()" />
    			<br/><br/>
    			<input type="button" value="'.$txt_btn_arret.'" onclick="stopLecture()" />
            </div>
        </div>
    </section>
    <!-- Body end -->';

    Dans le fichier fct_ajax.js inclus dans le précédent :
    Code javascript : 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
    <script type='text/JavaScript'>
     
    	var timeoutID;
     
    	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 supporte par le navigateur 
    		   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    		   xhr = false; 
    		} 
    		return xhr
    	}
     
     
     
    	/**
    	*
    	*
    	*/
    	function lectureDetections(id=0) {
     
    		var lecteur_xhr = getXhr();
    		// On defini ce qu on va faire quand on aura la reponse
    		lecteur_xhr.onreadystatechange = function(){
    			// On ne fait quelque chose que si on a tout recu et que le serveur est ok
    			if(lecteur_xhr.readyState == 4 && lecteur_xhr.status == 200){
     
    				resultat = lecteur_xhr.responseText;
    				alert(resultat);
    				timeoutID = window.setTimeOut(lectureDetections(resultat), 5000);			
    			}
     
    		}
     
    		lecteur_xhr.open("POST","http://localhost/tests/compteur.php",true);
    		lecteur_xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
     
    		lecteur_xhr.send("id="+id);
     
    	}
     
    	function stopLecture() {
     
    		window.clearTimeOut(timeoutID);
     
    	}
     
    </script>

    Affiche le compteur 1 puis 2... mais sans prendre en compte le délai !

    2/ Dans un fichier detections.php :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    //	affichage
    echo '<!-- Body -->
    <section id="content">
        <div class="content-wrap">
    		<div class="container clearfix">
    			<input type="button" value="'.$txt_btn_submit.'" onclick="DemarrerLecture()" />
    			<br/><br/>
    			<input type="button" value="'.$txt_btn_arret.'" onclick="stopLecture()" />
            </div>
        </div>
    </section>
    <!-- Body end -->';

    Dans le fichier fct_ajax.js inclus dans le précédent :
    Code javascript : 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
    <script type='text/JavaScript'>
     
    	var timeoutID;
     
    	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 supporte par le navigateur 
    		   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    		   xhr = false; 
    		} 
    		return xhr
    	}
     
     
     
    	/**
    	*
    	*
    	*/
    	function lectureDetections(id=0) {
     
    		var lecteur_xhr = getXhr();
    		// On defini ce qu on va faire quand on aura la reponse
    		lecteur_xhr.onreadystatechange = function(){
    			// On ne fait quelque chose que si on a tout recu et que le serveur est ok
    			if(lecteur_xhr.readyState == 4 && lecteur_xhr.status == 200){
     
    				resultat = lecteur_xhr.responseText;
    				alert(resultat);
     
    			}
     
    		}
     
    		lecteur_xhr.open("POST","http://localhost/tests/compteur.php",true);
    		lecteur_xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
     
    		lecteur_xhr.send("id="+id);
     
    	}
     
     
    	function DemarrerLecture() {
     
    		timeoutID = window.setInterval(lectureDetections(), 5000);
     
    	}
     
    	function stopLecture() {
     
    		window.clearInterval(timeoutID);
     
    	}
     
    </script>

    Affiche "1" puis plus rien et aucun message dans la console ?!

    Dans les deux cas, la page appelée fait un incrémentation de 1 sur le paramètre.
    J'ai regardé dans le forum et cela devrait fonctionner. Cfr ce topic.

    C'est sûrement pas grand chose.
    Le monde se divise en deux: ceux qui utilisent le tag et les autres.

  2. #2
    Membre éclairé Avatar de tigunn
    Homme Profil pro
    Développeur de bug
    Inscrit en
    Janvier 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de bug

    Informations forums :
    Inscription : Janvier 2003
    Messages : 608
    Points : 658
    Points
    658
    Par défaut
    Bon je vais faire le post le plus rapidement clôturé au monde
    en fait la solution était:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function DemarrerLecture() {
    		timeoutID = window.setInterval(lectureDetections, 5000);
    	}
    Pas de parenthèse pour l'appel de la fonction et ça marche.
    Le monde se divise en deux: ceux qui utilisent le tag et les autres.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Inverser les lignes d'un fichier csv
    Par azahiri dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 19/10/2012, 17h07
  2. Comparer les lignes d'un fichier .csv
    Par mario3979 dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 05/06/2012, 14h08
  3. Compter les lignes d'un fichier CSV à partir d'une ligne
    Par miniRoshan dans le forum Général Java
    Réponses: 6
    Dernier message: 03/06/2010, 11h16
  4. Réponses: 4
    Dernier message: 02/06/2010, 17h23
  5. [CSV] Compter les lignes d’un fichier csv
    Par sam01 dans le forum Langage
    Réponses: 3
    Dernier message: 24/01/2007, 11h16

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