Stocker les dernières recherches ds un fichier txt

Petit nouveau ! | 8 Messages

28 juil. 2006, 22:59

Bonjour ,

j'ai un petit problème , j'aimerai stocker les requetes de mon formulaire de recherche dans un fichier "txt recherche.txt " et visualiser sur la meme page les 10 dernieres recherches executées.
voici mon essaye :
<?php
   $fichier = @fopen('recherches.txt','r');
   if ($fichier) {                 
      while (!feof($fichier)) {       
         $ligne = @fgets($fichier, 5);
         echo $ligne;
      }
   }
   @fclose($fichier);
?>

et voici la visualisation :

 <?php

    
   $fichier = @fopen('recherches.txt','a');
   if ($fichier) {
      @fputs($fichier, "$rechrerche");
   }
   @fclose($fichier); 
?>


je veux limiter la visualisation des resultats aux 10 dernière .

pouvez vous m'aidez ???
Evolve Or die !
http://www.indexor.info

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

28 juil. 2006, 23:54

Salut,

C'est un peu fouilli tout ça :?
Préfère les balises [ PHP] à [ Code] c'est plus lisible pour un code PHP.
Doucement sur les double posts l'autre message est parti à la poubelle


Je pense que tu as retourné la fonctionalité des deux bouts de script :wink:

sinon pour n'afficher (différent de lire) que les dernières lignes tu peux utiliser file() qui retourne le fichier sous forme de tableau et une boucle sur les dernier éléments:
$fichier = file('txt.txt'); //lecture du fichier
$nb_lignes = count($fichier);  // nombre de lignes du fichier

//boucle qui démarre de la fin pour arriver à [fin - 10] lignes
for($i=($nb_lignes-1);$i>=($nb_lignes-10);$i--)
	echo $fichier[$i].'<br>';
Sinon reste qussi fseek() un exemple a été proposé pour lire depuis la fin.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Petit nouveau ! | 8 Messages

29 juil. 2006, 15:50

Merci beaucoup pour ton aide , je vais tester ce que tu m'as proposer et je te tiens au courant.

Peace :)
Evolve Or die !
http://www.indexor.info

Petit nouveau ! | 8 Messages

29 juil. 2006, 22:24

Bonsoir

j'ai essayé la code que tu m'as filé ça marche , sauf pour la selection des 10 dernières requetes , il me donne toutes les requetes effectuées ...

donc la selection des dix dernières rechreches ne marche tjs pas :(

le code que j'ai utilisé :
<?php $fichier = file('recherches.txt'); //lecture du fichier
$nb_lignes = count($fichier);  // nombre de lignes du fichier

//boucle qui démarre de la fin pour arriver à [fin - 10] lignes
for($i=($nb_lignes-1);$i>=($nb_lignes-10);$i--)
    echo $fichier[$i].'<br>';   
?> </td>
     </tr>
   </table>
   <p>
     
     <?php

 	
	$fichier = @fopen('recherches.txt,'a'); 
	if ($fichier) { 
		@fputs($fichier, "$recherche");
	} 
	@fclose($fichier);  
?> 

kand j'ai visualisé le fichier recherches.txt j'ai remarqué que toute les recherche enragistrées dans une seule ligne, c à d ya pas de saut de ligne ds le fichier txt :(
merci de votre aide
Evolve Or die !
http://www.indexor.info

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

29 juil. 2006, 22:44

Il faut distinguer les deux scripts écriture et lecture.

Le script précédent est la lecture.
Ceci est l'écriture:
$fichier = fopen('recherches.txt','a'); 
    if ($fichier) { 
        fputs($fichier, $recherche."\n");
    } 
    fclose($fichier);
Pour les sauts de lignes ajoute "\n" en fin de chaine contenant la requête.

Si tu est en PHP5 tu peux regrouper l'écriture en une ligne:
file_put_contents('recherches.txt',$recherche."\n",FILE_APPEND);

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute