Bekijk Volledige Versie : gemiddelde berekenen database entries
Hallo NIWSS,
Ik zou graag een script willen maken, die het gemiddelde berekent van een
aantal database entries.
dit is de situatie:
Ik ben bezig met een project, waar de gebruikers een bepaalde
uitgaansgelegenheid een beoordeling kunnen geven. Deze beoordeling word dan
in een MySQL database toegevoegd. van alle beoordelingen van iedere
gebruiker, moet vervolgens het gemiddelde berekend worden.
Is hier een bepaalde PHP functie voor? ik kan op php.net geen functie vinden
die mij verder zou kunnen helpen
alvast bedankt,
Sven Goosen
--spatie
Het streepje wordt een puntje, voor een prive bericht.
Toni Van Remortel
08/10/03, 19:30
On Wed, 08 Oct 2003 18:34:49 +0200, Sven wrote:
> Hallo NIWSS,
>
> Ik zou graag een script willen maken, die het gemiddelde berekent van een
> aantal database entries.
> dit is de situatie:
>
> Ik ben bezig met een project, waar de gebruikers een bepaalde
> uitgaansgelegenheid een beoordeling kunnen geven. Deze beoordeling word dan
> in een MySQL database toegevoegd. van alle beoordelingen van iedere
> gebruiker, moet vervolgens het gemiddelde berekend worden.
>
> Is hier een bepaalde PHP functie voor? ik kan op php.net geen functie vinden
> die mij verder zou kunnen helpen
Waarom dat in PHP doen, terwijl MySQL evengoed kan rekenen? Dat gaat
stukken sneller!
SQL : SELECT SUM(score)/count(*) as average FROM table
Et voilà.
--
Groeten, Toni
Nokelu - NoorderKempense Linux users
http://www.nokelu.be
Toni Van Remortel
08/10/03, 19:30
On Wed, 08 Oct 2003 17:16:01 +0000, Toni Van Remortel wrote:
> SQL : SELECT SUM(score)/count(*) as average FROM table
Kan mooier :
SELECT SUM(score)/count(score) as average FROM table
Soms kan count wel eens vervelend doen als je * meegeeft. Die situaties
komen weinig voor, maar het kan. Vandaar.
--
Groeten, Toni
Nokelu - NoorderKempense Linux users
http://www.nokelu.be
"Toni Van Remortel" <tonivr@chopout.pandora.be> wrote in message
news:pan.2003.10.08.17.17.48.242689@chopout.pandor a.be...
> Kan mooier :
> SELECT SUM(score)/count(score) as average FROM table
Waarom niet "SELECT AVG(score) FROM table;" ?
Toni Van Remortel
08/10/03, 19:30
On Wed, 08 Oct 2003 19:21:32 +0200, Chris wrote:
> "Toni Van Remortel" <tonivr@chopout.pandora.be> wrote in message
> news:pan.2003.10.08.17.17.48.242689@chopout.pandor a.be...
>> Kan mooier :
>> SELECT SUM(score)/count(score) as average FROM table
>
> Waarom niet "SELECT AVG(score) FROM table;" ?
Djee. Ik wist niet dat die functie bestond. Heb er ook geen documentatie
over gevonden op de MySQL site.
Is idd handiger én beter.
Merci voor de aanvulling.
--
Groeten, Toni
Nokelu - NoorderKempense Linux users
http://www.nokelu.be
Sven wrote:
> Hallo NIWSS,
>
> Ik zou graag een script willen maken, die het gemiddelde berekent van een
> aantal database entries.
> dit is de situatie:
>
> Ik ben bezig met een project, waar de gebruikers een bepaalde
> uitgaansgelegenheid een beoordeling kunnen geven. Deze beoordeling word dan
> in een MySQL database toegevoegd. van alle beoordelingen van iedere
> gebruiker, moet vervolgens het gemiddelde berekend worden.
>
> Is hier een bepaalde PHP functie voor? ik kan op php.net geen functie vinden
> die mij verder zou kunnen helpen
>
> alvast bedankt,
> Sven Goosen
> --spatie
> Het streepje wordt een puntje, voor een prive bericht.
>
>
Hoi Sven,
Je kunt dat ook in de query opnemen.
Het wordt dan zoiets:
'select sum(veld)/count(*) as gemiddelde from tabel'
Je kunt daar de functie truncate() nog aan toevoegen om het aantal
decimalen achter de komma te beperken.
Dan krijg dit:
'select truncate(sum(veld)/count(*),2) as gemiddelde from tabel'
bovenstaand voorbeeld retourneerd een getal met 2 decimalen
groet,
René
ik krijg nu als melding:
Resource id #2 op mijn scherm. ik heb de volgende code gebruikt:
<?php
$user_gemiddeld=mysql_db_query($sql_database,'SELE CT AVG(age) FROM users');
echo $user_gemiddeld;
?>
(ik neem aan dat jullie met score de kolom in mijn tabel noemen waar ik het
gemiddelde van wil hebben?)
wat doe ik nu verkeerd..?
Sven
"Toni Van Remortel" <tonivr@chopout.pandora.be> schreef in bericht
news:pan.2003.10.08.17.29.13.37874@chopout.pandora .be...
> On Wed, 08 Oct 2003 19:21:32 +0200, Chris wrote:
>
> > "Toni Van Remortel" <tonivr@chopout.pandora.be> wrote in message
> > news:pan.2003.10.08.17.17.48.242689@chopout.pandor a.be...
> >> Kan mooier :
> >> SELECT SUM(score)/count(score) as average FROM table
> >
> > Waarom niet "SELECT AVG(score) FROM table;" ?
>
> Djee. Ik wist niet dat die functie bestond. Heb er ook geen documentatie
> over gevonden op de MySQL site.
>
> Is idd handiger én beter.
>
> Merci voor de aanvulling.
> --
> Groeten, Toni
> Nokelu - NoorderKempense Linux users
> http://www.nokelu.be
>
Daniel Tryba
08/10/03, 21:30
Sven <sven@enygma-demon.nl> wrote:
> ik krijg nu als melding:
> Resource id #2 op mijn scherm. ik heb de volgende code gebruikt:
> <?php
> $user_gemiddeld=mysql_db_query($sql_database,'SELE CT AVG(age) FROM users');
> echo $user_gemiddeld;
> ?>
> wat doe ik nu verkeerd..?
Je hebt de handleiding niet gelezen van mysql_db_query? Als je op
http://php.net/mysql_db_query kijkt zal je zien:
<q>
mysql_db_query -- Send a MySQL query
Description
resource mysql_db_query ( string database, string query [, resource
link_identifier])
Returns a positive MySQL result resource to the query result, or FALSE
on error. The function also returns TRUE/FALSE for INSERT/UPDATE/DELETE
queries to indicate success/ failure.
[.....]
Note: This function has been deprecated since PHP 4.0.6. Do not use this
function. Use mysql_select_db() and mysql_query() instead.
</q>
MAW je echo-ed de resource ipv de resource uit te lezen en de resultaten
daarin te tonen.
BTW zou je zo vriendelijk willen zijn om je te gedragen zoals in deze
nieuwsgroep gebruikelijk is. MAW netjes reageren op postings door te
reageren op de relevante stukken en de rest te knippen en/of samen te
vatten. Je huidige reply technieken toont IMHO minachting voor je lezers
aangezien ze mogen uitzoeken wat waar nu weer over gaat.
--
Daniel Tryba
Daniel Tryba wrote:
> Sven <sven@enygma-demon.nl> wrote:
>> ik krijg nu als melding:
>> Resource id #2 op mijn scherm. ik heb de volgende code gebruikt:
>> <?php
>> $user_gemiddeld=mysql_db_query($sql_database,'SELE CT AVG(age) FROM
>> users'); echo $user_gemiddeld;
>>>
>> wat doe ik nu verkeerd..?
>
<knip manual pagina>
> MAW je echo-ed de resource ipv de resource uit te lezen en de
> resultaten daarin te tonen.
hoe zou ik deze resource dan uit kunnen lezen?
> BTW zou je zo vriendelijk willen zijn om je te gedragen zoals in deze
> nieuwsgroep gebruikelijk is. MAW netjes reageren op postings door te
> reageren op de relevante stukken en de rest te knippen en/of samen te
> vatten. Je huidige reply technieken toont IMHO minachting voor je
> lezers aangezien ze mogen uitzoeken wat waar nu weer over gaat.
sorry, dit was mijn fout. ik lette even niet op :-)
Sven
--spatie
Het streepje wordt een puntje, voor een prive bericht.
Ronald Klip
08/10/03, 23:15
Sven schreef:
> Daniel Tryba wrote:
>
> > MAW je echo-ed de resource ipv de resource uit te lezen en de
> > resultaten daarin te tonen.
>
> hoe zou ik deze resource dan uit kunnen lezen?
Zo'n resource bevat de resultaten van je query. Creeer 'm met bijv.
$result = mysql_query($jouwQuery);
Gebruik vervolgens
mysql_fetch_row($result) of
mysql_fetch_array($result) of
mysql_fetch_object($result) of
mysql_result($result, rij [, kol])
voor verdere verwerking. Zie de manual voor de voor- en nadelen van die
functies; elke goede inleiding PHP/MySQL biedt uitleg over het uitvoeren
en verwerken van db-queries.
--
groet, Ronald
Ronald Klip wrote:
> Sven schreef:
>> Daniel Tryba wrote:
>>
>>> MAW je echo-ed de resource ipv de resource uit te lezen en de
>>> resultaten daarin te tonen.
>>
>> hoe zou ik deze resource dan uit kunnen lezen?
>
> Zo'n resource bevat de resultaten van je query. Creeer 'm met bijv.
> $result = mysql_query($jouwQuery);
> Gebruik vervolgens
> mysql_fetch_row($result) of
> mysql_fetch_array($result) of
> mysql_fetch_object($result) of
> mysql_result($result, rij [, kol])
Dat had ik al geprobeerd, echter nu komt er "array" op mn scherm te staan.
Dit is mijn huidige php code:
$user_gemiddeld=mysql_query("SELECT AVG(age) FROM users");
$useravrg=mysql_fetch_array($user_gemiddeld);
echo $useravrg;
Groeten,
Sven
--
Het streepje wordt een puntje, voor een prive bericht.
Ronald Klip
09/10/03, 00:30
Sven schreef:
>
> Dat had ik al geprobeerd, echter nu komt er "array" op mn scherm te staan.
>
> Dit is mijn huidige php code:
>
> $user_gemiddeld=mysql_query("SELECT AVG(age) FROM users");
> $useravrg=mysql_fetch_array($user_gemiddeld);
>
> echo $useravrg;
"array" viel te verwachten, want de inhoud van een array laat zich niet
zo maar echo-en. Als je weet dat je result set uit slechts 1 rij
bestaat, zoals in jouw geval, kun je net zo goed mysql_result()
gebruiken.
Nuttige link:
> http://hotwired.lycos.com/webmonkey/programming/php/tutorials/tutorial4.html
In lesson 2 wordt eea verteld over loops, die je oa kunt gebruiken om
door grotere result sets te wandelen, of door arrays.
--
groet, Ronald
Daniel Tryba
09/10/03, 00:30
Sven <sven@enygma-demon.nl> wrote:
>>> hoe zou ik deze resource dan uit kunnen lezen?
>>
>> Zo'n resource bevat de resultaten van je query. Creeer 'm met bijv.
>> $result = mysql_query($jouwQuery);
>> Gebruik vervolgens
>> mysql_fetch_row($result) of
>> mysql_fetch_array($result) of
>> mysql_fetch_object($result) of
>> mysql_result($result, rij [, kol])
>
> Dat had ik al geprobeerd, echter nu komt er "array" op mn scherm te staan.
>
> Dit is mijn huidige php code:
>
> $user_gemiddeld=mysql_query("SELECT AVG(age) FROM users");
> $useravrg=mysql_fetch_array($user_gemiddeld);
>
> echo $useravrg;
Ook dit is niet verwonderlijk, immers met mysql_fetch_array haal je een
array uit $user_gemiddeld.
In de voorbeeld query, is er maar 1 resultaat en dat zal dus de enige
waarde in het array $useravrg zijn. Je kunt er dus bij met $useravg[0].
BTW Als je $useravrg nu eens door print_r() heen gooit (print_r($useravg);),
zul je overigens merken dat er toch stiekum 2 waarden in $useravrg
zitten, bv:
Array
(
[0] => 91102.5000
[avg(ID)] => 91102.5000
)
Je kunt dus ook de waarde achterhalen met $useravg['avg(ID)'].
Persoonlijk vind ik dit maar niets en gebruik dan zelf ook expliciet
mysql_fetch_row of mysql_fetch_assoc om resp een array of hash te
extraheren naar behoeven.
--
Daniel Tryba