Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Ostatnio piątek każdego miesiąca
Forum PHP.pl > Forum > Przedszkole
lewin
Mam skrypt, który odlicza czas do wybranej daty..
Jak zmodyfikować poniższy skrypt, aby automatycznie odliczał czas do każdego, ostatniego piątku miesiąca bez wprowadzania manualnie daty?
  1. <script type="text/javascript">
  2. function CD(d,o,t,x){return[x=~~(t=(d-o)/864e5),x=~~(t=(t-x)*24), x=~~(t=(t-x)*60),~~((t-x)*60)]}
  3. function R(t){
  4. t=CD(new Date(2008,02,28,18,30,00),new Date());
  5. document.getElementById('costam').innerHTML='za '+t[0]+" dni, "+t[1]+" godzin, "+t[2]+" minut, "+t[3]+"sekund";
  6. if(!t[0]&&!t[1]&&!t[2]&&!t[3])document.getElementById('costam').innerHTML='MASA KRYTYCZNA';
  7. else setTimeout('R()',1e3);
  8. }
  9.  
  10. onload=function(){R();}
  11.  
  12. <div id="costam"></div>
maziak
Aby odliczac czas do jakiejs tam daty, trzeba naturalnie znac ta date, tutaj z pomoca przychodzi nam strtotime smile.gif

Żywcem z manuala wzięte :
  1. <?php
  2. $lastfriday=strtotime("last Friday",mktime(0,0,0,date("n")+1,1));
  3. //zwroci nam znacznik czasu ostatniego piatku biezacego miesiaca
  4. //dalej przekazujesz to do zmiennych JS jak Ci sie zywnie podoba
  5.  
  6. echo date('l F j, Y, g:i a',$lastfriday);
  7.  
  8. ?>
lewin
Zmodyfikowalem skrypt wg. Twojej wskazowki, ale on zamiast odliczac to pokazuje date ostatniego piatku miesiaca. Jak uruchomic teraz odliczanie?
  1. <?php
  2. $lastfriday=strtotime("last Friday",mktime(0,0,0,date("n")+1,1));
  3.  
  4. echo date('Y,m,d,g,i',$lastfriday);
  5. ?>
  6.  
  7. <script type="text/javascript">
  8. function CD(d,o,t,x){return[x=~~(t=(d-o)/864e5),x=~~(t=(t-x)*24), x=~~(t=(t-x)*60),~~((t-x)*60)]}
  9. function R(t){
  10. t=CD(new Date(<? echo date('Y,m,d,g,i',$lastfriday); ?>),new Date());
  11. document.getElementById('costam').innerHTML='za '+t[0]+" dni, "+t[1]+" godzin, "+t[2]+" minut, "+t[3]+"sekund";
  12. if(!t[0]&&!t[1]&&!t[2]&&!t[3])document.getElementById('costam').innerHTML='OSTATNI PIATEK MIESIACA';
  13. else setTimeout('R()',1e3);
  14. }
  15.  
  16. onload=function(){R();}
  17. </script>
  18. <div id="costam"></div>
maziak
Witaj, wciąłeś sekundy, ostatni parametr Date.
Teraz jak spojżysz do źródła, w przeglądarce, to faktycznie pokazuje 2008,02,28,00,00,00 czyli tak jak powinno być (jak brałeś godzinę z date() to pokazywało 12, czyli nic dobrego dla skryptu, jak mniemam). Nie liczy jednak dobrze, bo przecież to nie możliwe aby brakowalo nam jeszcze 47 dni. Jednak teraz problem leży raczej po stronie JS, wiec w tym Ci raczej, ze względu na moje braki w edukacji, nie pomogę.

  1. <?php $lastfriday=strtotime("last Friday",mktime(0,0,0,date("n")+1,1));
  2. ?>
  3.  
  4. <script type="text/javascript">
  5. function CD(d,o,t,x){return[x=~~(t=(d-o)/864e5),x=~~(t=(t-x)*24), x=~~(t=(t-x)*60),~~((t-x)*60)]}
  6. function R(t){
  7. t=CD(new Date(<?php echo date('Y,m,d',$lastfriday) ?>,00,00,00),new Date());
  8. document.getElementById('costam').innerHTML='za '+t[0]+" dni, "+t[1]+" godzin, "+t[2]+" minut, "+t[3]+"sekund";
  9. if(!t[0]&&!t[1]&&!t[2]&&!t[3])document.getElementById('costam').innerHTML='MASA KRYTYCZNA';
  10. else setTimeout('R()',1e3);
  11. }
  12.  
  13. onload=function(){R();}
  14.  
  15. <div id="costam"></div>
lewin
Skrypt, ktory zaproponowales ruszyl i dziala, ale odlicza o jeden miesiac do przodu sad.gif
Spowodowane to jest tym, iz JS jako styczen przypisuje miesiac 00. Ktos moze pomoc w JS?
webdice
Popraw na:

  1. <?php
  2. $lastfriday=strtotime("last Friday",mktime(0,0,0,date("n"),1));
  3. ?>
maziak
Jeżeli skrypt ma liczyć czas do ostatniego piatku aktualnego miesiaca, to jednak zostaw tak jak jest.

Przykładowo teraz mamy marzec, w marcu ostatni piątek to 28 dzień miesiąca a w lutym tego roku - 29.
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.