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

PHP & Base de données Discussion :

Récupération de chiffre dans un fichier txt


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2008
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 161
    Points : 86
    Points
    86
    Par défaut Récupération de chiffre dans un fichier txt
    Bonjour à tous et bonne année pour commencer.

    Étudiant en informatique je dois pour ma boite réaliser des stats du site internet.
    Nous avons une base de donnée dans laquelle nous réintégrons les données du site internet.
    Nous avons un log des données intégrées.
    Je voudrais pour des dates bornées récupérer cette valeurs en sachant que tous les jours mes fichiers se nomme comme suit "internet_recup_14012010024501.log" soit internet_recup_+date et heure.log
    Je voudrais donc me basé sur internet_recup+date seulement pour faciliter et faire coïncider avec la ligne du jour en question.

    Mon fichier est constitué de l'ensemble des données intégré et à la fin de celui ci de cette chaine de caractère :
    " nombre de déclarations : 62

    Fin: 14/01/2010 02:45:04"

    Mon but étant de récupérer le nombre de déclaration soit le chiffre 62 ici et cela pour chaque jour.

    Donc s'il y a du monde pour m'aider à réaliser cela bé je dit un grand merci par avance.

    Bonne journée à tous.

  2. #2
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2008
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 161
    Points : 86
    Points
    86
    Par défaut
    Du nouveau j'arrive à faire 2 actions mais je n'arrive pas à les imbriquer.

    J'arrive à lister tout mes fichiers de mon dossiers :
    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
    // Ouverture du dossier
    $dossier = 'fichier/test_cumul/';
    $d = dir($dossier);
     
    // Lecture du dossier
    while ($entry = $d->read())
    {
    // Boucle sur chaque fichier
    if($entry != "." && $entry != ".."){
    // On ecrit le nom du fichier à chaque fois avec un retour à la ligne
    echo $entry.'<br>';
    }
    }
    // Fermeture du dossier
    $d->close();
    qui me retourne bien la liste de mes fichiers.

    J'arrive à coté à récupérer
    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
    // Ouverture et vérification réussite ouverture fichier en lecture seule --> "r"
    if (!$fp = fopen("fichier/test_cumul/Test1.log","r")) {
    	echo "Echec de l'ouverture du fichier ou fichier inexistant";
    	exit;
    }
    	else {
    		//on parcourt toutes les lignes
    	while (!feof($fp)) { 
    		// lecture du contenu de la ligne
    		$page .= fgets($fp, 4096); 
    	}
    	// On retourne la valeur
    	$titre = eregi("nombre de déclarations :(.*)Fin: ",$page,$decl); //on isole le titre
    	echo "Nombre de déclarations : ".$decl[1];
    };
    // on ferme le fichier
    fclose($fp);
    le chiffre qui m'intéresse dans ce fichier :

    Mais mon soucis c'est que je n'arrive pas à imbriquer les 2 l'un dans l'autre, je n'ai aucun résultat en retour alors que je devrais au moins en avoir un.
    Voici mon code imbriqué :
    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
    // Ouverture du dossier
    $dossier = 'fichier/test_cumul/';
    $d = dir($dossier);
     
    // Mise à zéro du compteur de cumul
    $cumul=0;
    echo "<u>Cumul de départ :</u> ".$cumul."<br /><br />";
     
    // Lecture du dossier
    while ($entry = $d->read()) {
    	// Boucle sur chaque fichier
    	if($entry != "." && $entry != ".."){
    		echo "Nom du fichier : ".$entry."<br />";
     
    		// Récupération du nom de fichier
    		$nomFichier = "fichier/test_cumul/".$entry;
    		echo "Chemin et nom du fichier : ".$nomFichier."<br /><br />";
     
    		// Ouverture et test du fichier
    		$Fichier = fopen($nomFichier,"r"); //ouverture du fichier
    		echo "Fichier : ".$Fichier."<br />";
    		while (!feof($Fichier)) { // tant que l'on est pas a la fin du fichier
    			//on parcourt toutes les lignes
    			while (!feof($Fichier)) { 
    				// lecture du contenu de la ligne
    				$page .= fgets($Fichier, 4096); 
    			}
    			// On isole le nombre de règlements
    			$titre = eregi("nombre de déclarations :(.*)Fin: ",$page,$decl); //on isole le titre
    			echo $reglement[1];
    			$reglement=$reglement+$reglement;
    		}
    			$cumul=$cumul+$reglement[1];
    			fclose($Fichier); // fermeture du fichier
    	}
    }
    // Fermeture du dossier
    $d->close(); 
     
    echo "Nombre de réglements : ".$reglement[1]."<br />";
    echo "Nombre de réglements 2 : ".$reglement."<br />";
    echo "Cumul : ".$cumul;
    Tout est à zéro.

    Mon deuxieme souhait serai bien sur d'additionner ces valeurs donc s'il y a besoin de les transformet en long ou int bien sur.
    Merci de votre aide.

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Un jettant un oeil rapide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while (!feof($Fichier)) { // tant que l'on est pas a la fin du fichier
    		//on parcourt toutes les lignes
    		while (!feof($Fichier)) {
    De plus attention la fonction eregi() est obsolète .

  4. #4
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2008
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 161
    Points : 86
    Points
    86
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Un jettant un oeil rapide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while (!feof($Fichier)) { // tant que l'on est pas a la fin du fichier
    		//on parcourt toutes les lignes
    		while (!feof($Fichier)) {
    De plus attention la fonction eregi() est obsolète .
    Désolé je débute en PHP, qu'est ce qu'il faudrait faire ????

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Retirer une des deux boucles.

  6. #6
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2008
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 161
    Points : 86
    Points
    86
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Retirer une des deux boucles.
    A oui idiot bete que je suis.

    Et pour eregi par quoi je pourrait remplacer, je cherche mais j'ai du mal a trouver un équivalent.

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Les fonctions ereg sont remplacées par les fonctions preg
    preg_match() dans ton cas.

  8. #8
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2008
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 161
    Points : 86
    Points
    86
    Par défaut
    Ca y est j'ai réussi, javais un problème, une de mes variable rajouter en debut de champ les informations de la boucle précédente, une remise à zéro en fin de boucle m'a permis de résoudre le problème.
    La fonction eregi() bien que obselète pour l'instant me retourne mes bonnes informations, merci à tous, je clôture pas car je vais surement apporter des améliorations donc plutôt que d'ouvrir un nouveau post pour le même je laisse ouvert.


    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
    <?php
     
    // Ouverture du dossier
    $dossier = 'fichier/test_cumul/';
    $d = dir($dossier);
     
    // Mise à zéro du compteur de cumul
    $cumuldecl=0;
    echo "<u>Cumul de départ :</u> ".$cumuldecl."<br /><br />";
     
    // Lecture du dossier
    while ($entry = $d->read()) {
    	// Boucle sur chaque fichier
    	if($entry != "." && $entry != ".."){
    		//echo "Nom du fichier : ".$entry."<br />";
     
    		// Récupération du nom de fichier
    		$nomFichier = "fichier/test_cumul/".$entry;
    		//echo "Chemin et nom du fichier : ".$nomFichier."<br /><br />";
     
    		// Ouverture et test du fichier
    		$Fichier = fopen($nomFichier,"r"); //ouverture du fichier
    		//echo "Fichier : ".$Fichier."<br />";
    		while (!feof($Fichier)) { // tant que l'on est pas a la fin du fichier
    			//on parcourt toutes les lignes
    			while (!feof($Fichier)) { 
    				// lecture du contenu de la ligne
    				$page .= fgets($Fichier, 4096); 
    			}
    			// On isole le nombre de règlements
    			$titre = eregi("nombre de déclarations :(.*)Fin: ",$page,$decl); //on isole le titre
    			$cumuldecl=$cumuldecl+$decl[1];
    			echo "Nombre de déclaration : ".$decl[1]." => (".$cumuldecl.")<br />";
    			$page="";// Permet de vider le "pseudo cache" de ma variable
    		}
    			$cumul=$cumul+$reglement[1];
    			fclose($Fichier); // fermeture du fichier
    	}
    }
    // Fermeture du dossier
    $d->close(); 
     
    echo "<br><b><u>Cumul :</u></b> ".$cumuldecl;
    ?>

  9. #9
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2008
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 161
    Points : 86
    Points
    86
    Par défaut
    J'arrive à les imbriquer mais j'ai des doublons qui s'affiche, j'ai 2 fichiers différents dans mon dossier dans lesquelles je récupère 1 valeur dans chacun a savoir le premier le nombre de déclaration et le 2e le nombre de règlement.

    Voici mon code :
    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    <HTML>
    <HEAD>
    <TITLE>Récupération chiffre déclarations et réglements</TITLE>
    </HEAD>
    <BODY>
    <center><u>Bonjour, voici les stats demandées</u></center>
    <br />
    <TABLE>
    	<form method="POST">
    	<TR>
    		<TD valign="middle">Date de début : </TD>
    		<TD><INPUT type="text" size="20" name="deb" value="JJMMAAAA" maxlength="8" tabindex="1"></TD>
    		<TD rowspan="2"><input type="submit" name="valid_date" value="Rechercher" tabindex="3"/>
    	</TR>
    	<TR>
    		<TD valign="middle">Date de fin : </TD>
    		<TD><INPUT type="text" size="20" name="fin" value="JJMMAAAA" maxlength="8" tabindex="2"></TD>
    	</TR>
    	</form>
    </TABLE>
     
    <BR /><BR />
     
    <TABLE border="1" width="400px">
    	<TR>
    		<TD align="center" colspan="3"><I><U><?php echo "Statistiques du ".$_POST['deb']." au ".$_POST['fin']; ?></U></I></TD>
    	</TR>
    	<TR>
    		<TD width="200px" align="center"><B><U>DATE</U></B></TD>
    		<TD width="100px" align="center"><B><U>DECLARATIONS</U></B></TD>
    		<TD width="100px" align="center"><B><U>REGLEMENTS</U></B></TD>
    	</TR>
     
    <?php
    // Vérification post des dates
    if(isset($_POST['valid_date'])){
    // Bornage des dates
    $d_deb = $_POST['deb'];
    $d_fin = $_POST['fin'];
     
    // Ouverture du dossier
    $dossier = 'fichier/vradhr/2010-01/mix';
    $d = dir($dossier."/");
     
    // Mise à zéro du compteur de cumul
    $cumuldecl=0;
    $cumulregl=0;
    $n=0;
     
    // Lecture du dossier
    while ($entry = $d->read()) {
    	// Boucle sur chaque fichier
    	if($entry != "." && $entry != ".." && substr($entry,-18,8) >= strtr($d_deb,"//","") && substr($entry,-18,8) <= strtr($d_fin,"//","")){
    		echo substr($entry,-18,8)."<BR />";	
    		// Récupération du nom de fichier
    		$nomFichier = $dossier."/".$entry;
     
    		// Ouverture et test du fichier
    		$Fichier = fopen($nomFichier,"r"); //ouverture du fichier
    		while (!feof($Fichier)) { // tant que l'on est pas a la fin du fichier
    			//on parcourt toutes les lignes
    			while (!feof($Fichier)) { 
    				// lecture du contenu de la ligne
    				$page .= fgets($Fichier, 4096); 
    			}
    			// On isole les dates			
    			$t_date = eregi("Début:(.*)nombre de ",$page,$date); //on isole le titre
    			$datedecl = substr($date[1],0,11);
    			echo "<TR><TD align=\"center\">".$datedecl."</TD>";
     
    			// On isole le nombre de déclaration
    			$t_decl = eregi("nombre de déclarations :(.*)Fin: ",$page,$decl); //on isole le titre
    			$cumuldecl=$cumuldecl+$decl[1];
    			echo "<TD align=\"center\">".$decl[1]."</TD>";
     
    			// On isole le nombre de réglements
    			$t_regl = eregi("nombre de règlements :(.*)Fin: ",$page,$regl); //on isole le titre
    			$cumulregl=$cumulregl+$regl[1];
    			echo "<TD align=\"center\">".$regl[1]."</TD></TR>";
     
    			// On comptabilise le nombre d'enregistrement et on enregistre la dernière valeur
    			$n=$n+1;
    			$last=$decl[1];
     
    			$page=""; // Permet de vider le "pseudo cache" de ma variable
    		}
    			fclose($Fichier); // fermeture du fichier
     
    	}
    }
     
    // Fermeture du dossier
    $d->close(); 
    $cumuldecl=$cumuldecl-($n*$last*0.5);
    //$cumuldecl=$cumuldecl;
    $cumulregl = $cumulregl;
     
    echo "	<TR>
    			<TD align=\"center\"><B>CUMUL (".$n.")</B></TD>
    			<TD align=\"center\">".$cumuldecl."</TD>
    			<TD align=\"center\">".$cumulregl."</TD>
    		</TR>";
     
    }
    ?>
    </TABLE>
    <?php
    echo "<br />d_deb : ".$d_deb."<br />";
    echo "strtr($d_fin,) : ".strtr($d_fin,"/","")."<br />";
    echo "date : ".$datedecl."<br />";
    ?>
    </BODY>
    </HTML>
    Mon soucis étant qu'il me rajoute pas dans mon tableau les informations du 2e fichier sur la même ligne correspondant à une date identique, et du coup me crée un 2e tableau en dessous en répétant pour les x jour la dernière valeur de mon premier fichier.
    Ci joint image.



    Merci de votre aide par avance

Discussions similaires

  1. Réponses: 9
    Dernier message: 23/02/2012, 18h33
  2. Réponses: 5
    Dernier message: 12/04/2011, 15h42
  3. Récupération de données dans un fichier .txt
    Par Crackos dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 30/09/2010, 14h15
  4. Récupération de chiffre dans un fichier txt
    Par chouchouilloux dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/02/2010, 16h08
  5. Réponses: 6
    Dernier message: 20/01/2008, 16h32

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