Databaser på webben. Revision 5 2000-12-04. Johan Näsholm, johan@nasholm.com



Relevanta dokument
Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet

Karlstads Universitet, Datavetenskap 1

Innehåll. MySQL Grundkurs

Avancerade Webbteknologier

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

Lektion 5 HTML, CSS, PHP och MySQL

Webbsidor och webbservrar

FrontPage Express. Ämne: Datorkunskap (Internet) Handledare: Thomas Granhäll

Introduktion HTML och PHP 732G16 Databaser design och programmering

Nya webbservern Dvwebb.mah.se

Webbprogrammering. Introduktion till PHP. Christian Ohlsson

TNMK30 Elektronisk publicering HT 2014 Laboration 5: PHP och MySQL

Programmeringteknik. Planering MÅL LABB: MOMENT LAB4 HTML - EXEMPEL HTML. Webbdelen

Programbeskrivning. Chaos på Web. Version

Olika slags datornätverk. Föreläsning 5 Internet ARPANET, Internet började med ARPANET

Installera din WordPress med 9 enkla steg

Skapa din egen MediaWiki

Innehåll. PHP Grundkurs. Introduktion till PHP. Kurslitteratur. Webbserver. Lite historik. PHP Grundkurs 1

Introduktion till MySQL

Kort om World Wide Web (webben)

Du skall naturligtvis visa körexempel med output där det behövs i din rapport!

Webbservrar, severskript & webbproduktion

Användarhandledning Version 1.2

F8 Webbteknologier 1. Dynamiska webbsidor

F06 A table form Dagens agenda

Kapitel 4 Arkivmenyn Innehåll

Labora&on 8 Formulär övningar/uppgi6er

Webbprogrammering - 725G54 PHP. Foreläsning II

Innehåll. Dokumentet gäller från och med version

Hemsideutveckling för Anjool AB

Webbens grundbegrepp. Introduktion till programmering. Ytterligare exempel. Exempel på webbsida. Föreläsning 5

Manual för din hemsida

Startanvisning för Bornets Internet

Introduktion till användning av linux-servern sledge och några övningsuppgifter

FactoryCast HMI. Premium & Quantum PLC. MySQL Server och FactoryCast HMI databastjänst

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

Introduktion till PHP

Laboration 1 Introduktion till Visual Basic 6.0

emopluppen Installationsmanual

Användarmanual för Hemsida

WebViewer Manual för administratör Nova Software AB

Manual för Typo3 version 4.2

Gör en modern släktbok för CD eller webben

emopluppen Användning av "Ant" Niklas Backlund Version: 1.4 ( 2002/04/26 07:27:52 UTC)

Instruktioner. Innehåll: 1. Vad är Kimsoft Control (SIDA 2) 3. Hem (SIDA 2)

Användarmanual TextAppen Online

Elektronisk publicering TNMK30

Denna laboration skapades för elever vid Roslagens Högskola men kan användas av vem som helst. Namnen på servrarna måste i så fall ändras.

Widgetguiden Vad är Publits widgetshop?

Hur formuläret är ifyllt

Webbprogrammering. Sahand Sadjadee

TeamViewer Installation och användning

Installationsguide för mysql och OLA Server/OLA Klient

Författare Version Datum. Visi System AB

KARLSTADS UNIVERSITETSBIBLIOTEK

OBS!!! Anslut ej USB kabeln till dator eller GPS innan du först har installerat drivrutinerna för USB kabeln i din dator.

Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.

Introduktion till programmering

INSTALLATION AV KLIENT

Installation av VDI för PC TIPS! Skriv ej ut använd hellre ipad. Nya lathundar publiceras regelbundet Version 1.0

Att arbeta med. Müfit Kiper

Kom igång med TIS-Office

Zimplit CMS Manual. Introduktion. Generell Information

ALEPH ver. 16 Introduktion

Guide för kunder med Nordea e-legitimation

Tabeller. Lektion 7. en tabellrubrikcell som centrerad och i fetstil.

