Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Przetwarzanie daty z selecta
viamarimar
post
Post #1





Grupa: Zarejestrowani
Postów: 303
Pomógł: 1
Dołączył: 24.09.2011

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


Prosty kod na przetwarzanie daty date podaje w formacie XXXX-xX-XX, a powinno sie zwrocic kiedy,x nazwa xxxx(na tej zasadzie)
Calosc jest niby ok tylko z selecta zawsze jest zwracany default, pomoze ktos?

  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>Untitled Document</title>
  6. </head>
  7.  
  8. <body>
  9. <?php
  10. #echo "<b>PRZYKŁAD</b><br>";
  11. #echo "#Zakładając, że dzis mamy ".date("j-m-Y") ." to ".date("j-m-Y",mktime(0,0,0,date("n"),date("j")-2,date("Y")))." to jest przedwczoraj.<br>";
  12. ?>
  13.  
  14.  
  15.  
  16. <?php
  17. echo "Podaj date w formacie YYYY-MM-DD"; ?>
  18. <form action="plik2.php" method="POST">
  19. Wpisz date:<input type="text" name="data" /><br /><br />
  20. <input type="submit" value="Wyślij" name="submit"/>
  21. <input type="submit" value="Reset" name="submit2"/>
  22. </form>
  23. <?
  24. if (isset($_POST['submit'])) {
  25.  
  26.  
  27.  
  28. #date("F j, Y", strtotime("yesterday"));
  29.  
  30. $data=$_POST['data'];
  31. if(!empty($data)){
  32. if(preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/" , $data)) {
  33.  
  34. $dni_tygodnia = array( 'niedziela', 'poniedziałek', 'wtorek', 'środa', 'czwartek', 'piątek', 'sobota' );
  35. $dzien_tygodnia = date("w",strtotime($data));
  36. $miesiac = date("n",strtotime($data));
  37. $miesiace = array(1 => 'stycznia', 'lutego', 'marca', 'kwietnia', 'maja', 'czerwca', 'lipca', 'sierpnia', 'września', 'października', 'listopada', 'grudnia');
  38. $dzien = date("j",strtotime($data));
  39. $rok = date("Y",strtotime($data));
  40.  
  41. #date("j-m-Y",mktime(0,0,0,date("n"),date("j")-2,date("Y")))." to jest przedwczoraj.<br>";
  42.  
  43.  
  44. $za_3_dni=date("j-m-Y",mktime(0,0,0,date("n"),date("j")+3,date("Y")));
  45. $pojutrze= date("j-m-Y",mktime(0,0,0,date("n"),date("j")+2,date("Y")));
  46. $jutro= date("j-m-Y",mktime(0,0,0,date("n"),date("j")+1,date("Y")));
  47. $dzisiaj= date("j-m-Y",mktime(0,0,0,date("n"),date("j"),date("Y")));
  48. $wczoraj= date("j-m-Y",mktime(0,0,0,date("n"),date("j")-1,date("Y")));
  49. $dwa_dni_temu= date("j-m-Y",mktime(0,0,0,date("n"),date("j")-2,date("Y")));
  50. $trzy_dni_temu= date("j-m-Y",mktime(0,0,0,date("n"),date("j")-3,date("Y")));
  51. $tydzien_temu= date("j-m-Y",mktime(0,0,0,date("n"),date("j")-7,date("Y")));
  52. $za_tydzien= date("j-m-Y",mktime(0,0,0,date("n"),date("j")+7,date("Y")));
  53. $miesiac_temu= date("j-m-Y",mktime(0,0,0,date("n")-1,date("j"),date("Y")));
  54. $za_miesiac= date("j-m-Y",mktime(0,0,0,date("n")+1,date("j"),date("Y")));
  55. $rok_temu= date("j-m-Y",mktime(0,0,0,date("n"),date("j"),date("Y")-1));
  56. $za_rok= date("j-m-Y",mktime(0,0,0,date("n"),date("j"),date("Y")+1));
  57. $dwa_tyg_temu= date("j-m-Y",mktime(0,0,0,date("n"),date("j")-14,date("Y")));
  58. $za_dwa_tyg= date("j-m-Y",mktime(0,0,0,date("n"),date("j")+14,date("Y")));
  59.  
  60. switch ($data)
  61. {
  62. case $wczoraj:
  63. $kiedy= "wczoraj";
  64. break;
  65. case $dwa_dni_temu:
  66. $kiedy= "przedwczoraj";
  67. break;
  68. case $trzy_dni_temu:
  69. $kiedy= "trzy dni temu";
  70. break;
  71. case $dzisiaj:
  72. $kiedy= "dzisiaj".", ".date("G:i:s",mktime(date("G"),date("i"),date("s")));
  73. break;
  74. case $jutro:
  75. $kiedy= "jutro";
  76. break;
  77. case $pojutrze:
  78. $kiedy= "pojutrze";
  79. break;
  80. case $za_3_dni:
  81. $kiedy= "za 3 dni";
  82. break;
  83. case $tydzien_temu:
  84. $kiedy= "tydzien temu";
  85. break;
  86. case $za_tydzien:
  87. $kiedy= "za tydzień";
  88. break;
  89. case $miesiac_temu:
  90. $kiedy= "miesiąc temu";
  91. break;
  92. case $za_miesiac:
  93. $kiedy= "za miesiąc";
  94. break;
  95. case $rok_temu:
  96. $kiedy= "rok temu";
  97. break;
  98. case $za_rok:
  99. $kiedy= "za rok";
  100. break;
  101. case $dwa_tyg_temu:
  102. $kiedy= "2 tygodnie temu";
  103. break;
  104. case $za_dwa_tyg:
  105. $kiedy= "za 2 tygodnie";
  106. break;
  107. case $mc:
  108. $kiedy= "ubiegły miesiąc";
  109. break;
  110. default:
  111. $kiedy= "nie kojarzę, kiedy to było, ale za to wiem, w jaki dzień wypada";
  112. }
  113.  
  114. echo $kiedy.", ".$dni_tygodnia[ $dzien_tygodnia ].", ".$dzien." ".$miesiace[$miesiac]." ".$rok." roku.";
  115.  
  116. }
  117. else{
  118. echo "Nie podales daty!";
  119. }
  120.  
  121. }
  122. else{
  123. echo "Podaj date!";
  124. }
  125.  
  126. }
  127.  
  128. ?>
  129. </body>
  130. </html>
  131.  
  132.  
