webForumDet fria alternativet

Märks det att jag inte kan nåt...?

ASP

7 svar · 337 visningar · startad av Ghost of North

Medlem sedan sep. 200057 inlägg
Frågan#1

Jag har en gästbok i asp och jag tycker att det saknas ett viktigt fält, nämligen det för egen hemsida.
Posterna sparas i en databas (access). Nu är frågan om någon vänlig själ kan ge mig så enkla instruktioner så att jag klarar av att tillföra detta fält. Mina tidigare asp-kunskaper sträcker sig till att "klippa och klistra" lite i asp.

Kod:
<%
Const adOpenKeyset = 1
Const adLockOptimistic = 3

strMode = Request.QueryString("mode")
tempConn = "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("guestbook.mdb") & ";UID=admin;PWD=;"

If Request.Form("Gem") <> "" Then
strError = ""
strNavn = Trim(Request.Form("Navn"))
strEmail = Trim(Request.Form("Email"))
strKommentar = Trim(Request.Form("Kommentar"))
If Len(strNavn) = 0 Then
strError = "<font color=0000FF><li>Du har glömt att skriva namn!</li></font>"
ElseIf validateEmail(strEmail) = False Then
strError = "<font color=0000FF><li>Din e-mail adress behövs!</li></font>"
ElseIf Len(strKommentar) = 0 Then
strError = "<font color=0000FF><li>Kommentar är ett måste!</li></font>"
End If
If Len(strError) = 0 Then
Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM Guestbook WHERE (ID = 0)"
rs.Open strSQL, tempConn, adOpenKeyset, adLockOptimistic
If (rs.BOF Or rs.EOF) Then
rs.AddNew
rs("Navn") = Server.HTMLEncode(strNavn)
rs("Email") = Server.HTMLEncode(strEmail)
rs("Kommentar") = Server.HTMLEncode(strKommentar)
rs("Dato") = Now()
rs.Update
End If
rs.Close
Set rs = Nothing
Else
strError = "<p><ul><font color=ffffff>" & strError & "</font></ul></p>"
strMode = "add"
End If
End If
%>
<html>

<head>
<title>Gästboken</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>

<body style="background-image: url('images/clearday/cdbkgnd.jpg'); background-repeat: repeat; background-attachment: fixed; background-position: center top">

<center>
<div align="center">
<table border="0" width="600" cellspacing="0" cellpadding="3" height="548">
<tr>
<td width="600" height="128"><p align="center"><br>
<img border="0" src="images/gastbok-rubrik.gif">
<br>
<br>
<br>
<font face="verdana" size="2"><strong>
<img border="0" src="images/clearday/cdrule.gif"></strong></font></td>
</tr>
<tr>
<td width="600" height="381">
<%
Select Case strMode
Case "add"
%>
</center>
<form method="POST" action="guestbook.asp">
<table border="0" width="600" cellspacing="0" cellpadding="2">
<tr>
<td align="center" width="600"><font face="verdana" size="2"><strong>
<p align="left">
<%=strError%></strong></font></td>
</tr>
<tr>
<td valign="middle" align="center" class="text" width="600"><div align="right"><p class="text" align="center"><br>
Namn:<br>
<input type="text" name="Navn" size="40" value="<%=strNavn%>"><br>
<br>
E-mail:<br>
<input type="text" name="Email" size="40" value="<%=strEmail%>"><br>
<br>
Kommentar:<br>
<textarea rows="3" name="Kommentar" cols="40"><%=strKommentar%></textarea><br>
<br>
<input type="submit" value="Skicka" name="Gem"><input type="button" value="Ångra" name="Annuller" onClick="javascript:location.href='guestbook.asp'">
</div>
<div align="right"><p class="text" align="center"><img border="0" src="images/clearday/cdrule.gif">
</div>
</td>
</tr>
<tr>
<td valign="middle" align="center" class="text" width="600">

      \</td\>

    \</tr\>

  \</table\>

</form>
<center>

