Re: Skapa mapp och fil!
Jag har alltså en databas där jag vill hämta allt ifrån efteråt! Man ska alltså få en egen sida typ!
8 svar · 298 visningar · startad av Asa
Har denna kod som jag vill ska skapa en mapp med namnet som står vid Anvnamn. Sedan ska en fil skapas med namn index.asp och den ska innehålla det vid Info. Har bara skrivit det jag vill ha med i koden så ni vet. Hur ska jag skriva? Går det?
<%
Anvnamn = "Asa_80"
Info = "<%Set Conn = Server.CreateObject("ADODB.Connection")& vbCrLf
Info = "Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/matsedel.mdb")%>" & vbCrLf
Info = Info & "<table>" & vbCrLf
Info = Info & " <tr>" & vbCrLf
Info = Info & " </td>" & vbCrLf
Info = Info & " Anvnamn & " bilder!" & vbCrLf
Info = Info & " <%Set RS=Conn.Execute("Select * From bilder Where user='" & Anvnamn & "' Order By id desc")
Info = Info & " Do Until RS.EOF%>" & vbCrLf
Info = Info & " <%RS("rubrik")%>" & vbCrLf
Info = Info & " <%RS.MoveNext" & vbCrLf
Info = Info & " Loop%>" & vbCrLf
Info = Info & " </td>" & vbCrLf
Info = Info & " </tr>" & vbCrLf
Info = Info & "</table>"
If Request.QueryString("do") = "" Then%>
<a href="?do=skapa">Skapa</a>
<%ElseIf Request.QueryString("do") = "skapa" Then
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateFolder(Server.MapPath(Anvnamn))
Set objFile = objFSO.CreateTextFile(Server.MapPath(Anvnamn & "/index.asp"))
objFile.Write(Info)
Set objFSO = Nothing
Response.Redirect "index.asp"
End If%>
If Request.QueryString("do") = "" Then%>
<a href="?do=skapa">Skapa</a>
<%ElseIf Request.QueryString("do") = "skapa" Then
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateFolder(Server.MapPath(Anvnamn))
Set objFile = objFSO.CreateTextFile(Server.MapPath(Anvnamn & "/index.asp"))
objFile.Write(Info)
Set objFSO = Nothing
Response.Redirect "index.asp"
End If%>
Re: Skapa mapp och fil!
Jag har alltså en databas där jag vill hämta allt ifrån efteråt! Man ska alltså få en egen sida typ!
Nu när jag läst en gång till så ser jag vad du vill åstadkomma.
Det du vill är att skapa en avnändarkatalog med en default fil i.
jag skulle skapa en mall av en sådan katalog och sedan kopiera hela den katalogen.
Filen default.asp som ligger i mappen har redan all sin kod i sig och går och hämtar info beroende på vilket användarnamn som (katalog) som efterfrågas.
Kan återkomma med lite kod senare om du inte vill försöka själv ....
Men nu har du tänket :e
cya,
PatrikB
Det var ju smart Patrik. Tänkte ej på det! Ska testa det och återkommer!
Så här blev koden:
<%
Anvnamn = "Asa_80"
If Request.QueryString("do") = "" Then%>
<a href="?do=skapa">Skapa</a>
<%ElseIf Request.QueryString("do") = "skapa" Then
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Mall = Server.MapPath("Mall")
NyMapp = Server.MapPath(Anvnamn)
objFSO.CopyFolder Mall , NyMapp
Set objFSO = Nothing
Response.Redirect "index.asp"
End If%>
Hur plockar jag ut Asa_80 i denna ?
/jobb/sexziten/Asa_80/index.asp
Jag gjorde så här å då funkade det:
Anvnamn = Request.ServerVariables("SCRIPT_NAME")
arrPath = split(Anvnamn, "/")
Anvnamn = arrPath(ubound(arrPath)-1)
beror ju på att när en besökare skriver in: http://mydomain.com/anvarare/index.asp så vet man inte vilken användare som ska sökas. Därav måste man "plocka" ut användarnamnet.
Men!!! hur går det om jag bara skriver: http://mydomain.com/användare
eftersom du splittar på / så skulle jag använda index 4 (arrPath(4)) eftersom den "alltid" kommer att vara på den platsen :e
en annan sak är felhanteringen ..... kan hända rätt mycket när man skapar, kopierar mappar osv.
Här är mitt exempel på hur det skulle kunna se ut, med lite felhantering (endast skapandet av memberfolder):
createMember.asp
==============
<%
Option Explicit
'## -- vairable declaration --
Dim strMemberName ' As String
Dim strTemplateFolder ' As String
Dim strMemberFolder ' As String
Dim strSuccessMessage ' As String
Dim strSuccess ' As String
%>
<html>
<head>
<title>Create New Member</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<%
'## -- kontrollera om formet har postats --
If Request.Form > "" Then
'## -- formuläret har postats. fortsätt skapa memberinfo --
'## -- hämta valt membername --
strMemberName = Request.Form("txtMemberName")
'## -- kontrollera att vi har ett membername --
If Len("" & strMemberName) > 0 Then
'## -- vi har ett medlemsnamn --
'## -- kontrollera att medlemsnamn inte redan existerar --
'## -- lägg in det som ska till db här etc. --
'## -- skapa medlemsinfo (folder etc.) från templatefolder --
strTemplateFolder = Server.MapPath("/asa_80/_member")
strMemberFolder = Server.MapPath("/asa_80/" & strMemberName)
strSuccess = copyFolder(strTemplateFolder, strMemberFolder)
'## -- kolla om vi lyckades att skapa medlemsfoldern --
If strSuccess = "0" Then
'## -- vi lyckades. visa meddelande senare till klient --
strSuccessMessage = "A new member has been created."
End If '## -- end kontroll om vi har lyckats att skapa en katalog --
End If '## -- end kontroll om vi har ett medlemsnamn eller inte --
End If '## -- end kontroll av postat formulär --
'## -- kontrollera om vi har ett fel --
If Len("" & strSuccess) > 0 Then
'## -- vi har ett fel. --
'## -- kolla vilket fel som uppstod --
Select Case strSuccess
Case 0
'## -- do nothing. inga fel har uppstått
Case 1
Response.Write "<p>An error occured while copy folder template."
'## -- rensa valt membername --
strMemberName = ""
'## -- ett annat fel --
Case 2
Response.Write "<p>Member name already exists. choose another one."
'## -- rensa valt membername --
strMemberName = ""
'## -- default error --
Case Else
Response.Write "<p>An unspecified error occured!."
'## -- rensa membername --
strMemberName = ""
End Select '## -- end error case --
End If '## -- end kontroll av fel --
'## -- kolla om vi har lyckats att skapa en användare --
If Len("" & strSuccessMessage) > 0 Then
'## -- visa successmeddelande till användaren --
Response.Write "<p>" & strSuccessMessage
'## -- rensa membername --
strMemberName = ""
End If
%>
<form name="form1" method="post" action="createMember.asp">
<table width="350" border="0" cellspacing="0" cellpadding="3">
<tr>
<td>Membername:</td>
<td>
<input type="text" name="txtMemberName" size="45" value="<% =strMemberName%>">
</td>
</tr>
<tr>
<td> </td>
<td>
<input type="submit" name="Submit" value="Create">
</td>
</tr>
</table>
</form>
</body>
</html>
<%
'## -- kopierar en folder. lyckas kopieringen returneras true annars false --
Function copyFolder(folderPath, copyPath) ' As String
Dim fso ' As Scripting.FileSystemObject
Dim strErrNum ' As String
'## -- inga error --
strErrNum = "0"
'## -- skapa filsystem object --
Set fso = Server.CreateObject("Scripting.FileSystemObject")
'## -- felhantering --
'## -- kontrollera om katalogerna existerar --
If Not fso.FolderExists(folderPath) Then strErrNum = "1" '## -- template katalogen existerar inte --
If fso.FolderExists(copyPath) Then strErrNum = "2" '## -- medlemskatalog existerar redan --
'## -- kontrollera om några fel har uppstått --
If strErrNum = "0" Then
'## -- inga fel. skapa katalogen --
Call fso.CopyFolder(folderPath, copyPath)
End If
'## -- clean up --
Set fso = Nothing
'## -- return error num as string --
copyFolder = strErrNum
End Function
%>
cya,
PatrikB