Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Odczyt daty w pliku txt.
Forum PHP.pl > Forum > Przedszkole
globalinfo
Witam,

Nie mogę sobie dać rady z odczytaniem daty z plku txt.

Mam taki kod

  1. $stringFromFile = fread($stateFile,filesize(myStateName));
  2. fclose($stateFile);
  3. $pos = strpos($stringFromFile, " ");
  4. echo "<br>";
  5. echo $pos;
  6. echo $stringFromFile;
  7. echo "<br>";
  8. echo substr($stringFromFile, 0, $pos);
  9. echo "<br>";
  10. $lastTime = date("Y-m-d H:i:s",substr($stringFromFile, 0, $pos));
  11. $lastReset = substr($stringFromFile, $pos+3);
  12. if (substr($stringFromFile, $pos+1,1)=="0")
  13. $lastState = "Off";
  14. else
  15. $lastState = "On";
  16. echo "Last auto-contact from the water heater was on ". $lastTime. " and the status was ". $lastState. " (Reset was ".$lastReset." Minutes ago)";


Niestety podczas wykonania otrzymuję błąd.
Poniżej wynik wyświetlony na stronie.
Cytat
13
1488113398 23 56 67
1488113398

Warning: date() expects parameter 2 to be long, string given in /....................php on line 240
Last auto-contact from the water heater was on and the status was On (Reset was 56 67 Minutes ago)

Wartość jaka wpisana jest w pliku
Cytat
1488113398 23 56 67


Nie bardzo wiem jak to ugryźć sciana.gif
rafkon1990
zamiast echo użyj var_dump - pozwoli to określić jakiego typu jest zmienna i jakie zawiera dane (białe znaki też). Echo tego nie pokaże. Poza tym masz Warning dla funkcji date.
Spróbuj również:
  1. date("Y-m-d H:i:s",intval($stringFromFile));
Tomplus
jak to jest zwykły plik tekstowy to wystarczy dać file_get_content($src);
globalinfo
Cytat(rafkon1990 @ 26.02.2017, 14:40:27 ) *
zamiast echo użyj var_dump - pozwoli to określić jakiego typu jest zmienna i jakie zawiera dane (białe znaki też). Echo tego nie pokaże. Poza tym masz Warning dla funkcji date.
Spróbuj również:


Zwróciło mi :
Cytat
string(25) "1488113398 23 56 67 "
string(13) "1488113398"

Warning: date() expects parameter 2 to be long, string given in /.................. on line 240
Last auto-contact from the water heater was on and the status was On (Reset was 56 67 Minutes ago)

Jak zmienić ten format w pliku txt aby nie było błędu?
maryaan
U mnie ten Twój kod działa ok
Kod
Last auto-contact from the water heater was on 2017-02-26 13:49:58 and the status was On (Reset was 56 67 Minutes ago)


W pliku nic nie zmienisz bo musisz zapisać jako tekst, spróbuj zrobić intval() na tym co podajesz do funkcji date()
globalinfo
No to mnie zaskoczyłeś bo ja się męczę atu wszystko jest ok.
Więc jaki inny problem może być że to nie chodzi w mojej przeglądarce- Chromium system Suse 13.2
maryaan
Przeglądarka nie ma tu nic do rzeczy, skrypt wykonywany jest po stronie serwera. Teraz zauważyłem że problem jest chyba tu, że u Ciebie zmienna $pos liczona jest jako 13 i pewnie o to chodzi. Powinno być 10. Spróbuj dla testu zmienić linijkę
  1. $stringFromFile = fread($stateFile,filesize(myStateName));

na
  1. $stringFromFile='1488113398 23 56 67';


Jeśli na tym zadziała to przyczyna leży w pliku smile.gif
rafkon1990
  1.  
  2. $stringFromFile = "1488113398 23 56 67";
  3. $exploded = explode(' ', $stringFromFile);
  4. $lastTime = date("Y-m-d H:i:s",$exploded[0]);
  5. unset($exploded[0]);
  6. $last = implode(' ',$exploded);
  7. if ($last[1]=="0")
  8. $lastState = "Off";
  9. else
  10. $lastState = "On";
  11. echo "Last auto-contact from the water heater was on ". $lastTime. " and the status was ". $lastState. " (Reset was ".$last." Minutes ago)";
  12.  
  13.  


Last auto-contact from the water heater was on 2017-02-26 07:49:58 and the status was On (Reset was 23 56 67 Minutes ago)
globalinfo
Cytat(maryaan @ 26.02.2017, 16:26:09 ) *
Przeglądarka nie ma tu nic do rzeczy, skrypt wykonywany jest po stronie serwera. Teraz zauważyłem że problem jest chyba tu, że u Ciebie zmienna $pos liczona jest jako 13 i pewnie o to chodzi. Powinno być 10. Spróbuj dla testu zmienić linijkę
  1. $stringFromFile = fread($stateFile,filesize(myStateName));

na
  1. $stringFromFile='1488113398 23 56 67';


Jeśli na tym zadziała to przyczyna leży w pliku smile.gif


Działa z tym kodem dobrze.
Czyżby plik był zapisany w innym formacie - edytowałem go w LibreOffice Writer - zapisałem jako txt.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.