[PHP] (gemiddelde) cijfer

Pagina: 1
Acties:
  • 1.392 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

Anoniem: 44553

Topicstarter
hoe kan je het makkelijkst een cijfer (gegeven door een bezoeker) opslaan?
en hoe kan je alle opgeslagen cijfers weer openen en daar het gemiddelde van berekenen?

Acties:
  • 0 Henk 'm!

  • Grum
  • Registratie: Juni 2001
  • Niet online
1/ db of file
2/ query of fopen/file/fread/etc
3/ eerste klas wiskunde

Acties:
  • 0 Henk 'm!

  • nikao
  • Registratie: November 1999
  • Laatst online: 10-02-2022
uhm....kan in dbase., maar ook in simpel txt-file schrijven..
gewoon scheiden met | ofzo en dan met een while loopje alles eruit halen bij elkaar op tellen en delen door de grote van de array....
(toch?)

Acties:
  • 0 Henk 'm!

Anoniem: 44553

Topicstarter
hmm, ben nog net niet zo slim dat ik dat begrijp :)

Acties:
  • 0 Henk 'm!

Anoniem: 23690

Op maandag 07 januari 2002 17:28 schreef aquaman2002 het volgende:
hmm, ben nog net niet zo slim dat ik dat begrijp :)
als je alle beginners artikelen op www.phpfreakz.nl gelezen hebt mag je terugkomen. }:O

Acties:
  • 0 Henk 'm!

  • Grum
  • Registratie: Juni 2001
  • Niet online
bedenk gewoon wat op papier .. ga dan naar www.php.net en zoek de functies waarmee je kan doen wat je wil ...
loop je tegen problemen aan dan kan je hier gericht een vraag stellen ..

maar iets bedenken om dit op te lossen is eigelijk iets wat je ECHT zelf moet doen en de tips die je hebt gehad zouden je zeker genoeg in de richting moeten helpen .. is dit niet het geval .. dan zou ik eerst maar eens wat informatie doorlezen over php/mysql/scripting in het algemeen .. hiervoor zijn zat links in de FAQ te vinden.

Acties:
  • 0 Henk 'm!

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-06 16:03

dusty

Celebrate Life!

waardes optellen en delen door het aantal waardes, dat is je gemiddelde! :P

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Acties:
  • 0 Henk 'm!

  • RRX
  • Registratie: Mei 2000
  • Laatst online: 29-05 15:34

RRX

@life-

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?
//alle getallen in een array
$array    = array(0,1,2,3,4,5,6,7,8,9,10);
//Tellen hoeveel getallen er in de array zitten
$aantal    = count($array);
//met een while-loopje alle nummers uit de array optellen
while(list($dummy,$nummers) = each($array)){
    $nummer = $nummer + $nummers;
}
//het som van de aray delen daar het aantal
$uitkomst = $nummer / $aantal;
//afronden op 2 decimalen
$uitkomst = round($uitkomst,2);
//echoën van de uitkomst
echo $uitkomst;

//uitkomst is 5
?>

ik zie net dat er ook een mooie functie in php voor is :)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?
//alle getallen in een array
$array    = array(0,1,2,3,4,5,6,7,8,9,10);
//Tellen hoeveel getallen er in de array zitten
$aantal    = count($array);
//De som van alle getallen uit de array, gedeeld door het aantal getallen
$uitkomst = array_sum($array) / $aantal;
//afronden op 2 decimalen
$uitkomst = round($uitkomst,2);
//echoën van de uitkomst
echo $uitkomst;
//uitkomst is 5
?>

en je kan het ook in elkaar bouwen:
PHP:
1
2
3
4
<?
$array = array(0,1,2,3,4,5,6,7,8,9,10);
echo round(array_sum($array) / count($array),2);
?>

mijn T.net systeemspecspagina


Acties:
  • 0 Henk 'm!

  • Grum
  • Registratie: Juni 2001
  • Niet online
misschien flauw .. maar het is niet de bedoeling dat alles word voorgekauwd :) (lijkt mij althans)

