Meest effectieve opbouw van de code van mijn pagina's

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Roderick Velo

Roderick Velo

14/09/2008 12:14:00
Quote Anchor link
Ik ben denk ongeveer een jaartje bezig met het leren van PHP. Volgens mij gaat het me op zich best goed af, maar bij het maken van scripts stuit ik nog weleens op een probleempje. Nu dus helaas weer. Ik hoop dat jullie mij kunnen helpen om dit probleempje op te lossen.

Ik ben bezig met het maken van een webwinkel. Voor het script hiervan gebruik ik een bepaalde opbouw voor de code van mijn pagina's, maar volgens mij is dit niet het meest handig/effectief. Ik doe het nu als volgt:

Het gaat om een webwinkel waarbij het hoofdzakelijk draait om de categorie pagina, subcategorie pagina en de productpagina. Om mooie url's hierbij te krijgen maak ik gebruik van de volgende url opbouw:
Categorie pagina: www.url.nl/index.php?cat=computers (wordt omgezet naar www.url.nl/computers)
Subcategorie pagina: www.url.nl/index.php?cat=computers&subcat=spelcomputers (wordt omgezet naar www.url.nl/computers/spelcomputers)
Product pagina: www.url.nl/index.php?cat=computers&subcat=spelcomputers&product=nintendo-wii (wordt omgezet naar www.url.nl/computers/spelcomputers/nintendo-wii.html)

In mijn header.php controleer ik met de volgende code op welke pagina de bezoeker is:
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
<?php
if (isset($_GET['product']) && isset($_GET['subcat']) && isset($_GET['cat']))
{

 $pagina = 'product'; // Deze gebruik ik in de index.php om te kijken welke pagina geinclude moet worden
 // Verder worden hier andere variabelen gemaakt zoals die voor de metatags, de <title>, etc.

}

elseif (isset($_GET['subcat']) && isset($_GET['cat']))
{

  $pagina = 'subcat';  // Deze gebruik ik in de index.php om te kijken welke pagina geinclude moet worden
 // Verder worden hier andere variabelen gemaakt zoals die voor de metatags, de <title>, etc.

}

elseif (isset($_GET['cat']))
{

  $pagina = 'cat'; // Deze gebruik ik in de index.php om te kijken welke pagina geinclude moet worden
 // Verder worden hier andere variabelen gemaakt zoals die voor de metatags, de <title>, etc.

}

else
{
  $pagina = 'home'; // Deze gebruik ik in de index.php om te kijken welke pagina geinclude moet worden
}
?>


In de index.php doe ik dan o.a. het volgende:
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
<?php
switch($pagina)
{
  case
'product':
    include ('product.php');
    break;
      
  case
'subcat':
    include ('subcat.php');
    break;

  case
'cat':
    include ('cat.php');
    break;

  case
'home':
    include ('home.php');
    break;
}

?>


Dit systeem werkt dus gewoon goed voor deze pagina's. Ik wil echter bijvoorbeeld ook nog gewoon een contact pagina en een faq pagina kunnen maken. De url daarvan moet dan bijvoorbeeld gewoon iets zijn als www.url.nl/contact.php of www.url.nl/contact/. Ik weet alleen niet zo snel hoe ik deze op een goede manier kan inpassen in mijn huidige structuur. Normaal zou ik dan een contact.php aanmaken en daar bovenaan dan header.php includen en onderaan footer.php, maar dat gaat hier niet goed werken. Dit omdat dan toch ook nog de code van home.php geladen wordt. Hoe kan ik er het beste voor zorgen dat dit dus niet gebeurt?

Ik hoop dat jullie mijn probleem snappen en dat jullie me willen helpen met het geven van de beste oplossing. Zelf heb ik het idee dat ik op de verkeerde manier bezig ben, maar weet niet hoe ik het anders moet doen. Ik hoop dat jullie hiermee willen helpen.

Bij voorbaat dank! :-)
Gewijzigd op 01/01/1970 01:00:00 door Roderick Velo
 
PHP hulp

PHP hulp

22/12/2024 21:22:08
 
Gerard M

Gerard M

14/09/2008 12:22:00
Quote Anchor link
Je kan eens op google zoeken naar 'mod-rewrite' (aangenomen dat je apache gebruikt). Tevens zijn er op phphulp tutorials over te vinden.
 
Roderick Velo

Roderick Velo

14/09/2008 12:29:00
Quote Anchor link
Ik denk dat je mijn vraag niet goed begrepen hebt. Het gaat mij niet om mod rewrite, want dat gebruik ik al op een goede wijze. Daar hoef je dus niet naar te kijken. ;-)

Het probleem is dat ik ook nog een contact pagina wil hebben, contact.php dus bijvoorbeeld. Ik wil deze gaan inpassen in mijn systeem, maar vraag mij af hoe ik dat het beste kan doen. Als ik bijvoorbeeld nu een contact.php aanmaak en daar dan bovenaan header.php include, dan vervolgens de code voor het contact script plaats en als laatste de footer.php include, dan gaat het met het huidige systeem fout. Het script in de header.php zal er dan namelijk voor zorgen dat het stukje
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
else
{
  $pagina = 'home'; // Deze gebruik ik in de index.php om te kijken welke pagina geinclude moet worden
}
?>


uitgevoerd zal worden. Maar dat zou natuurlijk niet zo moeten zijn. Dan wordt namelijk in de index.php weer home.php geinclude waardoor de home pagina ook getoond wordt.

Daarom vraag ik me dus af wat ik nu het beste kan aanpassen aan mijn systeem zodat ik de contact.php makkelijk kan inpassen.

Ik hoop dat mijn probleem nu duidelijk is. :-)
Gewijzigd op 01/01/1970 01:00:00 door Roderick Velo
 
Barman V

Barman V

14/09/2008 12:35:00
Quote Anchor link
Dus maak een htaccess file aan met mod_rewrite en zet deze in je root van je webdirectory.

Die van mij ziet er altijd zo uit

-------------------------------------------
# Start rewrite engine
RewriteEngine On

# Catch non existing files and/or folders (treat as optimized urls)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [NC,L]

# Van http://site.com naar http://www.site.com
RewriteCond %{HTTP_HOST} ^mijnwebsite\.com [NC]
RewriteRule ^(.*)$ http://www.mijnwebsite.com [L,R=301]
-------------------------------------------

Het tweede blok zegt dat alles moet verwijzen naar de index.php in je webroot. Dus www.mijnsite.nl/contact komt dan binnen in je index.php
Met $_SERVER['REQUEST_URI'] in je index.php (ik heb hier een klasse voor aangemaakt) kan je de /contact string ophalen.

Vergeet niet je base href in te stellen als metadata (html header), dus:
<base href="http://www.mijnsite.nl" />
Dit zorgt ervoor dat de locatie naar je image directory en je js en css files in stand blijft, ongeacht je op /contact zit, of /contact/nogiets.

Het derde blok is ook belangrijk. Dit zorgt ervoor dat als mensen naar mijnsite.nl gaan, dat ze dan geredirect worden naar www.mijnsite.nl.
(zo zien search engine bots (zoals googlebot), je site niet meer als 2 sites, maar als 1 site). Stel dat je dit niet gebruikt, dan wordt mijnsite.nl anders geranked dan www.mijnsite.nl.

edit
pfffff. laat maar. Klaarblijkelijk had ik je vraag ook verkeerd begrepen (had je bovenstaande reactie niet gelezen)
Gewijzigd op 01/01/1970 01:00:00 door Barman V
 



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.