'Volle' sessies tellen en mee rekenen
Ik heb een, voor mij, moeilijke vraag. Ik ben dankzij het forum al heel ver met mijn script, maar het rekenen zit ik f op vast.
Er heb 6 sessions, waarbij vanaf 3 sessions die 'gevuld' zijn, een vast bedrag staat. (€20,-)
Mochten er maar 2 sessions 'gevuld' zijn, dan moeten deze opgeteld worden €8,50*2.
Nu dacht ik dit 'f' via een array te doen. De 6 sessions in een foreach gooien en dan tellen hoe veel er gevuld zijn. Maar dit werkt niet, iig niet bij mij.
Wie kan mij helpen? :)
Groet,
Roel
Edit: Dit was mijn gedachte...
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
$kosten = array($_SESSION['kvth']['deelname_onder_zadel'], $_SESSION['kvth']['deelname_zadeltijdsrit']);
foreach($kosten as $keykosten => $waardekosten)
{
if($keykosten <= 2)
{
echo 'minder dan 2';
}
}
foreach($kosten as $keykosten => $waardekosten)
{
if($keykosten <= 2)
{
echo 'minder dan 2';
}
}
Gewijzigd op 28/12/2013 18:31:52 door Roel H
Echter wanneer een sessie leeg is, mag die niet geteld worden.
Ger van Steenderen op 28/12/2013 19:09:41:
Oke, ik snap wat je wilt zeggen denk ik ;-)
Maar een simpele oplossing is er niet dus, als ik je zo goed begrijp? :)
Roel H op 28/12/2013 18:27:48:
Er heb 6 sessions
Er is altijd maar 1 session tegelijk aan het werk en dat is de inhoud van $_SESSION.
Roel H op 28/12/2013 18:27:48:
een vast bedrag staat. (€20,-)
Dat is geen getal maar tekst. Daar kan je niet mee rekenen.
ik heb deze sessions (als voorbeeld)
$_SESSION['input']['1']
$_SESSION['input']['2']
$_SESSION['input']['3']
$_SESSION['input']['4']
$_SESSION['input']['5']
$_SESSION['input']['6']
Elke sessie kan een waarde hebben (bijvoorbeeld 'JA') of gewoon leeg( '' ).
Wanneer 3 of meer van deze gevuld zijn, is het bedrag €20,-
Echter wanneer er maar 1 gevuld is, mag het bedrag €8,50 zijn, en bij 2, €17,-
Hoe dit te maken?
Groet,
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
29
30
31
32
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
29
30
31
32
<?php
$_SESSION['input']['1']=1;
$_SESSION['input']['2']=0;
$_SESSION['input']['3']='';
$_SESSION['input']['4']='aap';
$_SESSION['input']['5']=12;
$_SESSION['input']['6']='noot';
// Een nul telt niet mee
// Geeft 4
$teller = 0;
if(isset($_SESSION['input']) and is_array($_SESSION['input']))
{
foreach($_SESSION['input'] as $waarde)
{
if(!empty($waarde)) $teller++;
}
}
echo $teller;
// Een nul telt wel mee
// Geeft 5
$teller = 0;
if(isset($_SESSION['input']) and is_array($_SESSION['input']))
{
foreach($_SESSION['input'] as $waarde)
{
if(strlen($waarde) != 0) $teller++;
}
}
echo $teller;
?>
$_SESSION['input']['1']=1;
$_SESSION['input']['2']=0;
$_SESSION['input']['3']='';
$_SESSION['input']['4']='aap';
$_SESSION['input']['5']=12;
$_SESSION['input']['6']='noot';
// Een nul telt niet mee
// Geeft 4
$teller = 0;
if(isset($_SESSION['input']) and is_array($_SESSION['input']))
{
foreach($_SESSION['input'] as $waarde)
{
if(!empty($waarde)) $teller++;
}
}
echo $teller;
// Een nul telt wel mee
// Geeft 5
$teller = 0;
if(isset($_SESSION['input']) and is_array($_SESSION['input']))
{
foreach($_SESSION['input'] as $waarde)
{
if(strlen($waarde) != 0) $teller++;
}
}
echo $teller;
?>
Gewijzigd op 29/12/2013 11:49:33 door - SanThe -
Ik heb van deze $_SESSION['input']['1'] er een stukje of 18/19 (uit me hoofd).
Maar een 6 aantal mogen maar mee geteld worden. Kan ik het dan eventueel zo doen?
Dit lijkt bij de handigste oplossing, waarbij ik bepaal welke sessies meegeteld mogen worden?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$kosten = array(
$_SESSION['input']['1'],
$_SESSION['input']['2'],
$_SESSION['input']['3'],
$_SESSION['input']['4'],
$_SESSION['input']['5'],
$_SESSION['input']['6']);
// Een nul telt niet mee
// Geeft 4
$teller = 0;
if(isset($kosten) and is_array($kosten))
{
foreach($kosten as $waarde)
{
if(!empty($waarde)) $teller++;
}
}
echo $teller;
?>
$kosten = array(
$_SESSION['input']['1'],
$_SESSION['input']['2'],
$_SESSION['input']['3'],
$_SESSION['input']['4'],
$_SESSION['input']['5'],
$_SESSION['input']['6']);
// Een nul telt niet mee
// Geeft 4
$teller = 0;
if(isset($kosten) and is_array($kosten))
{
foreach($kosten as $waarde)
{
if(!empty($waarde)) $teller++;
}
}
echo $teller;
?>
Edit:
Hiermee krijg ik altijd nul dus...
Gewijzigd op 29/12/2013 12:09:21 door Roel H
Zoiets doe jij op regel 14, je hebt een variabele met de naam kosten en van het type array aangemaakt, en dan ga je daar controleren of ie bestaat en of het een array is.
Je gooit ook alles op één hoop, terwijl je met een gedeelte van die hoop nog wat andere dingen moet doen.
En ook zou ik niet op voorhand lege waarden aanmaken maar pas als ze een waarde hebben:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
session_start();
if (!isset($_SESSION['input'])
$_SESSION['input'] = array();
$_SESSION['deelnames'] = array();
}
//als dan een bepaald gegeven wordt ingevoerd:
$_SESSION['deelnames']['veldnaam'] = 'waarde';
//kosten opvragen
$bedrag = count($_SESSION['deelnames']) * 8.5;
//max 20
$bedrag = ($bedrag < 20) ? $bedrag: 20;
?>
session_start();
if (!isset($_SESSION['input'])
$_SESSION['input'] = array();
$_SESSION['deelnames'] = array();
}
//als dan een bepaald gegeven wordt ingevoerd:
$_SESSION['deelnames']['veldnaam'] = 'waarde';
//kosten opvragen
$bedrag = count($_SESSION['deelnames']) * 8.5;
//max 20
$bedrag = ($bedrag < 20) ? $bedrag: 20;
?>
Gewijzigd op 29/12/2013 12:43:16 door Ger van Steenderen
@Ger: Die regel komt uit mijn voorbeeldje. Ik neem automatisch aan dat het bestaan van de juiste session-gegevens bij TS geen garantie heeft. Vandaar de extra check.
Mijn sessies zijn al gemaakt, dmv het formulier wat mensen invullen. Dit zijn de waarden dan.
$_SESSION['kvth']['dressuur'] = waarde(verschillende mogelijkheden) of NULL (niks ingevuld)
$_SESSION['kvth']['springen'] = waarde(verschillende mogelijkheden) of NULL (niks ingevuld)
$_SESSION['kvth']['deelname2'] = waarde(verschillende mogelijkheden) of NULL (niks ingevuld)
Hiervan zijn er in totaal 6, welke allemaal of een waarde kunnen hebben of leeg (NULL) zijn. Wanneer een sessie leeg is, wordt die niet mee geteld. Wanneer er 3 of meer zijn ingevuld, betaal je 20 euro.
Bij 1 is het 8,50 en bij 2 17 euro.
Nu snap ik jou idee niet helemaal Ger. Regel 8 bijvoorbeeld, hoe wordt dat ingevuld dan?
Sorry dat ik zo traag van begrip van hiermee nu... ;)
Wie o wie please, ik kom er gewoon niet meer uit...
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?
$rekenen = array(
$_SESSION['input']['deelnamemetzonder'],
$_SESSION['input']['dressuuur_onder_zadel'],
$_SESSION['input']['dressuur_aangespannen'],
$_SESSION['input']['deelname_zadeltijdsrit']);
foreach($rekenen as $waardes)
{
// Een nul telt niet mee
// Geeft 4
$teller = 0;
if(isset($_SESSION['input']) and is_array($_SESSION['input']))
{
foreach($waardes as $waarde)
{
if(!empty($waarde)) $teller++;
}
}
}
echo $teller;
?>
$rekenen = array(
$_SESSION['input']['deelnamemetzonder'],
$_SESSION['input']['dressuuur_onder_zadel'],
$_SESSION['input']['dressuur_aangespannen'],
$_SESSION['input']['deelname_zadeltijdsrit']);
foreach($rekenen as $waardes)
{
// Een nul telt niet mee
// Geeft 4
$teller = 0;
if(isset($_SESSION['input']) and is_array($_SESSION['input']))
{
foreach($waardes as $waarde)
{
if(!empty($waarde)) $teller++;
}
}
}
echo $teller;
?>
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
29
30
31
32
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
29
30
31
32
<?php
session_start();
$_SESSION['input']['deelnamemetzonder'] = 20;
$_SESSION['input']['dressuuur_onder_zadel'] = 50;
$_SESSION['input']['dressuur_aangespannen'] = null;
$_SESSION['input']['deelname_zadeltijdsrit'] = 15;
$teller = 0;
$output = 0;
foreach($_SESSION['input'] as $value)
{
if($value)
{
$teller++;
if($teller > 2)
{
$output = 20;
}
else
{
$output += $value;
}
}
}
echo 'er waren ' . $teller . ' gevulde sessions<br/>';
echo 'dat maakt een bedrag van €' . $output;
?>
session_start();
$_SESSION['input']['deelnamemetzonder'] = 20;
$_SESSION['input']['dressuuur_onder_zadel'] = 50;
$_SESSION['input']['dressuur_aangespannen'] = null;
$_SESSION['input']['deelname_zadeltijdsrit'] = 15;
$teller = 0;
$output = 0;
foreach($_SESSION['input'] as $value)
{
if($value)
{
$teller++;
if($teller > 2)
{
$output = 20;
}
else
{
$output += $value;
}
}
}
echo 'er waren ' . $teller . ' gevulde sessions<br/>';
echo 'dat maakt een bedrag van €' . $output;
?>
als er slechts 2 sessies zijn ingevuld telt hij deze op, zijn er meerdere ingevuld dan geven we standaard 20 terug.
Roel H op 29/12/2013 11:02:34:
Oke ik ga proberen het duidelijker te verwoorden:
ik heb deze sessions (als voorbeeld)
$_SESSION['input']['1']
$_SESSION['input']['2']
$_SESSION['input']['3']
$_SESSION['input']['4']
$_SESSION['input']['5']
$_SESSION['input']['6']
Elke sessie kan een waarde hebben (bijvoorbeeld 'JA') of gewoon leeg( '' ).
Wanneer 3 of meer van deze gevuld zijn, is het bedrag €20,-
Echter wanneer er maar 1 gevuld is, mag het bedrag €8,50 zijn, en bij 2, €17,-
Hoe dit te maken?
Groet,
ik heb deze sessions (als voorbeeld)
$_SESSION['input']['1']
$_SESSION['input']['2']
$_SESSION['input']['3']
$_SESSION['input']['4']
$_SESSION['input']['5']
$_SESSION['input']['6']
Elke sessie kan een waarde hebben (bijvoorbeeld 'JA') of gewoon leeg( '' ).
Wanneer 3 of meer van deze gevuld zijn, is het bedrag €20,-
Echter wanneer er maar 1 gevuld is, mag het bedrag €8,50 zijn, en bij 2, €17,-
Hoe dit te maken?
Groet,
Enjoy...
http://3v4l.org/jNXl9
(het resultaat/output van de code zie je onderaan de pagina)
Gewijzigd op 03/01/2014 02:00:26 door Ozzie PHP
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
// Testdata
$_SESSION['input']['1'] = '';
$_SESSION['input']['2'] = 'JA';
$_SESSION['input']['3'] = '';
$_SESSION['input']['4'] = '';
$_SESSION['input']['5'] = 'JA';
$_SESSION['input']['6'] = '';
// Aantal ingevulde inputs tellen
$telling = count(array_filter($_SESSION['input']));
// Bedrag bepalen
if ($telling == 1) {
$bedrag = 8.5;
} elseif ($telling == 2) {
$bedrag = 17;
} else {
$bedrag = 20;
}
// Voilá
var_dump($bedrag);
?>
// Testdata
$_SESSION['input']['1'] = '';
$_SESSION['input']['2'] = 'JA';
$_SESSION['input']['3'] = '';
$_SESSION['input']['4'] = '';
$_SESSION['input']['5'] = 'JA';
$_SESSION['input']['6'] = '';
// Aantal ingevulde inputs tellen
$telling = count(array_filter($_SESSION['input']));
// Bedrag bepalen
if ($telling == 1) {
$bedrag = 8.5;
} elseif ($telling == 2) {
$bedrag = 17;
} else {
$bedrag = 20;
}
// Voilá
var_dump($bedrag);
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
// Testdata
$_SESSION['input']['1'] = '';
$_SESSION['input']['2'] = 'JA';
$_SESSION['input']['3'] = '';
$_SESSION['input']['4'] = '';
$_SESSION['input']['5'] = 'JA';
$_SESSION['input']['6'] = '';
// Aantal ingevulde inputs tellen
$telling = count(array_filter($_SESSION['input']));
// Bedrag bepalen
$bedrag = $telling < 3 ? $telling * 8.5 : 20;
// Voilá
var_dump($bedrag);
?>
// Testdata
$_SESSION['input']['1'] = '';
$_SESSION['input']['2'] = 'JA';
$_SESSION['input']['3'] = '';
$_SESSION['input']['4'] = '';
$_SESSION['input']['5'] = 'JA';
$_SESSION['input']['6'] = '';
// Aantal ingevulde inputs tellen
$telling = count(array_filter($_SESSION['input']));
// Bedrag bepalen
$bedrag = $telling < 3 ? $telling * 8.5 : 20;
// Voilá
var_dump($bedrag);
?>
Super thanksss!
you're welcome :)