MySQL-database, php. Innhold. 8 MySQL-database, php. 8.1 Databasen MySQL



Like dokumenter
1. SQL datadefinisjon og manipulering

1. Innføring i bruk av MySQL Query Browser

som blanker skjermen (clear screen). Du får en oversikt over alle kommandoene ved å skrive,

Tilkobling og Triggere

Eksamen i Internetteknologi Fagkode: IVA1379

HØGSKOLEN I SØR-TRØNDELAG

>>12 Arbeide med MySQL

Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

MySQL. Historikk. Nedlasting og installasjon

En lett innføring i foreninger (JOINs) i SQL

Oppgaver Oppgave a: Sett opp mulige relasjoner

Databaser kort intro. Tom Heine Nätt

>>21 Datamodellering i MySQL Workbench

Innstallasjon og oppsett av Wordpress

Eksamen i Internetteknologi Fagkode: ITE1526

Velkomment til å installere BAS21

HØGSKOLEN I SØR-TRØNDELAG

Bli Kjent med Datamaskinen Introduksjon ComputerCraft PDF

Controller Brukerstøttedatabase Ottar Holstad/Cantor 09.

1. Relasjonsmodellen Kommentarer til læreboka

Kjøre Wordpress på OSX

Datamodellering og databaser SQL, del 2

Oppgave 1 (Opprett en database og en tabell)

Her skal du lære å programmere micro:biten slik at du kan spille stein, saks, papir med den eller mot den.

HØGSKOLEN I SØR-TRØNDELAG

Datamodellering og databaser SQL, del 2

Datamodellering og databaser SQL, del 2

Applikasjonsutvikling med databaser

Høgskolen i Telemark EKSAMEN 6102 DATABASER Tid: Hjelpemidler: Vedlegg: Eksempeldata til oppgave 1

Prosedyrer. Lars Vidar Magnusson. October 26, Lars Vidar Magnusson () Forelesning i DAS October 26, / 19

1. SQL spørringer mot flere tabeller

Løsningsforslag til eksamen i IN2090 Databaser og datamodellering og INF1300 Introduksjon til databaser 6. desember :30 18:30 (4 timer)

Flytte Lønn 5.0 fra SQL 2000 til SQL 2005 / 2008

En liten oppskrift på hvordan jeg installert og fikk Xastir til å virke sånn at jeg ble synlig i APRS verden.

SQL Structured Query Language. Definere tabeller Skranker Fylle tabeller med data

Brukerveiledning for Admin i FEBDOK versjon 6.0

Hvordan setteopp en wordpress site med wampserver. Lokal site på din pc.

og Java

Planlegge og starte et møte. MeetAt Datamøte

VMware Horizon View Client. Brukerveiledning for nedlasting, installasjon og pålogging for fjerntilgang

Phone Assistant. Arne-Jørgen Auberg

Lotus Traveler - Manual for installasjon

Bruker- dokumentasjon. for. Norsk Kompetanseregister

Repetisjon: Normalformer og SQL

Del 3: Noark 5-basert databasestruktur

Kursdeltakere som ønsker å bruke leksjonene f.eks til undervisning eller kursformål må ta direkte kontakt med forfatter for nærmere avtale.

Kapittel 11. Databasesikkerhet

Compello Fakturagodkjenning Versjon 10 Software as a service. Tilgang til ny modulen Regnskapsføring

Sensorveiledning for IN2090 og INF desember :30 18:30 (4 timer)

1 E-post og web-browsere

Compello Fakturagodkjenning Versjon 10.5 As a Service. Tilgang til Compello Desktop - Regnskapsføring og Dokument import

Eksamen i IBE102 Webutvikling Våren 2017.

1. NetBeans IDE: Lage en enkel mobilapplikasjon

Gå til Nedlastninger på menylinjen for Visma Skolelisens og velg Visma Lønn versjon 9.5.

Opus Dental 7.1 Oppdateringsveiledning

Installasjonsveiledning PowerOffice SQL

Administrasjon av FLT-Sunnhordland Web-side

Integritetsregler i SQL

Dette dokumentet er en produktrapport for vårt avsluttende hovedprosjekt våren 2008 ved høgskolen i Oslo, for ingeniør - avdelingen.

Hvordan gjøre fjernhjelp til noen som ønsker hjelp med Hageselskapets portal? Av Ole Petter Vik, Asker Versjon

HOVEDPROSJEKT HIO IU - DATA FORPROSJEKTRAPPORT GRUPPE 18

Timer. Før du starter å bruke programmet må du gjøre følgende.

Installasjonsveiledning

Ekvivalente stier (Equivalence of Path, EOP) i storm

Integritetsregler i SQL. Primærnøkler

