greg87g
28.02.2009, 21:41:32
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
28.02.2009, 21:47:37
No przecierz zwraca poprawną wartosc 4
<?php
$tablica[0] = 1;
$tablica[1] = 0;
$tablica[2] = 3;
$tablica[3] = 0;
$tablica[4] = 0;
?>
greg87g
28.02.2009, 21:54:48
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]
[b]$selekt="SELECT a, b, c, d, e, f, g, h FROM ankiety WHERE lp=$lp";[/b]
$zrob=mysql_query($selekt);
$fecz=mysql_fetch_array($zrob);
[b]$suma=array_sum($fecz);
$zwieksz=$fecz[$odp]+1;[/b]
[b]$aktualizuj="UPDATE ankiety SET $odp=$zwieksz, razem=$suma WHERE lp=$lp";[/b]
[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
28.02.2009, 21:58:22
~greg87g, proszę uzupełnić posta o znaczniki BBcode i pamiętać o nich na przyszłość.
Pozdrawiam!
kefirek
28.02.2009, 22:01:52
A tak po za tym to można to dorazu na w zapytaniu sumować i bylo by wiele lepiej
<?php
?>
Lub
<?php
$selekt="SELECT a, b, c, d, e, f, g, h FROM ankiety WHERE lp=$lp";
$liczby[] = $fecz['a'];
$liczby[] = $fecz['b'];
$liczby[] = $fecz['c'];
$liczby[] = $fecz['d'];
$liczby[] = $fecz['e'];
$liczby[] = $fecz['f'];
$liczby[] = $fecz['g'];
$liczby[] = $fecz['h'];
}
?>
greg87g
1.03.2009, 00:00:12
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