Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] wygasniecie newsa
-dark_lion-
post
Post #1





Goście







Witam mam takie pytanie czy jest możliwe aby ustawić danemu newsowi czas jego wygaśnięcia? załóżmy ze dodałem w poniedziałek tekst na stronę główna i chciałbym żeby zniknęła po 2 dniach od czasu jego nadania.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
benio101
post
Post #2





Grupa: Zarejestrowani
Postów: 111
Pomógł: 10
Dołączył: 16.07.2009
Skąd: Toruń

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


Użytkownik dodaje parametr, po jakim czasie ma się artykuł usunąć np. w dniach.
Teraz zapisujesz to do bazy danych.

Przy pobieraniu artykułów, sprawdzasz, czy różnica Czasów jest <= czasu wygaśnięcia artykułu, np.

  1. function roznicaCzasow($r,$m,$d,$h,$i,$s,$R,$M,$D,$H,$I,$S){
  2. $dni=Array(13);
  3. $dni[0]=$dni[12]=31; $dni[1]=28; $dni[2]=31; $dni[3]=30; $dni[4]=31; $dni[5]=30; $dni[6]=31; $dni[7]=31; $dni[8]=30; $dni[9]=31; $dni[10]=30; $dni[11]=31;
  4. $roznica=0;
  5. if($R<$r || ($R==$r && $M<$m) || ($R==$r && $M==$m && $D<$d))return "Bł?d: próba podróży w czasie niemożliwa!";
  6. if(!przestepny($R) && $M==1 && $D==29)return "Bł?d: docelowa data nie istnieje!";
  7. if($r<$R){
  8. $_s=$_i=$_h=$ileDniMinelo=0;
  9. $_d=$_m=1;
  10. while($_m<$m){
  11. $ileDniMinelo+=60*60*24*$dni[++$_m-(!(przestepny($r) && $_m==2))];
  12. }
  13. $ileDniMinelo+=60*60*24*($d-$_d);
  14. $ileDniMinelo+=60*60*($h-$_h);
  15. $ileDniMinelo+=60*($i-$_i);
  16. $ileDniMinelo+=$s-$_s;
  17. $s=$i=$h=0;
  18. $d=$m=1;
  19. $roznica+=(365+przestepny(++$r-1))*24*60*60-$ileDniMinelo;
  20. }
  21. while($r<$R){
  22. $roznica+=(365+przestepny(++$r-1))*24*60*60;
  23. }
  24. while($m<$M){
  25. $roznica+=60*60*24*$dni[++$m-(!(przestepny($r) && $m==2))];
  26. }
  27. $roznica+=60*60*24*($D-$d);
  28. $roznica+=60*60*($H-$h);
  29. $roznica+=60*($I-$i);
  30. $roznica+=$S-$s;
  31. return $roznica;
  32. }
  33.  
  34. function przestepny($rok){
  35. return (!$rok%4 && !(!$rok%100 && $rok%400))?1:0;
  36. }
  37.  
  38. $r=$datanapisaniapostu[0].$datanapisaniapostu[1];
  39. $m=$datanapisaniapostu[2].$datanapisaniapostu[3];
  40. $d=$datanapisaniapostu[4].$datanapisaniapostu[5];
  41. $h=$datanapisaniapostu[6].$datanapisaniapostu[7];
  42. $i=$datanapisaniapostu[8].$datanapisaniapostu[9];
  43. $s=$datanapisaniapostu[10].$datanapisaniapostu[11];
  44. $R=date(y);
  45. $M=date(m);
  46. $D=date(d);
  47. $H=date(H);
  48. $I=date(i);
  49. $S=date(s);
  50.  
  51. // $datanapisaniapostu zawiera datę, kiedy post został napisany w formie rrmmddhhiiss, gdzie rr - rok%100, mm - miesiąc, dd - dzień, hh - godzina, ii - minuty, ss - sekundy.
  52. // $limit zawiera liczbę dni, ile artykuł jest aktywny, jest liczbą naturalną
  53.  
  54. // i teraz warunek:
  55.  
  56. if(roznicaCzasow($r,$m,$d,$h,$i,$s,$R,$M,$D,$H,$I,$S)<=60*60*24*$limit){
  57. // wyswietl artykuł
  58. } else {
  59. // nie wyświetlaj
  60. }
  61.  

edit: Poprawiłem linijkę, bo wdarła się literówka. Tak to jest, jak się pisze na pół przytomnym.

Ten post edytował benio101 11.01.2011, 15:35:57
Go to the top of the page
+Quote Post

Posty w temacie
- dark_lion   [PHP] wygasniecie newsa   10.01.2011, 17:18:48
- - MateuszS   Możesz to zrobić zwyczajnie sprawdzając datę newsa...   10.01.2011, 19:19:57
- - vokiel   A nie lepiej po prostu wyświetlać newsy, których d...   10.01.2011, 19:51:05
- - dark_lion   hm najlepiej jak podam przykład. Chodzi mi o to ze...   10.01.2011, 20:02:42
- - thek   Najprościej? Niech ustawia datę/czas wygaśnięcia i...   10.01.2011, 20:31:00
- - dark_lion   thek czy mogłbym cie prosic o mały przyklad ? nie...   10.01.2011, 20:55:15
- - benio101   Użytkownik dodaje parametr, po jakim czasie ma się...   10.01.2011, 21:11:01
- - vokiel   @benio101, nie zrozum mnie źle, ale co to jest? 3...   10.01.2011, 21:56:02
|- - benio101   Cytat(vokiel @ 10.01.2011, 21:56:02 )...   11.01.2011, 15:32:01
- - thek   A po co aż takie kombinowanie vokiel? Jeśli data j...   11.01.2011, 00:29:40
- - vokiel   Cytat(thek @ 11.01.2011, 00:29:40 ) A...   11.01.2011, 10:09:43
- - thek   Z doświadczenia Ci powiem vokiel, że dodawanie i o...   11.01.2011, 11:49:36
- - vokiel   Tu się chyba thek nie zrozumieliśmy. Miałem na myś...   11.01.2011, 13:24:30
- - thek   Ok... Takie coś ma sens jak napisałeś, ale jedynie...   11.01.2011, 14:01:59
- - vokiel   Cytat(benio101 @ 11.01.2011, 15:32:01...   11.01.2011, 18:29:26
- - thek   Tu się zgodzę z vokielem. Bez urazy benio, ale Twó...   12.01.2011, 00:00:44
- - melkorm   Albo użyć chociażby obiektu DateTime gdzie przy uż...   12.01.2011, 00:03:49
- - thek   Byłbym zapomniał benio.... Nie widzisz skali probl...   12.01.2011, 08:49:45
- - benio101   Tyle tylko, że rozwiązałem całkowicie problem tak,...   12.01.2011, 12:42:57
- - thek   RE: [PHP] wygasniecie newsa   12.01.2011, 15:05:30
- - vokiel   Po pierwsze benio101 przyjrzyj się tematowi, i prz...   12.01.2011, 15:53:32
- - thek   @vokiel: Celna uwaga Temat jak widzisz nie jest o...   12.01.2011, 16:19:00


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.10.2025 - 00:48