Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP/MySQL. Sarakkeen yhteissumman laskeminen ja tulostus

Sivun loppuun

JimLazy [25.03.2006 11:19:06]

#

PHP-juntti kyselee, kun en löytänyt vinkeistä suoraan tähän
tapaukseen sopivaa käskyä. Eli pitäisi saada KULU-sarakkeen
yhteissumma laskettua ja näkyviin (euroja, 2 desimaalia). VOISIKO joku olla niin ystävällinen, että
täydentäisi ko. koodin alla olevaan runkoon?

<?php
$database="menot";
mysql_connect("localhost", "user", "secret");
@mysql_select_db($database) or die( "Unable to select database");

$query="SELECT * FROM menoja";
$result=mysql_query($query);

$num=mysql_numrows($result);

$i=0;
while ($i < $num) {

$ID=mysql_result($result,$i,"ID");
$KULUSELI=mysql_result($result,$i,"KULUSELI");
$KULU=mysql_result($result,$i,"KULU");

$i++;
}

$KULUYHT=????
?>

ajv [25.03.2006 11:48:18]

#

Ratkaisu löytyy SQL-lauseesta:

SELECT SUM(KULU) AS kuluyht FROM menoja

Edit. Eikun tosiaan SUM(KULUSELI)... ei taida oikeen toimia :)

A-P [25.03.2006 11:53:07]

#

Taulun sisältö on ilmeisesti jotain tämän kaltaista:

ID | KULUSELI | KULU
--------------------
0  | Seli     | 10
1  | Seliseli | 15

Jos haluat vain summan, seuraavanlainen SQL-lause voisi toimia.

SELECT SUM(KULU) FROM menoja

Toinen vaihtoehto on, että lisään ennen while-silmukan alkua

$KULUYHT=0;

ja while-silmukan sisälle loppuun

$KULUYHT=$KULUYHT+$KULU

.

JimLazy [25.03.2006 16:51:04]

#

Hei ja KIITOS A-P!
Tuo toinen vaihtoehto oli se ratkaisu! Olen yrittänyt monia
vaihtoehtoja, mutta vasta nyt tämä toimii. Ja vielä desimaalien
kanssa! Eli sekä int että dec vaihtoehdot MySQL:ssä pelaa.

Tuo ensimmäinenkin PITÄISI pelata monen ohjekirjan mukaan,
mutta tähän mennessä se on tarjonnut vain herjoja.

ajv [25.03.2006 16:56:14]

#

Juu, tuo ensimmäinen vaihtoehto on kylläkin se parempi vaihtoehto... Tuo on aika hidas purkka toi kaikkien rivien läpikäyminen. Siis jos ajattelee vaikka, että tietokannassa on 50 k rivii, niin ei niitä kaikkia 50 000 riviä kannata sieltä hakea, koska sellaisen datamäärän hakeminen on hidasta, kuormittaa turhaan tietokantaa ja niiden looppaaminenkin on hidasta.

Mutta, ihan miten vaan, jos on pääasia, että toimii, niin hyvä niin :)

JimLazy [26.03.2006 21:11:32]

#

Tervehdys ajv! Olisi mielenkiintoista nähdä miten tuo
ensimmäinen "SELECT SUM(KULU) FROM menoja" sijoitetaan
tuohon lähettämääni yksinkertaiseen kehikkoon, niin että se toimii.

Eli tarkalleen ottaen mitä ja mihin, ja mitä echo " -käskyn
jälkeen että saa summan näkyviin. En ole nähnyt vielä yhtään
toimivaa mallia. Missä vika, SUOMEKSI! Muista että olen
PHP-juntti, ja vaikka olenkin rakennellut varausjärjestelmiä
ja rahtiohjelmia PHP-MySQL -periaattella, niin aina löytyy
aukkoja tiedoissa. Thanks in advance!

ajv [26.03.2006 21:41:54]

#

No yksinkertaisimmillaan se toiminnee näin:

<?php
$query="SELECT SUM(KULU) AS KULUYHT FROM menoja";
$result=mysql_query($query);
$row = mysql_fetch_assoc($result);
$kuluyht = $r['KULUYHT'];

// nimesi viitaten pistetään tähän nyt vielä laiskan koodarin onlineri :)
list($kuluyht) = mysql_fetch_row(mysql_query("SELECT SUM(KULU) AS KULUYHT FROM menoja"));

JimLazy [27.03.2006 10:39:58]

#

Kiitos myös Sinulle ajv! Pienen korjauksen jälkeen alkoi laskenta toimia:

$kuluyht = $r['KULUYHT'];

korjasin

$kuluyht = $r['KULU'];

Kuten huomaat, pelkkä SUM(KULU) -vinkki ei kerro sitä, että koko kyselyrakenne on toisenlainen tässä tapauksessa.

Nimimerkkini mukaisesti - JimLazy=JussiLaiska - pyrin saamaan oppia mahdollisimman paljon istumatta vuosia koulun penkillä.

Vanhana ammattimuusikkona minulle riittää tieto siitä, mikä on kappaleen sävellaji, loput "kaahaan" perässä vanhalla kokemuksella. Mutta vihreälle soittajan alulle pitää olla paperi, jossa kappaleen rakenne on kokonaisuudessaan näkyvissä.

Toivottavasti voin itsekin olla avuksi muille vastaisuudessa kunhan pääsen tästä vihreydestäni. Hyvää kevättä ajv!


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta