Draudzīgas saites būvēšana
Dec2
Kā jau ierasts, runa ir par informācijas meklētājiem draudzīgām saitēm, izmantojot mod_rewrite moduli. Principā saites ģenerēšana vairumā gadījumu nav sarežģīts process, šī lieta tiek sarežģīta brīdī, kad izejot no vienas lapas, nepieciešams saražot lielu daudzumu citu saišu – visbiežāk meklēšana vai lapas karte.
Iepriekš savos rakstos esmu parādījis, kā nevajadzētu darīt, diemžēl, šoreiz tas izpaliks, jo rakstīšana ar savu jauno mini-datoru nebūt nav tik viegla. Biežāk izmantotais risinājums šai problēmai saistās ar pieprasījumu veidošanu uz datubāzi ciklā, patiesībā cikls ciklā – tiek atrasti vajadzīgie ieraksti datubāzē, ciklējot caur ierakstiem tiek izsaukta saites ģenerēšanas funkcija, kas arī satur ciklu.
Mans risinājums. Atkal pieņemam, ka strādājam ar klasisko koka struktūru.
+----+-----------+----------+----------+ | id | parent_id | name | url | +----+-----------+----------+----------+ | 1 | 0 | Sākums | home | +----+-----------+----------+----------+ | 2 | 0 | Kontakti | contacts | +----+-----------+----------+----------+ | 3 | 1 | Raksti | news | +----+-----------+----------+----------+ | 4 | 1 | Foto | photo | +----+-----------+----------+----------+ | 5 | 2 | Karte | map | +----+-----------+----------+----------+
Lai mums katru reizi nevajadzētu pieprasīt sadaļu sarakstu no jauna, saglabājam vajadzīgo masīvā, izejot no funkcijai padotās sadaļas id, izveidosim saiti.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <? function url($id){ global $urldata; if(!is_array($urldata)){ return false; }elseif(!array_key_exists($id,$urldata)){ return ""; } $url=$urldata[$id][0]; $url.=$urldata[$id][1]; return $url; } $urldata=array(); $sql="SELECT id, parent_id, url FROM `topics`"; $res=mysql_query($sql); while($row=mysql_fetch_object($res)){ $urldata[$row->id]=array($row->parent_id,$row->url); } ?> |
Pēc tam jau viss notiek vienkārši