Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Pomoc w dokączeniu skryptu data ile dni
Forum PHP.pl > Forum > Przedszkole
szczabik
Witam czy może mi ktoś pomóc dokończyć skrypt który znalazłem na tym forum chodzi mi tylko o tą funcie co jest w komentarzu czyli mktime Resztę czyli by liczyło godziny dni tygodnie itp. Już będę sam w stanie zrobić
  1. <?php
  2. function IleTemu($czas)
  3. { 
  4. $now = time(); 
  5. $roznica = $czas - $now;
  6. if($roznica<=60)
  7. {  
  8. $roznica = date("s", 
  9. $roznica+$now);
  10. echo $roznica . " sekund temu";  
  11. }
  12. if($roznica<=60*60 AND $roznica>60)
  13. {  
  14. $roznica = date("i", $roznica+$now);
  15. echo $roznica . " minut temu";
  16. }
  17. // itd. godzin, dni, lat..
  18. }
  19. //$moja_data = mktime($jakas_data);/*mktime ( int $godzina , int $minuta , int $sekunda , int $miesiąc , int $dzień , in
    t $rok [, int $letni/zimowy ] )*/
  20.  
  21. echo IleTemu($moja_data);
  22. ?>
bim2
Ale co mamy Ci dokończyć? Widzę, że wszystko masz? Uzupełnij tylko dane, jakie masz w komentarzu...
szczabik
Zrobiłem tak i nie działa
  1. <?php
  2. function IleTemu($czas)
  3. { 
  4. $now = time(); 
  5. $roznica = $czas - $now;
  6. if($roznica<=60)
  7. {  
  8. $roznica = date("s", 
  9. $roznica+$now);
  10. echo $roznica . " sekund temu";  
  11. }
  12. if($roznica<=60*60 AND $roznica>60)
  13. {  
  14. $roznica = date("i", $roznica+$now);
  15. echo $roznica . " minut temu";
  16. }  
  17. }
  18.  
  19.  
  20. $jakas_data = 1214646036;
  21.  
  22. $moja_data = mktime($jakas_data);
  23. $time = mktime(0, 0, 0, 0, 0, ,0);
  24.  
  25.  
  26. echo IleTemu($moja_data);
  27. ?>
bim2
No bo twoja data to:
0 godzina 0 minuta 0 sekunda 0 miesiąc 0 dzień 0 rok
ustaw dokładnie kiedy coś sie działo.
szczabik
Cytat(bim2 @ 28.06.2008, 14:50:10 ) *
No bo twoja data to:
0 godzina 0 minuta 0 sekunda 0 miesiąc 0 dzień 0 rok
ustaw dokładnie kiedy coś sie działo.


A jak mam to ustawić bo nie umiem tego a tylko o to mi chodzi z resztą sobie poradzę
klocu
Ja bym to trochę odchudził i przekazywał bardziej ludzką datę:
  1. <?php
  2. function IleTemu( $czas ) 
  3. {
  4. if( $czas > time() ) { return 'blad'; }
  5. $roznica = time() - $czas;
  6.  
  7. if( $roznica <= 60 ) { return date( 's', $roznica ) . ' sekund temu'; } else { return date( 'i', $roznica ) . ' minut temu'; }
  8. } 
  9. echo IleTemu( '1214676011' );
  10.  
  11. ?>


"Zrobiłem tak i nie działa" - no tak miałeś błąd w lini $time = mktime(0, 0, 0, 0, 0, <a tu wcięło parametr>,0); sprawdzaj takie rzeczy bo to drobnostka a wywaliła wszystko.
szczabik
Wszyto ładnie ale ja mam w bazie zapisaną datę w formacie unixowym i jak zmienię datę to źle liczy zamiast 2 min temu to mi pokazuje 52 minuty temu
  1. <?php
  2. function IleTemu( $data ) 
  3. {
  4. $czas = strtotime( $data );
  5. if( $czas > time() ) 
  6. { return null; }
  7. $roznica = time() - $czas;
  8. $roznica2 = date( 'i', $roznica );
  9. return "$roznica2 ". (($roznica <= 60 ) ? "sekund" : "minut" ) . ' temu'; } 
  10. echo IleTemu( '1214675493' );
  11. ?>
