Dynamiske Billeder, Image Map & XY coordinater. ASP.NET og Access Databasen.



Relaterede dokumenter
MySQL i Java. Tutorial lavet af Jákup W. Hansen TSU semester 05.januar 2007

Servlets, Tomcat & BlueJ

PHP Snippets. De små korte. Skrevet af Daniel Pedersen

Dokumentering af umbraco artikeleksport:

Databaseadgang fra Java

Umbraco installationsvejledning

Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:...

Udvikling af DOTNET applikationer til MicroStation i C#

PHP Quick Teknisk Ordbog

Lad os lave en hjemmeside. Kikker du på vil du højst sandsynligt se dette.

KOM GODT I GANG MED. Desktop Mendeley Menuen er simpel og intuitiv. I Menuen Tools finder du web importer og MS Word plugin

Programmering I Java/C#

Værktøjer fra værktøjskassen. Søren Breddam, Stevns Kommune

UPLOAD. Af Database og Website til Skolens Server

Arkitektur for begyndere

Installation af Elektronisk APV på flere PC er

Ordbøgerne.dk. Navne: Andreas Foldager og Rasmus Bjerring Pedersen Fag: IT B Lærer: Karl Bjarnason Afleveringsdato:

Tagwall med Php & MySQL

Flash Logic Free CMS. Manual og brugervejledning

Denne artikel er til dem der ønsker at vide mere om hvad CSS er og hvad CSS kan bruges til hvad angår WWW.

MS Visual Studio Basic En kort vejledning

PHP kode til hjemmeside menu.

Installationsguide til Oracle Database XE 10.2 og APEX 3.1.1

Web sider. Introduktion: Har du nogensinde spekuleret over, hvordan det verdesomspændende internet virker og hvordan man snakker med det?

FairSSL Fair priser fair support

Delphi og Databaser for begyndere

Fase Forklaring Navigation. Mappen skal indeholde alle elementer til dit site.

GRAFISK WORKFLOW. 1 Grafisk workflow

Sådan kan du sende data fra din egen hjemmeside til JitBesked via en HTML-JDF.

Vejledning til Retsinformation web services test stubs

Indledning. Hvorfor det forholder sig sådan har jeg en masse idéer om, men det bliver for meget at komme ind på her. God fornøjelse med læsningen.

The Design Diaries Project 3 2. Semester. Blog om designprincipper

AO Værktøjer. Installationsvejledning. Version 3. Version 1.0

3. PROJEKT, 2 SEMESTER

5 ARBEJDE MED EDITOREN

Installation af Oracle 10g Release 2 database

Basecamp. Garmin Zumo 350 notater

Lav dine egne hjemmesider/websider

Listen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel:

Eksempel på transformation: XML -> RTF dokument:

bedreweb.dk - Bolette Obbekær 2012 SÅDAN LÆGGER DU WORDPRESS PÅ DIT WEBHOTEL

Undervisning Version 1.0 redigering af billeder til hjemmesiden

Opret en Powerpoint præsentation automatisk med VBA

Vejledning til Teknisk opsætning

Installation. Aesiras Internet hjemmeside og webshop. Aesiras -integreret Regnskab, Handel og Internet

Sikker kode? Gennemgang af mest almindelige hacker angreb

Hosted CRM Outlook client connector setup guide. Date: Version: 1. Author: anb. Target Level: Customer. Target Audience: End User

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

Installation og Drift. Aplanner for Windows Systemer Version 8.15

Fremstilling af en hjemmeside

Hent filoplysninger fra billeder og filer

Når du har logget dig ind, ser du Randers Kommunes byvåben midt på siden. I venstre side er der en række mapper:

Manual for Synkron hjemmesider

Webteknologi evalueringsopgave Vinter Niels Sundstrup

Opsætning af Backup. Hvis programmet registreres korrekt vises nedenstående skærmbillede. Genstart herefter programmet.

Hosted CRM Outlook client connector setup guide. Date: Version: 1. Author: anb. Target Level: Customer. Target Audience: End User

Oftest stillede spørgsmål

PDFxChange. Skriv i, tegn i og udfyld dine PDF'er på skærmen. Version: Oktober 2015

