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.
Partager