Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] obsluga formularza
Forum PHP.pl > Forum > Przedszkole
kyeelt
Witam
Na wstępie nie miałem nigdy kontaktu z PHP więc proszę się nie denerwować.

Opis problemu:
Potrzebuję zrobić formularz rezerwacji, tzn. uzytkownik ma mieć możliwość wpisania parametrów takich jak ilość osób w poszczególnych przedziałach wiekowych oraz daty początkowej i końcowej. Wysłanie formularza powinno powodować wyświetlanie w ramce na stronie wyliczonych wartości takich jak obliczenie kosztu całkowitego (zaleznego od liczby rodzaju osób raz długości pobytu ustalonego przez uzytkownika). o ile z napisaniem formularza jako tako sobie poradziłem (dzięki temu forum).
  1. </head>

  1. <?php
  2. function reg_date ($d = '', $m = '', $y = '')
  3. {
  4. if($d=='')
  5. $d=date("d");
  6. if($m=='')
  7. $m=date("m");
  8. if($y=='')
  9. $y=date("Y");
  10.  
  11. echo '<select class="formfield" >';
  12. for ($day = 1; $day <= 31; $day++)
  13. {
  14.  echo "<option value=\"$day\"";
  15.  if ($day == $d)
  16.  {
  17.    echo 'selected="selected"';
  18.  }
  19.  echo ">$day</option>\n";
  20. }
  21. echo '</select>';
  22.  
  23. echo ' / <select class="formfield" >';
  24. for ($mth = 1; $mth <= 12; $mth++)
  25. {
  26.  echo "<option value=\"$mth\"";
  27.  if ($mth == $m)
  28.  {
  29.  echo 'selected="selected"';
  30.  }
  31.  echo ">$mth</option>\n";
  32. }
  33. echo '</select> / ';
  34.  
  35. echo '<select class="formfield" >';
  36. for ($year = 2009; $year <= 2010; $year++)
  37. {
  38.  echo "<option value=\"$year\"";
  39.  if ($year == $y)
  40.  {
  41.   echo 'selected="selected"';
  42.  }
  43.  echo ">$year</option>\n";
  44. }
  45. echo "</select>";
  46. }
  47. ?>
  1. <form method="post" action="wynik.php" name="rezerwacja">liczba dorosłych
  2. <input type="value" value=0 name="dorosli" size=1/>
  3. liczba dzieci 0-3
  4. <input type="value" value=0 name="dzieci2" size=1/>
  5. liczba dzieci 3-12
  6. <input type="value" value=0 name="dzieci1" size=1/>
  7. <br>
  8. Data przyjazdu
  1. <?php
  2. reg_date ($date1['mday'], $date1['mon'], $date1['year']);
  3. ?>
  1. <br>
  2. Data wyjazdu
  1. <?php
  2. reg_date ($date2['mday'], $date2['mon'], $date2['year']);
  3. ?>
  1. <input type="reset" value="Wyczyść" />
  2. <input type="submit" value="Wyślij" />
  3. <object data="wynik.php" type="text/html" width="400" height="300">
  4. Jeśli twoja przeglądarka nie akceptuje polecenia Object, wczytaj <a href="wynik.php">ten dokument</a>
  5. </form>
  6. </body>
  7. </html>

jak widać radzę sobie jak umiem ale największy problem
to wynik.php po prostu nie mam zielonego pojęcia jak pozbierać i operować tymi zmiennymi,aby uzyskac żądany efekt.
Bardzo proszę o pomoc.
Pozdrawiam
Pilsener
Obliczanie liczby dni:
- odbierasz daty od usera - chyba wiesz jak odebrać dane z tablicy POST?
- sprawdzasz ich poprawność (czy nie jest to np. 30 luty) - funkcja checkdate
- konwertujesz na format uniksowy - mktime, strtotime
- obliczasz różnicę i dzielisz przez 3600*24 - masz liczbę dni

Prosta matematyka:
liczba dni * liczba osób * stawka za dzień - stawka jest uzależniona przedziału wiekowego jak mniemam? Robisz tak tyle razy, ile masz tych przedziałów wiekowych.
kyeelt
wlaśnie odejmowanie dat znalazlem juz na tym forum i bardziej jednak chodzi o odbieranie tych danych i obróbkę
Pilsener
1. Odbieranie danych z POST:
  1. <input type="text" name="xyz" />


  1. <?php
  2. $xyz = $_POST['xyz'];
  3. echo $xyz;
  4. ?>


Najlepiej zrób sobie tak:
  1. <?php
  2. print_r($_POST);
  3. ?>
- i masz podgląd danych przesyłanych do skryptu z formularza

2. Walidacja - tutaj przydadzą się takie funkcje jak addslashes, striptags, htmlspecialchars itp. - za dużo tego jest, by wszystko opisać, po prostu musi sprawdzać, czy user nie wysyła Ci "niespodzianki" zamiast spodziewanej daty czy liczby

3. A co konkretnie rozumiesz przez obróbkę?
kyeelt
dziekuje
przez obrobke rozumiem wlasnie pomnozenie podzielenie aby uzyskac efekt tj wycene dla uzytkownika (w sumie proste operacje matematyczne z ktorych najtrudniejsze to odejmowanie dat ale to juz znalazlem na forum)
dzis po robocie pobrobuje
Pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.