login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[PHP] rekenen

Offline raintjah - 10/09/2007 00:08 (laatste wijziging 11/09/2007 14:35)
Avatar van raintjahNieuw lid Hallo,

Eerst en vooral: ik weet niet of dit op zijn plaats staat.

Verder,
Ik heb in mijn database 1 kolom zitten met getalletjes. Nu wil ik het volgende bereiken:
http://stockcha...ge-sma.png

Je ziet in de afbeelding 2 kolommen. Die linkse kolom heb ik, en noemt 'gemiddelde' in mijn script. Nu moet ik daaruit de (in de afbeelding) rechter kolom berekenen. Dat doe je door eerste de eerste (in mijn geval dertig, op de afbeelding 10) dertig getallen op te tellen en te delen door dertig. Het tweede getal in de RECHTER kolom wordt berekend door de getallen vanaf 2 tot en met 31 op te tellen. Het derde getal in de RECHTER kolom wordt berekend door de getallen vanaf 3 tot en met 32 op te tellen, en zo voorts...

Weet er iemand hoe ik dit klaar krijg?

Alvast bedankt!

9 antwoorden

Gesponsorde links
Offline ikki007 - 10/09/2007 07:34 (laatste wijziging 10/09/2007 07:38)
Avatar van ikki007 Gouden medailleGouden medaille

PHP ver gevorderde
  1. <?php
  2. include('config.php'); // o rly
  3.  
  4. $selectQuery = mysql_query("SELECT * FROM getalletjes");
  5. $offset1 = 0;
  6. $som = '';
  7.  
  8. while($fetch = mysql_fetch_array($selectQuery))
  9. {
  10. $query = mysql_query("SELECT * FROM getalletjes ORDER BY id ASC LIMIT ".$offset1.", 10");
  11.  
  12. while($arr = mysql_fetch_array($query))
  13. {
  14. $som += $arr['kol1'];
  15. }
  16.  
  17. print 'Gemiddelde van de cijfers '.$offset1.' t/m '.($offset1+10).': '.($som/10).'<br />';
  18.  
  19. $som = '';
  20. $offset1 += 10;
  21. }
  22. ?>


Geen tijd gehad om te testen overigens.
Offline raintjah - 10/09/2007 20:07
Avatar van raintjah Nieuw lid Ik heb een paar dingen aangepast:
  1. <?php
  2.  
  3.  
  4. $selectQuery = "SELECT gemiddelde FROM test";
  5. $offset1 = 0;
  6. $offset2 = 30;
  7. $som = 0;
  8. $dertigdaagsgem = 0;
  9.  
  10. while(mysql_fetch_assoc($selectQuery))
  11. {
  12. $query ="SELECT gemiddelde FROM test ORDER BY id ASC LIMIT ".$offset1.", ".$offset2."";
  13.  
  14. while($arr = mysql_fetch_assoc($query))
  15. {
  16. $som += $arr['gemiddelde'];
  17. }
  18.  
  19. $derigdaagsgem = ($som)/30;
  20. mysql_query("UPDATE test SET gemiddelde30='".$dertigdaagsgem."'");
  21. $som = 0;
  22. $dertigdaagsgem = 0;
  23. $offset1 += 1;
  24. $offset1 += 1;
  25. }
  26. ?>


Ik had het fout uitgelegd, hij moest eigenlijk gewoon één cijfertje opschuiven, en dan van de volgende zoveel het gemiddelde berekenen. Ik denk dat het wel duidelijk wordt als je mijn scriptje leest.

Wel krijg ik nog een error:

Citaat:
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in c:program fileseasyphp1-8www30plaatsen.php on line 10
Offline Voldemort - 10/09/2007 20:20
Avatar van Voldemort PHP ver gevorderde Lijn 4:

  1. $selectQuery = "SELECT gemiddelde FROM test";


==>

  1. $selectQuery = mysql_query("SELECT gemiddelde FROM test");


PHP.net: mysql_query, PHP.net: mysql_fetch_assoc ==> Eerste argument met een resource zijn en jij gaf een string op. Aangezien mysql_query de resource terugstuurt die jij nodig hebt moet je er mysql_query over gooien.
Offline raintjah - 10/09/2007 21:16
Avatar van raintjah Nieuw lid Met de volgende code:
  1. <?php
  2. include('connect.php');
  3.  
  4. $selectQuery = mysql_query("SELECT gemiddelde FROM test");
  5. $offset1 = 0;
  6. $offset2 = 30;
  7. $som = 0;
  8. $dertigdaagsgem = 0;
  9.  
  10. while(mysql_fetch_assoc($selectQuery))
  11. {
  12. $query = mysql_query("SELECT gemiddelde FROM test ORDER BY id ASC LIMIT ".$offset1.", ".$offset2."");
  13.  
  14. while($arr = mysql_fetch_assoc($query))
  15. {
  16. $som += $arr['gemiddelde'];
  17. }
  18.  
  19. $derigdaagsgem = ($som)/30;
  20. mysql_query("UPDATE test SET gemiddelde30='".$dertigdaagsgem."'");
  21. $som = 0;
  22. $dertigdaagsgem = 0;
  23. $offset1 += 1;
  24. $offset1 += 1;
  25. }
  26. ?>


Geeft mij de volgende error (65454 keer onder elkaar):
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\30plaatsen.php on line 14
Offline Simon - 10/09/2007 21:26
Avatar van Simon PHP expert ik vraag me af voor wat die eerste while lus dient...

verander regel 12:
  1. $query = mysql_query("SELECT gemiddelde FROM test ORDER BY id ASC LIMIT ".$offset1.", ".$offset2."");
in
  1. $query = mysql_query("SELECT gemiddelde FROM test ORDER BY id ASC LIMIT ".$offset1.", ".$offset2."") or die('Error: '. mysql_error());

Offline marten - 10/09/2007 21:28
Avatar van marten Beheerder
Citaat:
De uitkomst van deze deling moet dan in een nieuwe kolom komen van dezelfde tabel in de database.


Moet dit er echt naar geschreven worden of wil je dit met een SELECT eruit halen?
Offline raintjah - 10/09/2007 21:38
Avatar van raintjah Nieuw lid Het moet geschreven worden.

@Simon:
geen idee Ik heb maar overgenomen...

Ik wil eigenlijk het volgende berekenen:
http://stockcha...ge-sma.png

Je ziet in de afbeelding 2 kolommen. Die linkse kolom heb ik, en noemt 'gemiddelde' in mijn script. Nu moet ik daaruit de (in de afbeelding) rechter kolom berekenen. Dat doe je door eerste de eerste (in mijn geval dertig, op de afbeelding 10) dertig getallen op te tellen en te delen door dertig. Het tweede getal in de RECHTER kolom wordt berekend door de getallen vanaf 2 tot en met 31 op te tellen. Het derde getal in de RECHTER kolom wordt berekend door de getallen vanaf 3 tot en met 32 op te tellen, en zo voorts...
Offline ikkedikke - 11/09/2007 18:44
Avatar van ikkedikke PHP expert
  1. UPDATE `tabel` `t` SET `gemiddelde` = SUM( SELECT `dagwaarde` FROM `tabel` WHERE id BETWEEN(`t`.`id`-31,`t`.`id-1`))/30
Offline raintjah - 11/09/2007 23:16
Avatar van raintjah Nieuw lid Zou je een beetje uitleg kunnen geven? Ik weet niet goed waar ik deze code moet plaatsen, en waarom..? 

Alvast bedankt!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.244s