Hi Ivo. Dat was inderdaad het probleem. Waar zat ik met mijn hoofd :(. Ik heb nog een aavullende vraag als het mag? Bijna alle categorieen kunnen getoond worden met gebruik van alleen the query_string. Er zijn echter ook een aantal menu's die tevens gebruik maken van het betreffende id:
Je zult in eerste instantie de methode moeten uitbreiden met dit optionele argument ($menu_id wordt op dit moment op geen enkele manier doorgegeven?). En vervolgens moet je deze toevoegen aan de lijst van argumenten bij het uitvoeren. Bij de aanroep moet je uiteraard ook het id meegeven indien beschikbaar. Je krijgt dan zoiets:
<?php
public function get_menu_items($categorie, $menu_id=false) { // optioneel $menu_id argument
$args = array($categorie); // accumulatievariabele voor queryargumenten
$sql = 'SELECT menu_item
, omschrijving1
, omschrijving2
, omschrijving3
, omschrijving4
, omschrijving
, prijs
FROM menu_items
WHERE query_string = ?';
if ($menu_id !== false) {
$sql .= ' AND item_id = ?';
$args[] = $menu_id; // voeg menu_id toe aan argumenten
}
$stmt = $this->pdo->prepare($sql);
$stmt->execute($args);
return $stmt->fetch();
}
?>
Hmm, misschien heb ik de materie niet goed geïnterpreteerd. Heb je alleen een menu-id indien de menu-categorie de (speciale?) waarde "menus" heeft? Dan zou je op grond daarvan een tweedeling kunnen maken: indien menus -> lees id uit, zoniet, gebruik de waarde voor het query_string argument in je query.
Maar dan zou je eens terug kunnen gaan naar de opbouw van je URL, ik bedoel, je gebruikt nu:
/menu/menu_categorie/soepen, en
/menu/menu_categorie/menus?menu_id=81 en misschien nog meer varianten, maar zou het niet veel "logischer" / beter leesbaar zijn als je (respectievelijk) zoiets had:
/menus/soepen, en
/menus/81 ?
Dan zou je gewoon kunnen kijken of iets een numerieke waarde heeft (wat een menu-id impliceert) of tekst bevat (wat een zoekmachinevriendelijke variant van het menu-id, oftewel query_string, zou inhouden).
En misschien moet je ook rekening houden met de situatie waar de query geen resultaten oplevert, tenzij je dat elders op een andere manier (exceptions?) al had afgevangen.
Hoi Thomas. Bedankt voor de reactie. In 90 % van de gevallen is de query_string afdoende in de andere 10% dient het menu_id te worden toegevoegd. Het betreft hier de daadwerkelijke menu's. Bij de eerste 90% gaat het over een categorie (listing van alle soepen, voorgerechten, hoofdgerechten etc) Duw wat ik heel graag wil is dat ook bij de daad werkelijke menu's de query_string ook blijft bestaan:
Wat je ook vaak ziet/zag is een combinatie, bijvoorbeeld /<rubriek>/<id>/<titel>, dus bijvoorbeeld /nieuws/10/man-bijt-hond, waarbij dat "man-bijt-hond" niet relevant is, je zou de aanroep kunnen veranderen naar /nieuws/10/maaktnietuit en de website zal nog steeds hetzelfde artikel laden omdat de code van het id gebruik maakt voor identificatie van het artikel.
Ik weet niet hoeveel werk het is, maar je zou die 10% ook kunnen voorzien van een (unieke) dummy-naam, dan heb je deze rare spagaat id <--> query_string uberhaupt niet, een spagaat die je dan in code ook niet hoeft af te vangen. Vraag jezelf gewoon af wat het simpelste is, en ga daarmee aan de slag :p.
Hi Thomas. Jou idee met dat optionele ar argument in de methode sprak/spreekt me erg. Het gaat om in totaal 9 menu's dus dat is te overzien. Ik heb echter geen idee hoe ik de door jou voorgestelde methode in de Controller moet verweken.
Ik zou het enorm op prijs stellen als je me in de juiste richting zou kunnen helpen
Edit: na het nodige gerommel heb ik het op de volgende manier opgelost in de Controller: