Toon posts:

[php] probleem SUM en AVG

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik krijg het niet voor elkaar om een average en sum waarde te krijgen in php > mysql
Dit is de code:

<?php
$db = @mysql_connect("localhost", "mmsi", "diabloo");
mysql_select_db("ratede", $db);
$result = mysql_query("SELECT sum(rating) FROM rates where rid = $id",$db); ?>

de rating waarde zou in de verdere script vanalles moeten doen. Dat doet het jammer genoeg dus niet.
Heb al vanalles geprobeerd maar $rating krijgt gewoon geen waarde.


<?php
$db = @mysql_connect("localhost", "mmsi", "diabloo");
mysql_select_db("ratede", $db);
$result = mysql_query("SELECT * FROM rates where rid = $id",$db); ?>

geeft wel alle waardes weer maar ik wil dan het gemiddelde hiervan en totaal, die ik dan laat delen op het aantal keren dat rid voorkomt in de DB (zodat ik een user rating krijg)

(als iemand een makkelijkere of betere manier weet om players te raten op mijn site dan verneem ik dat graag :)

BvD en Thx,
Mistix

http://www.mistix.nl/utp/

Verwijderd

haal is ff heel snel je wachtwoord weg, iedereen kan je wachtwoord zien!

Verwijderd

Topicstarter
errrrrrr :))))))))
wachtwoord etc is gewoon fictief :P

  • vinnux
  • Registratie: Maart 2001
  • Niet online
$rating zoals jij dat stelt is ook geen waarde maar slechts een pointer naar de resultset van mysql_query();
met de volgende code haal je de waarde eruit.
PHP:
1
<?$row = mysql_fetch_array($result);$result = $row[0];?>

Mocht je dit al hebben, dan zoek ik verder.

Zoiets misschien ?
code:
1
SELECT SUM(rating) , AVG(rating), SUM(rating)/COUNT(*),Count(*)  FROM rates GROUP BY rid

Voor elke rid, het totaal van de rating, het gemiddelde rating over alle rijen per rid, de optelling van alle rating van een rid, nogmaals het gemiddelde, het aantal rijen waar rid in voor komt.

  • Postman
  • Registratie: Februari 2000
  • Laatst online: 00:58
Je query klopt niet helemaal
SELECT SUM(rating) FROM rates WHERE rid = $id
moet zijn
SELECT SUM(rating) AS sumrating FROM rates WHERE rid = $id

edit:

Kleine uitleg waarom (tenminste, zoals ik het begrijp): jouw code doet wel een sum, maar stopt die waarde niet in een variabele. Hierdoor kun je hem niet meer uitlezen. Logisch dat je dus problemen hebt.

Oh ja, [topic=309815/1/400] en laat ff weten of dit je probleem oplost (makkelijk voor andere gebruikers ;)).

Verwijderd

Op dinsdag 16 april 2002 01:26 schreef mistix het volgende:
errrrrrr :))))))))
wachtwoord etc is gewoon fictief :P
ahhh ok, nouja volgende keer gewoon ff *** doen is simpeler ;)

Verwijderd

Topicstarter
Ok bedankt het werkt allemaal..
Ik krijg nu het aantal rates, avg en sum in $myrow[0] 1 2 en 3.
Dat is perfect. Nu zou ik nog heel graag willen dat ik een
grafische afbeelding krijg met het gemiddelde.
Dat kan met if, if else maar die code wordt wel heel erg lang als ik dat per procent wil.

Is er misschien een makkelijkere manier?

BvD

  • vinnux
  • Registratie: Maart 2001
  • Niet online
code:
1
SELECT SUM(rating) FROM rates ;

Die haal je er uit en zet jij in bv $sumRating;
En dan;
code:
1
SELECT SUM(rating) , AVG(rating), SUM(rating)/$sumRating*100,Count(*)  FROM rates GROUP BY rid ;

En KLAAR, met twee cijfers achter de komma.

Gebruik PHPPlot bijvoorbeeld om grafische afbeeldingen te maken. zie http://www.cosin.nl/~vft/guestbook/stats/stats.php voor een voorbeeld van stats.

Verwijderd

Topicstarter
Die waardes krijg ik eruit. Is er een makkelijkere manier om die te displayen?
Zoiets van maar een image graph 200 pixels als de waarde 100 is.. en 100 pixels als de waarde 50 is..?
BvD

  • vinnux
  • Registratie: Maart 2001
  • Niet online
Op dinsdag 16 april 2002 11:12 schreef mistix het volgende:
Die waardes krijg ik eruit. Is er een makkelijkere manier om die te displayen?
Zoiets van maar een image graph 200 pixels als de waarde 100 is.. en 100 pixels als de waarde 50 is..?
BvD
Ja bv : http://www.phplot.com/

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09-09 20:58

Janoz

Moderator Devschuur®

!litemod

Op dinsdag 16 april 2002 02:02 schreef FlamerX het volgende:
Je query klopt niet helemaal
SELECT SUM(rating) FROM rates WHERE rid = $id
moet zijn
SELECT SUM(rating) AS sumrating FROM rates WHERE rid = $id

edit:

Kleine uitleg waarom (tenminste, zoals ik het begrijp): jouw code doet wel een sum, maar stopt die waarde niet in een variabele. Hierdoor kun je hem niet meer uitlezen. Logisch dat je dus problemen hebt.

Oh ja, [topic=309815/1/400] en laat ff weten of dit je probleem oplost (makkelijk voor andere gebruikers ;)).
Dat valt wel mee hoor. De tweede door jou genoemde query hangt er alleen een ander naampje aan. Bij de eerste is het gewoon op te vragen met SUM(rating), of door het juiste indexnummer te geven.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'

Pagina: 1