Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Odczyt daty w pliku txt.
globalinfo
post
Post #1





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 8.10.2006

Ostrzeżenie: (0%)
-----


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źć (IMG:style_emoticons/default/sciana.gif)

Ten post edytował globalinfo 26.02.2017, 14:37:21
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
rafkon1990
post
Post #2





Grupa: Zarejestrowani
Postów: 37
Pomógł: 9
Dołączył: 14.09.2016
Skąd: Śląskie

Ostrzeżenie: (0%)
-----


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));
Go to the top of the page
+Quote Post
Tomplus
post
Post #3





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


jak to jest zwykły plik tekstowy to wystarczy dać file_get_content($src);
Go to the top of the page
+Quote Post
globalinfo
post
Post #4





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 8.10.2006

Ostrzeżenie: (0%)
-----


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?

Ten post edytował globalinfo 26.02.2017, 15:10:28
Go to the top of the page
+Quote Post
maryaan
post
Post #5





Grupa: Zarejestrowani
Postów: 380
Pomógł: 2
Dołączył: 5.01.2007

Ostrzeżenie: (0%)
-----


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()
Go to the top of the page
+Quote Post
globalinfo
post
Post #6





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 8.10.2006

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
maryaan
post
Post #7





Grupa: Zarejestrowani
Postów: 380
Pomógł: 2
Dołączył: 5.01.2007

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/smile.gif)

Ten post edytował maryaan 26.02.2017, 16:26:45
Go to the top of the page
+Quote Post
rafkon1990
post
Post #8





Grupa: Zarejestrowani
Postów: 37
Pomógł: 9
Dołączył: 14.09.2016
Skąd: Śląskie

Ostrzeżenie: (0%)
-----


  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)
Go to the top of the page
+Quote Post
globalinfo
post
Post #9





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 8.10.2006

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 14:46