[ASP] Uitlezen URL

Pagina: 1
Acties:

  • Reveller
  • Registratie: Augustus 2002
  • Laatst online: 05-12-2022
In mijn site zou ik graag een zij-navigatie, enigszins gelijk als op IBM.com maken:
zie http://www-1.ibm.com/busi...tailcontacts/SBCenterED2A

deze zij-navigatie staat in de left_nav.asp include. Uitgaande van de gegeven IBM-URL wil ik graag het volgende:

left_nav.asp bevat een functie die de URL van de pagina uitleest. De functie filtert deze en controleert op /products. Wanneer /products onderdeel is van de URL, worden de sublinks van "products" weergegeven (met een simpel case statement).

Wanneer de URL op mijn site bijvoorbeeld is: http://www.mijnsite.com/services/hosting.asp, dan heeft left_nav.asp gezien dat we in het /services deel van de site zitten. Een case-statement zeft dan dat de sublinks van services weergegeven moeten worden.

iets als dit:

function (readURL)
...lees url uit en filter achter de 3e slash: http://www.mijnsite.com/wathierstaatwordtgefilterd

case wathierstaatwordtgefilterd="services"
response.write("products<br><b>services<b><br>hosting<br>massage<br>appels plukken")

case wathierstaatwordtgefilterd="products"
response.write("<b>products<b><br>computers<br>beschuit<br>videokaarten<br>services")
end function

In de eerste case is "services" dus uitgeklapt, in de tweede case "products". Services is dan "ingeklapt".

Wie kan mij vertellen hoe ik een URL in vbscript filter?

"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 13:54

Crazy D

I think we should take a look.

Kijk eens naar de request.servervariabeles collectie, en dan vooral de PATH_INFO :)

Exact expert nodig?


  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 15-04 15:52
ik denk dat je Query strings bedoeld?

ASP:
1
Response.Write "www.prrrt.org/jouwpagina.asp?nummertje=14"


en dan op joupagina.asp zet je:

ASP:
1
2
3
4
5
6
7
varPiep = Request.Querystring("nummertje")

Select Case varPiep

Case "14" 
   doe iets
End Select


Of bedoel je dat niet?

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


  • Reveller
  • Registratie: Augustus 2002
  • Laatst online: 05-12-2022
nee, ik bedoel dus echt dat ik aan de URL zelf kan zien waar in de site ik zit - wat jij voorstelt werkt ook, maar is niet wat ik bedoel.

crazy_D heeft me al gedeeltelijk op weg geholpen:

ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
varPiep = Request.Servervariables("PATH_INFO")
(de URL van deze pagina is [TOPIC=594814///][NOHTML][rml][ ASP] Uitlezen URL[/rml][/NOHTML][/TOPIC], dus varPiep
zou hier "/forum/list_messages/594814" zijn. Nu wil ik de eerste directorynaam hieruit kunnen filteren, als volgt:)


function filter_URL(varPiep)
  ..hier wordt de URL gesplitst op de eerste "/" in varPiep..
  ..uitkomst van de functie zou voor deze varPiep "forum" moeten zijn
  ..laten we zeggen dat de functie teruggeeft: Dim functie_uitkomst = "forum"
end function

Select case functie_uitkomst

Case "forum"
  doe iets
Case "nieuws"
  doe iets anders
End Select


Ik hoop dat het zo duidelijk is? In ieder geval al bedankt tot zover _/-\o_

"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:55

gorgi_19

Kruimeltjes zijn weer op :9

Ik snap niet meer helemaal wat je bedoeld.....

Ik zou zeggen, kijk hier eens en zoek de juiste uit.. ;)

http://www.asp101.com/samples/servvars.asp

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • oZy
  • Registratie: Juli 2001
  • Laatst online: 22:30

oZy

hmm wat is nou precies je vraag? neem de path_info, vis de string tussen de eerste twee slashes eruit en maak daar een var van.. en vervolgens je case statement.