EKSAMEN 6102 / 6102N DATABASER

Installere programmer, og filhåndtering

notater Gule lapper Mine Et praktisk eksempel med objekter IT2 Læreplansmål Gløer Olav Langslet Sandvika VGS

Å lage Noark 4 uttrekk selv. Thomas Sødring thomas.sodring@jbi.hio.no /

SQL Server guide til e-lector

Medlemshåndtering eroom

Brukerveiledning digital eksamen via WISEflow

Brukerveiledning digital eksamen via FLOWlock

1 Pakkesystemet i Debian-distribusjonen. Innhold. 1.1 Innledning

KOM I GANG MED WORDPRESS En enkel guide for å hjelpe deg gjennom det grunnleggende i Wordpress

Installasjonsveiledning Visma Avendo, versjon 5.2

Administrering av SafariSøk

Romlig datamanipulering

Hangman. Level. Introduksjon

Kortversjon av brukerdokumentasjon Solman

Installasjonsveiledning

Installasjonsveiledning

SQL: Datatyper m.m. Evgenij Thorstensen V18. Evgenij Thorstensen SQL: Datatyper m.m. V18 1 / 12

Kort brukerveiledning- publisering på nett EpiServer CMS6... 1

Installasjonsveiledning

SPSS Høgskolen i Innlandet

2. Beskrivelse av installasjon av SQL Server 2005 og hvordan lage databasen som trengs av administrasjonsprogrammet:

1. SQL server. Beskrivelse og forberedelse til installasjon

Steg 1: Vår første datamaskin

Produktdokumentasjon. Madison Møbler Administrasjonsside og Nettbutikk

BRUKERMANUAL. Telsys Online Backup

For å sjekke at Python virker som det skal begynner vi med å lage et kjempeenkelt program. Vi vil bare skrive en enkel hilsen på skjermen.

Flytte System 4 fra SQL 2000 til SQL 2005 / 2008

Installere og bruke Document Distributor

Radix en enkel innføring

6105 Windows Server og datanett

Her er en enkel bruksanvisning på administrasjonspanelet til hjemmesiden din på QTSystems.

Sprettball Erfaren ComputerCraft PDF

Eksamen i Internetteknologi Fagkode: ITE1526

6105 Windows Server og datanett

Transkript:

Avdeling for informatikk og e-læring, Høgskolen i Sør-Trøndelag Helge Hafting 16.10.2007 Lærestoffet er utviklet for faget LV476D/LN476D Linux systemdrift Innhold 8 1 8.1 Databasen MySQL............................. 1 8.1.1 Installere.............................. 2 8.1.2 Eksempel, personaldatabase.................... 2 8.1.3 Opprette eksempeldatabasen med sql............... 3 8.1.4 Mer om databaser.......................... 5 8.1.5 phpmyadmin............................ 5 8.2 Dynamiske sider med PHP og MySQL................... 7 8.2.1 Eksempelside............................ 7 8.3 Oppsummering............................... 8 8 Resymé: I denne leksjonen ser vi på databasen mysql, og hvordan den brukes for å lage dynamiske websider ved hjelp av PHP. Denne leksjonen bygger på den forrige. 8.1 Databasen MySQL MySQL er en populær og fritt tilgjengelig databasemotor. Den følger med de fleste linuxdistribusjoner. MySQL er et frittstående produkt og kan brukes overalt hvor man trenger en

side 2 av 9 database. Vi skal se spesielt på anvendelse for webapplikasjoner. 8.1.1 Installere Programpakkene installeres slik: aptitude install mysql-server php5-mysql Debian vil spørre etter et passord for databasen. Finn på noe passende. Dette installerer databasetjeneren, og koblinger til php. For å teste databasen og se at installasjonen virker, kan du gjøre som vist nedenfor. Det du trenger skrive, er satt i fet kursiv. # mysql --password Enter password: sqlpassordet Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 16 Server version: 5.0.45-Debian_1-log Debian etch distribution Type help; or \h for help. Type \c to clear the buffer. mysql> show databases; +--------------------+ Database +--------------------+ information_schema mysql +--------------------+ 2 rows in set (0.00 sec) mysql> \q Bye Hvis dette går greit, vet du at databasen fungerer som den skal. Kommandoen show databases viser hvilke databaser som finnes. Her ser vi bare standardbaser, fordi vi ikke har lagd noen egne ennå. \q brukes for å avslutte. 8.1.2 Eksempel, personaldatabase Som eksempel viser jeg en liten personaldatabase. Denne databasen lagrer tre opplysninger om ansatte: navn, tittel og nærmeste overordnete. Se tabell 8.1 på neste side for hvordan en slik databasetabell kan se ut. En linje i en slik tabell kalles en post. Det er altså en post for hver ansatt. Etter å ha sett på denne idéen, ser vi noen problemer. For det første er det mange som har samme sjef. I et større firma kan det bli veldig mange. Vi sløser dermed med plass til å lagre det samme navnet mange ganger. Og hva om «Per» bytter navn til «Leif-Per» for å få