Vejledning til referencehåndteringssystemet. Forsvarets Bibliotekscenter Anita Elleby

I Windows fil struktur er der følgende ting Drev, Mapper, Filer og Genveje.

Sådan logger du ind... 2 Hvilke mapper kan du tilgå... 3 Visning af eksempel af en fil... 5 Sådan deler du en fil... 7 Se hvad du deler med andre...

Transkript:

Dynamiske Billeder, Image Map & XY coordinater. ASP.NET og Access Databasen. Tutorial lavet af Jákup W. Hansen TSU 2006 22. april 2008 Hvorfor denne tutorial: Denne tutorial er ikke direkte pensum på datamatikkerskolen, og emnet kommer nok mere under avancerede grænseflade teknikker. Men motivationen er helt af personlige grunde, hvor jeg selv er meget begejstret for rige klienter og hvordan disse arbejder med serveren. Jeg tager udgangspunkt i Biograf bestilling, som jeg syns fungerer meget fint, og har selv flere gange bestilt billet igenemme et sådan system, både på færøerne og i Danmark (det er faktisk samme system begge steder). Det har fasineret mig, hvordan man kan illustrere selve bio salen med sædder hvor grønne sædder betyder frie og røde er optaget. For brugeren er det måske ikke noget specielt, fordi det føles så intuativt, og måske deri ligger min interesse, nemlig at mere intuativt for brugeren jo bedre er det. Men sådan en bio bestilling er bestemt ikke simpel, og der findes også forskellige løsninger som f.eks. Java Applets eller måske Flash. Men her vil jeg fokuser på helt almindelige billeder (gif, jpg ) og image map. For at det skal fungere, bliver jeg nød til at lave et billede dynamisk. Dvs. At billedet af bio salen skal tegnes dynamisk, fordi som tiden går, vil salen fyldes med bestilling og det må tegnes som røde sæder der hvor de var grønne før. Man kunne måske (ved ikki om det er muligt) også bruge det samme billede hele tiden, og så lade image mappen tegne sæderne. Men det er også interessant at kunne lave billedet dynamisk, fordi selve salen skal måske også kunne ændre sig, så denne fremgangsmåde vælger jeg at kikke på. Man kunne forestille sige et restaurant system hvor bordene var placeret lige som de var fysisk, og så på et sener tidspunkt så kommer der borde til, eller nogle bliver flyttet lidt, der ville det være optimalt at billedet bliver tegne ud fra nogle koordinater. Løsning nr.1: Efter at billedet er blevet tegnet med tomme og fulde sæder så skal et image map laves og knyttes til dette billede. Jeg har her IKKE valgt en dynamisk image map, fordi jeg ikke kunne finde ud af det intil nu, men måske senere. Så image mappen som jeg bruger er statisk, men det ændrer ikke på ideen, og viser hvor smart image map er. Løsning nr.2: Jeg har også lavet en anden løsning hvor x og y coordinaterne sendes til billede siden, og så tegnes det ud fra det. Denne løsning ligner den som jeg ser fra den rigtige bio.fo bestilling, og jeg kan faktis bedre li den fordi man har mere frihed. Om jeg bruger imagemap, så skal den kend på forhånd de forskellige sæder, og det er en begrensning, fordi nu kan man ikke lægge nye sæder til osv. Man kan også bruge server side image

map, men de ligner til forvegsling x y måden, hvor forskellen er at der er en image map på serveren som modtager x og y coordinaterne og de forskellige image områder så kaldes automatisk, men det kræver så at man allerede kender de forskellige områder, og hvis man ønsker mere dynamik så bliver denne måde en begrænsning. Dvs. At jeg kan bedst li, at x og y bliver sent til serveren, og så modtager serveren disse og beslutter dynamisk hvad de står for. Denne løsning bruger også en ACCESS database for at gemme bestillingerne, og dertil kan brugeren også sende sit navn med. Jeg har valgt ikke at gå vider med at lave en betalingsside hvor alle bestillingerne kommer frem, fordi jeg betragter det som en simpel opgave, og giver ikki det helt store i denne sammenhæng jeg har her. Hvad er Dynamiske billeder: Det som jeg ønsker er at billedet skal tegnes ud fra de bestilling som er lavet intil nu, og det kræver selvfølgelig et dynamisk billede. Dette billede skal så sendes til klienten, så at han kan vælge sæder som ikke er optaget. Der findes en teknik hvor man kan have et server script asp fil lave dette billede og returnere en gif eller jpg fil tilbage til klienten. Og til min overraskels så er dette faktisk ikke serligt indviklet.

