Lær at lave en Gæstebog (med Mysql som db)
ForordI denne artikel gennemgår jeg hvordan man laver en gæstebog med Mysql som database. Vi vil ikke bruge nogle avancerede funktioner da den er henvendt til ekstremt nybegyndere, eventuelt folk der ikke har anden baggrund end mine foregående artikler. Hej,
Dette er min fjerde artikel om ASP. Hvis du ikke har så stor erfaring med ASP kan jeg anbefale at du læser mine tidligere artikler:
1: http://rowl.dk/Articles/1
2: http://rowl.dk/Articles/8
3: http://rowl.dk/Articles/36
For at kunne lave en Gæstebog..
..er det vigtigt at man gør sig klart at man behøver et sted at lægge sine gæstebogsbeskeder henne. Det kunne fx være en tekstfil, Acces database eller Mysql database. I denne artikel vil jeg bruge en Mysql database, men det burde ikke vare længe at omskrive den til Accesbrugere også.
De filer vi skal bruge for at lave gæstebogen er:
gb.sql " filen med vores databaseinformationer
read.asp " læser gæstebogsbeskederne, med skrivform
write.asp " skriver gæstebogsbeskederne
Jeg laver artiklen så personer der har læst mine tidligere artikler kan være med, derfor er det kun det mest basale jeg vil lave.
GB.SQL
CREATE TABLE `gb` (
`navn` varchar(100) NOT NULL default "",
`email` varchar(100) NOT NULL default "",
`www` varchar(100) NOT NULL default "",
`besked` text NOT NULL,
`ip` varchar(100) NOT NULL default "",
`id` int(11) NOT NULL auto_increment,
`dato` varchar(100) NOT NULL default "",
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=2 ;
Denne kode opretter den Mysqltabel som vi skal bruge til at lagre vores data. Du kan fx indsætte koden i phpmyadmin så laver den tabellen for dig.
READ.ASP
Som navnet lyder er det den fil der læser beskederne. Ud over det placerer vi også en formular som sender information til write.asp.
Jeg viser hele koden på én gang men jeg har forsøgt at kommentere de vigtige ting:
<%
" VORES DATABASE-CONNECT [UDSKIFT DEM MED DINE EGNE]
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.ConnectionString="DRIVER={MySQL};SERVER=localhost;DATABASE=database;UID=userid;PWD=password;"
Conn.Open
%>
<!-- FORMEN DER VIDEREGIVER BESKEDEN (START) -->
<table>
<form method="post" action="write.asp">
<tr>
<td>
Navn:
</td>
<td>
<input type="input" name="navn" style="width:150px;">
</td>
</tr>
<tr>
<td>
Email:
</td>
<td>
<input type="input" name="email" style="width:150px;">
</td>
</tr>
<tr>
<td style="padding-right:20px;">
Hjemmeside:
</td>
<td>
<input type="input" name="www" style="width:150px;">
</td>
</tr>
<tr>
<td valign="top">
Besked:
</td>
<td>
<textarea name="besked" style="width:250px;height:100px;"></textarea>
</td>
</tr>
<tr>
<td>
</td>
<td>
<input type="submit" value="Skriv beskeden" style="width:150px;">
</td>
</tr>
</form>
</tr>
</table>
<!-- FORMEN DER VIDEREGIVER BESKEDEN (SLUT) -->
<br>
<%
" VI HENTER BESKEDERNE UD, SORTERET MED NYESTE øVERST
strSQL = "Select * from gb order by id desc"
Set rs = Conn.Execute(strSQL)
If rs.eof then
Response.Write "Der er ingen beskeder i gæstebogen"
Else
" VI KøRER EN LøKKE FOR HVER AF BESKEDERNE
Do
" HVIS EMAILFELTET IKKE ER UDFYLDT
" SKAL NAVNET IKKE VæRE ET LINK, ELLERS SKAL DET
if rs("email") = "" then
navn = "<b>" & rs("navn") & "</b>"
else
navn = "<a href="mailto:"& rs("email") &""><b>" & rs("navn") & "</b></a>"
end if
" HVIS WWWFELTET IKKE ER UDFYLDT
" SKAL DER IKKE VæRE ET LINK, ELLERS SKAL DER
if rs("www") = "" then
www = ""
else
www = " - <a target="_blank" href="http://"& rs("www") &""><b>" & rs("www") & "</b></a>"
end if
" HER UDSKRIVES INFORMATIONERNE
Response.Write navn & www & " skrev d. "& rs("dato") &":<br>"
Response.Write rs("besked") & "<br><br>"
rs.MoveNext
Loop While Not rs.EOF
End if
" LUKKER FOR ADGANGEN TIL DATABASEN
Set RS = Nothing
Conn.Close
Set Conn = Nothing
%>
WRITE.ASP
Den sidste fil vi mangler er den fil som skriver beskeden (som vi fik fra formularen) ind i databasetabellen.
Også den er kommenteret:
<%
" VORES DATABASE-CONNECT [UDSKIFT DEM MED DINE EGNE]
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.ConnectionString="DRIVER={MySQL};SERVER=localhost;DATABASE=database;UID=userid;PWD=password;"
Conn.Open
" HVIS NAVNFELTET IKKE ER UDFYLDT SæTTES VARIABLEN ALERT TIL 1
" OG DER UDSKRIVES EN FEJLBESKED
if request.form("navn") = "" then
alert = 1
response.write "- Feltet <b>navn</b> skal udfyldes<br>"
end if
" HVIS BESKEDFELTET IKKE ER UDFYLDT SæTTES VARIABLEN ALERT TIL 1
" OG DER UDSKRIVES EN FEJLBESKED
if request.form("besked") = "" then
alert = 1
response.write "- Feltet <b>besked</b> skal udfyldes"
End if
" HVIS VARIABLEN ALERT IKKE ER SAT TIL 1
" INDSæTTER VI DEN NYE BESKED I DATABASEN
if alert <> 1 then
" VI UDSKIFTER " MED "" (SOM GIVER SAMME RESULTAT)
" ELLERS BROKKER MYSQL SIG
navn = replace(request.form("navn"), """, """")
email = replace(request.form("email"), """, """")
besked = replace(request.form("besked"), """, """")
www = replace(request.form("www"), """, """")
" VI FJERNER HTTP:// FRA WWW-FELTET
www = replace(www, "http://", "")
" VI UDSKIFTER < MED < Så MAN IKKE KAN BRUGE HTML
navn = replace(navn, "<", "<")
email = replace(email, "<", "<")
besked = replace(besked, "<", "<")
www = replace(www, "<", "<")
strSQL = "Insert into gb ("
strSQL = strSQL & "dato, "
strSQL = strSQL & "ip, "
strSQL = strSQL & "navn, "
strSQL = strSQL & "email, "
strSQL = strSQL & "www, "
strSQL = strSQL & "besked) "
strSQL = strSQL & "values( "
strSQL = strSQL & """& Day(date) &"/"& month(date) &"-"& year(date) &"", "
strSQL = strSQL & """& Request.ServerVariables("REMOTE_ADDR") &"", "
strSQL = strSQL & """& navn &"", "
strSQL = strSQL & """& email &"", "
strSQL = strSQL & """& www &"", "
strSQL = strSQL & """& besked &"")"
Conn.Execute(strSQL)
" VI SENDER BRUGEREN TILBAGE TIL READ.ASP,
" HVOR DEN NYE BESKED ER FREMKOMMET
response.redirect "read.asp"
end if
" LUKKER FOR ADGANGEN TIL DATABASEN
Set RS = Nothing
Conn.Close
Set Conn = Nothing
%>
Jeg vil ikke råde jer til bare at copy/paste, men scriptet er testet igennem for fejl.
Det er en tro kopi af de filer vi har brugt her.
Det var alt for denne gang. Sidst redigeret 22:12 28/06/2009 |
Oprettet af:
ASP
Point modtaget: 0
Rate:
20:51 13/01/2006
|
Kommentarer
Giv din mening tilkende om denne artikel, eller læs andres.
Har du spørgsmål eller brug for hjælp til denne artikel henvises du til forummet.
kan man ikke også godt skrive:
day = Day(date)
month = month(date)
year = year(date)
ip = Request.ServerVariables("REMOTE_ADDR")
strSQL = "Insert into gb (dato, ip, navn, email, www, besked) values ("&day&", "&month&", "&year&", &"ip&", "&navn&", "&email&", "&www&", "&besked&"")
Conn.Execute(strSQL)
i stedet for:
#
strSQL = "Insert into gb ("
#
#
strSQL = strSQL & "dato, "
#
strSQL = strSQL & "ip, "
#
strSQL = strSQL & "navn, "
#
strSQL = strSQL & "email, "
#
strSQL = strSQL & "www, "
#
strSQL = strSQL & "besked) "
#
#
strSQL = strSQL & "values( "
#
#
strSQL = strSQL & """& Day(date) &"/"& month(date) &"-"& year(date) &"", "
#
strSQL = strSQL & """& Request.ServerVariables("REMOTE_ADDR") &"", "
#
strSQL = strSQL & """& navn &"", "
#
strSQL = strSQL & """& email &"", "
#
strSQL = strSQL & """& www &"", "
#
strSQL = strSQL & """& besked &"")"
#
#
Conn.Execute(strSQL)
|
18:38 22/10/2009
|
Du skal være oprettet og logget ind for at kommentere en artikel
|