Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z formularzem - zliczanie cen i wysyłanie danych
1q2w3e4r
post 10.06.2013, 20:26:48
Post #1





Grupa: Zarejestrowani
Postów: 238
Pomógł: 0
Dołączył: 6.05.2011

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


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.
Go to the top of the page
+Quote Post
mortus
post 10.06.2013, 20:45:50
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


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).

Ten post edytował mortus 10.06.2013, 20:47:39
Go to the top of the page
+Quote Post
1q2w3e4r
post 10.06.2013, 21:14:45
Post #3





Grupa: Zarejestrowani
Postów: 238
Pomógł: 0
Dołączył: 6.05.2011

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


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?
Go to the top of the page
+Quote Post
mortus
post 11.06.2013, 09:59:57
Post #4





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


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ę.
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 Wersja Lo-Fi Aktualny czas: 13.06.2025 - 04:19