Kuten aiheen otsikkokin kertoo, niin ongelma on laskemisesta. Sen paremmin en osaa näin selittää, mutta yritän parhaani koodillisesti
// Tietokannassa olisi esim 3 henkilöä ja ne kaikki tulostuisivat mukaan $k = "SELECT henkilo, maksu, maksu2, maksu3 FROM tietokanta"; $t = mysql_query($k); if(!$t){ echo 'Uusiks meni'; } $summa = 0; while($r = mysql_fetch_assoc($t)) { $m1 = $r['maksu']; $m2 = $r['maksu2']; $m3 = $r['maksu3']; $summa = $m1 + $m2 + $m3; } echo $summa;
Ongelma on siis siinä, että summaan tulevaa vain viimeinen henkilo. Pitäisi saada kaikkien kolmen henkilön yhteistulos tuohon muuttujaan.
$summa += $m1 + $m2 + $m3;
Aah.. Ja seän toimi kerralla kunnolla.
Tuon maksu+maksu2+maksu3 laskutoimituksen voi tehdä myös suoraan tuossa select-lausessa:
SELECT henkilo, SUM(maksu, maksu2, maksu3) as 'summa' FROM tietokanta
Tai ehkä paremminkin näin:
SELECT SUM(maksu + maksu2 + maksu3) FROM tietokanta
Tai ehkä mieluummin näin:
select henkilo, SUM(maksu, maksu2, maksu3) as 'summa' from tietokanta group by henkilo
Eli käytetään sitä GROUP BY syntaksia jotta saadaan jokaiselle henkilölle oma summa sarake eikä laskeskella mitä sattuu.
Antin esimerkissä taas lasketaan sitten summa kolmesta sarakkeesta koko taulusta, yksi summa kaikille henkilöille. Jos oikein käsitin, kolme henkilöä ja jokaisella on taulussa kolme summa saraketta eli yhteensä 9 solua laskettavana?
-W-
Aihe on jo aika vanha, joten et voi enää vastata siihen.