Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] array_sum()
Forum PHP.pl > Forum > Przedszkole
greg87g
mam tablice:
Kod
$tablica[0]=1
$tablica[1]=0
$tablica[2]=3
$tablica[3]=0
$tablica[4]=0


a funkcja array_sum($tablica) zwraca mi wartosc 6 :/
wiem, logicznie rzecz biorąc, jest jakis element o ktrym zapomnialem i on jest tez sumowany, ale
kiedy jakis element zwiększę o jeden to suma zwieksza sie o 2!

czyli jesli $tablica[0]=2 to array_sum(tablica) zwroci 8
poprostu wzrost wartosci o 1 powoduje zwiekszenie sumy (juz blednej sumy, a nie liczonej od nowa) o 2


jesli to pomocne to powiem ze elementy biore z bazy danych (niektóre w bazie mają wartosc 0, a w stworzonej tablicy sa puste) i dodam ze wyswietlilem sobie wszystkie elementy tablicy oraz wynik i elementy sa ok, a wynik zly
kefirek
No przecierz zwraca poprawną wartosc 4
  1. <?php
  2. $tablica[0] = 1;
  3. $tablica[1] = 0;
  4. $tablica[2] = 3;
  5. $tablica[3] = 0;
  6. $tablica[4] = 0;
  7.  
  8. echo array_sum($tablica);
  9. ?>
greg87g
no to moze oryginal:
Kod
[b]switch($_POST[odp]){[/b]
  
  
                            [i]case '0':
                            $odp='a';              
                            break;

                            case '1':
                            $odp='b';              
                            break;

                            case '2':
                            $odp='c';              
                            break;

                            case '3':
                            $odp='d';              
                            break;

                            case '4':
                            $odp='e';              
                            break;

                            case '5':
                            $odp='f';              
                            break;

                            case '6':
                            $odp='g';              
                            break;

                            case '7':
                            $odp='h';              
                            break;

                            case '8':
                            $odp='i';              
                            break;

                            case '9':
                            $odp='j';              
                            break; };[/i]

  1. [b]$selekt="SELECT a, b, c, d, e, f, g, h FROM ankiety WHERE lp=$lp";[/b]
  2. $zrob=mysql_query($selekt);
  3. $fecz=mysql_fetch_array($zrob);
  4.  
  5. [b]$suma=array_sum($fecz);
  6. $zwieksz=$fecz[$odp]+1;[/b]
  7.  
  8. [b]$aktualizuj="UPDATE ankiety SET $odp=$zwieksz, razem=$suma WHERE lp=$lp";[/b]
  9. [i]$zrobaktualizacje=mysql_query($aktualizuj);[/i]

i stan tych elementow w bazie:
a=2
b=1
c=1
d=2
e=0
f=0
g=0
h=0
i=0
j=0

razem=10
ayeo
~greg87g, proszę uzupełnić posta o znaczniki BBcode i pamiętać o nich na przyszłość.

Pozdrawiam!
kefirek
A tak po za tym to można to dorazu na w zapytaniu sumować i bylo by wiele lepiej

  1. <?php
  2. $zrob = mysql_result(mysql_query("SELECT SUM(a + b + c + d + e + f + g + h)  FROM ankiety WHERE lp=$lp"),0 );
  3. echo $zrob;
  4. ?>


Lub

  1. <?php
  2. $selekt="SELECT a, b, c, d, e, f, g, h FROM ankiety WHERE lp=$lp";
  3. $zrob=mysql_query($selekt);
  4.  
  5. $liczby = array();
  6. while($fecz = mysql_fetch_assoc($zrob)) {
  7. $liczby[] = $fecz['a'];
  8. $liczby[] = $fecz['b'];
  9. $liczby[] = $fecz['c'];
  10. $liczby[] = $fecz['d'];
  11. $liczby[] = $fecz['e'];
  12. $liczby[] = $fecz['f'];
  13. $liczby[] = $fecz['g'];
  14. $liczby[] = $fecz['h'];
  15. }
  16. $suma = array_sum($liczby);
  17. ?>
greg87g
z jakiegos dziwnego powodu dalej nie dziala. a nawet gorzej, po zastosowaniu tego kodu wogole sie nic nie sumuje (teraz kolumna z suma pokazuje 0) a kolumny z odpowiedziami się nie dodają.

bo wlasciwie to chodzi o to, ze mi to działało, updatowało mi kolumny z wartościami (o jeden w górę) i suma mi się fajnie aktualizowała (z tym, że błędna). napewno ktos mial juz taki problem, ze mu dodawało do wszystkich kolumn zamiast 1 to dwa, i potem przy kolejnym dodawaniu dodalo znowu 2, tyle ze juz do tego zlego wyniku ktory byl przed chwila

moge wkleic tu caly kod odpowiedzialy za ten moj mechanizm ale pewno i tak nikomu si enie bedzie chcialo tego wszystkiego czytac i rozumiec, bo blad jest tutaj gdzies na poziomie przekazywania zmiennych miedzy odswierzeniem strony a polaczeniem z bazą, no bo skoro wyswietle sobei elelementy ktore mi się sumują i wyswietle sobi tego sume to suma jest zla to znaczy, ze cos sie dodalo dwa razy... chyba

ok:) znalzłem rozwiązanie;)
cały dinks plegał na tym, ze tablica zrobiona za pomoca funkcji mysql_fetch_array() dawala bardzo dziwne klucze:
zamiast
a, b, c, d, e

zrobila:
0, a, 1, b, 2, c, 3, d, 4, e

dziwactwo jakies.
faktycznie pomoglo zastosowanie mysql_fetch_assoc()

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