Forum Coders' city Strona Główna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Potrzebuję szybkiej odpowiedzi na moje pytanie... Zasady

Dodawanie cen w pętli - błąd



 
Odpowiedz do tematu    Forum Coders' city Strona Główna -> PHP
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
nillvo



Dołączył: 10 Cze 2009
Posty: 67

PostWysłany: Pon Kwi 09, 2018 11:21 am  OP    Temat postu: Dodawanie cen w pętli - błąd Odpowiedz z cytatem Pisownia

Witam,
Piszę, gdyż problem pozornie banalny od kilku dni nie daje się rozwiązać. Nie jestem w stanie poprawnie dodać cen. W bazie mają one taką postać:

1 174,00
2 853,60
1 881,90

Próbowałem na różne sposoby - wynik jakie daje kod to 4. Co gorsza, próbowałem usunąć spację - w celu eliminacji błędu (widać dodaje tylko pierwszą cyfrę) - ale się nie da (trim, preg, replace - nie działają).

Kod:

        if ($pobierz->num_rows > 0) {
            while($row = $pobierz->fetch_assoc()) {
                $IDD = $row['NUMER_ZAMOWIENIA'];
        $KASA = pobierz_dane_z_bazy("SELECT * FROM um_zamowienia WHERE ID='$IDD' AND STATUS <> 'oferta' AND STATUS <> 'wpłata'","KOSZT");
                $KASA = str_replace(' ', '', $KASA); //nie działa
                $TEMP = preg_replace('/\s+/', '', $KASA); //nie działa
                $TEMP = trim($TEMP); //nie działa
                echo $TEMP.','; // efekt przykładowo: 1 174,00 (ze spacją!)
    $value += (float)$TEMP;
            }



$value zwraca wynik 4.
Próbowałem z (string) albo (float), (double) Efekt ten sam. Załamka.
W jaki sposób poprawnie dodać w pętli liczby w tym formacie?

1 174,00
2 853,60
1 881,90
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Garf



Dołączył: 25 Maj 2005
Posty: 3607
Skąd: Rzeszów

PostWysłany: Pon Kwi 09, 2018 1:03 pm      Temat postu: Odpowiedz z cytatem Pisownia

Ech...
Primo - przecinek jest używany do zapisu liczb z ułamkiem tylko w niektórych krajach. W pozostałych używa się kropki - i tutaj powinieneś jej użyć zamiast przecinka.
Secundo - nie prościej byłoby zrobić SUM() w SQL'u?
Tertio - nie wiadomo w jaki sposób tworzona jest wartość wynikowa funkcji pobierz_dane_z_bazy(). Może lepiej tutaj poprawić zwracaną wartość niż bawić się z tym później?

i dziwne, u mnie działa:
Kod:
$ php
<?php
$KASA = '1 174,33';
$KASA = str_replace(' ', '', $KASA); //nie działa
$TEMP = preg_replace('/\s+/', '', $KASA); //nie działa
$TEMP = trim($TEMP); //nie działa
echo $TEMP."\n";
$value = (float)$TEMP;
echo $value."\n";

1174,33
1174



Nie wiemy jaka wersja PHP, jakie środowisko, czy nie ma ograniczeń w dozwolonych funkcjach...

_________________
Internet nadal „nic nie rozumie”, żadnego odkrycia, choćby od niego zależał los świata,
ale nadanego w egzotycznym języku, nie odróżni od nieco mniej ważnej wieści,
że u ciotki w placku z jabłkami zrobił się w piekarniku zakalec.
Stanisław Lem
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
nillvo



Dołączył: 10 Cze 2009
Posty: 67

PostWysłany: Pon Kwi 09, 2018 1:54 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Dzięki za odpowiedź. Pomogła zmiana typu zmiennej w bazie na double, zamiana przecinek na kropki (niestety system ciągnie dane z nieszczęsnej OPTIMY, a tam format cen zawiera przecinki). Teraz sumuje za pomocą SUM i wszystko śmiga. Dzięki za pomoc :)
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Wyświetl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Główna -> PHP Wszystkie czasy w strefie CET (Europa)

Strona 1 z 1

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Możesz dodawać załączniki na tym forum
Możesz pobierać pliki z tego forum




Debug: strone wygenerowano w 0.08756 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |