Oprettet ons. d. 15. marts 2006 kl. 09:22:50

mikkeljans
mikkeljans (14.013 point. Point ude: 1.795)

Generelt opbygning af kodestruktur

Det jeg gerne vil komme ind på her er hvordan man opbygger en stor hjemmeside med Login, Forums, Database osv, rent kode messigt..
Jeg har allerede programmeret alt hvad der skal programmeres i ASP, men jeg vil gerne gøre kode- og filstrukturen mere simpel og ren.
Det skal blandt andet indebærer at det kode som går igen mere end én gang skal være et sted for sig selv som de forskellige sider bruger.
Kunne man evt. lave et skabelon til den typiske måde alle sider starter på med html, head og body tags osv. og derudover gøre det til standard at alle nye filer som bliver oprettet starter ud fra skabelonen..?
'Skabelons-koden' skal så ikke være synlig i de forskellige sider, som bruger skabelonen.

Jeg har ikke noget specifik spørgsmål, men kort sagt har jeg en masse masse filer som jeg syntes virker rodet og meget kode som bliver brugt flere steder, f.eks kode hvor den åbner og lukker databasen..
Hvad jeg så gerne vil er generelt at have et godt system til koden så den bliver mere overskuelig og nemmere at rette..

Hvordan ville i bygge en kompliceret sides grundliggende struktur?
Er der nogen artikler og tutorials som ville være gode at læse?
Har i generelt nogen gode tips?

Jeg arbejder i Adobe - GoLive.

Alle Forslag Er Velkommen.

På forhånd tak.

Skrevet ons. d. 15. marts 2006 kl. 09:31:54| #1

fennec
fennec (117.656 point)
Hvis du ikke allerede kender til det så skal du kikke på includes og funktioner. Det er de to ting som gør din kode mindre og nemmere at læse:

Includes er en metode til at hente en anden fil ind på siden. Jeg har f.eks 3 includes som jeg smider ind på alle sider:

<!-- #include file="start.asp" -->
<!-- #include file="MyFunctions.asp" -->
<!-- #include file="header.asp" -->

Start.asp sætter alle mulige variabler (et par sessions og opretter DB forbindelse)
MyFunctions.asp indeholder en masse af mine ejne funktioner.
header.asp inderholder kun HTML kode, men det er hele start koden (<!DOCTYPE...><HTML><HEAD>... )

Helt rigtig ligger MyFunctions og header som include i Start, så jeg kun includere den fil på mine sider, men så får jeg de andre med også :o)

Skrevet ons. d. 15. marts 2006 kl. 09:33:05| #2

fennec
fennec (117.656 point)
Her desuden også en end.asp include som lukker DB forbindelsen igen...

Skrevet ons. d. 15. marts 2006 kl. 09:39:58| #3

keysersoze
keysersoze (306.439 point)
www.soze.dk
du har et spørgsmål - men alligevel ikke... og så alligevel ;)

Der er mange måder at gøre dette på - langt hen ad vejen er det nok et spørgsmål om smag og behag. Generelt kan et fåtal af mapper samt meget strukturerede regler for filnavne gøre det.

mappestrukturen kan være de muligheder der er i et projekt fx; admin, constants (fx databaseconnections), css, javascript, actions (udførende filer, fx login.asp og logout.asp), includes (filer der vises for brugeren) etc etc

Generelt vil include-filer - som fennec foreslår det - derefter kunne gøre utrolig meget arbejde for en netop i forbindelse med genbrugelig funktioner, databaseconnections etc.

Designmæssigt er der flere muligheder - generelt lægger jeg designet i nogle functioner jeg så kan kalde med eventuelle parametre fx;

head("title","keywords","description","javascript")
' almindeligt html/asp kode
bottom()

Skrevet ons. d. 15. marts 2006 kl. 10:23:51| #4

mikkeljans
mikkeljans (14.013 point)
Jeg har prøvet mig lidt frem med Functions.. Men jeg gør nok noget forkert, for det virker ikke..
Har lavet en 'Functions.asp' fil..:
<%
Function BeginPage(Title)
    Response.Write "<html>"
    Response.Write "<head>"
    Response.Write         "<title>" & Title & "</title>"
    Response.Write "</head>"

    Response.Write "<body bgcolor='#ffffff'>"
