Getallen via een formulier in array zetten
Hoi,
Ik heb een formuliertje met 1 inputveld. De getallen die ik hier invoer, wil ik in een array zetten, zodat ik bijv gemiddelde, grootste getal, kleinste getal enz kan bepalen van alle getallen die ik heb ingevoerd.
Hoe zorg ik ervoor dat alle invoer in 1 array komt te staan???
Ik heb een formuliertje met 1 inputveld. De getallen die ik hier invoer, wil ik in een array zetten, zodat ik bijv gemiddelde, grootste getal, kleinste getal enz kan bepalen van alle getallen die ik heb ingevoerd.
Hoe zorg ik ervoor dat alle invoer in 1 array komt te staan???
Wil je 1 getal per keer invullen of meerdere in een keer en dan direct de berekeningen uitvoeren?
1 getal per keer, want er is maar 1 inputveld.
Hebben ze je dit niet al eerder uitgelegd? Je zult weer met $_SESSION moeten werken.
Gewijzigd op 25/10/2010 16:22:58 door - Mark -
Nee, dat was iets anders.
Toen wilde ik getallen achter elkaar optellen. Dus hoefde ik maar 1 getal te onthouden: de som. Dat is toen wel gelukt.
Nu moet ik in feite alle ingevoerde getallen onthouden. Dus ik dacht: ik zet ze in een array. Klopt dat wel?
Als ik alle getallen in een array kan zetten, hoef ik ze toch niet meer te onthouden met een Sessie?
Toen wilde ik getallen achter elkaar optellen. Dus hoefde ik maar 1 getal te onthouden: de som. Dat is toen wel gelukt.
Nu moet ik in feite alle ingevoerde getallen onthouden. Dus ik dacht: ik zet ze in een array. Klopt dat wel?
Als ik alle getallen in een array kan zetten, hoef ik ze toch niet meer te onthouden met een Sessie?
maar als je een getal invult in de input, en je klikt op verzenden en je stopt hem in array , en je wilt vervolgens nog een getal invoeren en in de array zetten , dan wil dat zowiezo al niet aangezien je niks in een array kunt opslaan, je kunt ze eventueel wel in een database stoppen (insert into) of je moet alle getallen gelijk in de de input velt stoppen en dan exploden op de spaties. dan heb heb je array al
het kan zonder een sessie maar het is gemakkelijker met. Je moet de getallen tussentijds ergens opslaan omdat je elke keer 1 getal toevoegt.
LET OP! Er zit geen enkele fout afhandeling in.
De eerste 3 stukjes horen boven je html te staan.
LET OP! Er zit geen enkele fout afhandeling in.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
#| Session starten.
session_start();
#| Controleren of " $_SESSION['getallen'] " al bestaat, zo niet dan maken we deze aan.
if(!isset($_SESSION['getallen'])){
$_SESSION['getallen'] = array();
}
#| Getal toevoegen.
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$_SESSION['getallen'][] = $_POST['getal'];
}
#| De som berekenen van alle getallen in " $_SESSION['getallen'] ".
echo 'De som van de getallen "'.implode(', ', $_SESSION['getallen']).'" is '.array_sum($_SESSION['getallen']).'.';
?>
#| Session starten.
session_start();
#| Controleren of " $_SESSION['getallen'] " al bestaat, zo niet dan maken we deze aan.
if(!isset($_SESSION['getallen'])){
$_SESSION['getallen'] = array();
}
#| Getal toevoegen.
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$_SESSION['getallen'][] = $_POST['getal'];
}
#| De som berekenen van alle getallen in " $_SESSION['getallen'] ".
echo 'De som van de getallen "'.implode(', ', $_SESSION['getallen']).'" is '.array_sum($_SESSION['getallen']).'.';
?>
De eerste 3 stukjes horen boven je html te staan.
Als je de getallen steeds achter elkaar invoert (zonder van de pagina af te gaan)
kun je ze toch gewoon via $_POST in de array zetten?...
kun je ze toch gewoon via $_POST in de array zetten?...
Hoe dan???
Je bedoelt iets zoals dit?
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
#Getallen losmaken en in array zetten.
$array = str_split($_POST['getallen'], 1))
?>
#Getallen losmaken en in array zetten.
$array = str_split($_POST['getallen'], 1))
?>
Gewijzigd op 25/10/2010 18:02:45 door Wouter Goyen
@Wouter Dat werkt alleen voor getallen van 0 t/m 9
Je kunt de string met explode() opblazen zullen we maar zeggen. Je moet dan wel tussen elk getal een spatie of een - of iets anders zetten waarop je de string in stukken kunt delen.
Je kunt de string met explode() opblazen zullen we maar zeggen. Je moet dan wel tussen elk getal een spatie of een - of iets anders zetten waarop je de string in stukken kunt delen.
Gewoon arrays gebruiken!
name="field[0]"
name="field[1]"
en dan in PHP print_r($_POST['field])
name="field[0]"
name="field[1]"
en dan in PHP print_r($_POST['field])
Hoe groot zijn de getallen maximaal die je wilt gebruiken?
Je kan ook gewoon de gebruiker bijvoorbeeld 1,5,73,54,78,32 in laten voeren in een inputveld en te exploden naar een array, dus:
$getallen = explode(',',$_POST['getallen']);
$getallen = explode(',',$_POST['getallen']);