zoiets:
ASP:
1
2
3
4
5
6
sMyLoc = Mid(Request.ServerVariables("PATH_INFO"),2,InStr(2, Request.ServerVariables("PATH_INFO"), "/"))

Select Case sMyLoc

Case "forum"
  ...etc...

uit het blote hoofd dus niet zeuren als het niet werkt ;)
Natuurlijk is dit niet waterdicht.. stel dat je in de root zit, dan stelt path_info (te) weinig voor.. but you get my point toch?

  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 15-04 15:52
* 4of9 vraagt zich af of je dit niet beter op een andere manier op kunt lossen.

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


  • oZy
  • Registratie: Juli 2001
  • Laatst online: 22:30

oZy

lijkt mij ook ja, maar gezien de functionele beschrijving van reveller en het feit dat er geen andere conditionele gegevens zijn behalve de PATH_INFO kan ik geen betere bedenken.

Ik snap überhaupt niet hoe je een consistente breadcrumb functie kan maken aan de hand van alleen de eerste mapnaam.. :? trek het zooitje uit een database en doe een parent<->child check, of zet het desnoods hardcoded in de files op zich.. mogelijkheden zat :)

  • Reveller
  • Registratie: Augustus 2002
  • Laatst online: 05-12-2022
oZy - wat jij me geeft is wat ik bedoel. Nu ik ernaar kijk, had ik het natuurlijk ook zelf uit moeten kunnen vinden adhv een vb(script) manual, maar erg dank voor je antwoord.

Voor de rest: ja, er zijn -tig mogelijkheden om een (consistentere) zijnav. te maken - bij een bedrijfje waar ik ooit gewerkt heb, trokken ze idd de parent en childs uit een dbase en schreven ze in ASP een exacte zijnav. als bij http://www.ibm.com. Mooie feature bij hun was ook dat je een oneindig aantal niveaus kon maken in je "tree".

Daarnaast zou je idd ook een variabele in elke pagina kunnen opnemen, die je aanroept in je case-statement. Of je doet wat crazy_D voorstelde: www.site.com/pagina.asp?id=5 - dus de complete content in een dbase en dan is een zijnav maken helemaal easy :)

Thing is: mijn SQL server kennis is nagenoeg nul, dus ik laat m'n siteje (voorlopig) draaien op Access. En ik wil m'n .mdb'tje niet overbodig belasten door voor elke pagina een nieuwe gang naar de dbase te maken voor de zijnav. Aangezien de site niet groot wordt, kan ik makkelijk handmatig deze navigatie bijhouden - hardcoded dus. En dan moet ik eerlijkheidshalve zeggen dat ik adhv de URL zijnav opbouwen wel een mooi idee vond?

...eigenlijk... B)


Wat zijn dan echte nadelen van deze methode?

"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."


  • oZy
  • Registratie: Juli 2001
  • Laatst online: 22:30

oZy

tuurlijk kan dit ook. ik vroeg me alleen af hoe je kunt weten op welke pagina iemand zich bevind als je alleen de eerste map weet. Of is je site maar 2 levels diep? Bijv. de url van dit topic zou je alleen "forum" opleveren, dus dan weet je dat we ons ergens in het forum bevinden, maar zijn we een topic aan het lezen? een topiclist aan het bekijken? profile aan het wijzigen? etc. dat kan je daar niet uit herleiden.

En die ene extra query moet echt geen probleem zijn voor Access. Je kan bijv alle content en navigatie in 1 tabel mikken like this: [ID] [ParentID] [Titel] [Content]. Meer heb je niet nodig om een oneindig diepe boomstructuur te maken.

  • Reveller
  • Registratie: Augustus 2002
  • Laatst online: 05-12-2022
mijn siteje is idd maar 2 levels diep, vandaar. Aan de andere kant begin ik nu ook te twijfelen of in access toch niet makkelijker is...stof tot nadenken :) later meer lol, ik kom er nog wel eens op terug. thnx en doei

"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."

Pagina: 1