End Function


Function EndPage()
    Response.Write "</body>"
    Response.Write "</html>"
End Function


Function OpenDB()
    Set Conn = Server.CreateObject("ADODB.Connection")
    DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=CENSURERET:)"
    Conn.Open DSN
End Function


Function CloseDB()
    Conn.Close
    Set Conn = Nothing
End Function
%>


News.asp:

<%

<!--#include virtual="/Functions.asp"-->

Response.Write BeginPage("News")

Response.Write OpenDB()

(EN MASSE ANDET KODE)
   
Response.Write CloseDB()
Response.Write EndPage()

%>


Kunne forestille mig det nok er fordi en function kun retunere et resultat, og ikke skriver hvad jeg skriver indefor functionen... Er jeg så tvunget til at bruge include her istedet for functioner, eller kan funktionen virke ligesom jeg har forsøgt i 'Functions.asp' filen?

Skrevet ons. d. 15. marts 2006 kl. 10:30:03| #5

keysersoze
keysersoze (306.439 point)
www.soze.dk
<%
Function BeginPage(Title)
%>
<html>
<head>
<title><%=Title%></title>
</head>
<body bgcolor="#ffffff">
<%
End Function
%>

mht dine database-ting så lav det som include filer med intet andet end fx

<%
conn.close
set conn = nothing
%>

Skrevet ons. d. 15. marts 2006 kl. 10:30:22| #6

fennec
fennec (117.656 point)
Du skal ikke kalde funktionerne med Response.Write. Det skal bare være:

BeginPage("News")
eller:
call BeginPage("News")

Skrevet ons. d. 15. marts 2006 kl. 11:05:29| #7

fennec
fennec (117.656 point)
Hvis det skal være helt rigtig skal du vel også benytte Sub() i dette tilfælde (selv om begge dele fungere :o)

Function er kendetegnet ved at den kan returnere en værdi. Det kan Sub ikke, og da du ikke skal returnere en værdi, er det den man burde bruge.

Sub BeginPage(Title)
    Response.Write "<html>"
    Response.Write "<head>"
    Response.Write        "<title>" & Title & "</title>"
    Response.Write "</head>"
    Response.Write "<body bgcolor='#ffffff'>"
End Sub
call BeginPage("news")

Function returTest()
  returTest = "Dette returneres.."
end Function
test = returTest()

Skrevet ons. d. 15. marts 2006 kl. 11:07:17| #8

mikkeljans
mikkeljans (14.013 point)
Jeg kan stadig ikke få de funktioner til at virke..:

Functions.asp:

<%
Function BeginPage(Title)
%>
    <html>
    <head>
        <title><%=Title%></title>
    </head>
    <body bgcolor="#ffffff">
<%
End Function
%>


<%
Function EndPage()
%>
    </body>
    </html>
<%
End Function
%>


AndenFil.asp:
<%
<!--#include file="../Functions.asp"-->

BeginPage("News")
EndPage()
%>

Bare dette simple eksempel virker ikke.. Den skriver:

Microsoft VBScript runtime error '800a000d'

Type mismatch: 'BeginPage'

/News/Main.asp, line 4

Skrevet ons. d. 15. marts 2006 kl. 11:10:35| #9

mikkeljans
mikkeljans (14.013 point)
'Sub' ser heller ikke ud til at virker

Skrevet ons. d. 15. marts 2006 kl. 11:16:17| #10

fennec
fennec (117.656 point)
Det burde virke, og jeg har lige smidt din kode ind hos mig, og der virker det fint både med function og sub....

Prøv lige at smide include filen i samme mappe, så du ikke går tilbage til parent mappen.

Skrevet ons. d. 15. marts 2006 kl. 11:23:07| #11

mikkeljans
mikkeljans (14.013 point)
Det er mærkeligt det ikke gider virker.. Nu har jeg 2 filer i samme Mappe..:

Functions.asp:
<%
Sub BeginPage(Title)
    Response.Write "<html>"
    Response.Write "<head>"
    Response.Write        "<title>" & Title & "</title>"
    Response.Write "</head>"
    Response.Write "<body bgcolor='#ffffff'>"
End Sub