<%
Case Else
strAddLine = "<p><img src=images/add.gif width=16 height=16> <a href=guestbook.asp?mode=add><strong><font face=verdana size=2>Skriv inlägg i gästboken</font></strong></a></p>"
Response.Write strAddLine
strSQL = "SELECT * FROM Guestbook ORDER BY Dato DESC;"
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open tempConn
Set rs = myConn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then
Response.Write "<table width=600 border=0 cellpadding=1 cellspacing=1>"
Do While Not rs.EOF
dtmDato = rs("Dato")
dtmDato = FormatDateTime(dtmDato,vbLongDate) & " kl. " & FormatDateTime(dtmDato,vbLongTime)
Response.Write "<tr bgcolor=#99ccff><td width=""600""><font face=verdana size=2 color=#0000ff>" & dtmDato & "</td></tr>"
If Len(rs("Email")) > 0 Then
Response.Write "<tr><td><font face=verdana size=2><strong><a href=mailto:" & rs("Email") & ">" & rs("Navn") & "</a> skriver:</strong></td></tr>"
Else
Response.Write "<tr><td><font face=verdana size=2><strong>" & rs("Navn") & " skriver:</strong></td></tr>"
End If
Response.Write "<tr><td><font face=verdana size=2>" & rs("Kommentar") & "<br> </td></tr>"
rs.MoveNext
Loop
Response.Write "</table>"
Else
Response.Write "<p><font face=verdana size=2>Inget inlägg i gästboken !</font></p>"
End If
myConn.Close
Set myConn = Nothing
Response.Write strAddLine
End Select
%>
</center>
</tr>
<tr align="center">
<td width="600" height="21">
<p class="text-copy" align="center"></td>
</tr>
</table>
</div>
</body>
</html>
<script language="VBScript" runat="Server">
Function validateEmail(strEmail)
validateEmail = True
If Len(strEmail) < 6 Then
validateEmail = False
End If
If InStr(1, strEmail, "@", 1) < 2 Then
validateEmail = False
End If
If InStr(1, strEmail, ".", 1) = 0 Then
validateEmail = False
End If
pos = InStr(1, strEmail, "@", 1)
If pos < 2 Then
validateEmail = False
Else
pos = InStr(pos+1, strEmail, "@")
If pos > 0 Then
validateEmail = False
End If
End If
End Function
</script>

Posterna i databasen heter givetvis:
ID
Dato
Navn
Email
Kommentar

Det är antagligen ganska enkelt att lägga till ett extra fält, men hitills så har jag inte lyckats på egen hand.

Förhoppningsfull :)

[Redigerat av Ghost of North den 14 sep 2000]

Medlem sedan dec. 19998 577 inlägg
#2

Det (antar jag) är fyra ställen du behöver ändra... först måste du lägga till ett fält för hemsidesträngen i databasen, sedan så måste du lägga till ett formulärsfält där du matar in hemsidan, sedan så måste du hämta ifrån fältet där du visar alla inlägg och till sist så måste du ändra i din SQL-sträng (den som visar vad som skall in i databasen efter postningen ifrån formuläret)...

Det är kanske den sista som kan vara problem om man inte kan ASP... men sök reda på den strängen efter det att du har ändrat dom andra tre grejorna så skall vi se vad som skall ändras där... :)

------------------
Kom hem till mig...

Medlem sedan sep. 200057 inlägg
#3

Nu tror jag att jag har lyckats ändra 3 av de 4 punkterna du skrev om. Återstår SQL:en... Koden finns numera i mitt tidigare inlägg. :)

Vill gärna ha hemsideslänken efter mail/namn-länken...

Och hur får jag den att inte skriva ut en obefintlig länk?

[Redigerat av Ghost of North den 14 sep 2000]

Medlem sedan dec. 19998 577 inlägg
#4

Okej, för att skapa ett fält i databasen:

Öppna din tabell, växla till designläge (den lilla rutan längst till vänster), skriv in ett nytt namn på en ny post, och välj sedan datatypen 'text' med säg 75 tecken... spara sedan tabellen...

återkommer strax... fick just ett möte...

------------------
Kom hem till mig...

Medlem sedan sep. 200057 inlägg
#5