Go to the top of the page
+Quote Post
nospor
post
Post #2





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




Po pierwsze: tu nie ma zadnego SELECTA....

Po drugie: sam piszesz, ze date wpisujesz w formacie Y-m-d, no ale potem porownujesz ją z formatem j-m-Y.... Ty naprawdę się dziwisz, że ci to się nie porównuje questionmark.gif

Poza tym masz duzy błąd logiczny w wyniku którego Twoj kod, jesli poprawisz format sprawdzanej daty, bedzie ci zawsze zwracał $dzisiaj... Teraz daty budujesz na podstawie podanej daty wiec trudno oczekiwac by zgadzała się jakaś inna data niż $dzisiaj. Swoje daty masz budować na podstawie chwili obecnej a nie na podstawie podanej daty. Mysl troszke.


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

"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
Pyton_000
post
Post #3





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Dlaczego nie użyjesz sobie DateTime do tego wszystkiego? Prostsze, czytelniejsze. Poza tym nie musisz operować na datach, wystarczy że sprawdzisz różnicę w dniach od dziś.
Go to the top of the page
+Quote Post
tzm
post
Post #4





Grupa: Zarejestrowani
Postów: 675
Pomógł: 58
Dołączył: 17.12.2013

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


Cytat(Pyton_000 @ 7.11.2014, 07:41:30 ) *
Dlaczego nie użyjesz sobie DateTime do tego wszystkiego? Prostsze, czytelniejsze. Poza tym nie musisz operować na datach, wystarczy że sprawdzisz różnicę w dniach od dziś.



