php arrays
de vraag:
Tijdens de Olympische winterspelen zijn er verschillende sportdisciplines waarin sporters strijden voor medailles. Per sportdiscipline zijn er verschillende evenementen waaraan kan worden meegedaan. De organisatie wil een systeem waarbij de bezoeker op een snelle manier kan zien welke evenementen worden georganiseerd bij een bepaalde sportdiscipline.
Maak een programma waarbij de gebruiker aan de hand van een select box een sportdiscipline kan selecteren. Vervolgens dient aan de hand van de gekozen discipline middels het array de bijbehorende evenementen op het scherm te worden getoond.
korte uitleg:
Maak een select box, als je op de sport klikt krijg je de 5 opties in het beeld te zien.
mijn antwoord:
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Voer hier je naam in</title>
</head>
<body>
<?php
// 2-Dimensionaal Array Evenementen
$Evenementen = array
(
"Schaatsen"=>array
(
"Heren 500 meter",
"Heren 1000 meter",
"Heren 1500 meter",
"Heren 5 Kilometer",
"Vrouwen 500 meter",
"Vrouwen 1000 meter",
"Vrouwen 1500 meter",
"Vrouwen 3000 meter"
),
"Alpineskieen"=>array
(
"Slalom Mannen",
"Slalom Vrouwen",
"Reuzenslalom Mannen",
"Reuzenslalom Vrouwen",
"Super-G Mannen",
"Super-G Vrouwen"
),
"Snowboarden"=>array
(
"Slopestyle Mannen",
"Slopestyle Vrouwen",
"Halfpipe Mannen",
"Halfpipe Vrouwen",
"Boardcross Mannen",
"Boardcross Vrouwen",
"Freestyle Mannen",
"Freestyle Vrouwen"
),
"IJshockey"=>array
(
"Kwalificatie Rondes",
"1/8 Finale",
"1/4 Finale",
"1/2 Finale",
"Finale"
),
"Rodelen"=>array
(
"Individueel Mannen",
"Individueel Vrouwen",
"Dubbel Mannen",
"Dubbel Vrouwen",
"Teamestafette"
)
);
/* ----- Maak hier je PHP Opdracht ----- */
?>
<select name="$Evenementen">
<option>"Schaatsen" . <?php echo $Evenementen[0]; ?></option>
<option>Alpineskieen</option>
<option>Snowboarden</option>
<option>IJshockey</option>
<option>Rodelen</option>
</select>
</body>
</html>
<html>
<head>
<meta charset="UTF-8">
<title>Voer hier je naam in</title>
</head>
<body>
<?php
// 2-Dimensionaal Array Evenementen
$Evenementen = array
(
"Schaatsen"=>array
(
"Heren 500 meter",
"Heren 1000 meter",
"Heren 1500 meter",
"Heren 5 Kilometer",
"Vrouwen 500 meter",
"Vrouwen 1000 meter",
"Vrouwen 1500 meter",
"Vrouwen 3000 meter"
),
"Alpineskieen"=>array
(
"Slalom Mannen",
"Slalom Vrouwen",
"Reuzenslalom Mannen",
"Reuzenslalom Vrouwen",
"Super-G Mannen",
"Super-G Vrouwen"
),
"Snowboarden"=>array
(
"Slopestyle Mannen",
"Slopestyle Vrouwen",
"Halfpipe Mannen",
"Halfpipe Vrouwen",
"Boardcross Mannen",
"Boardcross Vrouwen",
"Freestyle Mannen",
"Freestyle Vrouwen"
),
"IJshockey"=>array
(
"Kwalificatie Rondes",
"1/8 Finale",
"1/4 Finale",
"1/2 Finale",
"Finale"
),
"Rodelen"=>array
(
"Individueel Mannen",
"Individueel Vrouwen",
"Dubbel Mannen",
"Dubbel Vrouwen",
"Teamestafette"
)
);
/* ----- Maak hier je PHP Opdracht ----- */
?>
<select name="$Evenementen">
<option>"Schaatsen" . <?php echo $Evenementen[0]; ?></option>
<option>Alpineskieen</option>
<option>Snowboarden</option>
<option>IJshockey</option>
<option>Rodelen</option>
</select>
</body>
</html>
- Ariën -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 03/02/2016 15:45:58 door - Ariën -
En welke technieken mogen allemaal in deze huiswerkopdracht ingezet worden? Enkel PHP? Of ook JavaScript / jQuery / AJAX / JSON / ... ? Mag de pagina ververst worden of moeten zaken direct "interactief" getoond worden?
nee echt alleen php, html enz. ik denk dat ze gewoon direct bij klik op het scherm moeten komen.
foreach kan je een array uitlezen:
Hiermee lees de de eerste array met de sporten dan uit.
Om je even op weg te helpen, met Hiermee lees de de eerste array met de sporten dan uit.
Gewijzigd op 03/02/2016 15:50:33 door - Ariën -
Hier een mogelijke oplossing. Zorg wel dat je ook alles snapt, zodat je er enerzijds iets van opsteekt en je anderzijds niet door de mand valt dat je zelf geen inspanning hebt verricht:
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<?php
// data
$Evenementen = array(
"Schaatsen" => array(
"Heren 500 meter",
"Heren 1000 meter",
"Heren 1500 meter",
"Heren 5 Kilometer",
"Vrouwen 500 meter",
"Vrouwen 1000 meter",
"Vrouwen 1500 meter",
"Vrouwen 3000 meter",
),
"Alpineskieen" => array(
"Slalom Mannen",
"Slalom Vrouwen",
"Reuzenslalom Mannen",
"Reuzenslalom Vrouwen",
"Super-G Mannen",
"Super-G Vrouwen",
),
"Snowboarden" => array(
"Slopestyle Mannen",
"Slopestyle Vrouwen",
"Halfpipe Mannen",
"Halfpipe Vrouwen",
"Boardcross Mannen",
"Boardcross Vrouwen",
"Freestyle Mannen",
"Freestyle Vrouwen",
),
"IJshockey" => array(
"Kwalificatie Rondes",
"1/8 Finale",
"1/4 Finale",
"1/2 Finale",
"Finale",
),
"Rodelen" => array(
"Individueel Mannen",
"Individueel Vrouwen",
"Dubbel Mannen",
"Dubbel Vrouwen",
"Teamestafette",
),
);
// output escaping #yolo
function escape($in) {
return htmlspecialchars($in, ENT_QUOTES, 'UTF-8');
}
// Content-Type
header('Content-Type: text/html; charset=UTF-8');
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Voer hier je naam in</title>
</head>
<body><?php
// geselecteerde discipline?
if (isset($_GET['discipline']) && array_key_exists($_GET['discipline'], $Evenementen)) {
$discipline = $_GET['discipline'];
} else {
$discipline = false;
}
?>
<h1>Disciplines</h1>
<form action="<?php echo escape($_SERVER['PHP_SELF']) ?>" method="get" accept-charset="UTF-8">
<select name="discipline">
<option value="">- selecteer -</option><?php
foreach ($Evenementen as $k => $dummy) {
$selected = ($k == $discipline ? ' selected="selected"' : '');
?><option value="<?php echo escape($k) ?>"<?php echo $selected ?>><?php echo escape($k) ?></option><?php
}
?></select>
<button type="submit">toon evenementen</button>
</form><?php
if ($discipline !== false) {
?><h2>Evenementen voor <?php echo escape($discipline) ?></h2>
<ul><?php
foreach ($Evenementen[$discipline] as $evenement) {
?><li><?php echo escape($evenement) ?></li><?php
}
?></ul><?php
}
?></body>
</html>
// data
$Evenementen = array(
"Schaatsen" => array(
"Heren 500 meter",
"Heren 1000 meter",
"Heren 1500 meter",
"Heren 5 Kilometer",
"Vrouwen 500 meter",
"Vrouwen 1000 meter",
"Vrouwen 1500 meter",
"Vrouwen 3000 meter",
),
"Alpineskieen" => array(
"Slalom Mannen",
"Slalom Vrouwen",
"Reuzenslalom Mannen",
"Reuzenslalom Vrouwen",
"Super-G Mannen",
"Super-G Vrouwen",
),
"Snowboarden" => array(
"Slopestyle Mannen",
"Slopestyle Vrouwen",
"Halfpipe Mannen",
"Halfpipe Vrouwen",
"Boardcross Mannen",
"Boardcross Vrouwen",
"Freestyle Mannen",
"Freestyle Vrouwen",
),
"IJshockey" => array(
"Kwalificatie Rondes",
"1/8 Finale",
"1/4 Finale",
"1/2 Finale",
"Finale",
),
"Rodelen" => array(
"Individueel Mannen",
"Individueel Vrouwen",
"Dubbel Mannen",
"Dubbel Vrouwen",
"Teamestafette",
),
);
// output escaping #yolo
function escape($in) {
return htmlspecialchars($in, ENT_QUOTES, 'UTF-8');
}
// Content-Type
header('Content-Type: text/html; charset=UTF-8');
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Voer hier je naam in</title>
</head>
<body><?php
// geselecteerde discipline?
if (isset($_GET['discipline']) && array_key_exists($_GET['discipline'], $Evenementen)) {
$discipline = $_GET['discipline'];
} else {
$discipline = false;
}
?>
<h1>Disciplines</h1>
<form action="<?php echo escape($_SERVER['PHP_SELF']) ?>" method="get" accept-charset="UTF-8">
<select name="discipline">
<option value="">- selecteer -</option><?php
foreach ($Evenementen as $k => $dummy) {
$selected = ($k == $discipline ? ' selected="selected"' : '');
?><option value="<?php echo escape($k) ?>"<?php echo $selected ?>><?php echo escape($k) ?></option><?php
}
?></select>
<button type="submit">toon evenementen</button>
</form><?php
if ($discipline !== false) {
?><h2>Evenementen voor <?php echo escape($discipline) ?></h2>
<ul><?php
foreach ($Evenementen[$discipline] as $evenement) {
?><li><?php echo escape($evenement) ?></li><?php
}
?></ul><?php
}
?></body>
</html>
Gewijzigd op 03/02/2016 15:55:51 door Thomas van den Heuvel
Ik snap eerlijk gezegd niet veel van je antwoord ;p foreach komt me tevens wel bekend voor. maar het zou echt heel veel simpeler moeten zijn. het zou ongeveer moeten zoals de manier die ik onderin met select probeerde.
Je zult in iedergeval moeten controleren of je formulier verstuurd is met GET of POST.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
- Ariën -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 30/06/2016 11:37:37 door - Ariën -
@Mike, wat wil je precies zeggen met deze niet geheel relevante code?
Het mist alle context, sluit niet aan bij het topic en bevat geen vraag. Weg ermee.
En het is bovendien een oud topic, dus ik sluit hem gewoon.