| sidst rettet 4. oktober, 2002 |
Ved gradueringen lægges der bl.a. vægt på:
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
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)
########################################
; 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 heddeDu 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.
###############################
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.
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!