Jag har skapat en ny kolumn i databasen och en inmatningsruta i gästboken till hemsidesadresserna. (Jag hade mycket tur vill jag lova som klarade av det... :) ).
Jag har även filat till SQL:en så att den verkar spara resultaten (jag är förvånad...).
Problemet nu är att alla hemsideslänkarna kommer i formen http://foo/osv...
Hur får jag bort det???

Kod:
----------------------------------------
<%
Case Else
strAddLine = "<p><img src=images/add.gif width=16 height=16> <a href=guestbook.asp?mode=add><strong><font face=verdana size=2>Skriv inlägg i gästboken</font></strong></a></p>"
Response.Write strAddLine
strSQL = "SELECT * FROM Guestbook ORDER BY Dato DESC;"
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open tempConn
Set rs = myConn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then
Response.Write "<table width=600 border=0 cellpadding=1 cellspacing=1>"
Do While Not rs.EOF
dtmDato = rs("Dato")
dtmDato = FormatDateTime(dtmDato,vbLongDate) & " kl. " & FormatDateTime(dtmDato,vbLongTime)
Response.Write "<tr bgcolor=#99ccff><td width=""600""><font face=verdana size=2 color=#0000ff>" & dtmDato & "</td></tr>"
If Len(rs("Email")) > 0 Then
Response.Write "<tr><td><font face=verdana size=2><strong><a href=mailto:" & rs("Email") & ">" & rs("Navn") & "</a></strong> <a href=" & rs("Hemsida") & ">" & rs("Hemsida") & "</a><strong> skriver:</strong></center></td></tr>"

		Else
			Response.Write "\<tr\>\<td\>\<font face=verdana size=2\>\<strong\>" & rs("Navn") & rs("Hemsida") & " skriver:\</strong\>\</td\>\</tr\>"
		End If
		Response.Write "\<tr\>\<td\>\<font face=verdana size=2\>" & rs("Kommentar") & "\<br\> \</td\>\</tr\>"
		rs.MoveNext
	Loop
	Response.Write "\</table\>"
Else
	Response.Write "\<p\>\<font face=verdana size=2\>Inget inlägg i gästboken !\</font\>\</p\>"
End If
myConn.Close
Set myConn = Nothing
Response.Write strAddLine

End Select
%>
----------------------------------------

[Redigerat av Ghost of North den 15 sep 2000]

Medlem sedan sep. 200057 inlägg
#6

Nu har jag efter mycket påtande lyckats med en hel del av det jag föresatt mig.
MEN: När min asp-sida hämtar länkarna från databasen lägger den hela tiden till den plats på nätet man befinner sig före själva länken typ: hhtp://min webplats/stället den ska länka till.
Texten i databasen verkar stämma (www.osv...)
Snälla, hur ska jag få bort detta?
Jag blir snart knäpp på det. Förklara gärna varför det blir så också så jag kan undvika detta i framtiden...

Länk-kod:

If Len(rs("Hemsida")) > 0 Then
Response.Write "<tr><td><font face=verdana size=2><strong>Hemsida: <a href=" & rs("Hemsida") & ">" & rs("Hemsida") & "</a></strong><br><br>"
End If

Medlem sedan dec. 19998 577 inlägg
#7

Då får du göra något sånthär:

If Len(rs("Hemsida")) > 0 Then
hemsa = rs("Hemsida")
If left(hemsa,4) <> "http" then
	hemsa = "http://" & hemsa
End If
Response.Write "<tr><td><font face=verdana size=2><strong>Hemsida: <a href=" & hemsa & ">" & rs("Hemsida") & "</a></strong><br><br>"
End If

------------------
Kom hem till mig...

Medlem sedan sep. 200057 inlägg
#8

Tack så mycket för hjälpen :>

Jag vill oxå passa på att skriva att det här är det trevligaste forum jag någonsin varit på! Jag har läst en massa inlägg och frågor och inte träffat på ett enda som ens varit på gränsen till otrevligt. :>

Jag kanske vågar lägga min ringa hemsida under granskning här när den är lite mer klar... :)

Mvh
Ghost of North

266 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)