HTML. Introduktion till HyperText Markup Language

WP-Edit. Robin Larsson Martin Davik. Examensarbete, grundnivå, 15 hp Datavetenskap Internetteknologprogrammet

Labb LIVE. Exempelkod från föreläsningen. Plushögskolan Frågeutveckling inom MSSQL - SU14

SKYPE uppkoppling under SAAF årsmötet.

Laboration med Internet och HTML

AVCAD 4.0 för Windows

Installationsmanual ImageBank 2

TDP013 Node.js, JSCoverage, Mocha. Marcus Bendtsen Institutionen för Datavetenskap

FLEX Personalsystem. Uppdateringsanvisning

Användarhandledning Plancenter Admin version 2011

DGC IT Manual Citrix Desktop - Fjärrskrivbord

SNABBGUIDE för Windows Media Encoder (media kodaren) - Sänd live med din webbkamera

PHP-presentation Dataföreningens Open Source-nätverk

Lathund - Redaktörer

2I1070 Lektion 2 Servlets och databaskopplingar Internetprogrammering 2I1049 Treskiktsarkitektur Klient-server med servlets

För att öppna galleriet, ange adressen

Innehåll MySQL Intro. Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata

Karlstads universitetsbibliotek

Laboration 2 Datorverktyg vid LiU

Laboration 1: Arbeta med formulär och strängarhantering

INSTALLATION AV KLIENT

Lathund för Novell Filr

Vilken version av Dreamweaver använder du?

L04.1 Marodören. Inledning. Mål. Genomförande. Uppgift 1 Hello World. Moment I

NU! NU! Bygg en webbplats NU! Bygg en webbplats. Swedish Language Edition published by Docendo Sverige AB. Bygg en webbplats.

Miljön i Windows Vista

E-posthantering med Novell Groupwise WebAccess

729G28. Webbprogrammering och databaser. Introduktion till webbutveckling med PHP. Jakob Pogulis Institutionen för Datavetenskap (IDA)

Om include-filer i PHP

EndNote online T5 hösten Camilla Persson

SORSELE KOMMUN. Handbok OEW. 28 sept 2012 Mari-Anne Englund Barbro Olofsson. Sorsele kommun Version , rev (19)

Spara papper! Skriv inte ut sammanfattning utan ladda ner PDF!

12 Webb och kurshemsidor

CMS. - Content management system

Transkript:

1 (8) Databaser på webben Revision 5 2000-12-04 Johan Näsholm, johan@nasholm.com Den senaste versionen av detta dokumentet finns på www.nasholm.com/docs/dbweb.pdf Syftet med denna skrift och den därtill hörande föreläsningen är att ge en kort introduktion till de tekniker som används för att koppla en databas till webben. Tanken är att den intresserade skall få en fingervisning om hur det går till och var man kan börja leta någonstans ifall man vill provköra på sin egen dator. I exemplet beskrivs programvara för Linux (inkluderat andra UNIX-dialekter) samt Windows. Efter en kort presentation av de ingående delarna skall vi ta en titt på något som heter PHP. Tekniken För att koppla en databas till webben behöver man följande (förutom en dator att köra det hela på) En databas En webbserver Ett scriptspråk med stöd för att prata med databasen Vi skall nu gå igenom de olika delarna och se vad dessa gör. Databasen Vad databasen har för funktion borde vara klart vid det här laget. Om vi gör en webbapplikation kan vi använda mysql som är en lättanvänd relationsdatabas. Detta är en svenskutvecklad databas som är helt gratis så länge som man inte säljer lösningar baserade på denna (då får man betala en licensavgift). Databasen finns för både Linux/UNIX/MacOS X och Windows. Källkoden är fri att ladda hem. Binärfiler (färdigkompilerade program) finns till de flesta plattformarna för de som inte vill kompilera själva. Webbservern Webbservern har normalt till uppgift att svara på HTTP-förfrågningar. Med tillägg till servern kan man få denna att exekvera programkod på en sida innan denna levereras till klienten (se nedan). Apache är en gratis webserver med öppen källkod. Apache finns till samma plattformar som mysql och är den vanligaste servern för detta ändamålet på Internet. Precis som med mysql finns binärer att hämta hem. Scriptspråket Den teknik jag skall beskriva här heter PHP som står för PHP: Hypertext Preprocessor (enligt manualen). Med PHP kan man skapa dynamiska HTML-sidor vilket är lite av en förutsättning eftersom innehållet i databasen förändras hela tiden. Ett serverscript fungerar som ett vanligt program. Det får sin indata från någonstans (t.ex. användaren) och producerar utdata. Skillnaden mellan ett serverscript och ett vanligt program är att serverscriptets utdata inte skrivs ut på skärmen direkt utan skickas till klienten. Oftast tolkar klienten den data den får som HTML-kod som skall ritas ut i klientens webbläsare men vi kan skicka vilken data som helst från ett serverscript. PHP har inbyggt stöd för att prata med ett flertal databaser, däribland mysql. Vi skall nu göra en djupdykning i PHP.

2 (8) Crash-course i PHP Vi börjar med att titta på hur det hela fungerar med ett exempel. Figuren nedan beskriver vad som händer när en klient skickar en begäran (http://www.min.server.com/test.php) till servern. Webbläsare 1 Webbserver (Med PHP) 2 test.php 5 4 3 PHP-tolk 1. Klienten (Netscape/Explorer/ ) skickar en HTTP-begäran 2. Webservern läser in den begärda filen (test.php) 3. En PHP-tolk får nu exekvera den kod som finns i filen. Eventuellt kommer mysql att blandas in ifall filen innehåller en SQL-fråga. Resultatet blir en HTML-fil 4. som returneras till servern 5. som i sin tur levererar den till klienten. Utseendet på en PHP-sida Ett dokument som innehåller PHP-kod som skall tolkas skall ha filändelsen.php. I filen kan man blanda både HTML och PHP. Hello World i PHP kan t.ex. se ut som: <? echo Hello World ;?> Innanför taggarna <? och?> skriver man PHP-koden. I exemplet ovan skrivs textsträngen Hello World ut i HTML-dokumentet. Den sida som klienten får kommer att med koden ovan att se ut så här: Hello World Klienten ser alltså inte att PHP har varit inblandat. Den vanliga HTML-kod som står utanför <??> kommer att skickas oförändrad till klienten. Det som echo skriver ut kan vara vanlig text som ovan, men också HTML-taggar. Vi skulle kunna skriva PHP-filen som echo "Hello World"; Vi skall nu titta på följande: Kort genomgång av HTML Formulär i HTML PHP & insättning i databas Sökning i databas samt utskrift i HTML-tabell Dynamiska formulär

3 (8) Kort genomgång av HTML Ett HTML-dokument består av ett antal styrkoder ( taggar ). De har det generella utseendet <NAMN> </NAMN>. <NAMN> talar om att all text härefter skall påverkas av taggen NAMN. Taggarna kan bestämma att texten skall vara fet, kursiv, mm. Taggen </NAMN> avslutar föregående starttagg. Ett HTML-dokument har följande struktur: <TITLE>Dokumenttitel</TITLE> Hello world! Denna HTML-kod skulle skapa sidan till höger. Formulär i HTML Ett HTML-formulär används när man vill att användaren skall mata in något (t.ex. sökningsfältet i AltaVista). Ett formulär består av ett antal inmatningsceller (kryssrutor, radioknappar, textfält, popupmenyer, ) samt en "submit"-knapp. När man klickar på denna knappen överförs informationen i formuläret till webbservern. HTML-koden för ett formulär kan se ut som följer <TITLE>Dokumenttitel</TITLE> <FORM action="addperson.php" method="post"> Skriv in ditt namn: <INPUT TYPE="text" NAME="name"> <P><INPUT TYPE="submit" NAME="Submit" VALUE="Lägg till"> </FORM> När man skapar ett formulär så får man ange vad som skall hända när användaren klickar på "submit"- knappen. I formuläret ovan kommer webbklienten att anropa PHP-sidan addperson.php. Informationen i formuläret kommer att föras över med metoden POST så vi kan läsa av denna i PHP-koden. Det finns en annan metod för att föra över informationen. Det heter GET och det är den som AltaVista använder (all information dyker upp i URL:en i fönstret). INPUT-taggen talar som att vi vill ha en inmatningscell. TYPE talar om vilken typ den skall ha. Ovan har vi som synes ett textfält, så TYPE är "text". På nästa sida finns exempel på andra typer.

4 (8) <TITLE>Dokumenttitel</TITLE> <FORM action="" method="post"> <P>text<BR> <INPUT TYPE="text" NAME="" VALUE="" SIZE=30> <P>password<BR> <INPUT TYPE="password" NAME="" VALUE="" SIZE=30> <P>textfield<BR> <TEXTAREA NAME="" ROWS=7 COLS=27></TEXTAREA> <P>radio<BR> <INPUT TYPE="radio" NAME="" VALUE="value">Med salami<br> <INPUT TYPE="radio" NAME="" VALUE="value">Utan salami <P>checkbox<BR> <INPUT TYPE="checkbox" NAME="" VALUE="value">Bananer<BR> <INPUT TYPE="checkbox" NAME="" VALUE="value">Äpplen <P>popup<BR> <SELECT NAME=""> <OPTION SELECTED>Ole <OPTION>Dole <OPTION>Doff </SELECT> <P><INPUT TYPE="submit" NAME="" VALUE="Lägg till"> <INPUT TYPE="reset" VALUE=" Nolla "> </FORM> Ett formulär kan skapas i en HTML-sida men vi kan naturligtvis skapa ett formulär dynamiskt ur en PHP-sida. I en webbshop kan det vara önskvärt att kunden kan få en meny över alla varukategorier vid sökning. Denna meny skulle vara resultatet av en fråga till databasen och en utskrift (i formulärform) av svaret.

5 (8) PHP & insättning i databas I exemplet använder vi en databas som innehåller en tabell med räknare. En räknare har ett namn och ett värde. Användaren har fyllt i ett räknarnamn och ett startvärde i ett formulär och vi vill nu skapa en ny räknare i databasen baserad på den information denne matade in. Formuläret ser ut som följer: <FORM action="addcounter.php" method="post"> <H3>Lägg till ny räknare</h3> Namn <INPUT TYPE="text" NAME="cname" VALUE="" SIZE=30> <P>Startvärde <INPUT TYPE="text" NAME="cval" VALUE="" SIZE=30> <P><INPUT TYPE="submit" NAME="Submit" VALUE=" OK "> <INPUT TYPE="reset" VALUE=" Rensa "> </FORM> Notera de namn vi gett de bägge textfälten, vi kommer snart tillbaka till dem. När användaren klickar på "OK" kommer sidan addcounter.php att anropas. Vi skall nu göra följande: Läs av formuläret Skapa koppling till databasen Skapa SQL-sträng för insättning Utför insättning Stäng databasen Filen "addcounter.php" har följande utseende. Du behöver inte förstå all PHP-kod, det räcker att du är med på vad de olika blocken nedan gör). <TITLE>Skapa ny räknare</title> Detta är vanlig HTML-kod. I ett PHP-dokument kan vi blanda friskt. <? Den här taggen talar om att PHP-koden börjar. echo "<H3>Lägger in räknaren $cname i databasen...</h3>"; $connid = mysql_pconnect ("localhost", "pelle", "sdk43kdo"); mysql_select_db("counterdb, $connid); $SQL = "INSERT INTO Counters VALUES ('$cname, $cval) ; mysql_query($sql, $connid); mysql_close($connid); Skriv ut en titel. Notera att vi kan skriva ut HTMLtaggar på detta sättet. $cname är en variabel som vi får från formuläret. På samma sätt har vi automatiskt en variabel $cval med värdet från formuläret. Alla variabelnamn inleds med dollartecken. Här skapar vi en förbindelse till databashanteraren. De tre parametrarna är namnet på datorn databasen körs på samt användarnamn och lösenord för att koppla upp oss. Variabeln $connid är en referens till vår databasanslutning. Välj databasen CounterDB. I mysql kan man hantera flera olika databaser med samma databashanterare. Skapa en INSERT-sats. $SQL är en textsträng (som kunde heta vad som helst). Om vi skrev "Kalle" och 42 i formuläret så blir strängen INSERT INTO Counters VALUES ('Kalle', 42) Utför SQL-strängen. Stäng förbindelsen.

6 (8)?> Här slutar PHP-koden. Och till sist har vi lite avslutande HTML-kod. Sökning i databas samt utskrift i HTML-tabell I detta exemplet skall vi söka upp alla räknare och deras värden samt skriva ut dessa i en HTML-tabell. Vi skall Skapa koppling till databasen Skapa SQL-sträng (SELECT * ) Utför SQL-sträng Skriv ut svar Stänga databasen I PHP ser detta ut så här <TITLE>Sökning i databasen</title> <H3>Nu söker vi upp alla räknare...</h3> Detta är vanlig HTML-kod. I ett PHP-dokument kan vi blanda friskt. <? Den här taggen talar om att PHP-koden börjar. $connid = mysql_pconnect ("localhost", "pelle", "sdk43kdo"); mysql_select_db("counterdb", $connid); Här skapar vi en förbindelse till databasen på samma sätt som tidigare. $SQL = "SELECT * FROM Counters" $queryid = mysql_query($sql, $connid); if (mysql_num_rows($queryid) > 0) { echo "Vi har följande räknare i databasen:"; echo "<TABLE>"; while ($row=mysql_fetch_array($queryid)) { Skapa en SELECT-sats. Skicka SQL-strängen till databasen. Variabeln $queryid är en referens till SQL-operationen. Vi behöver den för att gå igenom de rader vi får i svaret. Kolla ifall vi fick några rader i svaret. Först skriver vi ut lite vanlig HTML-kod som skapar en tabell. "Gå igenom alla rader i svaret" echo "<TR>"; Skriv ut en tagg som skapar en ny rad i tabellen echo "<TD>"; Skapa en ny kolumn i tabellen echo $row["name"]; Skriv ut namnet på den aktuella räknaren. Kom ihåg att "name" kommer ifrån tabellen Counters. echo "</TD>"; Avsluta kolumnen echo "<TD>"; Skapa en ny kolumn och skriv ut "val" echo $row["val"]; echo "</TD>"; Slut på kolumnen och raden echo "</TR>"; } Slut på while-slingan. Ansluta tabellen echo </TABLE> ; } Slut på if-satsen mysql_close($connid); Stäng databasen.?> Och till sist har vi lite avslutande HTML-kod.

7 (8) Resultatet kan te sig så här: <TITLE>Sökning i databasen</title> <H3>Nu söker vi upp alla räknare...</h3> <TABLE> <TR><TD>Kalle</TD><TD>42</TD></TR> <TR><TD>Pelle</TD><TD>36</TD></TR> <TR><TD>Nisse</TD><TD>36</TD></TR> </TABLE> Dynamiska formulär Dessa två exemplen kan man slå samman till en PHP-sida som skapar ett formulär med en meny innehållande alla räknare som finns i databasen. Formulärets "action" är PHP-sidan själv. När man klickar på "submit"-knappen så tas den valda räknaren bort ur databasen och sen skrivs formuläret ut igen. Detta kan vi genom att kolla ifall vi fick en räknare som parameter och i så fall ta bort den. Oavsett vilket så skapar vi ett formulär innehållande alla räknare. Detta skulle kunna se ut så här (vi kallar filen för "delete.php"): Detta är vanlig HTML-kod. <TITLE>Sökning i databasen</title> <H3>Lista alla räknare</h3> <? Den här taggen talar om att PHP-koden börjar. $connid = mysql_pconnect ("localhost", Koppla upp. "pelle", "sdk43kdo"); mysql_select_db("counterdb", $connid); if (is_set($meny)) { $SQL = "DELETE FROM Counters WHERE Name = '$meny'"; mysql_query($sql, $connid); } $SQL = "SELECT * FROM Counters"; $queryid = mysql_query($sql, $connid); if (mysql_num_rows($queryid) > 0) { echo "<FORM action='delete.php' method='post'>"; echo "<SELECT NAME='meny'>"; while ($row = mysql_fetch_array ($queryid)) { echo "<OPTION>"; echo $row["name"]; } echo "</SELECT>"; Kolla ifall användaren valde en räknare. Variabeln $meny förklaras nedan. Skapa en DELETE-sats. Utför SQL-satsen. Skapa en SELECT-sats. Kolla ifall vi fick några svar. Nu skapar vi ett formulär som postas till sidan delete.php (den här sidan). I formulären lägger vi en popup-meny med namnet meny. Detta gör att vi automatiskt får en variabel $meny när formuläret postas. Det är den variabeln som används ovan i DELETE-satsen. Gå igenom alla rader i svaret och skapa ett menyval per rad. Variabeln $meny kommer att sättas till namnet på den räknare användaren valde. Avsluta listan.

8 (8) echo "<INPUT TYPE='submit'>"; echo "</FORM>"; } Lägg in en submit-knapp i formuläret. Och avsluta formuläret samt HTML-sidan.?> Mer än bara databaser Med PHP kan du göra mycket mer än bara hantera databaser och HTML. Du kan använda PHP för att skapa bilder dynamiskt. Routes Country X Y Town Laos 242 547 Houay Xai Laos 367 569 Luang Prabang Laos 366 642 Vang Vieng Laos 295 477 Luang Nam Tha I exemplet ovan har vi klippt ut en liten del av en stor karta och lagt in en resväg som lagrats i databasen. PHP kan även hantera filer, strängar, objektorientering filöverföringar med FTP, trådar och synkronisering med mera. Man kan skapa PDF-dokument med PHP, man kan utföra avancerade beräkningar med PHP. Manualen på nästan sjuttio kapitel beskriver allt utförligt. Applikationer med PHP Vad kan man då göra med PHP? Svaret är att enbart fantasin sätter gränser. Med informationen ovan har du det mesta av den kunskap som behövs för att skapa en egen webbshop, ett diskussionsforum, ett dokumenthanteringssystem, en sajt med receptsamlingar. Eller en sajt till din spännande resa. På www.nasholm.com/asien finns en resesajt jag gjorde till några kompisar för deras Asien-resa. Källkoden är fri och går att ladda hem. Till slut Förhoppningsvis har du nu fått ett hum om hur denna teknik fungerar. Mitt råd är att installera Apache med PHP och experimentera friskt. Hur installationen går till finns det inte plats till att beskriva här, men jag kan rekommendera sajterna nedan. Lycka till! Länkar Apache mysql PHP Allmänt om utveckling för webben www.apache.org www.tcx.se www.php.net (Hemsidan för PHP med källkod och binärer) www.zend.com (Zend är motorn i PHP, artiklar och exempelkod) www.phpubilder.com (Artiklar, forum och exempelkod) ps.sklar.com (Mer exempelkod) hotwired.lycos.com/webmonkey/ Böcker Beginning PHP Programming, Wrox Author Team; ISBN: 1861003730 Professional PHP Programming, Chris Scollo; ISBN: 1861002963 MySQL and PHP from Scratch, Wade Maxfiled; ISBN: 0789724405 Detta är enbart ett axplock av de 15 böcker jag hittade på bol.se. Jag har inte läst någon av dem så jag kan inte ge några lästips.