Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z porównaniem dat
djmassive
post 13.09.2005, 16:58:14
Post #1





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 13.09.2005
Skąd: Jędrzejów

Ostrzeżenie: (10%)
X----


witam

Jestem nowy, mam nadzieje, że pomozecie mi rozwikłać problem nad którym siedzę już drugi dzień exclamation.gif

Napisałem taki prosty skrypt, który zapisuje do bazy danych z formularza różne informcje wraz z podanymi datami. Potrzebuje zrobić skrypt, w którym będę mógł wypisać wszystkie informacje których data jest większa od aktualnej; takie których data jest równa aktualnej; oraz takie, których data jest mniejsza od aktualnej.

Próbowałem na wiele sposobów, obecny skrypt zrobiłem na zasadzie oddzielnych liczb dni, miesięcy oraz rok.

w bazie mysql wyglądało by to tak:

ID | NAZWA | DZIEN | MIES | ROK | KOMMENTARZ
-----------------------------------------------------------

przyczym ja zastosowałem zmienne $datadn - dzień; $datams - miesiąc; $datarok - rok;

Oto skrypt:

  1. <?
  2.  include('adminconfig.php');
  3.  
  4.  $db=mysql_connect($dbhost,$dbuser,$dbpass);
  5. mysql_select_db($dbname);
  6.  
  7.  $dane2="SELECT * FROM booking_nowe order by id";
  8.  $wynik2=mysql_query($dane2);
  9.  
  10.  $tdn=date('d');
  11.  $tms=date('m');
  12.  $trok=date('Y');
  13.  
  14. while($wiersz2=mysql_fetch_array($wynik2)) {
  15.  
  16.  
  17. if (($tdn == $wiersz2['datadn']) && ($tms == $wiersz2['datams']) && ($trok == $wiersz2['datarok']))  {
  18.  
  19. echo "</br>Jest dzisiaj tj. dnia </br>";
  20. echo $wiersz2['datadn'].".".$wiersz2['datams'].".".$wiersz2['datarok']."</br>";
  21.  
  22.  }
  23.  
  24.  
  25.  elseif (($tdn >= $wiersz2['datadn']) && ($tms >= $wiersz2['datams']) && ($trok >= $wiersz2['datarok'])){
  26.  echo "</br>Już się odbył dnia </br>";
  27.  echo $wiersz2['datadn'].".".$wiersz2['datams'].".".$wiersz2['datarok']."</br>"; }
  28.  
  29.  
  30.  if (($tdn <= $wiersz2['datadn']) && ($tms <= $wiersz2['datams']) && ($trok <= $wiersz2['datarok']))  {
  31.  echo "</br>Się odbędzie dnia </br>";
  32.  echo $wiersz2['datadn'].".".$wiersz2['datams'].".".$wiersz2['datarok']."</br>";
  33.  }
  34.  
  35. } ?>


no mniejwięcej tak to napisałem. Wiem, że date łatwo można obliczyć poprzez zmiane jej na UNIXowy format poleceniem mktime(); lub time(); jednak dużo próbowałem, i nie mogłem nic wymodzić. Przykład:

  1. <?
  2.  
  3. include('dane.inc'); // Pobieram zmienne
  4.  
  5. $aktualnadata=mktime(); // Pobieram aktualną datę w formacie UNIX
  6.  
  7. $db=mysql_connect($host,$user,$pass);
  8. $mysql_select_db("wydarzenia");
  9.  
  10. $dane="SELECT * FROM wydarzenia";
  11. $wykonane=mysql_query($dane);
  12.  
  13. while($wiersz=mysql_fetch_array($wyn)) {  // Pobieram dane z bazy
  14.  
  15. $test=$wiersz['data']; 
  16. $databazy=mktime(0,0,0,$test); // Powinno konwertować date formatu 
  17.  // DN.MS.ROK do formatu UNIX'a
  18.  
  19. if ($aktualnadata>$databazy) { echo "</br>Dawno już mineło".$wiersz['nazwa']; }
  20. if ($aktualnadata<$databazy) { echo "</br>Dopiero będzie".$wiersz['nazwa']; }
  21. if ($aktualnadata==$databazy) { echo "</br>Dziś jest ten dzień".$wiersz['nazwa']; }
  22.  
  23. }
  24.  
  25.  
  26. ?>


Tak to mniej więcej wyglądało. Kto pomorze questionmark.gif


--------------------
.:: www.theprotypes.com - muzyka house - pobierz mp3 - zapraszam serdecznie ::.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
treewood
post 13.09.2005, 19:52:35
Post #2





Grupa: Zarejestrowani
Postów: 215
Pomógł: 0
Dołączył: 18.01.2003

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


moze troszke nie na temat. z tego co wiem to powinno sie stosowac <br /> a nie <br> czy </br>. chyba, ze to jakis format zastepczy?


--------------------
Działam w OpenSolution.org, autor Quick.Cms i Quick.Cart już od ponad 10 lat
Go to the top of the page
+Quote Post
djmassive
post 13.09.2005, 22:44:16
Post #3





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 13.09.2005
Skąd: Jędrzejów

Ostrzeżenie: (10%)
X----


Cytat(treewood @ 2005-09-13 18:52:35)
moze troszke nie na temat. z tego co wiem to powinno sie stosowac <br /> a nie <br> czy </br>. chyba, ze to jakis format zastepczy?

No ja zawsze używałem </br> (przejście do następnej lini) - działa zarówno na mozilli jak i na IE. A kto dopomoże ze skryptem ?


--------------------
.:: www.theprotypes.com - muzyka house - pobierz mp3 - zapraszam serdecznie ::.
Go to the top of the page
+Quote Post
Spirit86
post 13.09.2005, 22:53:26
Post #4





Grupa: Zarejestrowani
Postów: 607
Pomógł: 23
Dołączył: 8.09.2004
Skąd: Wrocław

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


nie łatwiej użyć strtotime" title="Zobacz w manualu php" target="_manual]?
Pobieasz teraźniejszy time" title="Zobacz w manualu php" target="_manual, po czym w pętli wypisującej dane z SQL porównujesz smile.gif

Albo jeszcze łatwiej zmień typ
DZIEN | MIES | ROK
na
CZAS (time)

Ten post edytował Spirit86 13.09.2005, 22:54:59


--------------------
Audio: Metallica, Soil, RHCP, OffSpring, Green Day, "Retro", Gorillaz, Disturbed, Coma
DB: MySQL 4.1 | php: 4.4.3 Pomogłem Ci? Wciśnij przycisk POMÓGŁ.
Go to the top of the page
+Quote Post
eS...
post 14.09.2005, 02:13:31
Post #5





Grupa: Zarejestrowani
Postów: 367
Pomógł: 2
Dołączył: 4.03.2003
Skąd: C:/Windows/Temp

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


hmm, a może w samym zapytaniu sprobuj??
tu wszystko masz opisane
http://dev.mysql.com/doc/mysql/en/date-and...-functions.html


--------------------
Go to the top of the page
+Quote Post
djmassive
post 14.09.2005, 10:58:47
Post #6





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 13.09.2005
Skąd: Jędrzejów

Ostrzeżenie: (10%)
X----


Jeżeli to nie sprawi wam problemu, możecie napisać mi kod w php questionmark.gif


--------------------
.:: www.theprotypes.com - muzyka house - pobierz mp3 - zapraszam serdecznie ::.
Go to the top of the page
+Quote Post
nospor
post 14.09.2005, 11:21:26
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
nad którym siedzę już drugi dzień exclamation.gif
Miałem kiedyś kolegę, z którym pisałem pewien projekt. Miał on napisać pewną rzecz. Po dwóch tygodniach pokazuje swoje wypociny. Co tu duzo gadać. Nie wysilił się. Twardo jednak mówił iż siedział na tym 2 tygodnie. Ja się go pytam ile czasu spedzal przez te 2 tygodnie nad tym projektem. On mi na to że spedzil nad tym dwa weekendy, a konkretnie dwie soboty, a konkretnie 2 godziny każdej soboty. I wten sposób z dwóch tygodni zrobiłi się 4 godziny.
Przepraszam za tę dygresję, ale jak widzę taki teksty jak Twój to mnie takie coś nachodzi.

Wracając do tematu:
Ale poco se żecie komplikujesz? A nie możesz w tabeli zamiast tych trzech pól dzien, miesiąc, rok dać jednego pola "data" typu timestamp? Wówczas kod jest banalny:
  1. <?php
  2.  
  3. $aktualnadata=date('Y-m-d');
  4. $db=mysql_connect($host,$user,$pass);
  5. $mysql_select_db("wydarzenia");
  6. $dane="SELECT * FROM wydarzenia";
  7. $wykonane=mysql_query($dane);
  8. while($wiersz=mysql_fetch_array($wyn)) {   // Pobieram dane z bazy
  9.  
  10. $databazy=date('Y-m-d',$wiersz['data']); 
  11.  
  12. if ($aktualnadata>$databazy) { echo "</br>Dawno już mineło".$wiersz['nazwa']; }
  13. if ($aktualnadata<$databazy) { echo "</br>Dopiero będzie".$wiersz['nazwa']; }
  14. if ($aktualnadata==$databazy) { echo "</br>Dziś jest ten dzień".$wiersz['nazwa']; }
  15.  
  16. }
  17. ?>
i już.

zamiast timestamp może wogóle byc format "date" (Y-m-d). Nie trzeba wowczas w php konwersji robic.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
djmassive
post 14.09.2005, 20:04:22
Post #8





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 13.09.2005
Skąd: Jędrzejów

Ostrzeżenie: (10%)
X----


Jestem początkujący, większość skryptów robie z książką, 2 dni znaczą 2 dni , z wyłączeniem spania smile.gif coś koło 7 godzin, no i przerwami na toalete i jedzenie. Z tą datą się poddałem i dlatego napisałem do was. Ok, to ja ide stestować ten sposób.

EDIT: withstupidsmiley.gif Dzięki smile.gif Działa biggrin.gif:D:D Da się jakieś punkty dawać questionmark.gif tongue.gif

Ten post edytował djmassive 14.09.2005, 21:50:20


--------------------
.:: www.theprotypes.com - muzyka house - pobierz mp3 - zapraszam serdecznie ::.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 02:31