Acties:
  • 0 Henk 'm!

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Op maandag 07 januari 2002 17:24 schreef aquaman2002 het volgende:
hoe kan je het makkelijkst een cijfer (gegeven door een bezoeker) opslaan?
en hoe kan je alle opgeslagen cijfers weer openen en daar het gemiddelde van berekenen?
Op maandag 07 januari 2002 18:18 schreef Grum_ het volgende:
misschien flauw .. maar het is niet de bedoeling dat alles word voorgekauwd :) (lijkt mij althans)
We missen nog het gedeelte met het opslaan :D (voorgekauwt dan)

Er zijn twee manieren van opslaan.
1) In een database
2) In een file

1) Je slaat de informatie op in een speciaal daarvoor ontwikkeld systeem. Meer info hierover op (bijv) http://www.mysql.org. Je kan doormiddel van PHP de info hierin stoppen en er weer uit halen, door voorgedefinieerde functies te gebruiken. Een kijkje bij http://www.php.net/manual/en/ref.mysql.php geeft je hopelijk wat duidelijkheid.

2) Je kunt ook de boel opslaan in een tekstbestandje. Daar schrijf je dan je waardes in weg en haalt ze er ook weer uit. Een super simpele database dus.
Meer info daarover bij http://www.php.net/manual/en/ref.filesystem.php

Succes! Kijk ook nog ff de manuals op www.php.net door!
* Glimi had nog geen goede daad gedaan vandaag :P

Acties:
  • 0 Henk 'm!

Anoniem: 44553

Topicstarter
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?
$cijfer = 7;
$file = fopen("/var/www/naam/HTML/anw/cijfer.txt", "r");
$cijfers = trim(fgets($file,10000));
fclose($file);
$cijfers[] = $cijfer;
$hoeveel = count($cijfers);
$gemcijfers = 0;
for ($label = 0; $label < $hoeveel; $label++ ) {
$gemcijfers = $gemcijfers + $cijfers[$label];
}
$gem = $gemcijfers / $hoeveel;
$file = fopen("/var/www/pieter/HTML/anw/cijfer.txt", "w");
fwrite($file, $cijfers);
fclose($file);
?>

functie van scriptje: gegeven cijfer door user wordt opgeslagen in cijfer.txt, van alle cijfers die er staan wordt het gemiddelde berekent.
maar dit scriptje geeft een error: Fatal error: [] operator not supported for strings in /var/www/pieter/HTML/anw/cijfer.php on line 11
(line 11: "$cijfers[] = $cijfer;")
wat doe ik fout?

Acties:
  • 0 Henk 'm!

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 03-02 23:18

D2k

(line 11: "$cijfers[] = $cijfer;")

tja wat wil je hier doen eigenlijk of wat dacht je hier te doen

Doet iets met Cloud (MS/IBM)


Acties:
  • 0 Henk 'm!

Anoniem: 44553

Topicstarter
in cijfers.txt moeten alle cijfers komen te staan die bezoekers hebben gegeven. (als array)
$cijfers[] = $cijfer; moet zorgen dat het door de bezoeker gegeven cijfer erbij komt

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Was je aan de hand van de manual niet opgevallen dat die functie fgets helemaal geen array teruggeeft.

Acties:
  • 0 Henk 'm!

Anoniem: 44553

Topicstarter
en hoe moet ik dan een array uit een file halen?

Acties:
  • 0 Henk 'm!

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 14:22

Crazy D

I think we should take a look.

Op maandag 07 januari 2002 20:27 schreef aquaman2002 het volgende:
en hoe moet ik dan een array uit een file halen?
Hmm door logisch na te denken?
Regel voor regel inlezen, of als het mogelijk is de file in 1 keer inlezen, en dan de data splitten op 'enter'.
Of wegschrijven als csv formaat.
Of... je zal vast nog wel meer kunnen verzinnen :)

Exact expert nodig?


Acties:
  • 0 Henk 'm!

Anoniem: 18050

file() levert een array terug volgens mij

Acties:
  • 0 Henk 'm!

Anoniem: 44553

Topicstarter
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?
$file = fopen("/var/www/naam/HTML/anw/cijfer.txt", "r");
$array = fgetss($file,10000);
fclose($file);

