I denne øvelse skal du konstruere en "tilfældig-drink-generator" og et "gæt-et-tal" spil. Der er tid til at du kan gøre lidt ekstra ud af opgaverne. Det er vigtigt at du bruger tid på at kommentere din kode og at koden er formatteret pænt - det er altså ikke nok at web-programmerne virker!
Ved bedømmelsen lægges der vægt på at du anvender de anviste filnavne - ellers kan vi ikke finde dine besvarelser.
Denne opgave illustrerer brugen af arrays. Du skal implementere en PHP
fil drink.php som returnerer en tilfældig valgt drink til
brugeren der forespørger siden. Servicen skal på passende vis kunne
anvendes i en kollegiebar.
Til at indeholde information om de forskellige drinks skal der
benyttes to arrays: et array $navn[], som indeholder
navnene på de forskellige drinks, og et array $indhold[],
som indeholder strenge med information om de forskellige ingredienser
der indgår i de forskellige drinks. De to arrays er indekseret ved tal
som identificerer den pågældende drink. På denne måde vil,
eksempelvis, ingredienserne for drinken ved navn $navn[2]
være at finde som $indhold[2]. I $indhold[]
arrayet ønskes ingredienserne for en drink være omsluttet af
HTML-lister <ul><li></li>...li></li></ul>, således at de kan
præsenteres som en HTML-liste.
PHP filen drink.php kan passende følge nedenstående skabelon:
<html><head><title>Drink server</title></head>
<body>
<h2>Drink server</h2>
<?php
// Her oprettes de to arrays $navn[] og $indhold[]
...
// Find et tilfældigt tal mellem 0 og (sizeof($navn) - 1)
// ved brug af funktionen rand
$drink = ... ;
// Udskriv den tilfældigt valgte drink
...
?>
</body>
</html>
Det er altså din opgave at udfylde skemaet ovenfor. Bemærk at du skal
benytte funktionen rand til at generere et tilfældigt tal
(indeks i tabellerne) og funktionen sizeof til at finde
antallet af elementer i et array.
Kopier din besvarelse til filen
ps4/drink.php i din mappe på w: drevet
på ITU.
Advarsel: Brug er servicen med nedenstående drinks er på eget ansvar:
| Navn | Indhold |
|---|---|
| Bloody Mary | Tomatjuice, Vodka, Tabascosovs, Worcestershiresovs, Sellerisalt |
| Screwdriver | Vodka, Appelsinjuice |
| Brandbil | Jägermeister, Rød sodavand |
| Long Island Ice Tea | Vodka, Gin, Rom, Tequila, Citronsaft, Cola |
| GT | Gin, Tonic |
Denne opgave illustrerer hvorledes skjulte (hidden) formvariabler kan
benyttes til at implementere tilstand i et webprogram. (Se evt.
taeller.php eksemplet fra forelæsningen.)
Din opgave er at implementere et spil "Gæt et tal". Spillet
implementeres i en fil gaet_et_tal.php på
webserveren.
Ideen med spillet er, at webserveren bestemmer et tal mellem 0 og 100
(med PHPs indbyggede funktion rand) som brugeren skal
gætte. Hver gang brugeren indtaster et gæt i et formfelt, giver
webserveren brugeren besked om hvorvidt gættet er for stort, for
lille eller rigtigt. I tilfælde af at gættet er rigtigt skal
brugeren lykønskes og have muligheden for at starte et nyt spil. Hvis
derimod det gættede tal er for lille eller for stort skal brugeren
have mulighed for et nyt gæt.
Spillet kan passende gøre brug af følgende funktion, som placeres
øverst i filen gaet_et_tal.php:
function echo_gaet_form($tal) {
echo "<form method="post" action="gaet_et_tal.php">
<input type=hidden name=tal value=$tal>
Indtast dit gæt:<P>
<input type="text" name="gaet" size="7">
<input type="submit" value="Gæt">
</form>";
}
Funktionen tager et tal som argument og returnerer HTML-kode for en
form til indtastning af et gæt. Når brugeren afsender formen (ved at
trykke på "Gæt" knappen), sendes gættet og indholdet af den skjulte
formvariabel tal til siden gaet_et_tal.php
som form-argumenter.
Her er en skitse over hvorledes filen gaet_et_tal.php kan
se ud:
<html><head><title>Gæt et tal</title></head>
<body>
<?php
// Funktionen echo_gaet_form skal stå her
...
if ( $tal == "" ) {
// Variablen `tal´ er ikke sat! Generer tilfældigt
// tal med funktionen rand og returner introduktionsside
// med form til indtastning af gæt.
$tal = rand(1,99);
...
} elseif ( ... ) {
// Returner en side med en form til indtastning af et
// nyt gæt og en besked om at gættet var for lille.
...
} elseif ( ... ) {
// Returner en side med en form til indtastning af et
// nyt gæt og en besked om at gættet var for stort.
...
} else {
// Returner en side med en lykønskning og et link til
// et nyt spil.
...
}
?>
</body>
</html>
Din opgave er altså at udfylde ovenstående skelet med
echo-kommandoer der sender det relevante HTML-kode til
brugeren i de forskellige situationer. Brug funktionen
echo_gaet_form i de situationer hvor brugeren skal
indtaste et nyt gæt.
Kopier din besvarelse til filen
ps4/gaet_et_tal.php i din w: mappe
Hint: Se eventuelt http://www.smlserver.org/demo/guess.sml for en fungerende version af spillet. Her kan du også se hvorledes spillet kan udbygges så forskellige billeder bliver vist afhængig af om brugerens gæt er for lille, for stort eller rigtigt.
1 Hvad er der galt her?
function udregnNoget(){
$a = 5+6;
}
$resultat = udregnNoget();
2 Når vi sender indholdet af en form hvor et af elementerne har attributten name="email" bliver værdien af feltet tilgængeligt i siden der modtager som $_REQUEST['email'] opstil alle nødvendige $_REQUEST's for følgende form:
<form action = 'myscript.php' method = 'post'>
<p>Køn:</p>
<p>
<input type = 'radio' name='gender' value = 'male' />
<input type = 'radio' name='gender' value = 'female' />
</p>
<p>Adresse</p>
<p>
<textarea name='adress' rows='10' cols='25'></textarea>
</p>
<p>Postnummer</p>
<p>
<input type='text' name='zip' />
</p>
<p>
<input type='submit' value='Send' />
</p>
</form>
3 Følgende funktion udskriver det tredie element i et array. Kan du lave den om så den returnerer indholdet istedet for at udskrive det?
function thirdElement( $inputArray ) {
if ( sizeof($inputArray) > 2 ) {
echo $inputArray[2];
} else {
echo "Arrayet \$inputArray er ikke stort nok";
}
}
4 Følgende link indeholder to formvariabeler, hvordan får jeg dem "ind i php scriptet"?
<a href="page.php?zip=2200&country=DK">Se butikker nær dig</a>