login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Aangeven als een pagina niet bestaat

Offline Ijspegel - 13/01/2008 16:29
Avatar van IjspegelNieuw lid Ik werk bij mijn webwinkel met dit soort urls: www.site.nl/index.php?cat=boeken&subcat=woordenboeken&product=van-dale. Met behulp van mod rewrite zorg ik ervoor dat er www.site.nl/boeken/woordenboeken/van-dale.html van wordt gemaakt. Op zich allemaal naar wens.

Nu is het echter zo dat als iemand bijvoorbeeld een niet bestaande categorie opgeeft zoals www.site.nl/woordenboekekenenen/, dan geeft hij de in de 'header' van mijn pagina waar de koptekst staat aan dat de categorie niet bestaat. Ik controleer dit overigens door met mysql_num_rows te kijken of er minimaal 1 resultaat is. Verder loopt de code wel gewoon door en in het content vak waar dan de boeken getoond moeten worden staat dan dat er voor die categorie nog geen boeken aanwezig zijn. Ook wordt er dan als breadcrumb de tekst 'woordenboekekenenen' geplaatst. Deze dingen suggereren dat het toch een bestaande categorie is en dat vind ik zeker niet netjes. Ik wil daarom gewoon dat mijn 404 pagina getoond wordt zodra er een categorie wordt opgevraagd die niet bestaat. Zou iemand mij misschien kunnen vertellen hoe ik dit het beste kan doen? :-)

4 antwoorden

Gesponsorde links
Offline Koen - 13/01/2008 16:59
Avatar van Koen PHP expert PHP.net: file_exists?
Offline Dark_Paul - 13/01/2008 19:26
Avatar van Dark_Paul PHP ver gevorderde Nee, het is afhankelijk van zijn pagina-ordening of dat gaat werken. Want volgens mij wil hij dit dan ook toepassen op subcats..
Wat je kan doen, als mysql_num_rows() niets teruggeeft, doorsturen naar je 404-pagina dmv. een header.
Offline Ijspegel - 14/01/2008 14:21
Avatar van Ijspegel Nieuw lid Via een vriend van me heb ik ook al vernomen dat dit kan met een header. Dat gaat nu echter lastig omdat ik voor die controle ook al HTML code heb staan en dat mag dus niet als je een header gebruikt. Ik heb nu dus begrepen dat ik er voor moet zorgen dat ik eerst moet controleren of alle gegevens compleet zijn en kloppen, daarna gegevens verwerken en als laatste pas de output naar het scherm moet schrijven. Als ik het op deze manier zou doen kan ik dus wel gewoon met header werken.

Nu stuit ik dus alleen op een 'nieuwe' vraag. Namelijk: hoe kan ik dan het beste mijn pagina opbouw doen? Op dit moment doe ik het als volgt:

Header.php
Hierin staat de HTML (en ook wat) PHP code die ervoor zorgt dat de header (bovenkant) van de pagina goed geladen wordt.

Index.php
Hierin wordt afhankelijk van de pagina een bestand geincluded. Als alleen www.site.nl/index.php?cat=boeken is gezet wordt categorie.php geladen, als www.site.nl/index.php?cat=boeken&subcat=woordenboeken is gezet wordt subcategorie.php geinclude en als www.site.nl/index.php?cat=boeken&subcat=woordenboeken&product=van-dale is gezet wordt product.php geinclude

Footer.php
Hierin staat de HTML (en ook wat) PHP code die ervoor zorgt dat de footer (onderkant) van de pagina goed geladen wordt.

Categorie.php
Hierin staat dus de benodigde code voor het tonen van de categorieen.

Subcategorie.php
Hierin staat dus de benodigde code voor het tonen van de subcategorieen.

Product.php
Hierin staat dus de benodigde code voor het tonen van de producten.

Is dit dus een goede manier of kan ik het beter op een andere manier doen? Dat ik bijvoorbeeld in plaats van de categorie.php, subcategorie.php en product.php ze alle drie in 1 bestand verwerk zodat code niet weleens dubbel wordt geplaatst?
Offline TotempaaltJ - 14/01/2008 17:13 (laatste wijziging 14/01/2008 17:18)
Avatar van TotempaaltJ PHP interesse Ik vind dit in principe een mooie indeling.

Je kan in product.php een if...else constructie maken met in de if dus wat er gebeurt als het product wel bestaat en in de else bijvoorbeeld een tekstje van Dit product bestaat niet, of een header('Location: index.php').

Dit kan je ook in Subcategorie.php zetten en ook in Categorie.php!

Of is dit nu helemaal niet wat je wilt en begrijp ik je verkeerd?

Edit: Sterker nog! Je kan in product.php iets als dit zetten:

  1. header('Location: www.site.nl/'. $_GET['cat'] .'/'. $_GET['subcat'] .'/'. $_GET['product'] .'.html

En idem in subcategorie.php, maar dan zonder de GET product, en dito in categorie.php maar dan zonder de GET subcat.

Uiteraard moet je dan wel ob_flush(); in je header.php zetten!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.185s