Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][mysql]Sumowanie dynamicznych wartości przesłanych z formularza, UNION
ocz85
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 31.03.2008

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


Witam, chciałbym zsumować przesłane post'em wartości ceny radiobutton'ów i checkbox'ów. W moim przypadku są to parametry, kolory_n, kolory_t (radio) i akcesoria (checkbox'y).

Struktury tabel:

parametry:
id | checked | model | moc | pojemnosc | przyspieszenie | zuzycie | cena

kolory_n:
id | checked | kolor | opis | cena

kolory_t:
id | checked | kolor | opis | cena

akcesoria:
id | akcesoria | cena

wszystkie pola cena są float(10,2)

zapytanie mysql:
  1. $query_total = "(SELECT cena as cenap FROM parametry WHERE id = ".$parametry.")
  2. UNION (SELECT cena as cenakn FROM kolory_n WHERE id = ".$kn.")
  3. UNION (SELECT cena as cenakt FROM kolory_t WHERE id = ".$kt.")
  4. UNION (SELECT SUM(cena) as cenaa FROM akcesoria WHERE id IN (".$ids."))";

Pętla w php:
  1. <?php
  2. while($row_total = mysql_fetch_assoc($result_total)) {
  3. $p = $row_total['cenap'];
  4. $n = $row_total['cenakn'];
  5. $t = $row_total['cenakt'];
  6. $a = $row_total['cenaa'];
  7. $sum = $sum + $p + $n + $t + $a;
  8. echo $sum;
  9. ?>


I teraz przykład co się z tym dzieje:
Zaznaczam w poprzednim formularzu np:
  1. parametry 115300.00
  2. kolory_n 2842.00
  3. kolory_n 6755.00
  4. akcesoria 1444.00
  5. 2376.00

W wyniku wyświetla mi ciąg sum, zamiast poprawnej kwoty, np. tu wyświetli tak:
  1. 115300118142124897128717

czyli pierwsze 6 cyfr to cena parametry, drugie 6 cyfr to cena parametry+kolory_n, trzecie 6 cyfr to cena parametry+kolory_n+kolory_t,
czwarte 6 cyfr to cena parametry+kolory_n+kolory_t+akcesoria

Problem w tym, żeby wyświetlał tylko te "czwarte 6 cyfr", czyli w tym przypadku 128717
Pewnie błąd jest prosty, ale nie mogę go znaleźć, proszę o pomoc
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
ocz85
post
Post #2





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 31.03.2008

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


Ile wierszy zwróciło zapytanie: 4
Co zwraca zapytanie:128717
cenap
115300.00
2842.00
6755.00
3820.00
  1. <?php
  2. while( $row = mysql_fetch_assoc( $result_total ) )
  3. {
  4. if( $deb_i++ == 0 ) {
  5. echo '<tr><th>' . implode( '</th><th>', array_keys( $row ) ) . '</th></tr>';
  6. }
  7.  
  8. echo '<tr><td>' . implode( '</td><td>', $row ) . '</td></tr>';
  9. $sum = $sum + $row['cenap'];
  10. }
  11. echo $sum;
  12. ?>


Troche to dziwne że ta suma 128717 nie jest zwracana we float'cie, tak jak jej składniki... czy da się to poprawić ? Później tą sumę będę musiał wsadzić do bazy
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: 7.10.2025 - 17:40