Nie lubisz czasem koła od nowa odkryć?
Go to the top of the page
+Quote Post
Pyton_000
post
Post #5





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Kół u mnie w piwnicy już sporo leży smile.gif Teraz za kwadraty się zabrałem haha.gif
Go to the top of the page
+Quote Post
viamarimar
post
Post #6





Grupa: Zarejestrowani
Postów: 303
Pomógł: 1
Dołączył: 24.09.2011

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


Przepraszam chodzilo o switcha oczywiscie i o to czemu sie zle wykonuje

mozesz mi uzmyslowic ten blad logiczny bo nie bardzo rozumiem??

Ten post edytował viamarimar 7.11.2014, 11:36:42
Go to the top of the page
+Quote Post
nospor
post
Post #7





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




No to czemu się źle wykonuje już ci przecież napisałem.


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

"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
viamarimar
post
Post #8





Grupa: Zarejestrowani
Postów: 303
Pomógł: 1
Dołączył: 24.09.2011

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


"Swoje daty masz budować na podstawie chwili obecnej a nie na podstawie podanej daty. "

czyli zakladam ze mam pobrac date z kompa lub z serwera ale odgornie mam zalozenie ze to ktos podaje date i po przetrawieniu tego php mowi mu czy to jest dzis wczoraj jutro itd od wprowadzonej daty wiec nie moze byc tak jak ty to napisales, że data na podstawie teraz [ moze wczoraj bylem zmeczony ale rozumowanie bylo dobre]

Ten post edytował viamarimar 7.11.2014, 12:43:37
Go to the top of the page
+Quote Post
Pyton_000
post
Post #9





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Pobierasz datę Teraz. Pobierasz datę z Input np.
Sprawdzasz różnicę w datach.
Jak na + to w przyszłości, jak na - to w przeszłości. Koniec.
Potem robisz switch z różnicą w dniach i wstawiasz co tam chcesz.
Go to the top of the page
+Quote Post
nospor
post
Post #10





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




Cytat
wiec nie moze byc tak jak ty to napisales, że data na podstawie teraz [ moze wczoraj bylem zmeczony ale rozumowanie bylo dobre]


rety.... A dzis sie wyspales? Nie jestes juz zmeczony? To sluchaj:

ktos wpisal: 2014-11-09
Ty do tego dodajesz dwa dni, czyli masz: 2014-11-11. Potem obie daty porownujesz. Czy wg. ciebie będą one rowne?
Analogicznie bedzie z kazdym dodaniem czy odjeciem. Nigdy daty po twoich operacjach nie będą rowne. Jedyne co bedzie rowne, to $dzisiaj, bo tworzac $dzisiaj nic nie dodajesz wiec zawsze twoj skrypt wyswietlac ci bedzie $dzisiaj

Wiec teraz sie zastanow, czy oby na pewno twoj tok rozumowania jest poprawny
Dlatego powtarzam: masz daty dodawac/odejmowac od daty biezacej. Date co ktos wpisal, masz jedynie brac do porownania

edit: dobra, albo ja mam zaćme, albo ty edytowales pierwszego posta (obstawiam to pierwsze) wink.gif Bo teraz widze, ze jednak bierzesz date bieżącą smile.gif

No ok, czyli jesli poprawiles format dat, to powinno juz ci dzialac. Nie dziala nadal? Pokaz kod po poprawkach


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

"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
Pyton_000
post
Post #11





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Dlatego uważam że edycja tematów po odpowiedzi powinna być zakazana wink.gif Bo wychodzą różne kwiatki wink.gif
Ale nospor Ty się nie denerwuj, strzel sobie w stopę a autor dostanie objawienia haha.gif
Go to the top of the page
+Quote Post
nospor
post
Post #12





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




