[ MySQL ] Gemiddelde berekenen d.m.v. AVG() [OPGELOST]

Howdiehow,

Ik wil van een aantal cijfers het gemiddelde berekenen. Deze cijfers staan in een tabel zoiets als dit:

[b:839147f3c4][ id ] [ kolom ] [ cijfer ][/b:839147f3c4]

Alle getallen die opgeteld moeten worden hebben hetzelfde id, en ook kolom dus wanneer het zo zit:

id = 1
kolom = 2
cijfer = 3

id = 1
kolom = 2
cijfer = 5

id = 1
kolom = 3
cijfer = 3

dan moeten de eerste 2 het gemiddelde berekend worden omdat en het ID en de kolom gelijk is… naja dat was even de uitleg. Nu heb ik iets van een site gehaald. Maar ik krijg een error en het gemiddelde is 0

$cQuery = mysql_query(“SELECT AVG(cijfer) WHERE kolom = '” .$obj->kolom. “’ AND id = '” .$_SESSION[“id”]. "’ FROM cijfers");
$cAverage = mysql_result($cQuery,0);
echo ‘<td bgcolor=“red”>Gem: ‘.round($cAverage,1).’</td>’;

Dit staat in een while lus, en daar haal ik dus kolom vandaan ($obj->kolom). Ik krijg nu deze error en het gemiddelde is dus gewoon 0

[i:839147f3c4]Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /usr/export/www/vhosts/funnetwork/hosting/cijfers/cijferoverzicht.php on line 29[/i:839147f3c4]
En regel 29 is de 3de rij van het boven geplaatste stukje.
Ik heb al de ,0 en de ,1 weggehaald maar dan zegt hij dat er geen paramater ofzo is geselecteerd.

Niet meer nodig:[color=lightgrey:839147f3c4][b:839147f3c4]Update:[/b:839147f3c4] En omdadt dit in een while lus staat worden er meerdere gemiddeldes berekent. Is het dan mogelijk om van alle uitkomsten weer het gemiddelde te nemen? Of moet ik het dan anders aanpakken?[/color:839147f3c4]

[quote:41d3649e3b="Rimsic"] En omdadt dit in een [/quote:41d3649e3b]

Ik hoop echt dat dit een spelfoudt is :cry:

[quote:7afb8e864a="Aljo"][quote:7afb8e864a="Rimsic"] En omdadt dit in een [/quote:7afb8e864a]

Ik hoop echt dat dit een spelfoudt is :cry:[/quote:7afb8e864a]
ik hoop echt dat er nog nuttige antwoorden komen :?

select from where

zet de query in die vorm… weet niet of het verschil zal uitmake :innocent:

haal de ’ weg uit de query… volgens mij is da ni nodig om met getallen te werken

edit:

$cQuery = mysql_query("SELECT AVG(cijfer) FROM cijfers WHERE kolom = “.$obj->kolom.” AND id = " .$_SESSION[“id”]);

opmerking: levert dit niet al het juiste getal op? dan kan je de 2de regel weglaten… toch?

ok bedankt voor je reactie, error is weg alleen er komt niks uit... ik heb het nu zo (de variabelen id (session) en vak bestaan wel, nog even getest net) [code:1:7601875d32]$cQuery = mysql_query("SELECT AVG(cijfer) FROM cijfers WHERE kolom = ".$obj->kolom." AND id = " .$_SESSION["id"]); echo '<td bgcolor="red">Gem: ' . $cQuery . '</td>';[/code:1:7601875d32]

[b:7601875d32]Edit[/b:7601875d32] Mijn update van het eerste bericht hoeft niet, want als ik weet hoe dit moet kan ik die ook zo berekenen.

[quote:edf3d47435="Granny Smith"]opmerking: levert dit niet al het juiste getal op? dan kan je de 2de regel weglaten... toch?[/quote:edf3d47435]

mss was ik hier verkeerd… php/mysql is al een tijdje geleden :innocent:

probeer uw code eens [b:edf3d47435]met[/b:edf3d47435] die 2de regel… het kan zijn dat de eerste query de oplossing in een tabel zet met 1 rij en 1 kolom… de 2de query leest dan dat getal in.

OF (!!!) je kan de huidige code [b:edf3d47435]testen[/b:edf3d47435] door tijdelijk de 1ste query te veranderen door een simpelere variant (die NIET hetzelfde is maar die zeker een resultaat geeft… dus je test hiermee de rest van de code !!!)

[code:1:edf3d47435]
$cQuery = mysql_query("SELECT AVG(cijfer) FROM cijfers");
[/code:1:edf3d47435]

door het vervangen van de simpele query krijg ik verschillende antwoorden als gemiddeldes:

Resource id #16
Resource id #14

etc.

Maar dat komt dus doordat je het met een while lus ofzo moet ophalen heb ik gelezen, maar wanneer ik dat doe komt er dus weer niks uit:

$cQuery = mysql_query(“SELECT AVG(cijfer) FROM cijfers”);
while ($record = mysql_fetch_object($cQuery)) {
echo '<td bgcolor=“red”> ’ . $record->cijfer . ‘</td>’;
}

[b:05222d8c38]Updte[/b:05222d8c38] ah, ik heb nu de 2de regel er bij gezet en krijg nu een getal… nu even kijken of het ook met de ‘geavanceerde’ manier werkt…

Ah... nou me eerste manier werkt dus wel, maar zodra ik het gemiddelde wil berekenen met 2 eisen dan krijg ik weer errors: [code:1:65e0909360]$cQuery = mysql_query("SELECT AVG(cijfer) FROM cijfers WHERE vak = ".$obj->vak." AND id = '" .$_SESSION["id"] . "' ");

$cAverage = mysql_result($cQuery,0);

echo ‘<td bgcolor=“red”>Gem: ‘.round($cAverage,1).’</td>’; [/code:1:65e0909360]

[b:65e0909360]Error[/b:65e0909360]: Warning: mysql_result(): supplied argument is not a valid MySQL result resource in url on line 29

wat ik dus ook aan het begin had

Hij kan $obj->vak niet vinden… want als ik die weg haal werkt id en session wel. Maar toch als ik vak echo, krijg ik gewoon een uitkomst…(net voor de query)

Nou laatste update, het is opgelost, er miste denk ik uiteindelijk gewoon twee ’
Nou… :D, naja ik ben er idd geval wijzer door geworden

Bedankt voor de moeite :bigsmile: