login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Tekstbestand uitlezen (Bottom - Up) (Opgelost)

Offline dbe123 - 17/06/2010 13:54
Avatar van dbe123Lid Hoi,

Ik heb een log die ik bewaar in een tekstbestand op de server.
Ik lees dit tekstbestand uit om te tonen in de admin interface.

Op dit moment krijg ik een lijst, waarbij de meest recente entry onderaan staat:
10/05/2010: ...
11/05/2010: ...
11/05/2010: ...
11/05/2010: ...
10/06/2010: ...
enzoverder

Ik wil deze lijst omdraaien, zodat de meest recente entry bovenaan staat (dit verhoogt de leesbaarheid).

Ik weet echter niet goed hoe...
Op dit moment gebruik ik volgende code:
  1. if( file_exists($logfile) && is_readable($logfile) && $handle = fopen($logfile, 'r')) { // read
  2. while(!feof($handle)) {
  3. $entry = fgets($handle);
  4. if(trim($entry) != "") {
  5. echo $entry;
  6. }
  7. }
  8. fclose($handle);
  9. } else {
  10. echo "Could not read from {$logfile}.";
  11. }


Heeft iemand tips hoe ik dit kan bereiken?  

4 antwoorden

Gesponsorde links
Offline Sitebase - 17/06/2010 14:32 (laatste wijziging 17/06/2010 14:33)
Avatar van Sitebase PHP expert Dit doe je zo:

  1. // File inhoud lezen en lijnen splitsen
  2. $lines = explode("\n", $logfile);
  3.  
  4. // Lijnen omkeren
  5. $lines = array_reverse($lines);
  6.  
  7. // Lijnen tonen
  8. echo implode("<br />", $lines);


Let er wel op dat ik in mijn code ervan uit ben gegaan dat $logfile bestaat.
Offline Martijn - 17/06/2010 17:46 (laatste wijziging 17/06/2010 21:23)
Avatar van Martijn Crew PHP beter functie om een textbestand uit te lezen is file_get_contents("link/naar/bestand.txt"); dan heb je het gelijk als string. En met file_put_contents("link/naar/bestand.txt",$nieuweTekst.$oudeTekst); en dan staat het meteen als eerste in je textrbestand

edit: Spelfout verbeterd, dankje Totempaaltj
Offline Stijn - 17/06/2010 18:07
Avatar van Stijn PHP expert Misschien met PHP.net: fseek en PHP.net: ftell spelen.
Offline dbe123 - 17/06/2010 23:04 (laatste wijziging 17/06/2010 23:13)
Avatar van dbe123 Lid Hoi,

Ik heb de code als volgt aangepast:

Wegschrijven in log:
  1. function log_action($action, $message="") {
  2. $logfile = SITE_ROOT.DS.'logs'.DS.'log.txt';
  3. $new = file_exists($logfile) ? false : true;
  4.  
  5. $timestamp = strftime("%Y-%m-%d %H:%M:%S", time());
  6. $content = "{$timestamp} | {$action}: {$message} \n";
  7. $old_content = file_get_contents($logfile);
  8. file_put_contents($logfile, $content . $old_content);
  9. }


Uitlezen en tonen in admin sectie:
  1. if( file_exists($logfile) && is_readable($logfile)) {
  2. $log_content = file_get_contents($logfile);
  3. var_dump($log_content);
  4. $tpl->newBlock("frm_table_row");
  5. $tpl->newBlock("frm_table_last_row");
  6. $tpl->assign( array( "colspan" => "2", "align" => "left", "td_cell" => $log_content ) );
  7.  
  8. } else {
  9. $tpl->newBlock("frm_table_row");
  10. $tpl->newBlock("frm_table_last_row");
  11. $tpl->assign( array( "colspan" => "2", "align" => "left", "td_cell" => "Could not read from {$logfile}.") );
  12. }


Wat ik nu krijg, is dat hij alle entries na elkaar op het scherm zet.
Hij plaatst ze dus niet regel per regel.

Dit terwijl ik bij het schrijven de \n parameter meegeef...

I'm lost!  

EDIT: OPGELOST!! --> \r\n  
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.231s