Ale on nie edytowal, tylko ja slepne na starosc smile.gif
Ale ja sie nie denerwuje. Nie umiem tylko pisac ladnymi słowami, stad mylnie odbierane są moje emocje w wiekszosci wypadkow.


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

"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
viamarimar
post
Post #13





Grupa: Zarejestrowani
Postów: 303
Pomógł: 1
Dołączył: 24.09.2011

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


-pierwszy post nie byl edytowany, co do tego nie dziala,dodalem pickera z dobrym formatem wiec tak jak mowil powyzej Pan przepraszam jesli ten blad jest idiotyczny a moja wiedza nie jest taka jak wasza no ale to chyba odpowiedni dzial

- nie dzialaja mi daty w tyl np wczoraj? itd? cala reszta do przodu pojutrze jutro id jest ok ale czemu tak?
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>Untitled Document</title>
  6. <link rel="stylesheet" href="//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css">
  7. <script src="//code.jquery.com/jquery-1.10.2.js"></script>
  8. <script src="//code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
  9. <script>
  10. $(function() {
  11. $("#datepicker").datepicker({ dateFormat: "dd-mm-yy" }).val()
  12. });
  13. </script>
  14.  
  15. </head>
  16.  
  17. <body>
  18. <?php
  19. #echo "<b>PRZYKŁAD</b><br>";
  20. #echo "#Zakładając, że dzis mamy ".date("j-m-Y") ." to ".date("j-m-Y",mktime(0,0,0,date("n"),date("j")-2,date("Y")))." to jest przedwczoraj.<br>";
  21. ?>
  22.  
  23.  
  24.  
  25. <?php
  26. echo "Podaj date w formacie j-m-Y"; ?>
  27. <form action="plik2.php" method="POST">
  28. Wpisz date:<input type="text" name="data" id="datepicker"><br /><br />
  29. <input type="submit" value="Wyślij" name="submit"/>
  30. <input type="submit" value="Reset" name="submit2"/>
  31. </form>
  32. <?
  33. if (isset($_POST['submit'])) {
  34.  
  35.  
  36.  
  37. #date("F j, Y", strtotime("yesterday"));
  38.  
  39. $data=$_POST['data'];
  40. //$data1=strtotime("$data");
  41. //echo $data1;
  42. //echo strtotime ( "10 września 2000" ), "\ n<br><br>" ;
  43. if(!empty($data)){
  44. $dni_tygodnia = array( 'niedziela', 'poniedziałek', 'wtorek', 'środa', 'czwartek', 'piątek', 'sobota' );
  45. $dzien_tygodnia = date("w",strtotime($data));
  46. $miesiac = date("n",strtotime($data));
  47. $miesiace = array(1 => 'stycznia', 'lutego', 'marca', 'kwietnia', 'maja', 'czerwca', 'lipca', 'sierpnia', 'września', 'października', 'listopada', 'grudnia');
  48. $dzien = date("j",strtotime($data));
  49. $rok = date("Y",strtotime($data));
  50.  
  51. #date("j-m-Y",mktime(0,0,0,date("n"),date("j")-2,date("Y")))." to jest przedwczoraj.<br>";
  52.  
  53.  
  54. $za_3_dni=date("j-m-Y",mktime(0,0,0,date("n"),date("j")+3,date("Y")));
  55. $pojutrze= date("j-m-Y",mktime(0,0,0,date("n"),date("j")+2,date("Y")));
  56. $jutro= date("j-m-Y",mktime(0,0,0,date("n"),date("j")+1,date("Y")));
  57. $dzisiaj= date("j-m-Y",mktime(0,0,0,date("n"),date("j"),date("Y")));
  58. $wczoraj= date("j-m-Y",mktime(0,0,0,date("n"),date("j")-1,date("Y")));
  59. $dwa_dni_temu= date("j-m-Y",mktime(0,0,0,date("n"),date("j")-2,date("Y")));
  60. $trzy_dni_temu= date("j-m-Y",mktime(0,0,0,date("n"),date("j")-3,date("Y")));
  61. $tydzien_temu= date("j-m-Y",mktime(0,0,0,date("n"),date("j")-7,date("Y")));
  62. $za_tydzien= date("j-m-Y",mktime(0,0,0,date("n"),date("j")+7,date("Y")));
  63. $miesiac_temu= date("j-m-Y",mktime(0,0,0,date("n")-1,date("j"),date("Y")));
  64. $za_miesiac= date("j-m-Y",mktime(0,0,0,date("n")+1,date("j"),date("Y")));
  65. $rok_temu= date("j-m-Y",mktime(0,0,0,date("n"),date("j"),date("Y")-1));
  66. $za_rok= date("j-m-Y",mktime(0,0,0,date("n"),date("j"),date("Y")+1));
  67. $dwa_tyg_temu= date("j-m-Y",mktime(0,0,0,date("n"),date("j")-14,date("Y")));
  68. $za_dwa_tyg= date("j-m-Y",mktime(0,0,0,date("n"),date("j")+14,date("Y")));
  69.  
  70. switch ($data)
  71. {
  72. case $wczoraj:
  73. $kiedy= "wczoraj";
  74. break;
  75. case $dwa_dni_temu:
  76. $kiedy= "przedwczoraj";
  77. break;
  78. case $trzy_dni_temu:
  79. $kiedy= "trzy dni temu";
  80. break;
  81. case $dzisiaj:
  82. $kiedy= "dzisiaj".", ".date("G:i:s",mktime(date("G"),date("i"),date("s")));
  83. break;
  84. case $jutro:
  85. $kiedy= "jutro";
  86. break;
  87. case $pojutrze:
  88. $kiedy= "pojutrze";
  89. break;
  90. case $za_3_dni:
  91. $kiedy= "za 3 dni";
  92. break;
  93. case $tydzien_temu:
  94. $kiedy= "tydzien temu";
  95. break;
  96. case $za_tydzien:
  97. $kiedy= "za tydzień";
  98. break;
  99. case $miesiac_temu:
  100. $kiedy= "miesiąc temu";
  101. break;
  102. case $za_miesiac:
  103. $kiedy= "za miesiąc";
  104. break;
  105. case $rok_temu:
  106. $kiedy= "rok temu";
  107. break;
  108. case $za_rok:
  109. $kiedy= "za rok";
  110. break;
  111. case $dwa_tyg_temu:
  112. $kiedy= "2 tygodnie temu";
  113. break;
  114. case $za_dwa_tyg:
  115. $kiedy= "za 2 tygodnie";
  116. break;
  117. case $mc:
  118. $kiedy= "ubiegły miesiąc";
  119. break;
  120. default:
  121. $kiedy= "nie kojarzę, kiedy to było, ale za to wiem, w jaki dzień wypada";
  122. }
  123.  
  124. echo $kiedy.", ".$dni_tygodnia[ $dzien_tygodnia ].", ".$dzien." ".$miesiace[$miesiac]." ".$rok." roku.";
  125.  
  126.  
  127. }
  128. else{
  129. echo "Podaj date!";
  130. }
  131.  
  132. }
  133.  
  134. ?>
  135. </body>
  136. </html>




Ten post edytował viamarimar 10.11.2014, 19:04:21
Go to the top of the page
+Quote Post
nospor
post
Post #14





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




No to zobacz jak wyglada wygenerowane przez Ciebie $wczoraj, zobacz jak wyglada wpisana data i bedziesz wiedzial czemu sie nie zgadzaja


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

"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

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 Aktualny czas: 21.08.2025 - 19:43