Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z formularzem - zliczanie cen i wysyłanie danych
Forum PHP.pl > Forum > Po stronie przeglądarki
1q2w3e4r
Witam,

Mam taki formularz, który zlicza zaznaczone wartości:
http://xdd.pl/auto-update-cart/test5/

Mam następujące problemy i nie wiem jak je rozwiązać:
- nie zlicza wartości po przecinku 2.99 tylko 2
- po wysłaniu formularza nie wysyła ceny (total), która została zliczona po zaznaczeniu wszystkich opcji
- po zaznaczeniu elementów typu radio wysyła w value="" tylko cenę. Niestety cena nic nie sugeruje dlatego przydało by się żeby wysyłało cenę + nazwę danej opcji ale nie wiem jak to rozwiązać sad.gif

Bardzo proszę o pomoc.
mortus
Nie dodaje zmiennoprzecinkowych, bo w kodzie używasz parseInt(), a jak można się domyślić parseInt() zwraca liczby całkowite.
Skoro chcesz przesłać cenę całkowitą, to powinieneś stworzyć np. ukryty input i w trakcie przeliczania ceny nadawać mu odpowiednią wartość value, przecież paragrafów (<p>) nie da się wysłać. Powinieneś reaczej wysyłać identyfikator opcji i na tej podstawie obliczać cenę np. pobierając ją z bazy danych lub przynajmniej jakiejś tablicy (użytkownik może widzieć ceny, a skrypt może operować na innych danych, oczywiście w jakiś sposób powiązanych).
1q2w3e4r
Dzięki. Rozwiązałem dwie sprawy. Zmieniłem parseInt() na parseFloat() i już działa. Dodałem również input typu hidden i wysyła mi cenę.
Zostałem z 3 problemem czyli z wysyłaniem nazwy + ceny danej opcji. Danych nie pobieram z bazy. Ceny w value muszą być podane żeby zliczało na żywo dane. Nazwę mozna by było w sumie wysyłać w nowym polu typu hidden ale nie wiem jak dodawać to pole po zaznaczeniu. Chyba, że masz znasz inne rozwiązanie?
mortus
Rozwiązanie z polem ukrytym zda egzamin w przypadku przycisków radio, bo tutaj wybór może być tylko jeden. Natomiast przy polach checkbox trzeba się będzie bardziej napocić.
Najlepiej by było przekazywać po prostu id opcji i odczytywać to id choćby z najzwyklejszej tablicy:
  1. $options = array(
  2. 'packages' => array(
  3. 1 => array(
  4. 'name' => 'Basic: This package is aight.',
  5. 'price' => 99.97
  6. ),
  7. 2 => array(
  8. 'name' => 'Professional: This package straight rocks.',
  9. 'price' => 149.50
  10. )
  11. ),
  12. );
  13. if(isset($_POST['package']) && $_POST['package'] != '') {
  14. $package_name = $options['packages'][$_POST['package']]['name'];
  15. $package_price = $options['packages'][$_POST['package']]['price'];
  16. }

  1. <input type="radio" name="package" value="1" />

Minusem takiego rozwiązania jest to, że musimy samodzielnie kontrolować zawartość tablicy $options (chyba, że na podstawie tej tablicy utworzymy formularz). Moim zdaniem jest to jedyne sensowne podejście do tematu. Oczywiście można się bawić z dodawaniem w "czasie rzeczywistym" ukrytych pól, ale czy to ma jakiś większy sens?
Swoją drogą przesyłając identyfikatory opcji nadal jesteś w stanie wyliczyć sumę.
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.