Opgavesæt 6: Forbindelse mellem PHP og MySQL-database

for Databasestøttet Webpublicering
  sidst rettet 4. oktober, 2002

Dette opgavesæt er den første øvelse i kursets anden afdeling: nemlig den som handler om PHP og databaser.
Formålet med denne øvelse er at du bliver bekendt med PHP-fortolkerens mulighed for at oprette forbindelse til en MySQL-database. Bemærk du skal kun aflevere fire filer kursus.mdb, dbtable.php, insert.php og select.php

Ved gradueringen lægges der bl.a. vægt på:

Opgave A - En access-database (25%)

Du skal i denne opgave konstruere en simpel Access-database.
Databasen skal benævnes kursus.mdb og gemmes i w2/oevelse6:
kursus.mdb skal indeholde tabellerne person og fag.
Tabellen person skal indeholde:

Tabellen fag skal indeholde:

 

Bemærk hver af felterne skal have datatypen Text og fieldsize 50

 

Opgave B - Opret en forbindelse mellem PHP og MySQL

Du har som kursusdeltager på holdet W2_E2002 modtaget en email "Your MySQL database has been created" fra SysAdm. Emailen rummer loginoplysningerne vedrørende MySQL-databasen, der er oprettet i dit navn. Læs mailen omhyggeligt og gem oplysningerne.

I dette opgavesæt skal du anvende PHP-funktioner som vedrører PHP-fortolkerens muligheder for at oprette forbindelse til din nye MySQL-database. PHP-fortolkeren har indbygget en mængde MySQL-funktioner som har hver deres egenskaber. I opgaverne nedenfor skal du bruge:

mysql_connect()
mysql_close()

; som henholdsvis opretter og lukker en forbindelse til en database

########################################
Syntaks:

$link = mysql_connect("host", "database_user_name", "database_password")

Host er mysql.it-c.dk som det er oplyst i mailen fra SysAdm. Find også de to andre parametre i denne mail.

Den returnerede $link rummer en værdi som identificerer forbindelsen du netop har oprettet. $link skal du bruge som parameter i andre funktioner, når du har brug for at referere til - anvende - din forbindelse.

F.eks når du skal lukke din forbindelse efter udført arbejde i slutningen af dit PHP-script:

mysql_close($link)

########################################


mysql_select_db()

; som vælger en specifik database i MySQL. (Du har måske kun adgang til netop én med navnet W2_e2002_[dit ITC-login])
########################################
Syntaks

mysql_select_db ("database_name" , $link)

Funktionen vælger databasen "database_name" ved at bruge forbindelsen $link, du har oprettet ovenfor.

########################################

mysql_query()
; som kan sende en forespørgsel til din database. Forespørgslen skal være en streng som indeholder en kommando i sproget Structured Query Language (SQL)

########################################
Syntaks:

$result = mysql_query ("SQL-command", $link )

; hvis "SQL-command" er en kommando som giver et resultatsæt (hvis den er af typen SELECT, SHOW, EXPLAIN eller DESCRIBE ) vil $result blive sat med en pointer. Dvs en værdi som du efterfølgende kan anvende til at pege på resultet af din søgning. Hvis "SQL-command" er en SQL action query (som ikke efterspørger data, men alene foretager ændringer), vil $result blive sat til true eller false alt efter om udførslen af kommandoen er gået godt eller ej.
########################################

 

mysql_fetch_row()
; som kan hente hver af posterne i det svar som MySQL returnerer efter at have fortolket og udført din SQL-kommando.

########################################
Syntaks:

  while($arrQuerydata = mysql_fetch_row($result)) {
 	 echo $querydata[0]."<br>";
  }
Funktionen henter én post ad gangen i det resultatsæt som $result peger på. Funktionen sætter et éndimensionelt array ($arrQuerydata) med hver af feltværdierne i den hentede post. Bemærk: du bestemmer selv hvad dette array skal hedde
########################################

Opgave B1 (25%) - Indsæt data i dine nye databasetabeller

Du skal nu oprette to tabeller i din database W2_e2002_[dit ITC-login], som svarer ganske nøje til tabellerne du oprettede i Access i opgave A Benyt dig af syntaksvejledningerne ovenfor.
Opret først en fil du benævner dbtable.php.
Skriv heri et PHP-script som sammensættes i følge nedenstående opskrift.

1) Opret en forbindelse til din database
2) Vælg databasen W2_e2002_[dit ITC-login]
3) Opret en tabel ved hjælp af SQL-syntaks:

Sammensæt en streng du benævner $strSQL og som følger denne skabelon:

CREATE TABLE opgave
(navn VARCHAR(50) NOT NULL,
adresse VARCHAR(50) NOT NULL)

[......fortsæt]

Skriv selv videre på strengen således at du får en kommando, der opretter alle felter i tabellen opgave (se illustration i opg A)
Send den afsted til MySQL med mysql_query ("SQL-command", $link )

 

Sammensæt en ny streng som rummer en SQL-kommando der opretter en tabel opgave der svarer til den i opgave A. Også denne streng benævner du $strSQL. Afslut med at udføre kommandoen.

 

Hint til debugging. Hver af PHP-funktionerne returnerer false, hvis noget er gået galt. Udnyt dette og sæt if-sætninger der udskriver fejlbeskeder.

###############################

Opgave B2 (25%) - Indsæt data i dine nye databasetabeller

Syntaksen for at indsætte nye poster i din tabel er

INSERT INTO tabelnavn (kolonnenavn1,kolonnenavn2) VALUES(værdi1,værdi2)
Opret en ny fil insert.php i mappen /oevelse6. Konstruer en databaseforbindelse som i den foregående øvelse.

Indsæt mindst tre navne i tabellen person ved igen at konstruere strSQL-strenge efterfulgt af mysql_query().

Indsæt også mindst tre poster i fag.

Bemærk: hvis du fortryder data du har indsat kan du sende en streng med

 DELETE tabelnavn

; som sletter data i din tabel og ikke tabellen.

 

Opgave B3 (25%) - Hent data i dine nye databasetabeller.

Opret en ny fil select.php i mappen /oevelse6. Konstruer en databaseforbindelse som i de foregående øvelser.

Syntaksen for at hente data i databasen er:

SELECT feltnavn1, feltnavn2 FROM tabelnavn

Udskriv indholdet i dine tabeller med syntaksen du finder under beskrivelsen af mysql_fetch_row() ovenfor. (Læs evt."Beginning PHP..."" s. 411 - 412)

Forsyn dit HTML-output med en lille forklaring til bruger og selvfølgelig header og footer - evt fra funktionerne du oprettede i opgavesæt 4.

 

Husk at konsultere lærebogen Beginning PHP og kursets nyhedsgruppe, hvis noget driller. God fornøjelse!

 

 







 

 


mejner@it.edu