$cijfers = array($array);
$cijfers[] = $cijfer;

$file = fopen("/var/www/naam/HTML/anw/cijfer.txt", "w");
fwrite($file, $cijfers);
fclose($file);
?>

dit heb ik nu, maar bij het saven, saved ie "Array", best wel logisch, maar zorg ik er voor dat dat ie alleen de cijfers saved

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 20:36

crisp

Devver

Pixelated

ALs je de individuele cijfers niet nodig hebt zou ik persoonlijk maar 2 cijfers wegschrijven: een totaal, en een aantal. In het begin inlezen, nieuwe cijfer optellen bij het totaal en het aantal met 1 ophogen. Gemiddelde is dan simpel totaal/aantal.

Intentionally left blank


Acties:
  • 0 Henk 'm!

Anoniem: 9962

Mischien is dit wel te simpel maar je kan toch iedere keer het cijfer uit het text bestand lezen deze + nieuw nr / 2 = nieuw cijfer en ook kloppend :)

Mja mischien wel niet de bedoeling ;)

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 11:51

Janoz

Moderator Devschuur®

!litemod

Op maandag 07 januari 2002 21:52 schreef Xtentic het volgende:
Mischien is dit wel te simpel maar je kan toch iedere keer het cijfer uit het text bestand lezen deze + nieuw nr / 2 = nieuw cijfer en ook kloppend :)

Mja mischien wel niet de bedoeling ;)
werkt niet helemaal he... stel er hebben 99 mensen een 10 gegeven, en ik kom aanzetten en geef een 1, dan wordt je gemiddelde mooi wel 5.5 ipv ((99 * 10) + 1) / 100 = 9.91..

Wat jij wil moet je zo doen:
PHP:
1
2
3
4
<?
$cijferTotNuToe = ($stemmenTotNuToe * $cijferTotNuToe + $cijfer) / ($stemmenTotNuToe + 1);
$stemmenTotNuToe++;
?>

(Wel zorgen dat het floats zijn!)

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


Acties:
  • 0 Henk 'm!

Anoniem: 9962

Op maandag 07 januari 2002 22:38 schreef Janoz het volgende:

[..]

werkt niet helemaal he... stel er hebben 99 mensen een 10 gegeven, en ik kom aanzetten en geef een 1, dan wordt je gemiddelde mooi wel 5.5 ipv ((99 * 10) + 1) / 100 = 9.91..

Wat jij wil moet je zo doen:
PHP:
1
2
3
4
<?
$cijferTotNuToe = ($stemmenTotNuToe * $cijferTotNuToe + $cijfer) / ($stemmenTotNuToe + 1);
$stemmenTotNuToe++;
?>

(Wel zorgen dat het floats zijn!)
:D nou idd, nu ik er bij nadenk het klopt idd mja daar was ik/je later wel achter gekomen :)

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 11:51

Janoz

Moderator Devschuur®

!litemod

Het ID is wel goed.. Waarom zou je als je alleen het gemiddelde moet weten alle stemmen bij gaan houden.. De enige reden die ik kan bedenken is om mensen niet vaker een cijfer te kunnen laten geven, maar als je een site hebt waar gebruikers x stemmen per dag mogen uitbrengen hoef je nu alleen maar het aantal stemmen (per gebruiker, en per poll) en het gemiddelde bij te houden... Daarnaast is het een stuk efficiënter (je hoeft immers niet telkens opnieuw het gemiddelde uit te rekenen)

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


Acties:
  • 0 Henk 'm!

Anoniem: 9962

* Anoniem: 9962 als n00b is soms best handig :+

Acties:
  • 0 Henk 'm!

Anoniem: 14124

Waarom gaat iedereen hier zo moeilijk doen met scripting om een gemiddelde uit de database te extraheren :? Daar bestaan basic SQL functies voor.

SELECT allecijfers, AVG(allecijfers) AS gemiddeldecijfer
FROM tabelletje

Acties:
  • 0 Henk 'm!

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-06 16:03

dusty

Celebrate Life!

[edit][..] onzin [..]

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR

Pagina: 1