# compter ligne d'un fichier texte



## symbol (18 Juillet 2018)

Re,

Dans mon forum, y'a un scrolling et diverses indications (voir photo)







"Historique *100* derniers tirages", "Gain cumulé *100* derniers tirages", "calculé sur *100* derniers gains" sont censés afficher une popup/infos avec les 100 derniers tirages.

Il se trouve que parfois pour des raisons techniques, je dois faire un RESET du fichier contenant ces tirages (ce fichier est limité volontairement a 100 lignes max).

Du coup il serait judicieux que le vrai nombre de tirages soit affichés (et pas "*100*", puisque qu'on part 1 en cas de reset).

PS : Le code pour afficher ces lignes se trouve dans la zone HTML du forum.

Le fichier contenant les lignes des tirages se nomme "RESULTATSHISTORIQUE.txt"
(J'imagine que compter le nombre de lignes de ce fichier, donnera le nombre de tirages effectués)

Est-ce possible a faire ?

Merci


----------



## Membre supprimé 1129907 (18 Juillet 2018)

En shell, c'est facile de récupérer le nombre de ligne. Il te suffirait de stocker le résultat dans un autre fichier 
En javascript, cela doit être réalisable (à voir).


----------



## symbol (18 Juillet 2018)

puis attribuer cette valeur a une variable reprise avec javascript.


----------



## symbol (18 Juillet 2018)

J'ai fais


```
wc -l /Users/xxx/Desktop/KENODATA/LOGTIRAGE.txt > /Users/xxx/Desktop/ligne.txt
```

ce me donne dans le fichier ligne.txt
       3 /Users/xxx/Desktop/KENODATA/LOGTIRAGE.txt


ou bien 


```
nbligne=`wc -l /Users/xxx/Desktop/KENODATA/LOGTIRAGE.txt`
echo $nbligne > /Users/xxx/Desktop/ligne.txt
```

qui donne la meme chose.


----------



## Membre supprimé 1129907 (18 Juillet 2018)

Bien joué 

Il y a plusieurs façon de ne plus avoir le nom du fichier. La plus simple est de passer via un "cat" et de rediriger le contenu du fichier dans la commande "wc". C'est quasi ce que tu as dans ta deuxième version.

```
nbligne=`cat /Users/xxx/Desktop/KENODATA/LOGTIRAGE.txt | wc -l`
echo $nbligne > /Users/xxx/Desktop/ligne.txt
```


----------



## symbol (18 Juillet 2018)

Etape #1 validée


----------



## symbol (19 Juillet 2018)

Je sais pas si ma demande relève de la science-fiction, mais je pose tout de meme la question. 

Dans l'exemple de code ci-dessous (qui se trouve dans une ZONE HTML d'un forum), est-il possible de changer le nombre "100" ( <b>Gain cumulé 100 derniers tirages</b> ) par une variable qui se trouve un fichier texte (hebergé sur un serveur FTP) ?


```
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://kenopronos.free.fr/RESULTATSTATS.txt" onclick="popupcentre(this.href, 'name', '500', '200', 'yes');return false;"><b>Gain cumulé 100 derniers tirages</b></a> <img src="http://kenopronos.free.fr/graph/iconeeuro27s.gif" height="3%" width="3%" alt="Description" title="Affiche les GAINS CUMULES des membres des 100 derniers tirages" 'location=0, toolbar=0, menuBar=0,'/>
```







Merci


----------



## Membre supprimé 1129907 (19 Juillet 2018)

En JavaScript tu peux changer le contenu d’une aone de texte. J’avais posté le code dans un autre de tes sujets. Il suffit juste de lire le fichier pour savoir quoi mettre dans ta zone


----------



## symbol (19 Juillet 2018)

Ok. je vais chercher. merci


Ca serait pas ca ?


```
document.getElementById('id de l'élément').innerHTML="nouveau texte"
```






```
Permier exemple:

var fileSystem=new ActiveXObject("Scripting.FileSystemObject");
var monfichier=fileSystem.OpenTextFile("tutorielsenfolie.txt", 1 ,true);
alert(monfichier.Read(7)); // imprime: "tutorie"
monFichier.Close();

Deuxième exemple:

var fileSystem=new ActiveXObject("Scripting.FileSystemObject");
var monfichier=fileSystem.OpenTextFile("tutorielsenfolie.txt", 1 ,true);
alert(monfichier.ReadAll()); // imprime: "tutoriels en folie"
monFichier.Close();
```
MAJ: je laisse tomber, c'est au dessus de mes moyens.


----------



## Membre supprimé 1129907 (19 Juillet 2018)

Exemple:
https://www.w3schools.com/jsref/met_document_getelementbyid.asp


----------



## symbol (20 Juillet 2018)

Merci Ecatomb, mais la je comprends rien (Je ne sais pas meme pas quoi faire des infos qui se trouve a https://www.w3schools.com/jsref/met_document_getelementbyid.asp )


----------



## Membre supprimé 1129907 (20 Juillet 2018)

Clique sur « try it yourself » pour avoir un exemple de la fonction. A toi de voir si quelque chose de ce style te conviendrait.


----------



## daffyb (20 Juillet 2018)

```
<!DOCTYPE html>
<html>
<body onload="myFunction()">

<script>
function myFunction() {
    var x = document.getElementById("NbTir");
    x.innerHTML = "50"; /* c'est ici qu'il faut mettre ta variable */
}
</script>

<a href="http://kenopronos.free.fr/RESULTATSTATS.txt" onclick="popupcentre(this.href, 'name', '500', '200', 'yes');return false;"><b>Gain cumulé <span id="NbTir">100</span> derniers tirages</b></a> <img src="http://kenopronos.free.fr/graph/iconeeuro27s.gif" height="3%" width="3%" alt="Description" title="Affiche les GAINS CUMULES des membres des derniers tirages" 'location=0, toolbar=0, menuBar=0,'/>

</body>
</html>
```

Je ne sais pas si javascript peut lire un fichier hébergé sur un serveur, et je ne le pense pas.
En PHP c'est possible. Peux tu faire du PHP ?


----------



## daffyb (20 Juillet 2018)

j'ai trouvé ça : http://www.zone-webmasters.net/code...e-contenu-d-un-fichier-dans-une-variable.html
pour lire le contenu d'un fichier en Ajax (pour mettre à jour le "50" de mon exemple)


----------



## symbol (20 Juillet 2018)

Merci de ta réponse daffyb,

Avant le code etait :

```
<!-- ## Affiche les GAINS CUMULES des membres des 100 derniers tirages -->
<script language="JavaScript">
function popupcentre(adresse, nomFenetre, largeur, hauteur, scroll)
  {
  var largeurEcran = (screen.width - largeur) / 2;
  var hauteurEcran = (screen.height - hauteur) / 2;
  window.open(adresse, nomFenetre, 'height=' + hauteur + ', width=' + largeur + ', top=' + hauteurEcran + ', left=' + largeurEcran + ', scrollbars=' + scroll + ', resizable')
  }
</script>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://kenopronos.free.fr/RESULTATSTATS.txt" onclick="popupcentre(this.href, 'name', '500', '200', 'yes');return false;"><b>Gain cumulé 100 derniers tirages</b></a> <img src="http://kenopronos.free.fr/graph/iconeeuro27s.gif" height="3%" width="3%" alt="Description" title="Affiche les GAINS CUMULES des membres des 100 derniers tirages" 'location=0, toolbar=0, menuBar=0,'/>
```

maintenant c'est (si je me suis pas trompé en placant tes lignes) :

```
<script>
function myFunction() {
    var x = document.getElementById("NbTir");
    x.innerHTML = "50"; /* c'est ici qu'il faut mettre ta variable */
}
</script>

<a href="http://kenopronos.free.fr/RESULTATSTATS.txt" onclick="popupcentre(this.href, 'name', '500', '200', 'yes');return false;"><b>Gain cumulé <span id="NbTir">100</span> derniers tirages</b></a> <img src="http://kenopronos.free.fr/graph/iconeeuro27s.gif" height="3%" width="3%" alt="Description" title="Affiche les GAINS CUMULES des membres des derniers tirages" 'location=0, toolbar=0, menuBar=0,'/>
```


et ca affiche :





Le "50" ne s'affiche pas


----------



## daffyb (20 Juillet 2018)

```
<!DOCTYPE html>

<script type="text/javascript">
<!--
var Fichier = function Fichier(fichier)
{
    if(window.XMLHttpRequest) obj = new XMLHttpRequest(); //Pour Firefox, Opera,...
    else if(window.ActiveXObject) obj = new ActiveXObject("Microsoft.XMLHTTP"); //Pour Internet Explorer
    else return(false);
    if (obj.overrideMimeType) obj.overrideMimeType("text/xml"); //Évite un bug de Safari
    obj.open("GET", fichier, false);
    obj.send(null);
    if(obj.readyState == 4) return(obj.responseText);
    else return(false);
}

function myFunction() {
    var x = document.getElementById("NbTir");
    x.innerHTML = Fichier('test.txt'); /* c'est ici qu'il faut mettre ta variable */
}
//-->
</script>

<html>

<body onload="myFunction()">

<a href="http://kenopronos.free.fr/RESULTATSTATS.txt" onclick="popupcentre(this.href, 'name', '500', '200', 'yes');return false;"><b>Gain cumulé <span id="NbTir">100</span> derniers tirages</b></a> <img src="http://kenopronos.free.fr/graph/iconeeuro27s.gif" height="3%" width="3%" alt="Description" title="Affiche les GAINS CUMULES des membres des derniers tirages" 'location=0, toolbar=0, menuBar=0,'/>

</body>
</html>
```

Ça fonctionne parfaitement (je viens d'essayer sur mon serveur)


----------



## daffyb (20 Juillet 2018)

avec dans le fichier test.txt UNIQUEMENT le nombre à afficher

```
<body onload="myFunction()">
```
ce n'est pas que pour faire joli


----------



## symbol (21 Juillet 2018)

Daffyb

Je vais ré-éssayer 

De toute evidence le pb vient de moi.



*MAJ :*
J'ai mis le code, et ca ne fonctionne pas.

Le contenu de la ZONE HTML est constinuté de code ajouté "a la comme j'te pousse".
Je pense qu'il y a surement une balise/machin qui empeche le fonctionnement, ou c'est pas dans le bon ordre... bref, y'a un truc qui empeche.

Serait-il possible que je t'envoi le contenu de la zone HTML (fichier texte de 16 K) afin que tu y jete un oeil. ?

Si c'est possible, indique moi un mail ou autre pour te l'envoyer.

Merci


----------



## daffyb (24 Juillet 2018)

symbol a dit:


> Le contenu de la ZONE HTML est constinuté de code ajouté "a la comme j'te pousse".


En effet  !!!


----------



## symbol (24 Juillet 2018)

...mais ca fonctionne   , sauf l'affichage du nombre de tirage, c'est vrai


----------



## symbol (25 Juillet 2018)

DaffyB, penses-tu insérer ton code (au bon endroit) dans le fichier texte que je t'ai envoyé ? Merci


----------



## daffyb (25 Juillet 2018)

symbol a dit:


> DaffyB, penses-tu insérer ton code (au bon endroit) dans le fichier texte que je t'ai envoyé ? Merci



Je ne comprends pas trop la question.
Http://daffyb2.free.fr/keno
J'affiche     *Gain cumulé 88 derniers tirages*
'88' correspond à la valeur enregistrée dans le fichier test.txt
a toi d'adapter.

Par contre, petite erreur à la ligne 30 du fichier Keno.js
il faut écrire

```
setTimeout('f_date("'+id+'");','1000');
```


----------



## symbol (26 Juillet 2018)

DaffyB

J'ai fait un copier/coller du code qui se trouve dans ta page a view-source:http://daffyb2.free.fr/keno/  pour le placer dans la ZONE HTML du forum.

Pour une raison inconnue (en tout cas pour moi), le résultat est different par rapport a ta page http://daffyb2.free.fr/keno/

voici ce que ca donne pour moi :






- le compteur reste a 100
- l'heure a disparue
- le décompte est parti en vacances

Une question nanard. Pourquoi ne pas mettre l'intégralité du code dans la zone HTML (au lieu d'appeler le javascript avec Keno.js) ?


----------



## daffyb (26 Juillet 2018)

Parce que sinon, on ne voit plus rien et c'est d'ailleurs pour cela que ça ne marchait pas, parce que les erreurs de balises ne se voient plus quand c'est mal indenté et tout mélangé.
As tu lu le fichier A LIRE.txt qui était dans l'archive ??
il disait :


> Ce que j'ai fait :
> J'ai sorti toutes les fonctions JavaScript pour les mettre dans un fichier et y voir plus clair.
> Ce qui m'a permis, entre autre, de constater qu'il y avait 2 balises BODY et 2 HTML
> J'ai refait l'indentation
> ...


où as tu hébergé le fichier Keno.js ?
as tu adapté la ligne qui l'appel ?
as tu adapté la fonction qui appelle le fichier test.txt ?


----------



## symbol (26 Juillet 2018)

DaffyB

Merci des corrections apportées.

Le Keno.js est hebergé a "http://kenopronos.free.fr/Keno.js"
Du coup j'ai mis : "    <script type="text/javascript" src="http://kenopronos.free.fr/Keno.js"></script>"

Le fichier ou se trouve le nombre de tirage est "LOGNOMBRETIRAGE.txt"
situé a "http://kenopronos.free.fr/LOGNOMBRETIRAGE.txt"

J'ai changé le code original par

```
function f_NbTir() {
   var x = document.getElementById('NbTir');
  /* x.innerHTML = Fichier('LOGNOMBRETIRAGE.txt'); /* c'est ici qu'il faut mettre ta variable */
       document.getElementById("NbTir").innerHTML = Fichier('LOGNOMBRETIRAGE.txt');
```

Le resultat est






Vu que ca marchait pas , j'ai changé l'URL (dans Keno.js) du fichier LOGNOMBRETIRAGE.txt
ce qui donne :

```
function f_NbTir() {
   var x = document.getElementById('NbTir');
  /* x.innerHTML = Fichier('http://kenopronos.free.fr/LOGNOMBRETIRAGE.txt'); /* c'est ici qu'il faut mettre ta variable */
       document.getElementById("NbTir").innerHTML = Fichier('http://kenopronos.free.fr/LOGNOMBRETIRAGE.txt');
```

ce qui affiche correctement la page (pas erreur 404) mais aucune trace du nombre reel de tirage (je suis toujours a 100)


J'ai tripatouillé le truc qui devient :

```
function f_NbTir() {
   var x = document.getElementById('NbTir');
  /* x.innerHTML = Fichier('LOGNOMBRETIRAGE.txt'); /* c'est ici qu'il faut mettre ta variable */
       document.getElementById("NbTir").innerHTML = Fichier('http://kenopronos.free.fr/LOGNOMBRETIRAGE.txt');
```

toujours pas de trace du nombre de tirage reel, mais 100 d'affiché (pas erreur 404)

J'ai egalement essayé en retirant le "  /*" avant "x.innerHTML = Fichier('LOGNOMBRETIRAGE.txt');" (il m'a semblé de trop), mais ca n'a rien changé.


----------



## symbol (27 Juillet 2018)

MAJ samedi matin : Je suis retourné sur ta page http://daffyb2.free.fr/keno/ 
Le nombre de tirage est a 100 et plus 88 comme avant, bien que le fichier test.txt soit toujours a 88 ( http://daffyb2.free.fr/keno/test.txt )


----------



## daffyb (27 Juillet 2018)

En fait, ça ne fonctionne pas chez toi, parce que ton fichier LOGNOMBRETIRAGE.txt n'est pas stocké sur le même serveur que la page HTML
Il faudrait héberger ton code HTML chez free.fr et le mettre dans un iframe dans ton forum.


----------



## symbol (27 Juillet 2018)

Merci de ton analyse.

Etant l'interet mesuré des modifications a effectuer, le bénéfice gain/complexité n'étant pas pertinent, je vais laisser comme c'est.


----------



## symbol (29 Juillet 2018)

Je reviens sur mon pb d'affichage du nombre de tirage...
Avec une commande trouvée sur le net (et de la chance), j'arrive a afficher le nombre de tirage dans ma page... Mais.... je n'arrive pas a la place correctement.

Grace a la commande :

```
<object data="http://kenopronos.free.fr/LOGNOMBRETIRAGE.txt" type="text/html" width="60" height="60" ></object>
```

ca m'affiche





Formidable 

Par contre comment mettre le 12 au bon endroit ?????

Si quelqu'un sait (et j'en suis sur  ... Merci

PS: la source de l'exemple est a https://www.alsacreations.com/actu/...-dans-une-page-html-sans-utiliser-iframe.html


MAJ :
En changeant la valeur height="60"  par height="22" ca se place pas trop mal.

Par contre c'est quoi ce carré blanc ?????


----------



## symbol (29 Juillet 2018)

MAJ #2

J'y suis presque !!!






Avec safari on voit que ca ressemble a un ascenceur





J'ai essayé avec des commandes pour retirer les scrolls, marche pas....
overflow : hidden;     overflow-x: hidden   overflow-y: hidden


----------



## symbol (30 Juillet 2018)

MAJ #3 : pb reglé avec 

```
<b>Nb Tirage Historique :</b><iframe id="Nbtirage" width="30" height="21" src="http://kenopronos.free.fr/LOGNOMBRETIRAGE.txt" scrolling="no" frameborder="0" ></iframe>
```


----------