Hvad er Image Map: Det er en meget smart måde at gøre clienten mere dynamisk. Et image map er faktsik bare et image, som har nogel links knyttet til sig. Dvs. At man laver ét image map med en masse små områder hvor der tilknyttes et linke. Det betyder at du kan tage et billede af f.eks. Tre huse, lave ét image map til dette billede hvor du markerer de tre huse (kan laves som cirkel, poligon eller frit område) og når så en client trykker på et af disse område med musen, så aktiveres det link som du har præciseret. Det kan således aktiveres tre forskellige links til tre forskellige områder. Smart ik?

Mappen med begge eksempler og IIS: Nedenfor kan du se 3 vinduer. Først ser du IIS som er serveren jeg bruger, og der har jeg lavet en Virtuel Stie, som peger på c:/ny mappen (måske været bedre med et andet navn for mappen, fordi de nu ligner for meget). Så ser du nedenfor igen, selve mappen med de 6 filer. En database fil og en WebConfig fil, den sidste er næsten tom, og jeg tror ikke den er nødvendig i denne sammenhæng fordi database connection bliver lavet inde i koden for hvert kald (ikke godt). Normalt bruger man config filen for at ordne connection til databasen så at den er ét sted, og så kalder metoderne i koden bare denne connection, hvor jeg laver en ny connection for læsning og en for slet o.s.v. Jeg syns det er mere pædagogisk til en tutorial at vise det sådan, men i praksis ville jeg bruge én connection. Det sidste er så et browser vindue, som viser fint hvordan systemet kører når en bruger har bestilt et sæde.

Selve databsen ser sådan ud. Jeg vil ikke gå I detaljer her, fordi billede viser det vigtigste. Men du skal huske, at muligvis får IIS ikke fat på databasen, og det kan skyldes at IIS ikke har fået rættigheder til det. Det kan du fikse ved at give den det. Der findes flere tutorials til det på nettet. Serveren: Vi skal bruge en server, fordi en dynamisk hjemmeside kræver en server, og efter som serveren også skal lave billederen dynamisk må vi have er server som kører ASP. Den server som kører ASP er IIS fra microsoft. Den følger med hvis du har Windows 2000 professionel eller XP professionel. Tror ikke at den følger med i Windows 2000 og XP, jeg tror man skal have den professionel udgave, men er ikke helt sikker. Hvis den ikke er installeret, så kan man gøre det manuelt ved tilføje den, se billede... Microsoft Visual Web Developer 2008 Express Edition: Jeg har bruge dette gratis værktøj. Det er ikke nødvendig, men det gør det lidt lettere at arbejde.

Som du kan se på billdet ovenover, så er IIS allered installeret hos mig, men hvis du ikke har den installeret, så afkrydser du bare for IIS, og så skal du (tror jeg) have CD-Rom en klar med din windows udgave, fordi den ligger på cd en. Hvis du ikke har din egen server, så kan du bruge en extern server. Jeg har prøvet med vores Datamatikker- server som ligger på www.ft.fo under navnet www.tsu.fo og det fungerer fint der også. EKSEMPEL NR.1: Jeg har brugt en fin tutorial fra nettet som udgangspunkt for den dynamiske del. Her følger linket og ejeren. Jeg bruger IKKE database i denne applikation. Creating Graphics On-The-Fly with ASP.NET By Matt Duckhouse http://www.15seconds.com/issue/020924.htm Jeg har ikke ændret i koden meget, men bare tillagt bio dele, således at det endelige resultat, både har bio og diagram delen. Læg mærke til at også diagrammet har en dynamisk image map. For at det skal være muligt for at bruge grafik on the fly, må billedet laves i en anden asp side. Dvs. At vi har asp siden som er den aktuelle som klienten kalder på og er i hele