Databasen MySQL side 3 av 9 Navn Tittel Overordnet Ola Korneliussen Adm.dir Trine Franzen Tekn.sjef Ola Korneliussen Per Korneliussen Personalsjef Ola Korneliussen Hans Hansen Programmerer Trine Franzen Nina Olsen Webdesigner Trine Franzen Preben Nielsen Regnskapsfører Per Korneliussen Nina Olsen Vaktmester Per Korneliussen Tabell 8.1: Personaldatabase bedre drag på damene? I så fall må vi oppdatere postene til alle ansatte som har ham som overordnet. I stedet for å lagre navnet på sjefen, kan vi la tabellen inneholde en referanse til sjefens egen post i databasen. Dermed lagres navn bare én gang. Et annet problem er at flere ansatte kan ha samme navn. Her har vi to som heter «Nina Olsen». Som regel trenger databasen å kunne identifisere hver enkelt ansatt, og da er ikke navn bra nok. Dette kan vi ordne ved å innføre et ansattnr, som skal være forskjellig for hver ansatt. Se tabell 8.2 for forslag til en tabell som løser disse problemene. Ansattnr Navn Tittel Overordnet 1 Ola Korneliussen Adm.dir 2 Trine Franzen Tekn.sjef 1 3 Per Korneliussen Personalsjef 1 4 Hans Hansen Programmerer 2 5 Nina Olsen Webdesigner 2 6 Preben Nielsen Regnskapsfører 3 7 Nina Olsen Vaktmester 3 Tabell 8.2: Bedre personaldatabase 8.1.3 Opprette eksempeldatabasen med sql Slik oppretter vi en database. Det som må skrives inn, står med fet kursiv.

side 4 av 9 # mysql --password Enter password: sqlpassordet Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 20 Server version: 5.0.45-Debian_1-log Debian etch distribution Type help; or \h for help. Type \c to clear the buffer. mysql> create database personaldb; Query OK, 1 row affected (0.00 sec) mysql> use personaldb; Database changed mysql> create table ansatt ( -> ansattnr int auto_increment primary key not null, -> navn varchar(40) not null, -> tittel varchar(40), -> overordnet int, -> foreign key (overordnet) references ansatt(ansattnr) -> ) engine=innodb; Query OK, 0 rows affected (0.09 sec) mysql> \q Bye Det er forhåpentligvis opplagt hva kommandoer som create database og use... gjør. create table oppretter tabellen med personalopplysninger. Første linje lager feltet «ansattnr», som er heltall (int). Det skal telles opp automatisk for hver ny ansatt, dermed slipper vi å lage slike numre selv. Feltet kan ikke være tomt, alle ansatte skal altså ha et nummer. «primary key» betyr at dette feltet er hovednøkkel for tabellen her får MySQL beskjed om at vi ønsker å slå opp ansatte via nummeret. Dermed sørger programmet for at basen lages på en måte som gjør slike oppslag effektive. Neste linje lager navnefeltet, som er på 40 tegn. Heller ikke dette feltet kan være tomt, alle har et navn. De kan også ha en tittel, men det går an å ikke fylle ut tittelen. Deretter oppretter vi feltet «overordnet», som også er et heltall. Dette feltet kan være tomt, fordi en eller annen nødvendigvis er øverst i organisasjonen og dermed ikke har noen overordnet. Linja med «foreign key...» gir MySQL beskjed om at «overordnet» ikke er et hvilket som helst heltall. Det er en fremmednøkkel 1 som refererer til «ansattnr» i tabellen «ansatt». Dermed vil MySQL sørge for at tallene vi lagrer her passer. Hvis vi senere prøver å legge inn et nummer som ikke hører til noen eksisterende ansatt, vil MySQL avvise hele posten. Linja med «engine=innodb» velger hva slags databasemotor MySQL skal bruke for denne tabellen. Databasemotoren «innodb» er nødvendig for tabeller som bruker fremmednøkler. I enklere tilfeller kan man også bruke «myisam». 1 En fremmednøkkel er et felt som refererer til et nøkkelfelt i en eller annen tabell. Vanligvis nøkkelfeltet i en annen tabell, men i dette kompakte eksempelet foregår alt innenfor den samme tabellen.

