Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] obliczenie daty
gosienkami
post
Post #1





Grupa: Zarejestrowani
Postów: 305
Pomógł: 1
Dołączył: 27.12.2007

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


jak zrobic zeby po wpisaniu daty w jednym polu tekstowym, w drugim polu wyswtlała sie data(dodane 365 dni) czyli wpisujemy 26-04-2008 a wyswietla sie 25-04-2009 ?
Go to the top of the page
+Quote Post
Mlodycompany
post
Post #2





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

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


  1. <form action="index.php" method="post">
  2. <input type="text" name="dzien">
  3. <input type="text" name="miesiac">
  4. <input type="text" name="rok">
  5. <input type="submit" value="ok">
  6. </form>
  7. <?php
  8. $dzien = $_POST['dzien'];
  9. $miesiac = $_POST['miesiac'];
  10. $rok = $_POST['rok'] + 1;
  11. echo $dzien,'.',$miesiac,'.',$rok
  12. ?>

chyba chodzi o to ale nie jestem pewien
Go to the top of the page
+Quote Post
Crozin
post
Post #3





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


  1. <?php
  2.  
  3. //data z formularza
  4. $data1 = '2004-12-5';
  5.  
  6. //zamieniamy na forme UNIXowa
  7. $data1 = strtotime($data1);
  8.  
  9. //dodajemy "+ rok"
  10. $data1 += 60 * 60 * 24 * 365;
  11.  
  12. echo date('Y-m-d', $data1);
  13.  
  14. ?>
Go to the top of the page
+Quote Post
oscar17
post
Post #4





Grupa: Zarejestrowani
Postów: 102
Pomógł: 22
Dołączył: 3.03.2008

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


Można jeszcze krócej:
Kod
$data1 = '2004-12-05';
$data2 = date("Y-m-d",strtotime($data1."+1 year"));

echo $data2;
Go to the top of the page
+Quote Post
gosienkami
post
Post #5





Grupa: Zarejestrowani
Postów: 305
Pomógł: 1
Dołączył: 27.12.2007

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


mam taki bład Warning: date() [function.date]: Windows does not support dates prior to midnight (00:00:00), January 1, 1970 in c:/ w tej liniii data2 = date("Y-m-d",strtotime($data1."+1 year"));
Go to the top of the page
+Quote Post
vokiel
post
Post #6





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


Może masz ustawione inaczej kolejność miesięcy, dni, lat. W pierwszym poście piszesz 26-04-2008 zatem u Ciebie powinno być:
  1. <?php
  2. $data1 = '26-04-2008';
  3. // dzien - miesiac - rok
  4. $data2 = date("d-m-Y",strtotime($data1."+1 year"));
  5. echo $data2;
  6. // poza tym przy pracy z datami w php 5 jest dobrze ustawić domyślną strefę czasow
    ą gdzieś na początku skryptu
  7. date_default_timezone_set('Europe/Warsaw');
  8. ?>
Go to the top of the page
+Quote Post
gosienkami
post
Post #7





Grupa: Zarejestrowani
Postów: 305
Pomógł: 1
Dołączył: 27.12.2007

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


kurde dalej nie działa:(
Go to the top of the page
+Quote Post
batman
post
Post #8





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Kombinujecie jak koń pod górkę. Czasem najprostsze rozwiązania są najlepsze (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
  1. <?php
  2. $date1 = '26-04-2008';
  3. // zakladajac, ze data rozdzielona jest myslnikami, a format daty to format europe
    jski: dd-mm-yyyy
  4. $adate = explode('-', $date1);
  5. $date2 = date('d-m-Y', mktime(0, 0, 0, $adate[1], $adate[0] + 365, $adate[2]));
  6. echo $date2;
  7. ?>
Go to the top of the page
+Quote Post
gosienkami
post
Post #9





Grupa: Zarejestrowani
Postów: 305
Pomógł: 1
Dołączył: 27.12.2007

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


ale to jest na stałe a ja chce zeby w jednym polu tekstowym wpisac 28-04-2008
a w drugim polu zeby sie wczytała data poprzedzajaca o cały rok z tym ze 27-04-2009
Go to the top of the page
+Quote Post
PawelC
post
Post #10





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

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


jeżeli w jednym pliku ma to być to:
  1. <form method="POST" action="data.php?data=1">
  2. Podana data:
  3. <input type="Text" name="data" value="">
  4. Rok później:
  5. <input type="Text" name="data2" value='<?php
  6. if($_GET['data']==1){
  7. $date1 = $_POST['data'];
  8. $adate = explode('-', $date1);
  9. $date2 = date('d-m-Y, mktime(0, 0, 0, $adate[1], $adate[0] + 365, $adate[2])');
  10. echo $date2;
  11. }
  12. ?>
  13. '>
  14. <input type="submit" value="oblicz"></form>


Ten post edytował ExPlOiT 28.04.2008, 18:39:44
Go to the top of the page
+Quote Post
bim2
post
Post #11





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


ExPloit, jak już kopiujesz to z głową...
  1. <?php
  2. $date2 = date('d-m-Y', mktime(0, 0, 0, $adate[1], $adate[0] + 365, $adate[2]));
  3. ?>
Go to the top of the page
+Quote Post
gosienkami
post
Post #12





Grupa: Zarejestrowani
Postów: 305
Pomógł: 1
Dołączył: 27.12.2007

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


tylko zawsze ma wyswietlac o jeden dzien mniej czyli od:28-04-2008 do 27-04-2009
, czy sie da bez przycisku to zrobić?zeby autmatycznie sie pojawiała "data do" w polu tekstowym obok bez mozliwosci zmiany??

p.s. a jezli tak jak teraz to zeby pierwsza data nie znikała po nacisnieciu ok
Go to the top of the page
+Quote Post
Cezar708
post
Post #13





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

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


hmm a nie można po prostu:
  1. <?php
  2. $data = '26-04-2008';
  3. $pieces = explode("-", $data);
  4.  
  5. $wynik = date("d-m-Y", strtotime($pieces[0]."-".$pieces[1]."-".($pieces[2]+1)) - 60*60*24);
  6.  
  7. echo $wynik;
  8. ?>


(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

Pozdrawiam
Cezar708
Go to the top of the page
+Quote Post
gosienkami
post
Post #14





Grupa: Zarejestrowani
Postów: 305
Pomógł: 1
Dołączył: 27.12.2007

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


ale to jak mamy date wklepaną na staałe, a jak data poczatkowa ma byc podawana przez uzytownika w polu tekstowym
Go to the top of the page
+Quote Post
PawelC
post
Post #15





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

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


To w czym widzisz problem? W tym kodzie co podał Cezar zamieniasz tą linie:
plik data.php
  1. <?php
  2. $data = $_POST['data'];
  3. $pieces = explode("-", $data);
  4.  
  5. $wynik = date("d-m-Y", strtotime($pieces[0]."-".$pieces[1]."-".($pieces[2]+1)) - 60*60*24);
  6.  
  7. echo $wynik;
  8. ?>

formularz.html
  1. <form method="POST" action="data.php">
  2. Podaj datę:
  3. <input type="text" name="data">
  4. <input type="submit" value="Oblicz!">
  5. </form>

Datę podajesz w formacie np 25-04-2008

Ten post edytował ExPlOiT 30.04.2008, 14:26:14
Go to the top of the page
+Quote Post

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: 18.09.2025 - 12:13