Ik probeer een vriendelijke URL uit mySql te halen zonder gebruik te maken van ID nummers. Ik maak voor de opslag van de URL kenmerken gebruik van een veld in de database genaamd url_nl.
Ik kan natuurlijk het url_nl veld een unieke waarde geven maar dat betekent dat er bij dubbele waarden een waarde moet worden verzonnen of dat er een suffix toegevoegd wordt door mijn CMS.
Beide vindt ik geen mooie optie.
Ik wil daarom een URL in het geheel volgen en daarbij steeds vergelijken of de parent klopt. Dat moet natuurlijk recursief gebeuren om het gehele pad af te kunnen lopen.
Een voorbeeld is misschien duidelijker, stel ik heb de volgende twee paden:
1. http://www.site.nl/organisatie/afdeling/informatie
2. http://www.site.nl/support/afdeling/informatie
De url waarden worden d.m.v. een rewrite in een variabele gestopt:
$url1 = organisatie
$url2 = afdeling
$url3 = informatie
$url1 = support
$url2 = afdeling
$url3 = informatie
Als ik nu url_nl = $url3 uitvoer met LIMIT 1 krijg ik natuurlijk (afhankelijk van de ORDER BY) slechts 1 resultaat.
De oplossing is volgens mij om recursief door de resultaten te lopen vanaf $url3 tot $url1.
Dus url_nl = $url3, met de resultaten vervolgens queryen op de parent etc. etc.
Het wordt echter een behoorlijk uitgebreide functie waarbij ik mij afvraag of dit niet simpeler kan.
De tabel beschikt overigens ook over id en subid velden waarmee de velden hiërarchisch aan elkaar gekoppeld zijn.
Ik red mij redelijk met mySql maar ben geen goeroe. Ik hoef geen kant en klare oplossing maar ben eerlijk gezegd de weg een beetje kwijt. Een hint in de juiste richting wordt op prijs gesteld.
Ik kan natuurlijk het url_nl veld een unieke waarde geven maar dat betekent dat er bij dubbele waarden een waarde moet worden verzonnen of dat er een suffix toegevoegd wordt door mijn CMS.
Beide vindt ik geen mooie optie.
Ik wil daarom een URL in het geheel volgen en daarbij steeds vergelijken of de parent klopt. Dat moet natuurlijk recursief gebeuren om het gehele pad af te kunnen lopen.
Een voorbeeld is misschien duidelijker, stel ik heb de volgende twee paden:
1. http://www.site.nl/organisatie/afdeling/informatie
2. http://www.site.nl/support/afdeling/informatie
De url waarden worden d.m.v. een rewrite in een variabele gestopt:
$url1 = organisatie
$url2 = afdeling
$url3 = informatie
$url1 = support
$url2 = afdeling
$url3 = informatie
Als ik nu url_nl = $url3 uitvoer met LIMIT 1 krijg ik natuurlijk (afhankelijk van de ORDER BY) slechts 1 resultaat.
De oplossing is volgens mij om recursief door de resultaten te lopen vanaf $url3 tot $url1.
Dus url_nl = $url3, met de resultaten vervolgens queryen op de parent etc. etc.
Het wordt echter een behoorlijk uitgebreide functie waarbij ik mij afvraag of dit niet simpeler kan.
De tabel beschikt overigens ook over id en subid velden waarmee de velden hiërarchisch aan elkaar gekoppeld zijn.
Ik red mij redelijk met mySql maar ben geen goeroe. Ik hoef geen kant en klare oplossing maar ben eerlijk gezegd de weg een beetje kwijt. Een hint in de juiste richting wordt op prijs gesteld.