Nada

2D1522 Datorteknik och -kommunikation
2D2051 Databasteknik och datorkommunikation

Laboration 3:
Webprogrammering med databaser

Förberedelser

Det hjälper om man studerat föreläsningsanteckningarna och boken. Det är en fördel att ha boken till hands, men det går att klara labben ändå. Du bör åtminstone ha föreläsningsanteckningarna om webprogrammering till hands. PHP-manualen rekommenderas.

Redovisning

Laborationen utföres i grupper om 2 personer (eller ensamma om ni vill och det finns plats). Skicka ett mail till inge@nada.kth.se med namn och personnummer på laboranterna och information om var jag kan hitta era filer.

Kökslista

I denna laboration ska du få göra ett litet system för att administrera köksansvarighets-listor. Systemet ska baseras på en databas. Den synliga delen av systemet är en websida som ser ut ungefär så här:


Kökslista

VeckonrNamn
25Inge Frick
33Jan Banan
35Kalle Kula

Veckonr:
Ansvarig:

Sätt in ny person

Namn:
Datorpost:

Websidan har följande innehåll:

Kommentarer

Denna websida skrivs som ett php-skript med understöd av en databas och en fil av php-funktioner som hanterar databasen.

Webbsidan innehåller tre 'klick'bara knappar, var och en är en 'submit'knapp i ett separat formulär. (knappen "Skicka brev till köksansvarig denna vecka" ligger i ett formulär som bara består av denna knapp). Då man 'klickar' på en knapp skall datorpost skickas resp databasen uppdateras och samma webbsida skall visas igen men nu eventuellt med en uppdaterad lista över köksansvariga. Detta kan göras på två sätt:

  1. Anges ingen 'aktion' i form-elementet (starten av formuläret) kommer webbsidans php-skript att anropas igen med de aktulla formulärvariablerna medskickade. Skriptet utför sedan den operation som skall göras. Problemet med denna metod är att vi ju har tre olika operationer som skall utföras motsvarande de tre knapparna. För att veta vilken operation som skall utföras ger man de tre knapparna samma namn men olika värde i de olika formulären. php-scriptet kan, med hjälp av denna variabels värde, avgöra vilket formulärs operation som skall utföras. Observera att en 'submit'knapps värde är den text som visas på kappen. Alternativt till att använda 'submit'knappens värde så kan man istället använda en gömd (hidden) input-variabel med olika värde i de olika formulären.
  2. Ange ett php-script som 'action' i form-elementet. Detta script utför den operation som skall göras och avslutar med att med en http-redirect omdirigera klienten tillbaka till den ursprungliga adressen. Eftersom en http-header alltid kommer före en eventuell meddelandekropp är det viktigt att operations-php-scriptet INTE returnerar någon html-kod utan istället endast utför de operationer som skall ske varpå man slutligen anropar
    header("Location: sidan-man-vill-ska-visas.php");
    Funktionen header används just till att ändra http-headern (exempelvis kan man returnera andra MIME-typer genom
    header("Content-type: text/plain");

    För att förtydliga ytterligare: Strukturen på skriptet som anropas från formuläret skall vara:
    <?php
      kod som utför den önskade operationen men som INTE printar ut något
      header("Location: sidan-man-vill-ska-visas.php");
    ?>

Normalt använder man en av dessa metoder, men för att öva så skall du använda bägge metoderna. Skickandet av mail skall göras av ett separat skript, dvs med metod 2 ovan. Insättande av nya personer, resp köksanvariga skall ske enligt metod 1 ovan, dvs direkt från websidans php-script (med hjälp av funktioner i en separat fil).

Arbetsgång

Tips (läs igenom innan ni frågar)

För databastip, se föreläsningsanteckningarna om webprogrammering, samt boken, kapitel 8.

För mer information om hur man gör formulär, se föreläsnings- anteckningarna samt kapitel 3.7 i boken.

En SQL-sats innehåller ofta citattecken. Om en PHP-variabel ska innehålla citattecken använder man t.ex. dubbla citattecken för att markera början och slut på strängen, och enkla citattecken inne i själva strängen. T.ex.
$sql = "SELECT foo FROM bar WHERE name='berra' AND email='berra@berra.com'";


^ Upp till Nadas kurser.
Senast ändrad: 2004-05-19 17:04:50 MEST
Inge Frick < inge@nada.kth.se>