Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] zliczanie dni
Forum PHP.pl > Forum > Przedszkole
fredzio90
otóż mam problemik, ponieważ chcę umieścić na stornie, licznik dni od danej datty,..


otóż mam wpis w bazie, w polu do_kiedy mam date: 11/07/2007 oraz od_kiedy 04/06/2007
i podczas wyświetlania, chciałbym aby pokazywało ile dni zostało do tej daty, oraz ile dni będzie trwał ten konkurs

oraz jak sprawdzać, czy data w polu do kiedy, nie jest już po czasie, dokłądnie czy już data od_kiedy<daty teraz

jak to można zrobić questionmark.gif
Sokal
mktime(), time(), date(), ponadto inne funkcje 'datowe', które znajdziesz w manualu

drugie pytanie => if() {} else {}
fredzio90
ale niewiem woogule czy ta data ma taki sam format jak np mktime czy nie ...
andy84
trzymaj tutaj napisalem na szybko ci skrypcik zwykla matematyka + warunek co jesli jest juz po terminie a ty mozesz juz wyrzucic to na ekran - mozesz wpisy daty w bazie rozbic i potem je wrzucic za moje statyczne cyferki wtedy bedziesz ustawial date stala do kiedy to mabyc a od kiedy itak odlicza w dol wiec zawsze podajesz obecna date na tej samej zasadzie mozna dodac jeszce godziny min sek itd . mam nadzieje ze sie przyda:)

PS. co do formatu daty to http://uk.php.net/date poczytaj sobie co i jak

  1. <?php
  2.  
  3. $d = date("d");
  4. $m = date("m");
  5. $r = date("Y");
  6.  
  7.  
  8. $dd = "11";
  9. $mm = "7";
  10. $rr = "2007";
  11.  
  12. $a=$d-$dd;
  13. $b=$m-$mm;
  14. $c=$r-$rr;
  15. if($a<0){
  16. $a='0';
  17. }
  18. elseif($b<0){
  19. $b='0';
  20. }
  21. elseif($c<0){
  22. $c='0';
  23. }
  24. echo "$a/$b/$c";
  25.  
  26.  
  27. ?>
fredzio90
właśnie chciałem sprawdzić, i niemoge takiej funkcji gotowej, wbudowanej już żeby data była podzielona backshashami.....

bo coś tkaiego znalazłem:

  1. <?php
  2. $timen = time();
  3.  
  4. $query_del = mysql_query("DELETE FROM $sprawdziany_tbl WHERE datakon<$timen");
  5. ?>


ale to w moim porzypadku nie zadziała.. boto jest przykłądowo taka data: 28-06-2007

a ja mam : 30/06/2007
andy84
Cytat(fredzio90 @ 20.06.2007, 23:07:44 ) *
właśnie chciałem sprawdzić, i niemoge takiej funkcji gotowej, wbudowanej już żeby data była podzielona backshashami.....

bo coś tkaiego znalazłem:

  1. <?php
  2. $timen = time();
  3.  
  4. $query_del = mysql_query("DELETE FROM $sprawdziany_tbl WHERE datakon<$timen");
  5. ?>


ale to w moim porzypadku nie zadziała.. boto jest przykłądowo taka data: 28-06-2007

a ja mam : 30/06/2007


jezeli date trzymasz w bazie mozesz zawsze sobie podzielic ja jedna kolumna to dzien druga miesiac trzecia rok i dane niech sie osobno zapisuja a ty sobie zrobisz z tym co bedziesz tylko chcial - ale napewna so bardziej zaawansowane metody o ktorych jeszce nie wiem - ale nadal nie wiem co ci sie nie podoba w tym skrypcie co ci wyslalem questionmark.gifquestionmark.gif przeciez chyba o to ci chodzilo ?
Darti
Bo w bazie danych do zapisu dat stosuje się typ pola DATE, gdybyś zastosował taki typ pola to wszystko stało by się łatwiejsze
fredzio90
no właśnie, bo poprostu chcę sprawdzać czas, a takto to będe musiał pobierać WSZYSTKIE dane z serwisu, i sprawdzać....