Databasen MySQL side 5 av 9 8.1.4 Mer om databaser Databaser er et stort fagfelt i seg selv. For å lære mer om databasemodellering og sqlprogrammering, har vi kursene «Databaser» og «Databaseadministrasjon». 8.1.5 phpmyadmin phpmyadmin er et web-basert brukergrensesnitt for å administrere mysql-databaser. Du kan for eksempel bruke phpmyadmin for å legge inn testdatabasen, i stedet for å kjøre mysql fra kommandolinja. Du installerer programmet slik: aptitude install phpmyadmin Du vil bli spurt om hvilken apache-versjon phpmyadmin skal tilpasses for. Velg «apache2». For å prøve ut programmet tar du en titt på URLen: http://localhost/phpmyadmin. Du bør få opp et bilde som ligner figur 8.1 på neste side. Passordet er det samme passordet som du valgte da du installerte MySQL. Når du har logget inn, kan du velge hvilken database du vil arbeide med. Databasene «information_schema» og «mysql» lar vi være, de trenger mysql selv for å virke. Velger vi «personaldb», får vi opp et vindu som ligner figur 8.2 på side 7. Her har vi mange muligheter. Vi kan legge til tabeller, og vi kan legge til eller fjerne felter i tabellen «ansatt». Hvis du synes bildet er rotete med mange muligheter, så husk at phpmyadmin ikke er beregnet på sluttbrukere. Dette programmet er for vedlikehold av databasen, og er beregnet på programmerere og driftspersonale. For å legge inn noen poster i databasen, bruker vi ikonet eksempel ser du i figur 8.3 på side 7 som vi finner under «action». Et Legg merke til at det ikke er nødvendig å fylle ut ansattnummeret. Vi opprettet feltet med «auto increment», så MySQL kan lage nye ansattnumre selv. Etter å ha lagt inn firmaet, kan vi prøve ut noen spørringer mot databasen også. Klikk på tabben merket SQL. Prøv f.eks. «select * from ansatt», da skal du få opp en liste over alle ansatte, med all informasjon. For å få bare navn og tittel, bruk «select navn,tittel from ansatt». For å se hvem som har ansatt nr.2 som sjef, bruk «select navn,tittel from ansatt where overordnet=2» For et mer komplisert eksempel, kan vi lage en liste over ansatte med navn på sjefene i stedet for ansattnumre. Dette krever litt kjennskap til sql, og viser at phpmyadmin er et utmerket testverktøy når man utvikler databaseapplikasjoner.

side 6 av 9 Figur 8.1: phpmyadmin Komplisert sql-eksempel select ansatt.navn, ansatt.tittel, sjef.navn from ansatt left join ansatt as sjef on ansatt.overordnet=sjef.ansattnr navn tittel navn Ola Korneliussen Adm.dir NULL Trine Franzen Teknisk sjef Ola Korneliussen Per Korneliussen Personalsjef Ola Korneliussen Hans Hansen Programmerer Trine Franzen Nina Olsen Webdesigner Trine Franzen Preben Nielsen Regnskapsfører Per Korneliussen Nina Olsen Vaktmester Per Korneliussen

Dynamiske sider med PHP og MySQL side 7 av 9 Figur 8.2: Personaldatabasen i phpmyadmin Figur 8.3: Legge inn ny post i phpmyadmin 8.2 Dynamiske sider med PHP og MySQL 8.2.1 Eksempelside Vi har allerede sett på en slik side nemlig phpmyadmin. Nå er ikke dette egentlig et kurs i å lage databasedrevne websider, men webtjeneren vår er ikke komplett uten en slik side. Denne siden forutsetter at personaldatabasen er lagt inn som beskrevet før i leksjonen, og at det er lagt inn noen personer. Siden «db-liste.php» er lagt ved oppgaveteksten. Legg den på /var/www/, deretter kan den åpnes med en webleser. SQL-passordet må du selvsagt bytte ut med ditt eget sql-passord.

side 8 av 9 Kort forklaring Siden er skrevet i html og php. Php-delen åpner en forbindelse til MySQL med kommandoen mysql_connect(). Deretter brukes mysql_select_db() for å velge vår database. Spørring mot databasen gjøres med mysql_query(), som kjører samme spørring som vist på side 6. Deretter stenges databaseforbindelsen med mysql_close(). Svaret på spørringen havner i variabelen $liste. Resten av programmet er en løkke som plukker ut én og én post med mysql_result(), og formatterer innholdet som rader i en html-tabell. Nederst på siden er det noen linker som gir ulike oppslag i databasen. Disse forutsetter at ansatte med numrene 1, 2 og 3 er sjefer for andre ansatte. 8.3 Oppsummering Vi har sett på databasen MySQL. Videre har vi koblet databasen til php, og brukt dette til å lage databasedrevne dynamiske websider.

Oppsummering side 9 av 9 Figur 8.4: sql i phpmyadmin