klocu
W poprzednim poście poprawiłem kod. Zagapiłem się na te sekundy i dlatego trochę źle naliczało, ale błąd już naprawiłem.
szczabik
Dzięki działa ale teraz zrobiłem tak i pokazuje mi 02 godzin temu wie ktoś czemu
  1. <?php
  2. function IleTemu( $czas ) 
  3. {
  4. if( $czas > time() ) 
  5. { return 'blad'; }
  6. $roznica = time() - $czas;
  7. if( $roznica <= 60 ) 
  8. { return date( 's', $roznica ) . ' sekund temu'; } 
  9. if($roznica<=60*60 AND $roznica>60)
  10. { return date( 'i', $roznica ) . ' minut temu'; }
  11. if($roznica<=60*60*24 AND $roznica>3600)
  12. { return date( 'H', $roznica ) . ' godzin temu'; }
  13. }
  14. echo IleTemu( '1214676011' );
  15. ?>
.radex
Naucz się czytać manual

http://pl2.php.net/manual/pl/function.date.php

H Godzina, w formacie 24-godzinnym, z zerami wiodącymi 00 through 23

wniosek? działa poprawnie. Jak powinno być, żeby Ci pasowało?

G Godzina, w formacie 24-godzinnym, bez zer wiodących 0 aż do 23
szczabik
Dzięki działa ale i tak coś jest nie tak bo data jest 19:51 to powinno być 1 godzin temu a wyświetla mi 2 godzin temu czemu się tak dzieje ?
.radex
bo jest dwudziesta pierwsza?

EDIT:

No dobra, nie będę taki tongue.gif

zamiast

{ return date( 'H', $roznica ) . ' godzin temu'; }

daj

{ return ((int)$roznica/3600) . ' godzin temu'; }
szczabik
Cytat(radex_p @ 28.06.2008, 21:29:30 ) *
bo jest dwudziesta pierwsza?

EDIT:

No dobra, nie będę taki tongue.gif

zamiast

{ return date( 'H', $roznica ) . ' godzin temu'; }

daj

{ return ((int)$roznica/3600) . ' godzin temu'; }


Dzięki że byłeś łaskaw pomóc dopiero zaczynam
A po za tym jak ty zaczynałeś to od razu wszystko widziałeś ?
  1. <?php
  2. $data = 1214675493;
  3. $roznica=time()-$data;
  4. $iW=sprintf("%2d",floor($roznica/604800));
  5. $iD=sprintf("%2d",floor($roznica/(60*60*24)));
  6. $iH=sprintf("%2d",floor((($roznica%604800)%86400)/3600));
  7. $iM=sprintf("%02d",floor(((($roznica%604800)%86400)%3600)/60));
  8. $iS=sprintf("%02d",floor((((($roznica%604800)%86400)%3600)%60)));
  9. if($roznica<60){
  10. $roznica="$iS sekund temu";
  11. }
  12. if($roznica<=60*60 AND $roznica>60){
  13. $roznica="$iM minut temu";
  14. }
  15. if($roznica<=60*60*24 AND $roznica>3600){
  16. $roznica="$iH godziny $iM minut temu";
  17. }
  18. echo "$roznica";
  19. ?>

A ogólnie naprowadziłeś mnie i zrobiłem tak

Tylko jak mam to wstawić teraz do funkcji tak jak było wcześniej czyli
  1. <?php
  2. function IleTemu( $czas ) 
  3. {
  4.  
  5. }
  6. echo IleTemu( '' );
  7. ?>

Bo chce to wywołać za pomocą funkcji echo IleTemu
.radex
Cytat
echo "$roznica";


Wsadzanie tutaj na siłę cudzysłowów to głupi pomysł. Najlepiej używać tylko apostrofów, a łączyć tekst ze zmiennymi za pomocą operatora kontenkacji (kropka). Cudzysłowy są użyteczne w przypadku np. "/n"

btw. Bardziej niestandardowa czcionka nie mogła być?
szczabik
Może mi ktoś pomóc jak mam teraz ten kod
  1. <?php
  2. $data = 1214675493;
  3. $roznica=time()-$data;
  4. $iW=sprintf("%2d",floor($roznica/604800));
  5. $iD=sprintf("%2d",floor($roznica/(60*60*24)));
  6. $iH=sprintf("%2d",floor((($roznica%604800)%86400)/3600));
  7. $iM=sprintf("%02d",floor(((($roznica%604800)%86400)%3600)/60));
  8. $iS=sprintf("%02d",floor((((($roznica%604800)%86400)%3600)%60)));
  9. if($roznica<60){
  10. $roznica="$iS sekund temu";
  11. }
  12. if($roznica<=60*60 AND $roznica>60){
  13. $roznica="$iM minut temu";
  14. }
  15. if($roznica<=60*60*24 AND $roznica>3600){
  16. $roznica="$iH godziny i $iM minuty temu";
  17. }
  18. echo "$roznica";
  19. ?>