tiden, og så er det asp siden som kun laver grafikken/billedet, og den ser brugeren/klienten ikke fordi det foregår bag kulisserne. Hoved siden er derfor bio.aspx og den siden som laver billedet heder biosal.aspx. <%@ Page Language="VB" %> bio.aspx <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <script runat="server"> </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>untitled Page</title> </head> <body> <form method="post" action="bio.aspx" > Value 1: <input type="text" name="v1" value="<%= Request("v1") %>"/><br/> Value 2: <input type="text" name="v2" value="<%= Request("v2") %>"/><br/> Value 3: <input type="text" name="v3" value="<%= Request("v3") %>"/><br/><br/> <input type="submit" value="redraw Bar Chart"/><br/><br/> </form> <script language="vb" runat="server"> Dim sngvalue1 As Single, sngvalue2 As Single, sngvalue3 As Single, sngvalue4 As Single Sub Page_Load() Try sngvalue1 = Convert.ToSingle(Request("v1")) Catch sngvalue1 = 0 End Try Try sngvalue2 = Convert.ToSingle(Request("v2")) Catch sngvalue2 = 0 End Try

End Sub </script> Try sngvalue3 = Convert.ToSingle(Request("v3")) Catch sngvalue3 = 0 End Try Try sngvalue4 = Convert.ToSingle(Request("v4")) Catch sngvalue4 = 0 End Try <img src="biosal.aspx?v1=<%= sngvalue1 %>&v2=<%= sngvalue2 %>&v3=<%= sngvalue3 %>&v4=<%= sngvalue4 %>" width='200' height='200' alt="sal" usemap ="#sal" /> <map id ="sal" name="sal"> <area shape ="rect" coords ="20,20,40,40>" sngvalue3 %>&v4=<%= 2020%>" target ="_parent" alt="række 1/Sæde 1. " /> <area shape ="rect" coords ="60,20,80,40>" sngvalue3 %>&v4=<%= 6020%>" target ="_parent" alt="række 1/Sæde 2 " /> <area shape ="rect" coords ="100,20,120,40>" sngvalue3 %>&v4=<%= 10020%>" target ="_parent" alt="række 1/Sæde 3 " /> <area shape ="rect" coords ="140,20,160,40>" sngvalue3 %>&v4=<%= 14020%>" target ="_parent" alt="række 1/Sæde 4 " />

<area shape ="rect" coords ="20,60,40,80>" sngvalue3 %>&v4=<%= 2060%>" target ="_parent" alt="række 2/Sæde 1. " /> <area shape ="rect" coords ="60,60,80,80>" sngvalue3 %>&v4=<%= 6060%>" target ="_parent" alt="række 2/Sæde 2 " /> <area shape ="rect" coords ="100,60,120,80>" sngvalue3 %>&v4=<%= 10060%>" target ="_parent" alt="række 2/Sæde 3 " /> <area shape ="rect" coords ="140,60,160,80>" sngvalue3 %>&v4=<%= 14060%>" target ="_parent" alt="række 2/Sæde 4 " /> <area shape ="rect" coords ="20,100,40,120>" sngvalue3 %>&v4=<%= 20100%>" target ="_parent" alt="række 3/Sæde 1. " /> <area shape ="rect" coords ="60,100,80,120>" sngvalue3 %>&v4=<%= 60100%>" target ="_parent" alt="række 3/Sæde 2 " /> <area shape ="rect" coords ="100,100,120,120>" sngvalue3 %>&v4=<%= 100100%>" target ="_parent" alt="række 3/Sæde 3 " /> <area shape ="rect" coords ="140,100,160,120>" sngvalue3 %>&v4=<%= 140100%>" target ="_parent" alt="række 3/Sæde 4 " />

<area shape ="rect" coords ="10,200,60,<%= 194 - sngvalue1 %>" sngvalue3 %>&v4=<%= 10%>" target ="_parent" alt="rød værdi: <%= sngvalue1 %>" /> <area shape ="rect" coords ="70,200,120,<%= 194 - sngvalue2 %>" sngvalue3 %>&v4=<%= 70%>" target ="_parent" alt="blå værdi: <%= sngvalue2 %>" /> <area shape ="rect" coords ="130,200,180,<%= 194 - sngvalue3 %>" sngvalue3 %>&v4=<%= 130%>" target ="_parent" alt="grøn værdi: <%= sngvalue3 %>" /> </map> <form method="post" action="bio.aspx" > Billet nummer: <input type="text" name="køb" value="<%= Request("v4") %>"/><br/><br/> <input type="submit" value="køb billet"/><br/><br/> </form> </body></html> biosal.aspx <%@ Page Language="VB" %> <%@ Import Namespace="System.Drawing" %> <%@ Import Namespace="System.Drawing.Imaging" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <script runat="server"> Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Dim objbitmap As New Bitmap(200, 200) Dim objgraphic As Graphics = Graphics.FromImage(objBitmap) Dim redbrush As New SolidBrush(Color.Red) Dim graybrush As New SolidBrush(Color.Gray)

Dim bluebrush As New SolidBrush(Color.Blue) Dim greenbrush As New SolidBrush(Color.Green) Dim whitebrush As New SolidBrush(Color.White) Dim blackpen As New Pen(Color.Black, 2) Dim greypen As New Pen(Color.gray, 2) objgraphic.fillrectangle(whitebrush, 0, 0, 200, 200) objgraphic.drawline(blackpen, New Point(0, 195), New Point(195, 195)) objgraphic.drawline(greypen, New Point(5, 5), New Point(5, 200)) Dim sngvalue1 As Single, sngvalue2 As Single, sngvalue3 As Single, sngvalue4 As Single sngvalue1 = Convert.ToSingle(Request("v1")) sngvalue2 = Convert.ToSingle(Request("v2")) sngvalue3 = Convert.ToSingle(Request("v3")) sngvalue4 = Convert.ToSingle(Request("v4")) objgraphic.fillrectangle(greenbrush, 20, 20, 20, 20) objgraphic.fillrectangle(greenbrush, 60, 20, 20, 20) objgraphic.fillrectangle(greenbrush, 100, 20, 20, 20) objgraphic.fillrectangle(greenbrush, 140, 20, 20, 20) objgraphic.fillrectangle(greenbrush, 20, 60, 20, 20) objgraphic.fillrectangle(greenbrush, 60, 60, 20, 20) objgraphic.fillrectangle(greenbrush, 100, 60, 20, 20) objgraphic.fillrectangle(greenbrush, 140, 60, 20, 20) objgraphic.fillrectangle(greenbrush, 20, 100, 20, 20) objgraphic.fillrectangle(greenbrush, 60, 100, 20, 20) objgraphic.fillrectangle(greenbrush, 100, 100, 20, 20) objgraphic.fillrectangle(greenbrush, 140, 100, 20, 20) If sngvalue4 = 2020 Then objgraphic.fillrectangle(bluebrush, 20, 20, 20, 20) If sngvalue4 = 6020 Then objgraphic.fillrectangle(bluebrush, 60, 20, 20, 20)

If sngvalue4 = 10020 Then objgraphic.fillrectangle(bluebrush, 100, 20, 20, 20) If sngvalue4 = 14020 Then objgraphic.fillrectangle(bluebrush, 140, 20, 20, 20) If sngvalue4 = 2060 Then objgraphic.fillrectangle(bluebrush, 20, 60, 20, 20) If sngvalue4 = 6060 Then objgraphic.fillrectangle(bluebrush, 60, 60, 20, 20) If sngvalue4 = 10060 Then objgraphic.fillrectangle(bluebrush, 100, 60, 20, 20) If sngvalue4 = 14060 Then objgraphic.fillrectangle(bluebrush, 140, 60, 20, 20) If sngvalue4 = 20100 Then objgraphic.fillrectangle(bluebrush, 20, 100, 20, 20) If sngvalue4 = 60100 Then objgraphic.fillrectangle(bluebrush, 60, 100, 20, 20) If sngvalue4 = 100100 Then objgraphic.fillrectangle(bluebrush, 100, 100, 20, 20) If sngvalue4 = 140100 Then objgraphic.fillrectangle(bluebrush, 140, 100, 20, 20) objgraphic.fillrectangle(redbrush, 10, 194 - sngvalue1, 50, sngvalue1) objgraphic.fillrectangle(bluebrush, 70, 194 - sngvalue2, 50, sngvalue2)

