code met $_GET en $_SERVER

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Theo H

Theo H

14/10/2017 18:03:51
Quote Anchor link
Ik ben nog maar pas begonnen met een cursus waarin ook PHP geleerd wordt. Nu krijg ik een thuisopdracht waarin dingen staan die ik maar nauwelijks begrijp. Wie helpt mij op weg met bijvoorbeeld een stap-voor-stap uitleg? Alvast bedankt voor de hulp.
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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>';
?>


De menuknoppen zijn links en die werken. Op de Home-pagina heb ik dit toegevoegd:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<nav>            
<?php require_once('menu_dierenvoedsel.php');?>
</nav>


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!
Gewijzigd op 20/10/2017 08:11:59 door - Ariën -
 
PHP hulp

PHP hulp

25/11/2024 00:52:42
 
Adoptive Solution

Adoptive Solution

14/10/2017 19:20:26
Quote Anchor link
Voor vraag 1 heb ik dit bedacht :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>';


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
 
Theo H

Theo H

14/10/2017 20:27:19
Quote Anchor link
Merci Adoptive Solution voor uw reactie.
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.
 
Thomas van den Heuvel

Thomas van den Heuvel

14/10/2017 20:41:49
Quote Anchor link
Mogelijke optimalisaties:
- 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)
PHP script in nieuw venster Selecteer het PHP script
1
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>
 
Adoptive Solution

Adoptive Solution

14/10/2017 20:46:04
Quote Anchor link
basename geeft de naam van de webpagina in the url. Dus

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 :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
echo $_SERVER[REQUEST_URI];
echo basename($_SERVER[REQUEST_URI]);
?>
 
Theo H

Theo H

20/10/2017 08:07:15
Quote Anchor link
Merci Adoptive Solution, merci Thomas,
Danzij de voorstellen van beiden heb ik het volgende kunnen formuleren:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
echo '<ul>';        
foreach ($menu as $key => $value)
{

   $class = '';
   if ($value['href'] == basename($_SERVER['REQUEST_URI']))
   {

      $class = 'current';
   }

   echo '<li>
         <a class="'
.$class.'"href="'.$value['href'].'"target="'.$value['target'].'">'.$value['content'].'</a>
         </li>'
;
}
                
echo '</ul>';
?>



En in de CSS staat nu:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
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;
}


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!


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 -
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.