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

Langage PHP Discussion :

Problème de lecture dans un fichier


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 64
    Par défaut Problème de lecture dans un fichier
    Bonjour,
    je viens vers vous car je n'arrive plus à y voir clair...
    Ca doit être simple mais je ne trouve pas.
    J'ai un calendrier qui envoit des dates, heures et noms, dans un fichier "texte0.php" recevant ces infos.
    Chaque date crée une référence ($timestamp)...
    (Par exemple le timestamp 1317160800 correspond au : 28/ 09/ 2011)
    Tout se passe bien, les dates, heures, infos parviennent bien dans le fichier "texte0.php" mais j'ai un problème avec ma fonction de "recherche" dans ce fichier.
    Je n'arrive pas à isoler les lignes correspondantes à ce timestamp => dans le fichier "texte0.php" en relecture.
    Si je recherche : le timestamp 1317160800, j'ai le nombre de fois qu'il est trouvé, mais tous les timestamp ou très peu s'affichent alors que je voudrais que s'affichent uniquement les timestamp concernés (par ex : 1317160800).
    Pour exemple du résultat souhaité après clic sur mon bouton "rechercher" :

    timestamp N°1317160800-> trouvé : 2 / fois =>
    28/ 09/ 2011 de 9 h 00 à 10 h00 Mr Duran
    28/ 09/ 2011 de 13 h 00 à 15 h00 Mr Bidule

    Alors que je n'arrive qu' a avoir toutes les dates ou aucune selon comment je règle : fgets($fp, '...'
    Le bout de code parlera peut être plus que moi...(!!!)
    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
     
    <form method="POST">
        Référence date : <input type="text" name="ref" value="<?php print $timestamp; ?>"/><br/>
        <input type="submit" value="Rechercher" />
    <?php
    	if (!empty($_POST['ref'])) {
    define('FICHIER', 'texte0.php');
        $resultats =array();
        @ $fp = fopen(FICHIER, 'r') or die('Ouverture en lecture de "' . FICHIER . '" impossible !');
        while (!feof($fp)) {
            $ligne = fgets($fp, '224');
            if (preg_match('|\b' . preg_quote($_POST['ref']) . '\b|i', $ligne))  {
                $resultats[] = $ligne;
            }
        }
    		    fclose($fp);
        $nb = count($resultats);
        if ($nb > 0 ) {
    		echo "<ul><li><div style='background:#88C678;border:dashed 1px blue;'><span style='color:#000033;'><u><b>CETTE REFERENCE DE DATE A ETE TROUVEE ! VEUILLEZ VERIFIER.</b></u></span> </div></li>";
            echo "'$ref' trouvé $nb fois : "; print '<br />'; 
            foreach ($resultats as $v);  {
                echo "$v";
            }
     
        } else {
            echo("<br/><font color='#336633'>CETTE SALLE A CETTE DATE NE FAIT PAS ENCORE L'OBJET D'UNE RESERVATION.</font><br/>
    		Vous pouvez proposer votre réservation en toute tranquilité.<br/>");
     
        }
     
    }
    Merci par avance si vous souhaitez m'aider un peu...

  2. #2
    Invité
    Invité(e)
    Par défaut


    Quelle est la tête de ton fichier texte0.php ? Est-il gros ? S'il ne l'est pas, lis-le avec file_get_contents. Effectue ta recherche avec une regex

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 34
    Par défaut
    Oui, le plus simple pour t'aider serait de voir l'ensemble de ton code.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 64
    Par défaut
    Merci pour ces conseils.
    Le fichier de stokage est pas "super gros" mais il pourra contenir tout de même genre 600 ko en pointe...
    Je vais aller voir sur "manuel php" ce qu'il en retourne à ce propos =>(file_get_contents)...
    L'ensemble de mon script ?
    Euh c'est en 4 parties le // 'calendrier' // 'envoi' // 'reçoit' // et fichier de stokage 'texte0.php' //
    Cette partie c'est le fichier 'envoi' en fait...(c'est peut être pas super bien écrit, mais bon, autodidacte quoi... :-)
    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
     
    <form action="recoit-y-c4_2.php" method="POST" >
     
    <input type"text" name="infos" value="
    <?php
       $date = priv_reg_glob_calendar('date');
    	if ($date == '') {
     print
    	$month;
    	}
    	else { 
    	 ?> <br /><br /><?php
    	print 'DATE :  ';
    	 print
    		$day 		= substr($date, 6, 2);print '/'; 
    		print ' '; print  
    		$month 		= substr($date, 4 ,2); print '/';
    	print  ' '; print
    		$year		= substr($date, 0 ,4);print '--->';
    print  ''; print 'Référence : '; print $timestamp 	= mktime(0, 0, 0, $month, $day, $year); print '--->'; ?><?php print  'De : '; ?>">
     
     		<select name="liste1"> 
    <option value="9 heures">9 heures
    <option value="10 heures">10 heures 
    <option value="11 heures">11 heures
    <option value="12 heures">12 heures
    <option value="13 heures">13 heures
    <option value="14 heures">14 heures
    <option value="15 heures">15 heures
    <option value="16 heures">16 heures
    <option value="17 heures">17 heures
    <option value="18 heures">18 heures
    </select>
    		<select name="liste2"> 
    <option value="00 mn A ">00 mn
    <option value="15 mn A ">15 mn 
    <option value="30 mn A ">30 mn
    <option value="45 mn A ">45 mn
     A : 
    </select>
     
     		<select name="liste3"> 
    <option value="9 heures">9 heures
    <option value="10 heures">10 heures 
    <option value="11 heures">11 heures
    <option value="12 heures">12 heures
    <option value="13 heures">13 heures
    <option value="14 heures">14 heures
    <option value="15 heures">15 heures
    <option value="16 heures">16 heures
    <option value="17 heures">17 heures
    <option value="18 heures">18 heures
    </select>
    		<select name="liste4"> 
    <option value="00 mn">00 mn
    <option value="15 mn">15 mn 
    <option value="30 mn">30 mn
    <option value="45 mn">45 mn
     
    </select>
    -La salle sera retenue <input type"text" name="personnel" value="Salle retenue par ->    <?php
    print ' (nom du responsable) <br/>---------------------------<br />' ?>">
    <?php
    	if(empty($personnel)){ print 'vous n avez pas rempli tous les champs'; } else { print 'ok'; }
    	 ?>
    		 	<input type="submit" value="Valider">
    </form>
    <form method="POST">
        Référence date : <input type="text" name="ref" value="<?php print $timestamp; ?>"/><br/>
        <input type="submit" value="Rechercher" />
     
     
     
    	<?php
    	if (!empty($_POST['ref'])) {
    define('FICHIER', 'texte0.php');
        $resultats =array();
        @ $fp = fopen(FICHIER, 'r') or die('Ouverture en lecture de "' . FICHIER . '" impossible !');
        while (!feof($fp)) {
            $ligne = fgets($fp, '224');
            if (preg_match('|\b' . preg_quote($_POST['ref']) . '\b|i', $ligne))  {
                $resultats[] = $ligne;
            }
        }
    		    fclose($fp);
        $nb = count($resultats);
        if ($nb > 0 ) {
    		echo "<ul><li><div style='background:#88C678;border:dashed 1px blue;'><span style='color:#000033;'><u><b>CETTE REFERENCE DE DATE A ETE TROUVEE ! VEUILLEZ VERIFIER.</b></u></span> </div></li>";
            echo "'$ref' trouvé $nb fois : "; print '<br />'; 
            foreach ($resultats as $v);  {
                echo "$v";
            }
     
        } else {
            echo("<br/><font color='#336633'>CETTE SALLE A CETTE DATE NE FAIT PAS ENCORE L'OBJET D'UNE RESERVATION.</font><br/>
    		Vous pouvez proposer votre réservation en toute tranquilité.<br/>");
     
        }
     
    }
     
    ?>
    </form>
     
    </div><!-- fin css = y-c1 -->

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 64
    Par défaut
    @David
    Effectivement, c'est une bonne piste... Par rapport à ça j'ai écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php $fh = fopen("texte0.php", "r"); $file = file_get_contents("texte0.php"); echo $file; ?>
    Là où je bloque encore, c'est plutôt en syntaxe pour demander à file_get_contents de ne donner en echo que la ligne voulue ($timestamp);
    J'y travail... Et en gardant la partie où le nombre de résultats est affiché (extrait)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            foreach ($resultats as $v);  {
                echo "$v";
            }

  6. #6
    Invité
    Invité(e)
    Par défaut
    Pas besoin d'un fopen devant file_get_contents ; et cette fonction est nettement plus simple et efficace pour lire des petits fichiers (je considère que 600ko c'est petit).

    Par contre, il nous manque encore la structure du fichier que tu souhaites lire. Car si c'est un fichier structuré par ligne, tu ferais peut-être mieux de le lire avec la fonction file(), qui transforme directement le contenu en tableau (1 cellule par ligne). De cette manière tu pourrait très facilement parcourir ton tableau et effectuer ta recherche

Discussions similaires

  1. [C ANSI] Problème de lecture dans un fichier
    Par F0ul dans le forum Débuter
    Réponses: 7
    Dernier message: 06/02/2008, 15h00
  2. [POI] Problème écriture/lecture dans un fichier Excel
    Par steuve dans le forum Documents
    Réponses: 6
    Dernier message: 02/07/2007, 16h47
  3. Problème de lecture dans un fichier texte.
    Par Mike888 dans le forum C
    Réponses: 3
    Dernier message: 24/05/2007, 12h45
  4. problème de lecture dans un fichier
    Par phy4me dans le forum Fortran
    Réponses: 1
    Dernier message: 20/05/2007, 21h55
  5. Problème de lecture dans un fichier xml
    Par Pyra dans le forum Langage
    Réponses: 2
    Dernier message: 18/12/2005, 01h13

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