switch case ?

sniffler

Mitglied
Hallo Leute,

Ich habe ein kleines Problem mit meinem Hoster - der unterstützt nämlich nur asp - kein PHP - und ich kann nur php.
Ich würde gerne eine switch-case Funktion einbinden mit der ich verschiedene Seiten in einen bestimmten div includen kann und diese dann über adressen wie "index.asp?site=contact" aufrufen kann.

Ist sowas überhaupt möglich mit asp ?
Wenn ja, ich würde mich über Antworten sehr freuen.

Danke Guß Chico
 
Hi

die Syntax ist ähnlich.

bsp.
Code:
dim str
select case Request.QueryString("irgendwas")
case 1
str = "tu dies"
case 2
str = "tu jenes"
case else
str = "tu gar nix"
end select

Leider kennt ASP nicht in dem Sinne include() oder require() Funktion wie in php. Wenn man ewas includen möchte, muss man den html-Befehl setzen, wie

bsp.
<!--#include file="../../connection/connections.asp" -->

Das Problem ist allerdings, dass in der Regel zuerst die includes geladen werden, ohne Rücksicht auf eine Abfrage. Man muss es mal testen im select case.

Weiterhin gibt es noch den Befehl

server.execute "seite.asp"

Wenn die Includes nur aus Textdateien bestehen wie z.B. html-Code, so kann man diese auch in eine spezielle config-Datei speichern und als Prozeduren aufrufen.

bsp.

Code:
<% sub contact %>
<h2>Tu dies </h2>
<% end sub %>

Ausgabe dann

select case Request.QueryString("site") 
case "contact"
call contact
case....
[...]
%>
 
Hey,

vielen Dank Luzie, hab mich für die zweite Methode entschieden.
Bin soweit auch schon ganz gut dabei - meine contents lassen sich einbinden und über "index.asp?site=contact" aufrufen.
Jetzt hab ich nur noch einen zweiten div in den ich genauso Inhalt einfügen möchte, den ich dann auch über die URL aufrufen kann.
Hab das auch schon gemacht und den Query.String "nav" genannt.
Unter Opera kann ich jetzt wunderbar beide contents aufrufen - also mit folgender URL:

"index.asp?site=contact&nav=link"

Nur im Internetexplorer gehts bei mir leider nicht. Muss ich die Url irgendwie anders angeben oder insgesamt etwas an meinem Setup ändern ?

Vielen dank

Gruß Chico
 
Hallo

nein, die Übergabe der Parameter ist scripttechnisch in Ordnung.
Du solltest mal schauen, ob html-technisch alles ok ist, wenn Du die Parameter übergibst. Manchmal ist ein Tag nicht geschlossen (bei Tabellen z.B.).

Einfach auch mal in den Browserseitenquellcode schauen, was wirklich los ist.
 
Hallo,
ich hab nochmal alles gecheckt - es funktioniert mit IE immer noch nicht.
Ich hab hier mal den Quellcode:

Code:
<div id="spaltelinks">

<% 
dim strSub : strSub = Request.QueryString("nav")
select case strSub
case "home"
	call homelink
case "praxis"
	call praxislink
case "sport"
	call sportmedizinlink
case "diagnostik"
	call diagnostiklink
case "therapie"
	call therapielink
case "news"
	call newslink
case "webcam"
	call webcamlink
case else
	call homelink
end select %>

</div>

das ist in einem der divs

und das hier ist der andere:

Code:
<div id="content">

<% 
dim strSub2 : strSub2 = Request.QueryString("site")
select case strSub2
case "home"
	call home
case "praxis"
	call praxis
case "sport"
	call sportmedizin
case "diagnostik"
	call diagnostik
case "therapie"
	call therapie
case "news"
	call news
case "webcam"
	call webcam
case else
	call home
end select %>


</div>

natürlich hab ich die Variabeln auch noch beschrieben:

Code:
<% sub home %>
<!--#include virtual="start.asp"-->
<% end sub %>

<% sub homelink %>
<!--#include virtual="startlink.asp"-->
<% end sub %>

<% sub praxis %>
<!--#include virtual="praxis.asp"-->
<% end sub %>

<% sub praxislink %>
<!--#include virtual="praxislink.asp"-->
<% end sub %>

<% sub sportmedizin %>
<!--#include virtual="sportmedizin.asp"-->
<% end sub %>

<% sub sportmedizin %>
<!--#include virtual="sportmedizinlink.asp"-->
<% end sub %>

<% sub diagnostik %>
<!--#include virtual="diagnostik.asp"-->
<% end sub %>

<% sub diagnostiklink %>
<!--#include virtual="diagnostiklink.asp"-->
<% end sub %>

<% sub therapie %>
<!--#include virtual="therapie.asp"-->
<% end sub %>

<% sub therapielink %>
<!--#include virtual="therapielink.asp"-->
<% end sub %>

<% sub news %>
<!--#include virtual="news.asp"-->
<% end sub %>

<% sub newslink %>
<!--#include virtual="newslink.asp"-->
<% end sub %>

<% sub webcam %>
<!--#include virtual="webcam.asp"-->
<% end sub %>

<% sub webcamlink %>
<!--#include virtual="webcamlink.asp"-->
<% end sub %>

In Opera lässt sich alles wunderbar mit "www.hoster.de/index.asp?site=webcam&nav=webcam " aufrufen, mit dem IE kommt immer nur mein "case else".

Danke
Gruß Chico
 
Hallo

das wird nicht funktionieren, habe ich ja oben geschrieben. In ASP werden alle includes immer sofort beim Start der Seite geladen. Da nützt es nix, diese in eine Abfrage oder ene Prozedur zu stecken.

Du kannst aber Prozeduren direkt festlegen. Prozeduren erwarten keinen Rückgabewert.

bsp.

Code:
<% sub home %>
<h1>Home</h1>
  <div>Dies kann ein Text in einem html-Container sein</div>
<% end sub %>

Warum verwendest Du keine Datenbank?
Geht doch alles einfacher damit.
 
Naja ich kenne mich leider überhaupt nicht mit MSSQL Datenbanken aus. Und ausserdem ist das doch soviel ich weiß auch noch schlecht für die Suchmaschinenoptimierung, oder ?

gibt es wirklich gar keine Möglichkeit einen Frame mit asp zu ersetzen ?

Gruß Chico
 

Neue Beiträge

Zurück