objgraphic.fillrectangle(greenbrush, 130, 194 - sngvalue3, 50, sngvalue3) Response.ContentType = "image/gif" objbitmap.save(response.outputstream, ImageFormat.Gif) End Sub </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>untitled Page</title> </head> <body> </body></html>

EKSEMPEL NR.2: Her bruger jeg Access databasen. Og det er tale om de to andre filer bioxyaccess.aspx og biosalxyaccess.aspx. Og måske også web.config filen. Og så selvfølgelig AccessTSU.mdb. bioxyaccess.aspx <script language="vb" runat="server"> Dim xtiltegner As Single, ytiltegner As Single, navn As String Sub Page_Load() 'først gang, må x og y sættes til 0. ellers går det galt. Derfor denne her jeg lavet denne load. Try xtiltegner = Request("coords.x") ytiltegner = Request("coords.y") navn = Request("firstname") Catch xtiltegner = 0 ytiltegner = 0 navn = "Catch" End Try End Sub </script> Denne form kalder sig selv, og derfra får den så x og y tallen fra brugerens mus. Disse tal sendes så vider til billede aspx filen. Dvs. at der er to kald til serveren når brugeren trykker på billedet, et til sig selv og et til billede siden. <html> <head> <title> Jakup Bio hvor du kan bestille biograf sæder</title> </head> <body> <form method="get" action="bioxyaccess.aspx"> <div>skriv dit navn her</div> <p><input type="text" name="firstname" value="<%= navn %>" /> </p> <p><input type="image" src="biosalxyaccess.aspx?personnavn=<%= navn %> &sendx=<%= xtiltegner %> &sendy=<%= ytiltegner %> " name="coords" alt="tryk på det sæde som du ønsker at bestille"/> </p> </form> </body>

</html> Du har valgt følgende koordinater: x = <%=xtiltegner%> og y = <%=ytiltegner%> og navn = <%=navn%> <p></p> Når du har valgt over 10 sæder vil alle sæder blive fjernet, og du kan starte på ny. <script language="vb" runat="server"> </script> biosalxyaccess.aspx <%@ Page Language="VB" %> <%@ Import Namespace="System.Drawing" %> <%@ Import Namespace="System.Drawing.Imaging" %> <%@ Import Namespace="System.IO" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace= "System.Data.SqlClient"%> <%@ Import Namespace="System.Data.OleDb" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <script runat="server"> </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head id="head1" runat="server"> <title>untitled Page</title> </head> <body> </body> </html> <script runat="server"> Dim objbitmap As New Bitmap(200, 200) Dim objgraphic As Graphics = Graphics.FromImage(objBitmap) Dim redbrush As New SolidBrush(Color.Red) Dim graybrush As New SolidBrush(Color.Gray)

Dim bluebrush As New SolidBrush(Color.Blue) Dim greenbrush As New SolidBrush(Color.Green) Dim whitebrush As New SolidBrush(Color.White) Dim blackpen As New Pen(Color.Black, 2) Dim greypen As New Pen(Color.Gray, 2) Dim xvalue As Single, yvalue As Single, BestillerPerson As String Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) objgraphic.fillrectangle(whitebrush, 0, 0, 200, 200) objgraphic.drawline(blackpen, New Point(0, 200), New Point(200, 200)) objgraphic.drawline(greypen, New Point(0, 0), New Point(0, 200)) objgraphic.drawline(blackpen, New Point(200, 200), New Point(200, 0)) objgraphic.drawline(blackpen, New Point(0, 0), New Point(200, 0)) objgraphic.drawline(blackpen, New Point(10, 10), New Point(190, 10)) xvalue = Request("sendx") yvalue = Request("sendy") BestillerPerson = Request("personnavn") Dim teller As Integer teller = 20 While (teller < 160) objgraphic.fillrectangle(greenbrush, teller, 20, 20, 20) objgraphic.fillrectangle(greenbrush, teller, 60, 20, 20) objgraphic.fillrectangle(greenbrush, teller, 100, 20, 20) teller = teller + 40 End While Dim teller2 As Integer teller2 = 20 While (teller2 < 160) If xvalue > teller2 And xvalue < teller2 + 20 And yvalue > 20 And yvalue < 40 Then objgraphic.fillrectangle(bluebrush, teller2, 20, 20, 20)

If xvalue > teller2 And xvalue < teller2 + 20 And yvalue > 60 And yvalue < 80 Then objgraphic.fillrectangle(bluebrush, teller2, 60, 20, 20) If xvalue > teller2 And xvalue < teller2 + 20 And yvalue > 100 And yvalue < 120 Then objgraphic.fillrectangle(bluebrush, teller2, 100, 20, 20) teller2 = teller2 + 40 End While hentfradatabase() Response.ContentType = "image/gif" Response.AppendHeader("sæde", "A1") If (xvalue <> 0 And yvalue <> 0) Then gemtildatabase(xvalue, yvalue, BestillerPerson) objbitmap.save(response.outputstream, ImageFormat.Gif) End Sub </script> <script runat="server"> ' HUSK: det er en MS SQL Database og IKKE en MySQL database vi bruger...jeg tror at vi også ' kan bruge en Access database med denne her "sqlconnection". Sub gemtildatabase(byval xtekst As String, ByVal ytekst As String, ByVal navn As String) Dim strconnection As String Dim strsql As String Dim objconnection As OleDbConnection Dim objcommand As OleDbCommand ' strconnection = "Provider=Microsoft.Jet.OLEDB.4.0; Data

Source=AccessTSU.mdb" strconnection = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:/ny/AccessTSU.mdb" objconnection = New OleDbConnection(strConnection) objconnection.open() strsql = "INSERT INTO jakupbio (x,y, BestillerNavn) VALUES ('" + xtekst + "','" + ytekst + "','" + navn + "')" objcommand = New OleDbCommand(strSQL, objconnection) objcommand.executenonquery() objconnection.close() End Sub Sub deletefradatabase() Dim strconnection As String Dim strsql As String Dim objconnection As OleDbConnection Dim objcommand As OleDbCommand strconnection = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:/ny/AccessTSU.mdb" objconnection = New OleDbConnection(strConnection) objconnection.open() strsql = "DELETE FROM jakupbio" objcommand = New OleDbCommand(strSQL, objconnection) objcommand.executenonquery() objconnection.close() End Sub Sub hentfradatabase() Dim deleteteller As Integer deleteteller = 0 ' hvis den bliver større end 11, så skal alt slettes. Dim strconnection As String Dim strsql As String Dim objconnection As OleDbConnection Dim objcommand As OleDbCommand Dim r As OleDbDataReader strconnection = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:/ny/AccessTSU.mdb" objconnection = New OleDbConnection(strConnection) objconnection.open() strsql = "SELECT x,y FROM jakupbio" objcommand = New OleDbCommand(strSQL, objconnection) r = objcommand.executereader() While r.read() deleteteller = deleteteller + 1

Dim xeren As String = r("x") Dim yeren As String = r("y") Then Then Then Dim teller3 As Integer teller3 = 20 While (teller3 < 160) If xeren > teller3 And xeren < teller3 + 20 And yeren > 20 And yeren < 40 objgraphic.fillrectangle(bluebrush, teller3, 20, 20, 20) If xeren > teller3 And xeren < teller3 + 20 And yeren > 60 And yeren < 80 objgraphic.fillrectangle(bluebrush, teller3, 60, 20, 20) If xeren > teller3 And xeren < teller3 + 20 And yeren > 100 And yeren < 120 objgraphic.fillrectangle(bluebrush, teller3, 100, 20, 20) teller3 = teller3 + 40 End While End While r.close() objconnection.close() If (deleteteller > 10) Then deletefradatabase() End Sub </script> <configuration> web.config </configuration>

Her jeg vist ovenover et sted... AccessTSU.mdb Det var så denne tutorial. Håber at den kan bruges, og jeg forventer selv at vende tilbage til den når jeg snart har glemt hvordan man gjorde image map og dynamiske billeder, og muligvis også forbindels til en Access database fra.net. Tak for denne gang. Jákup Wenningstedt Hansen.