Sub EndPage()
    Response.Write "</body>"
    Response.Write "</html>"
End Sub
%>

Test.asp:
<%
<!--#include file="Functions.asp"-->

BeginPage("News")
EndPage()
%>

Den siger: HTTP 500 Internal Server Error
http://www.maya3d.dk/ (...)

Skrevet ons. d. 15. marts 2006 kl. 11:32:01| #12

fennec
fennec (117.656 point)
Prøv at smide call foran kaldet:
Call BeginPage("News")
Call EndPage()

Skrevet ons. d. 15. marts 2006 kl. 11:36:33| #13

mikkeljans
mikkeljans (14.013 point)
Har jeg prøvet.. Men tror jeg ved hvad der er galt..
<!--#include file="Functions.asp"-->
Skal være udenfor <% %> tegnene.. Det virkede ved første test.. Så tror det virker

Skrevet ons. d. 15. marts 2006 kl. 11:45:24| #14

keysersoze
keysersoze (306.439 point)
www.soze.dk
du har allerede programmeret alt hvad man kan i ASP? det er egentlig ret imponerende hvis du ikke ved hvordan man kan se fejl i ASP;

funktioner -> indstillinger -> avanceret -> fjern kryds i "vis meddelelse om uskadelige http-fejl"

Det er så godt som umuligt at lave noget ud den indstilling...

Skrevet ons. d. 15. marts 2006 kl. 11:49:29| #15

fennec
fennec (117.656 point)
Havde jeg ikke set, men ja include skal være uden for <% %>

Og bare så du ved det, så bliver alle include filer hentet ind på siden INDEN noget kode bliver afviklet. Du kan derfor ikke gøre noget i denne stil:

<!--#include file="<%= dynamiskInclude %>.asp"-->

Hvis du vil lave include dynamisk. Men det er heller ikke aktuelt i dette tilfælde, men det kunne være du fik ideen senere, også ved du nu at det ikke kan lade sig gøre :o)

Der er dog visse tilfælde, hvor man kan bruge:
if noget=noget then %>
<!--#include file="inc1.asp"-->
<%
else %>
<!--#include file="inc2.asp"-->
<%
end if

Men det er kun nå inc1/inc2 er "selv afviklende".

Skrevet ons. d. 15. marts 2006 kl. 12:08:24| #16

mikkeljans
mikkeljans (14.013 point)
Tak for hjælpen.. Nu tror jeg, at jeg kan klarer resten.

Skrevet ons. d. 15. marts 2006 kl. 12:15:22| #17

fennec
fennec (117.656 point)
Ok, men du siger bare til hvis der er noget...
(Og tak for point)

Skrevet ons. d. 15. marts 2006 kl. 14:16:05| #18

keysersoze
keysersoze (306.439 point)
www.soze.dk
hmmm - tak for hjælpen...

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Sammenskrivning af 2 SQL linier

Oprettet den 11. februar 2012 kl. 14.44
lund_dk giver 30 point for svar | Giv et svar »

Udskrive mappens navn

Oprettet den 8. februar 2012 kl. 13.32
no_doubt giver 60 point for svar | Giv et svar »

Flere tæller/counter SQL og ASP!

Oprettet den 7. februar 2012 kl. 20.09
denny giver 30 point for svar | Giv et svar »

Seneste guides

Installer win 7
Den gode bruger


   




Tips & Tricks fra PC World

Teaser billede

Her er fem sjove danske websider du skal kende

Trænger dine lattermuskler til en omgang fitness på dansk? Vi viser vej til fem websider fyldt med humor og vanvittig satire.


Anmeldelser fra PC World

Teaser billede

Test: Denne super-tablet er iPads hårdeste konkurrent

Eee Pad Transformer Prime er frygtindgydende med sin quadcore processor og evne til at trylle sig om til bærbar. Apple bør kigge i bagspejlet, for Asus' tablet-pc kommer buldrende - og gør det...


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Nu kan du snart hente Windows 8

Den nye offentlige betaversion af Windows 8 er klar i denne måned.


Nyheder fra Computerworld

Teaser billede

Måske snart slut med Androids helt store problem

Android-platformen har længe været plaget af et særligt problem. Men måske er problemet nu ved at være elimineret.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger