Textdatei Zeilenumbruch

Hi,

bist du dir sicher, dass du nur die Uhrzeit benötigst?
Was ist wenn der Aufruf am nächsten Tag um die gleiche Uhrzeit passiert? Dann ändert sich nichts, obwohl schon 24 Stunden vorbei sind.

Gruß
Manuel
 
das wird kaum passieren:)

also glaube ich eher nicht wenn ich das benötigen sollte kann ich das ja später einfügen, aber brauch erstmal dies:)

jemand eine idee?
 
Du hast 3 Werte mit einem Space getrennt. Am Einfachsten machst du ein explode, dannhast du den Betrag ebenfalls. Dabei gilt es zu beachten, dass erste Index (also der Betrag) 0 ist, während das Datum den Index 1 hat etc.

PHP:
$felder = explode(" ", $letzte_zeile);
$betrag = $felder[0];
$datumString = $felder[1];
$zeitString = $felder[2];
 
Du hast "praktisch" eine Tabelle in einer Datei "emuliert"?

Du kannst ja die letzte Zeile, wie yaslaw gesagt hat, auslesen und dann substr und
mktime (also wieder mit substr Stunde und Minute rausfinden) verwenden.


Edit: Da ist mir yaslaw zuvor gekommen!
 
Hi,

also ich hab nur grad mal was getippst.. kommt aber bestimmt ein Syntax Error.
Tut mir leid aber ich hab leider hier gerade kein PHP installiert. Nur Syntax Fehler sind ja schnell gefixed, wenn man die Fehlermeldung erstmal bekommt.

Vielleicht hilft es dir ja bei der Logik weiter.

PHP:
<?php
// By Manuel Freiholz
// Datei einlesen.
$lines = file( "meinedatei.txt" );

// Letzte Zeile aus der Datei.
$lastLine = end( $lines );

// Zeile in drei Elemente aufteilen.
// 0 = Preis
// 1 = Datum
// 2 = Zeit
$priceDateTime = explode( " ", $lastLine );
if( count($priceDateTime) != 3 )
{
  print("Ungülitiges Format!");
  exit;
}

// Der neue Zeitstempel. (Achtung, dieser enthält auch die Sekunden!)
$tsNew = time(); // Jetzt!

// Entfernen der Sekunden.
$tsNewSecs = date( "s", $tsNew );
$tsNewSecsInt = (int)$tsNewSecs; // Weil der Wert auch "02" sein kann.
$tsNew = $tsNew - $tsNewSecsInt;

// Erstelle Zeitstempel der letzten Zeile.
$dayMonthYear = explode( ".", $priceDateTime[1] );
$hourMinute = explode( ":", $priceDateTime[2] );
$tsLast = mktime( $hourMinute[0], $hourMinute[1], 0, $dayMonthYear[1], $dayMonthYear[0], $dayMonthYear[2] );

// Überprüfe ob der neue Zeitstempel der gleiche ist wie der alte.
if( $tsNew == $tsLast )
{
  // Alte Zeile aktualisieren.
  // Addiere Betrag zum alten dazu.
  $oldPrice = doubleval( $priceDateTime[0] );
  $addPrice = 23.50;
  $newPrice = $oldPrice + $addPrice;
  
  // Die aktualisierte Zeile.
  $newline = $newPrice . " " . $priceDateTime[1] . " " . $priceDateTime[2];
  
  // Entferne letzte Zeile aus dem '$lines' array.
  array_pop( $lines );
  
  // Hinzufügen der aktualisierten Zeile.
  array_push( $lines, $newline );
}
else
{
  // Neue Zeile einfügen.
  $newPrice = 23.50;
  $newline = $newPrice . " " . ( date("j.n.Y", $tsNew) ) . " " . ( date("h:i", $tsNew) ); 
  
  // Entferne letzte Zeile aus dem '$lines' array.
  array_pop( $lines );
  
  // Hinzufügen der neuen Zeile.
  array_push( $newline );
}

// JEtzt in eine Datei schreiben
// ....

?>

Grüße
Manuel Freiholz
 
Zurück