CGI
Examination:
"Gör en valfri applikation i PHP. Den ska använda
sig av formulär med formulärkomponenterna textfält,
radioknappar, kryssrutor, rullningslista. Den ska använda sig
av filhantering d.v.s. spara på fil och läsa från
fil. Exempel på en applikation skulle kunna vara en enkätundersökning
där inmatningarna lagras på fil och där en sammanställning
görs genom att man läser innehållet från filen
och skriver ut den på skärmen."
Kort beskrivning
Formuläret i JavaScript-uppgiften är källan till
informationen för denna uppgift. Formuläret (form.html)
använder sidan results.php som action. När formuläret
således fyllts i på ett tillfredsställande sätt
så skickas formulärdatan till scriptet nedan för
att dels visa upp uppgifterna som skickats, dels spara informationen
i en fil. För att komma åt uppgifterna i filen har jag
skapat ett separat dokument, fileread.php och den php-koden återfinns
längre ner på sidan.
Jag har byggt och provkört PHP-lösningen lokalt på
en Apache-webserver med PHP4, men det verkar inte funka att köra
PHP vare sig på studentportalen eller www.tnv.mh.se så
hur det skall gå att redovisa detta vet jag inte.
PHP-koden i results.php
Det första scriptet skriver ut innehållet i formulärfälten
för att ge användaren återkoppling.
<?PHP
// shows the previously entered form data to the user.
echo "Namn: ".$fornamn." ".$efternamn."<br>"
echo "Epost: ".$epost."<br>";
echo "Gata: ".$gata."<br>";
echo "Postadress: ".$postnr." ".$ort."<br>";
echo "Kurs: ".$kursval."<br>";
echo "Datum: ".$kursdatum."<br>";
echo "Beställd litteratur:".$littweb." ".$littexcel."<br>";
echo "Övrigt: ".$textfield."<br>";
?>
Det andra scriptet öpnar en fil i "append"-läge,
alltså för att lägga till innehåll, och skriver
in fälten tab-separerade, och avslutar skrivningen med en ny
rad innan filen stängs. Om filen inte går att öppna
visas istället ett felmeddelande.
<?PHP
// opens a file handle to the file data.txt for
// appending contents
$skrivfil = fopen("data.txt","a");
// if an error occurs, print an error message and exit
if(!$skrivfil){
print("Kunde inte öppna filen för skrivning");
exit;
}
// write output to the file. Each field
// is separated with a tab-character "\t”
fputs($skrivfil,"$fornamn\t");
fputs($skrivfil,"$efternamn\t");
fputs($skrivfil,"$epost\t");
fputs($skrivfil,"$gata\t");
fputs($skrivfil,"$postnr\t");
fputs($skrivfil,"$ort\t");
fputs($skrivfil,"$kursval\t");
fputs($skrivfil,"$kursdatum\t");
fputs($skrivfil,"$littweb\t");
fputs($skrivfil,"$littexcel\t");
fputs($skrivfil,"$textfield\n");
// closes the file data.txt
fclose($skrivfil);
?>
PHP-koden i fileread.php
Detta script läser in innehållet i filen till en variabel.
Innehållet i variabeln skrivs sedan ut till en HTML-tabell
genom två nästlade for-loopar. Den första loopen
läser in en rad och delar upp de enskilda fälten till
en vektor. Den andra loopen skriver ut fälten från vektorn
till en rad i en tabell.
<?PHP // opens the file data.txt and reads each line of the file // into an array called $readfile $readfile = file("data.txt");
// this loop reads all elements of the array and prints // each field of the tab-delimited file to an HTML-table for($i=0; $i<=count($readfile)-1; $i++){ $fields = split("\t",$readfile[$i]); print("<tr>"); for($j=0; $j<=count($fields)-1;$j++){ print("<td>$fields[$j]</td>"); } //end for $j print("</tr>"); } //end for $i ?>
|