code met $_GET en $_SERVER
Dit zijn bijvoorbeeld twee deelopdrachten waarbij ik echt op weg geholpen wil worden:
1
Ik heb al een apart php-bestand gemaakt met daarin een multidimensionaal array voor het menu en een foreach loop binnen een <ul> om het menu zichtbaar te krijgen.
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
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
<?php
$menu = array
(
array
(
'href' => 'dierenvoedsel_3_home.php',
'content' => 'Home',
'target' => '_self',
'seq' => 1,
),
array
(
'href' => 'dierenvoedsel_3_over.php',
'content' => 'Over ons',
'target' => '_self',
'seq' => 2,
),
array
(
'href' => 'dierenvoedsel_3_product.php',
'content' => 'Producten',
'target' => '_self',
'seq' => 3,
),
array
(
'href' => 'dierenvoedsel_3_historie.php',
'content' => 'Korte historie',
'target' => '_self',
'seq' => 4,
),
array
(
'href' => 'dierenvoedsel_3_advies.php',
'content' => 'Ons advies',
'target' => '_self',
'seq' => 5,
),
array
(
'href' => 'dierenvoedsel_3_contact.php',
'content' => 'Contact',
'target' => '_self',
'seq' => 6,
)
);
echo '<ul>';
foreach ($menu as $key => $value)
{
echo '<li><a href="'.$value['href'].'" target="'.$value['target'].'">'.$value['content'].'</a></li>';
}
echo '</ul>';
?>
$menu = array
(
array
(
'href' => 'dierenvoedsel_3_home.php',
'content' => 'Home',
'target' => '_self',
'seq' => 1,
),
array
(
'href' => 'dierenvoedsel_3_over.php',
'content' => 'Over ons',
'target' => '_self',
'seq' => 2,
),
array
(
'href' => 'dierenvoedsel_3_product.php',
'content' => 'Producten',
'target' => '_self',
'seq' => 3,
),
array
(
'href' => 'dierenvoedsel_3_historie.php',
'content' => 'Korte historie',
'target' => '_self',
'seq' => 4,
),
array
(
'href' => 'dierenvoedsel_3_advies.php',
'content' => 'Ons advies',
'target' => '_self',
'seq' => 5,
),
array
(
'href' => 'dierenvoedsel_3_contact.php',
'content' => 'Contact',
'target' => '_self',
'seq' => 6,
)
);
echo '<ul>';
foreach ($menu as $key => $value)
{
echo '<li><a href="'.$value['href'].'" target="'.$value['target'].'">'.$value['content'].'</a></li>';
}
echo '</ul>';
?>
De menuknoppen zijn links en die werken. Op de Home-pagina heb ik dit toegevoegd:
Maar hoe pak ik het volgende aan?
Aan het menu moet af te leiden zijn op welke pagina de gebruiker zich momenteel bevindt.
Maak hiervoor gebruik van if statements en de $_SERVER superglobal van PHP om dit dynamisch te krijgen.
2
Midden op de webpagina moet een rubriek "Enkele producten" komen. En dit is de instructie waarbij ik graag wat hulp krijg:
Het kopje “Enkele producten” laat standaard 4 producten zien.
Maak gebruik van de $_GET parameter om ervoor te zorgen dat gebruikers in de adresbalk zelf kunnen opgeven hoeveel producten ze willen zien, bijv. met “?products=8”.
De website moet uiteraard correct meegroeien als hij groter wordt.
Ik hoop dat er iemand is die mij op weg kan helpen.
- 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 20/10/2017 08:11:59 door - Ariën -
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
echo '<ul>';
foreach ($menu as $key => $value) {
$bold_b = '';
$bold_e = '';
if ( $value['href'] == basename($_SERVER[REQUEST_URI]) ) {
$bold_b = '<b>';
$bold_e = '</b>';
}
echo '<li>' . $bold_b . '<a href="' . $value['href'] . '" target="' . $value['target'] . '">' . $value['content'] . '</a>' . $bold_e . '</li>';
}
echo '</ul>';
foreach ($menu as $key => $value) {
$bold_b = '';
$bold_e = '';
if ( $value['href'] == basename($_SERVER[REQUEST_URI]) ) {
$bold_b = '<b>';
$bold_e = '</b>';
}
echo '<li>' . $bold_b . '<a href="' . $value['href'] . '" target="' . $value['target'] . '">' . $value['content'] . '</a>' . $bold_e . '</li>';
}
echo '</ul>';
Toevoeging op 14/10/2017 19:55:54:
Hier een voorbeeld uit een PHP les over $_GET :
http://html.net/tutorials/php/lesson10.php
http://html.net/tutorials/php/lesson10_ex2.php?name=Joe&age=33
Gewijzigd op 14/10/2017 19:57:22 door Adoptive Solution
Ik zie dat u mijn foreach loop hebt aangepast. Ik ben nog maar debutant, maar ik probeer te begrijpen wat er nu staat.
$_bold_b staat voor de begin-tag van dikgedrukt <b> en $_bold_e staat voor de sluit-tag </b>.
Als aan een bepaalde voorwaarde wordt voldaan wordt dat in de list-item ingevuld.
Maar wat is eigenlijk die voorwaarde: basename($_SERVER[REQUEST_URI]) ?
Waar verwijst 'basename' naar en is [REQUEST_URI] iets dat standaard bestaat?
Voor het probleem met $_GET zal ik de links eerst eens bekijken.
- haal alle HTML buiten PHP
- maak van basename($_SERVER['REQUEST_URI']) een aparte variabele die je buiten de loop initialiseert, je rekent nu telkens eenzelfde waarde uit
- introduceer een CSS-klasse "active" o.i.d. voor het actieve item, het uiterlijk kun je dan later nog aanpassen/verfijnen via een stylesheet in plaats van dat je code moet wijzigen
REQUEST_URI is overigens geen constante.
Je krijgt dan bijvoorbeeld het volgende:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<ul><?php
$currentPage = basename($_SERVER['REQUEST_URI']);
foreach ($menu as $key => $value) {
$class = '';
if ($currentpage == $value['href']) {
$class = 'active';
}
?><li class="<?php echo $class ?>"><a href="<?php echo $value['href'] ?>" target="<?php echo $value['target'] ?>"><?php echo $value['content'] ?></a></li><?php
}
?></ul>
$currentPage = basename($_SERVER['REQUEST_URI']);
foreach ($menu as $key => $value) {
$class = '';
if ($currentpage == $value['href']) {
$class = 'active';
}
?><li class="<?php echo $class ?>"><a href="<?php echo $value['href'] ?>" target="<?php echo $value['target'] ?>"><?php echo $value['content'] ?></a></li><?php
}
?></ul>
dierenvoedsel_3_historie.php == basename(http://www.domein.nl/subdirectory/dierenvoedsel_3_historie.php)
Als die vergelijking klopt is het de huidige pagina en wordt de href vet getoond.
Als je niet weet wat de inhoud van een variable is, doe je een echo :
Danzij de voorstellen van beiden heb ik het volgende kunnen formuleren:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
En in de CSS staat nu:
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
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
nav {
width:1134px;
height: 45px;
background-image: url("../images_2/menubalk_2.jpg");
}
nav ul {
margin-left: 456px;
padding: 7px;
list-style-type: none;
display: flex;
flex-direction: row;
}
nav li {
height: 20px;
line-height: 20px;
margin: 5px 17.4px;
}
nav li a {
text-decoration: none;
display: block;
color: #ffffff;
letter-spacing: 0.8px;
}
nav li a.current {
color: yellow;
font-style: italic;
}
width:1134px;
height: 45px;
background-image: url("../images_2/menubalk_2.jpg");
}
nav ul {
margin-left: 456px;
padding: 7px;
list-style-type: none;
display: flex;
flex-direction: row;
}
nav li {
height: 20px;
line-height: 20px;
margin: 5px 17.4px;
}
nav li a {
text-decoration: none;
display: block;
color: #ffffff;
letter-spacing: 0.8px;
}
nav li a.current {
color: yellow;
font-style: italic;
}
Dit geeft het gewenste resultaat.
- 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!
Toevoeging op 20/10/2017 19:53:58:
Van die opmaak-codes wist ik niet. Ik ben maar pas nieuw op dit forum. Sorry dat ik dat niet eerder heb begrepen en toegepast.
Uit nieuwsgierigheid: waarom eigenlijk dienen HTML-tags te worden vermeden?
En wat is 'bumpen'?
Gewijzigd op 20/10/2017 08:12:34 door - Ariën -