Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z przekazywaniem zmiennych w PHP
przemo79
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 5.08.2007

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


Witam.
Wiem, że podobne tematy były już na forum, ale nie znalazłem tego co mi jest potrzebne lub nie umiem szukać snitch.gif . Chodzi mi o to, że mam formularz w HTML i przekazuje z niego dane do skryptu PHP. Później ten skrypt sobie coś tam oblicza. To ta łatwa część (chociaż dopiero się uczę PHP). Następnie mam drugi formularz gdzie użytkownik wybiera czy dalej kontunuować obliczenia czy wrócić do poprzedniego okna bo np. się machnął przy wprowadzaniu danych.
Teraz chcę zrobić coś takiego, żeby po wybraniu opcji dalej wyniki obliczeń mogły być użyte w tym samym skrypcie i w tym momencie utknąłem. Więc jeśli ktoś ma jakiś pomysł będę bardzo wdzięczny.
Poniżej zamieszczam kod który stworzyłem (przy wykorzystaniu pomocy wiadomości z netu):
  1. <?php
  2. //wczytanie danych z formularza
  3. if (!empty($_POST["day1"])) {$d1 = $_POST["day1"];}
  4. if (!empty($_POST['month1'])) {$m1 = $_POST['month1'];}
  5. if (!empty($_POST['year1'])) {$y1 = $_POST['year1'];}
  6.  
  7. if (!empty($_POST['day2'])) {$d2 = $_POST['day2'];}
  8. if (!empty($_POST['month2'])) {$m2 = $_POST['month2'];}
  9. if (!empty($_POST['year2'])) {$y2 = $_POST['year2'];}
  10. //sprawdzenie warunków poczatkowych
  11. if ((!$d1) || (!$m1) || (!$y1)) {echo "Podaj dzien wjazdu";}
  12. elseif (!$d2 || !$m2 || !$y2) {echo "Podaj dzien wyjazdu";}
  13. elseif (($y1 > $y2)||($m1>$m2)||($d1>$d2)) {echo "Data wyjazdu musi byc taka sama lub pozniejsza";}
  14. else
  15. $suma = $suma+licz($d1,$m1,$y1,$d2,$m2,$y2);
  16. echo "<p>Uplynelo ", $suma, " dni.</p>";
  17. function licz($d1,$m1,$y1,$d2,$m2,$y2)
  18. {
  19. // Funkcja zwraca liczbe dni miedzy dwoma przekazanymi datami.
  20. function count_days($a, $b) 
  21. {
  22. $suma=0;
  23. $dd = 0;
  24. $rok = 0;
  25. // Najpierw nalezy przeksztalcic daty na czesci skladowe:
  26. $a_dt = getdate($a);
  27. $b_dt = getdate($b);
  28. // Funkcja sprawdza, czy okreslony rok jest przestepny, czy nie:
  29. function is_leap_year($y) 
  30. {
  31. // Jesli rok dzieli sie przez 4, ale nie dzieli sie przez 100 lub dzieli sie przez
     400:
  32. return ((($y % 4) == 0) && ((($y % 100) != 0) || (($y % 400) == 0)));
  33. }
  34. // Sprawdzenie, czy lata z podanego zakresu sa przestepne:
  35. function sprawdz_rok($a, $b)
  36. {
  37. $dd = 0;
  38. foreach(range($a,$b) as $i)
  39. {
  40. if (is_leap_year($i)) 
  41. {
  42. $dd = $dd + 1;
  43. } 
  44. }
  45.  
  46. return $dd;
  47. }
  48. if ((is_leap_year($b_dt['year']) || is_leap_year($a_dt['year'])) && (($b_dt['mon'] >=|| $a_dt['mon'] >=2) && ($a_dt['mday']>28 || $b_dt['mday']>28)))
  49. {
  50. $rok = sprawdz_rok($b_dt['year'], $a_dt['year']);
  51. print $rok;
  52. print "jestem w if!!!";
  53. }
  54. // Odtworzenie znaczników czasu z wykorzystaniem poludnia kazdego dnia.
  55. // Dokladny czas nie ma znaczenia, ale musi to byc ta sama godzina w kazdym dniu.
  56. $a_new = mktime(12, 0, 0, $a_dt['mon'], $a_dt['mday'], $a_dt['year']);
  57. $b_new = mktime(12, 0, 0, $b_dt['mon'], $b_dt['mday'], $b_dt['year']);
  58. // Odjecie dwóch liczb i podzielenie przez liczbe sekund przypadajaca na dzien.
  59. // Zaokraglenie wyniku, poniewaz przekroczenie granicy zmiany czasu z letniego na 
    zimowy (lub odwrotnie)
  60. // spowoduje róznice w czasie o godzine lub dwie.
  61. return round(abs($a_new - $b_new) / 86400)+1+$rok;
  62. }
  63. $date1 = strtotime($m1."/".$d1."/".$y1);
  64. $date2 = strtotime($m2."/".$d2."/".$y2);
  65. $suma=$suma+count_days($date2, $date1);
  66.  
  67. //if (!empty($_POST["yes"])) {licz($d1,$m1,$y1,$d2,$m2,$y2);}
  68. //if (!empty($_POST['no'])) break;
  69. return $suma;
  70. }
  71. ?>
  72. <form method="post" action="dni.htm">
  73. Obliczyc ponownie?
  74. <p>
  75. <label>
  76. <input type="radio" name="ponownie" value="1">
  77. Tak</label>
  78. <br>
  79. <label>
  80. <input type="radio" name="ponownie" value="0" checked="checked">
  81. Nie</label>
  82. <br>
  83. </p>
  84. <input type=submit value=Wyslij><br>
  85. </form>
  86. <?php 
  87. //wczytanie danych z formularza
  88. if (!empty($_POST['ponownie'][0])) {$y = $_POST['ponownie'][0];}
  89. if (!empty($_POST['ponownie'][1])) {$n = $_POST['ponownie'][1];}
  90.  
  91. ?>

oraz formularz html:
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  2. "http://www.w3.org/TR/html4/loose.dtd">
  3. <title>Program do liczenia dni pobytu</title>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  5. </head>
  6.  
  7. <form action="licz_dni.php" method="POST">
  8. Dzien wjazdu:
  9. Dzień: <input type=text name=day1 maxsize=2>
  10. Miesiąc : <input type=text name=month1 maxsize=2>
  11. Rok : <input type=text name=year1 maxsize=4><br><br>
  12. Dzien wyjazdu:
  13. Dzień:<input type=text name=day2 maxsize=2>
  14. Miesiąc : <input type=text name=month2 maxsize=2>
  15. Rok : <input type=text name=year2 maxsize=4><br><br>
  16. <input type=submit value=Oblicz><br>
  17. </form>
  18. </body>
  19. </html>


Ten post edytował przemo79 5.08.2007, 08:48:39
Go to the top of the page
+Quote Post

Posty w temacie


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: 19.08.2025 - 10:28