oki, mam date podzieloną, np tak:
  1. <?php
  2. $date = '30/06/2007';
  3.  
  4. $podz = explode("/", $date);
  5. $dd = $podz[0];
  6. $mm = $podz[1];
  7. $rr = $podz[2];
  8. ?>



i jak teraz, sprawdzać ?
Darti
To coś poniżej powinno działać, ale mimo wszystko polecam używanie pola typu DATE w bazie danych...
  1. <?php
  2. $od = '04/06/2007';
  3. $do = '11/07/2007';
  4. $teraz = time();
  5.  
  6. $od_kiedy = explode('/',$od);
  7. $do_kiedy = explode('/',$do);
  8.  
  9. $od_kiedy = mktime(0,0,0,$od_kiedy[1],$od_kiedy[0],$od_kiedy[2]);
  10. $do_kiedy = mktime(0,0,0,$do_kiedy[1],$do_kiedy[0],$do_kiedy[2]);
  11.  
  12. $ile_dni_przedzial = $do_kiedy - $od_kiedy;
  13. $dni_minelo = ($teraz - $od_kiedy) / (60 * 60 * 24);
  14. $dni_pozostalo = ($do_kiedy - $teraz) / (60 * 60 * 24);
  15. $ile_dni_przedzial = $ile_dni_przedzial / (60 * 60 * 24);
  16.  
  17.  
  18. echo 'Okres między '. $od .' a '. $do .' ma '. $ile_dni_przedzial ." dni<br>n";
  19. echo 'Od '. $od .' upłynęło '. round($dni_minelo) ." dni<br>n";
  20. echo 'Do '. $do .' pozostało '. round($dni_pozostalo) ." dni<br>n";
  21. ?>


p.s. jeżeli $dni_pozostalo będzie mniejsze od 0 to data minęła
fredzio90
oki, dziękuje, a jak zrobić wybieranie z bazy, i sortowanie automatycznie według dni z pola do_kiedy mam coś takiego zrobionego, narazie bez sortowania:


  1. <?php
  2. $sql = mysql_query("SELECT * FROM $konkursy_tbl WHERE id='$id' AND act='yes'");
  3. $r = mysql_fetch_array($sql);
  4.  
  5. $dodal = $r['nick'];
  6. $nazwa = $r['nazwa'];
  7. $opis = $r['opis'];
  8. $od_kiedy = $r['od_kiedy'];
  9. $do_kiedy = $r['do_kiedy'];
  10. $foto = $r['foto'];
  11. $gg = $r['gg'];
  12. $email = $r['email'];
  13.  
  14. $dat = explode('/', $do_kiedy);
  15. $mm = $dat[1];
  16. $dd = $dat[0]; 
  17. $rr = $dat[2];
  18.  
  19.  
  20. $zdarzenie = mktime(0,0,0,$mm,$dd+1,$rr);
  21. $teraz = mktime();
  22. $roznica = $zdarzenie - $teraz;
  23. $dni = floor($roznica/(60*60*24));
  24.  
  25.  
  26. if($dni>0)$c = 'Zostało <b>'.$dni.'</b> Dni';
  27. else
  28. if($dni<0)$c = '<font color=green>Nieaktualny</font>';
  29. else
  30. $c = '<font color=red>Do Dzisiaj</font>';
  31. ?>
uli
Podstawy SQL'a -> ORDER BY
fredzio90
ja wiem że ORDER by, tylko niewiem według jakiej wartości... obliczanie jakieś...
Nightmare
Jeśli chcesz sortować według pola do_kiedy to logicze, że ORDER BY do_kiedy i w zależności czy chcesz rosnąco czy malejąco to ASC lub DESC
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.