login  Naam:   Wachtwoord: 
Registreer je!
 Forum

PHP Menu - huidige pagina accentueren

Offline xCez - 06/01/2007 18:41
Avatar van xCezNieuw lid Ik heb een index.php?page=...-structuur.
In de index.php wordt nu ook m'n menu altijd meegeladen, opdat ik niet in elke aparte pagina een het hele menu zou moeten opnemen (met het oog op mogelijke wijzigingen later).

De code is hier te vinden: http://www.plaatscode.be/3713/

Nu is m'n vraag: is het mogelijk om vanuit index.php (zonder mysql) ervoor te zorgen dat de actieve pagina, bvb. home, in het menu dan weergegeven wordt als volgt:
<li class=selected>Home</li>,
dus: met een aparte css-klasse, en zonder de link erbij?

Zoja, hoe moet ik dat in php zo beknopt mogelijk gaan schrijven?

Alvast bedankt! 

11 antwoorden

Gesponsorde links
Offline vinTage - 06/01/2007 18:51
Avatar van vinTage Nieuw lid via
$_GET['page'] vraag je de pagina naam op en echoed die waar je hem wilt gebruiken.
  1. <?
  2. echo "<li class=selected>".$_GET['page']."</li>";
  3. ?>

Offline xCez - 06/01/2007 18:56
Avatar van xCez Nieuw lid Weet ik, maar het probleem is dat die menu.inc nogal statisch is. Ik zou dus op een of andere manier de juiste regel eruit moeten zoeken, en vervangen door "<li class=selected>".$_GET['page']."</li>".
Offline vinTage - 06/01/2007 18:58
Avatar van vinTage Nieuw lid huh ?
Offline Grayen - 06/01/2007 19:06
Avatar van Grayen PHP ver gevorderde geef de inhoud van menu.inc eens
Offline xCez - 06/01/2007 19:46
Avatar van xCez Nieuw lid Menu.inc staat hierbij: http://www.plaatscode.be/3713/ (het tweede deel, staat aangeduid d.m.v. commentaarregel.

(het is niet volledig menu.inc, maar de volledige versie heeft dezelfde structuur)
Offline vinTage - 06/01/2007 19:51 (laatste wijziging 06/01/2007 19:52)
Avatar van vinTage Nieuw lid
  1. <li><a href="IETS"<?php if(isset($_GET['page']) && $_GET['page']=='IETS'){echo 'class="selected"';}?>>IETS</a></li>


let op de IETS-en in de code he
^^
Offline xCez - 06/01/2007 19:58 (laatste wijziging 06/01/2007 21:07)
Avatar van xCez Nieuw lid Zo-IETS bedoelde ik dus :-)
Bedankt!

edit: ik heb ongeveer geschreven wat je bedoelde (denk ik toch):
  1. function menuitem($title) {
  2. if ($title == $HTTP_GET_VARS['page']) {
  3. return "<li class=\"selected\">".$title."</li>\n\t";
  4. } else {
  5. return "<li><a href=\"?page=".$title."\">".$title."</a></li>\n\t";
  6. }
  7. }


En dan doe ik gewoon telkens
  1. $html = "<ul>"
  2. .menuitem("Home")
  3. .menuitem("Onze school")
  4. // .....
  5. "</ul>";


Probleem is dat m'n menuitem-functie niet goed werkt, het is net of die conditie altijd false geeft 
Doe ik daar iets fout? (Ben nog niet zo goed in php ;) )


edit2: aan die $HTTP_GET_VARS kan je zien dat het niet php5 is.. maar dus 4.0.6, voor als dat iets zou uitmaken.
Offline vinTage - 07/01/2007 00:36
Avatar van vinTage Nieuw lid Ik DENK dat $_GET ook ondersteund word door versie 4.

Maar waarom rot je dat in een functie ?
als je gewoon een rijtje links achter elkaar flatst dan werkt dat toch gewoon ?
Offline xCez - 07/01/2007 13:14 (laatste wijziging 07/01/2007 13:27)
Avatar van xCez Nieuw lid Ik vind het handiger in die functie: anders heb ik 30 keer dezelfde regel staan, en als ik er dan ergens iets in wil veranderen, moet dat nu maar op 1 plaats :-)
Bovendien is het ook leesbaarder.

edit: ik heb het probleem gevonden:
Als $page buiten een functie gedefinieerd word, kan ik er blijkbaar geen gebruik van maken binnen die functie (echo $page geeft niets)

Hoe kan ik dat oplossen?
Offline vinTage - 07/01/2007 13:28
Avatar van vinTage Nieuw lid Ik snap het niet, als je het in een fuctie zet dan heb je toch gewoon meer (nutteloze) code ?

Als je gewoon een nieuw php aanmaakt, genaamd mijnMenu.php
Daarin zet je die lijst, dan kan je toch gewoon include('mijnMenu.php') gebruiken waar je het wilt ? en als je iets wilt veranderen hoeft dat toch ook maar één keer ?
Offline xCez - 07/01/2007 15:36
Avatar van xCez Nieuw lid Ik heb de volledige code dan maar even online gezet:
menu.inc: http://www.plaatscode.be/3725/
index.php: http://www.plaatscode.be/3726/

Aangezien m'n functie niet doet wat ze zou moeten doen, heb ik (zoals je kan zien) geprobeerd in index.php dan de betreffende regel te zoeken en te wijzigen met str_replace(), maar dit heeft ook weer geen effect 

Het bewijs vind je hier: het resultaat van een http-get request aan de server:
http://www.plaatscode.be/3728/
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.241s