switch methode beter dan...

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bassos

Bassos

12/01/2007 22:06:00
Quote Anchor link
Hoi,

ik heb laatst mijn website omgezet van de switch methode die zo genoteerd was:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
switch (strtolower($_GET['pagina'])) {
  case "pagina1":
  $pagina="pagina1.php";
  break;
  default:
  $pagina="index.php";
  break;
 }
include ($pagina);


Naar de volgende methode, omdat mij was aanbevolen dat deze methode beter en gemakkelijker werkte.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
$toegestaan = array(
  'pagina';

if(isset($_GET['pagina']) && in_array($_GET['pagina'],$toegestaan)){
  if(file_exists($_GET['pagina'].".php")){
    include($_GET['pagina'].".php");
  }
  else{
  include("index.php");
  }
else{
  include("index.php");
}


Alleen na een tijdje gewerkt te hebben met beide methodes vind ik de tweede methode in iedergeval niet gemakkelijker werken dan de switch methode. Nu is mijn vraag is de tweede methode inderdaad beter en gemakkelijker dan de switch methode en in welke opzichten (in welke situaties)?
Gewijzigd op 01/01/1970 01:00:00 door Bassos
 
PHP hulp

PHP hulp

25/04/2024 23:38:48
 
Terence Hersbach

Terence Hersbach

12/01/2007 22:27:00
Quote Anchor link
het ligt er totaal aan met wat je te maken krijgt. Zijn het enkel een hoop waardes om te vergelijken dan is een switch makkelijker, maar moet je steeds verschillende dingen controleren zijn else/if/elseifjes het makkelijkst
 
Frank -

Frank -

12/01/2007 22:27:00
Quote Anchor link
Dat kan eenvoudiger:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$toegestaan
= array('index', 'pagina1', 'pagina2');

if(isset($_GET['pagina']) && in_array($_GET['pagina'],$toegestaan) && file_exists($_GET['pagina'].".php")){
    $page = $_GET['pagina'].".php";
}

else{
    $page = $toegestaan[0]; // de eerste uit de array
}

include_once($page.'.php');
?>

Het enige onderhoud dat je nu hoeft te doen, is de array aanpassen wanneer er pagina's bijkomen of afgaan. In een switch moet je echt code gaan toevoegen/verwijderen wat meer risico's inhoud. En dat wil je niet.
 
Jan geen

Jan geen

12/01/2007 22:27:00
Quote Anchor link
Ik gebruik zelf altijd de 2de methode, veilig en handig. het enige nadeel is dat je voor elke nieuwe pagina je $toegestaan moet aanpassen. Maar bij het ontwikkelen van je website kan je dit even weghalen (of //) en als je klaar bent alle pagina's toevoegen. de eerste methode is meer werk...
 
PHP Newbie

PHP Newbie

12/01/2007 22:28:00
Quote Anchor link
Als je een switch een beetje netjes neerzet werkt het prima...
 
Bassos

Bassos

12/01/2007 23:06:00
Quote Anchor link
Kijk ik kom het volgende probleem steeds tegen:

Met bijvoorbeeld een fotoalbum die genereert automatisch pagina's met de fotos erop en crëeert deze link.

index.php?pagina=fotoalbum&foto=1
of
index.php?foto=1&pagina=fotoalbum

Bij de switch methode dan voldoet het als je alleen de pagina fotoalbum definieert en worden de links vanzelf opgenomen in de index. Maar bij de andere methode krijg ik ze niet werkend.

Weet iemand hoe ik dat wel werkend kan krijgen??
Gewijzigd op 01/01/1970 01:00:00 door Bassos
 
Jan geen

Jan geen

12/01/2007 23:52:00
Quote Anchor link
je controleert $_GET['pagina'] dus je moet fotoalbum toevoegen aan de array met valid pages. dan zou het moeten werken.
 
Bassos

Bassos

14/01/2007 00:12:00
Quote Anchor link
Ja dat snap ik allemaal wel, maar ik bedoel de pagina's die automatisch gegenereerd worden. Deze link is geen probleem:

index.php?pagina=fotoalbum

maar de volgende wel:

index.php?pagina=fotoalbum&foto=1

Met de eerste link ga je naar het fotoalbum toe. En als je op de thumbnails klikt (die hebben de tweede link) ga je naar de pagina waarop de volledige foto staat.

En dat tweede gedeelte krijg ik niet voor elkaar.
 



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.