Brugernavn:




Kodeord: Husk
Forside Forum Artikler Downloads Søg
 

Lær at lave en Gæstebog (med Mysql som db)

Forord

I 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
  1. CREATE TABLE `gb` (
  2.   `navn` varchar(100) NOT NULL default "",
  3.   `email` varchar(100) NOT NULL default "",
  4.   `www` varchar(100) NOT NULL default "",
  5.   `besked` text NOT NULL,
  6.   `ip` varchar(100) NOT NULL default "",
  7.   `id` int(11) NOT NULL auto_increment,
  8.   `dato` varchar(100) NOT NULL default "",
  9.   PRIMARY KEY  (`id`)
  10. ) 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:
  1. <%
  2. " VORES DATABASE-CONNECT [UDSKIFT DEM MED DINE EGNE]
  3. Set Conn = Server.CreateObject("ADODB.Connection")
  4. Conn.ConnectionString="DRIVER={MySQL};SERVER=localhost;DATABASE=database;UID=userid;PWD=password;"
  5. Conn.Open
  6. %>

  7. <!-- FORMEN DER VIDEREGIVER BESKEDEN (START) -->
  8. <table>
  9. <form method="post" action="write.asp">
  10.  <tr>
  11.   <td>
  12. Navn:
  13.   </td>
  14.   <td>
  15. <input type="input" name="navn" style="width:150px;">
  16.   </td>
  17.  </tr>

  18.  <tr>
  19.   <td>
  20. Email:
  21.   </td>
  22.   <td>
  23. <input type="input" name="email" style="width:150px;">
  24.   </td>
  25.  </tr>

  26.  <tr>
  27.   <td style="padding-right:20px;">
  28. Hjemmeside:
  29.   </td>
  30.   <td>
  31. <input type="input" name="www" style="width:150px;">
  32.   </td>
  33.  </tr>

  34.  <tr>
  35.   <td valign="top">
  36. Besked:
  37.   </td>
  38.   <td>
  39. <textarea name="besked" style="width:250px;height:100px;"></textarea>
  40.   </td>
  41.  </tr>

  42.  <tr>
  43.   <td>
  44.   </td>
  45.   <td>
  46. <input type="submit" value="Skriv beskeden" style="width:150px;">
  47.   </td>
  48.  </tr>
  49. </form>
  50. </tr>
  51. </table>
  52. <!-- FORMEN DER VIDEREGIVER BESKEDEN (SLUT) -->
  53. <br>
  54. <%
  55. " VI HENTER BESKEDERNE UD, SORTERET MED NYESTE øVERST
  56. strSQL = "Select * from gb order by id desc"
  57. Set rs = Conn.Execute(strSQL)
  58. If rs.eof then
  59. Response.Write "Der er ingen beskeder i gæstebogen"
  60. Else
  61. " VI KøRER EN LøKKE FOR HVER AF BESKEDERNE
  62. Do

  63. " HVIS EMAILFELTET IKKE ER UDFYLDT
  64. " SKAL NAVNET IKKE VæRE ET LINK, ELLERS SKAL DET
  65. if rs("email") = "" then
  66. navn = "<b>" & rs("navn") & "</b>"
  67. else
  68. navn = "<a href="mailto:"& rs("email") &""><b>" & rs("navn") & "</b></a>"
  69. end if

  70. " HVIS WWWFELTET IKKE ER UDFYLDT
  71. " SKAL DER IKKE VæRE ET LINK, ELLERS SKAL DER
  72. if rs("www") = "" then
  73. www = ""
  74. else
  75. www = " - <a target="_blank" href="http://"& rs("www") &""><b>" & rs("www") & "</b></a>"
  76. end if

  77. " HER UDSKRIVES INFORMATIONERNE
  78.    Response.Write navn & www & " skrev d. "& rs("dato") &":<br>"
  79.    Response.Write rs("besked") & "<br><br>"
  80.   
  81. rs.MoveNext
  82. Loop While Not rs.EOF
  83. End if

  84. " LUKKER FOR ADGANGEN TIL DATABASEN
  85. Set RS = Nothing
  86. Conn.Close
  87. Set Conn = Nothing
  88. %>

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:

  1. <%
  2. " VORES DATABASE-CONNECT [UDSKIFT DEM MED DINE EGNE]
  3. Set Conn = Server.CreateObject("ADODB.Connection")
  4. Conn.ConnectionString="DRIVER={MySQL};SERVER=localhost;DATABASE=database;UID=userid;PWD=password;"
  5. Conn.Open

  6. " HVIS NAVNFELTET IKKE ER UDFYLDT SæTTES VARIABLEN ALERT TIL 1
  7. " OG DER UDSKRIVES EN FEJLBESKED
  8. if request.form("navn") = "" then
  9. alert = 1
  10. response.write "- Feltet <b>navn</b> skal udfyldes<br>"
  11. end if

  12. " HVIS BESKEDFELTET IKKE ER UDFYLDT SæTTES VARIABLEN ALERT TIL 1
  13. " OG DER UDSKRIVES EN FEJLBESKED
  14. if request.form("besked") = "" then
  15. alert = 1
  16. response.write "- Feltet <b>besked</b> skal udfyldes"
  17. End if

  18. " HVIS VARIABLEN ALERT IKKE ER SAT TIL 1
  19. " INDSæTTER VI DEN NYE BESKED I DATABASEN
  20. if alert <> 1 then

  21. " VI UDSKIFTER " MED "" (SOM GIVER SAMME RESULTAT)
  22. " ELLERS BROKKER MYSQL SIG
  23. navn = replace(request.form("navn"), """, """")
  24. email = replace(request.form("email"), """, """")
  25. besked = replace(request.form("besked"), """, """")
  26. www = replace(request.form("www"), """, """")
  27. " VI FJERNER HTTP:// FRA WWW-FELTET
  28. www = replace(www, "http://", "")

  29. " VI UDSKIFTER < MED < Så MAN IKKE KAN BRUGE HTML
  30. navn = replace(navn, "<", "<")
  31. email = replace(email, "<", "<")
  32. besked = replace(besked, "<", "<")
  33. www = replace(www, "<", "<")


  34. strSQL = "Insert into gb ("

  35. strSQL = strSQL & "dato, "
  36. strSQL = strSQL & "ip, "
  37. strSQL = strSQL & "navn, "
  38. strSQL = strSQL & "email, "
  39. strSQL = strSQL & "www, "
  40. strSQL = strSQL & "besked) "

  41. strSQL = strSQL & "values( "

  42. strSQL = strSQL & """& Day(date) &"/"& month(date) &"-"& year(date) &"", "
  43. strSQL = strSQL & """& Request.ServerVariables("REMOTE_ADDR") &"", "
  44. strSQL = strSQL & """& navn &"", "
  45. strSQL = strSQL & """& email &"", "
  46. strSQL = strSQL & """& www &"", "
  47. strSQL = strSQL & """& besked &"")"
  48.  
  49. Conn.Execute(strSQL)

  50. " VI SENDER BRUGEREN TILBAGE TIL READ.ASP,
  51. " HVOR DEN NYE BESKED ER FREMKOMMET
  52. response.redirect "read.asp"
  53. end if

  54. " LUKKER FOR ADGANGEN TIL DATABASEN
  55. Set RS = Nothing
  56. Conn.Close
  57. Set Conn = Nothing
  58. %>

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.
Super godt :P
Oprettet af:
  Mail
23:17 14/01/2006
Nice nice. :)
Selvom jeg ikke programmere ASP, lærte jeg lidt af den. ;)
Oprettet af:
  Mail
14:45 15/01/2006
Simpel men god gæstebog :P
Oprettet af:
  Mail
19:25 20/05/2006
God artikel:D
Godt forklaret f.eks sådan en som mig som ikke rigtig kender til ASP og noget andet med hjemmeside.
Det var let at forstå!!:D
Sidst redigeret 20:25 - 15/06/2006
Oprettet af:
  Mail
20:25 15/06/2006
Simpelt vil jeg ikk kalde det meget mere simpelt i PHP
:D :D :D :D
Oprettet af:
  Mail
18:13 20/11/2006
Uhada, forstår ikke hvordan nogen kan kode ASP, syntes PHP er meget mere enkelt, men rigtig god artikel ;)
Oprettet af:
  Mail
19:10 03/12/2006
Lidt hvad jeg skulle bruge :b
Oprettet af:
  Mail
20:48 19/12/2006
ok artikel
Oprettet af:
  Mail
21:32 19/01/2007
ok artikel
Oprettet af:
  Mail
21:32 19/01/2007
lortet virker ikke
Oprettet af:
  Mail
01:31 12/01/2008
Du skal være oprettet og logget ind for at kommentere en artikel
Copyright © Rowl.dk v/ Michael Raagaard | 2005-12 | Alle rettigheder forbeholdes