Wstawić w
  1. <?php
  2. function IleTemu( $czas ) 
  3. {  
  4. }
  5. echo IleTemu( '$mojadata');
  6. ?>

Bo chce wywołać go za pomocą echo IleTemu('$mojdata');
.radex
  1. <?php
  2. function IleTemu( $czas ) 
  3. {
  4. $roznica=time()-$czas;
  5. $iW=sprintf("%2d",floor($roznica/604800));
  6. $iD=sprintf("%2d",floor($roznica/(60*60*24)));
  7. $iH=sprintf("%2d",floor((($roznica%604800)%86400)/3600));
  8. $iM=sprintf("%02d",floor(((($roznica%604800)%86400)%3600)/60));
  9. $iS=sprintf("%02d",floor((((($roznica%604800)%86400)%3600)%60)));
  10. if($roznica<60){
  11. $roznica="$iS sekund temu";
  12. }
  13. if($roznica<=60*60 AND $roznica>60){
  14. $roznica="$iM minut temu";
  15. }
  16. if($roznica<=60*60*24 AND $roznica>3600){
  17. $roznica="$iH godziny i $iM minuty temu";
  18. }
  19. return $roznica;
  20. }
  21. echo IleTemu($mojadata);
  22. ?>


Kto Ciebie nauczył dawać zmienne w apostrofy?
szczabik
Cytat(radex_p @ 29.06.2008, 10:54:23 ) *
Kto Ciebie nauczył dawać zmienne w apostrofy?

Sam tak się nauczyłem a co to za różnica czy jest echo '$roznica'; czy echo "$roznica";

Dzięki działa tak jak chciałem bo pobieram date z bazy i przed datą właśnie chciałem wstawić IleTemu jak mi się uda to dopisze ile dni tygodni z tym raczej chyba nie będę miał problemu
antyqjon
Cytat(szczabik @ 29.06.2008, 11:20:50 ) *
Sam tak się nauczyłem a co to za różnica czy jest echo '$roznica'; czy echo "$roznica";

Zasadnicza.
szczabik
Mam mały problem jeszcze bo nie chce liczyć miesięcy i lat nie wie jak tutaj dodać by liczyło mi miesiące i lat
  1. <?php
  2. $iY=sprintf("%2d",floor($roznica/604800));
  3. $iJ=sprintf("%2d",floor($roznica/604800));
  4. ?>

A cały kod wygląda tak
  1. <?php
  2. function datatemu( $czas ) {
  3. $roznica=time()-$czas;
  4. $iY=sprintf("%2d",floor($roznica/604800));
  5. $iJ=sprintf("%2d",floor($roznica/604800));
  6. $iW=sprintf("%2d",floor($roznica/604800));
  7. $iD=sprintf("%2d",floor($roznica/(60*60*24)));
  8. $iH=sprintf("%2d",floor((($roznica%604800)%86400)/3600));
  9. $iM=sprintf("%02d",floor(((($roznica%604800)%86400)%3600)/60));
  10. $iS=sprintf("%02d",floor((((($roznica%604800)%86400)%3600)%60)));
  11.  
  12. if($roznica<60)
  13. {$roznica="$iS sekund temu";}
  14.  
  15. if($roznica<=60*60 AND $roznica>60)
  16. {$roznica="$iM minut temu";}
  17.  
  18. if($roznica<=60*60*24 AND $roznica>3600)
  19. {$roznica="$iH godzin i $iM minut temu";}
  20.  
  21. if($roznica<=60*60*24*7 AND $roznica>60*60*24)
  22. {$roznica="$iD Dni temu";}
  23.  
  24. if($roznica<=60*24*60*60 AND $roznica>60*60*24*7)
  25. {$roznica="$iW Tygodni temu";}
  26.  
  27. if($roznica<=60*24*60*60*12 AND $roznica>60*24*60*60)
  28. {$roznica="$iJ Miesięcy temu";}
  29.  
  30. if($roznica<=60*24*60*60*12*24 AND $roznica>60*24*60*60*12 )
  31. {$roznica="$iY Lat temu";}
  32.  
  33. return $roznica;}
  34. ?>
.radex
Cytat(szczabik @ 29.06.2008, 18:43:53 ) *
Mam mały problem jeszcze bo nie chce liczyć miesięcy i lat nie wie jak tutaj dodać by liczyło mi miesiące i lat


Ty się naucz może poprawnie wysławiać, bo czasami nie idzie kompletnie zrozumieć co masz na myśli tongue.gif
szczabik
Chodzi o to że nie liczy mi miesięcy i lat. Z resztą jest ok. czyli sekundy minuty godziny dni tygodnie pokazuje ok. dla przykładu daje screena o co mi chodzi
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.