This is an old revision of the document!


Läsa från och skriva till textfiler

I dessa uppgifter skall vi lära oss att läsa igenom textfiler och analysera dem.

Vi skall jobba med på två funktioner för att läsa från textfiler,file, file_get_contents och en funktion för att skriva till textfiler file_put_contents

1.
Gör en enkel textfil och spara den, kalla den text.txt. Textfilen ska innehålla några radbrytningar. Visa innehållet i filen på en webbsida med hjälp av file_get_contents.

2.
Gör en sida med ett formulär där man skriver in sitt namn. Namnet man skriver in skall sparas i en textfil som heter names.txt med hjälp av file_put_contents och flaggan FILE_APPEND. Det skall läggas till ett namn varje gång man skickar från formuläret. Visa innehållet av textfilen längs ner på sidan.
Tips! Högst upp i php-filen innan du har skrivit ut någon HTML tar du hand om det som kommer från $_POST och sparar det i textfilen!

3.
På följande webbadress finns en massa tal. (https://student.oedu.se/~jf/filer/tal.txt). Du skall göra en webbsida där du med hjälp av file() hämtar in talen och skriver ut dem. Du skall också numrera talen.

tal 1: 139.34
tal 2: -77.05
tal 3: 83.96
tal 4: 10.88
tal 5: 62.09
tal 6: -58.26
... osv.

4.
Gör en sida där du kan lägga in lagerfakta i en textfil samt beräkna lagersaldot.
Ny lagerfakta skall kunna matas in i ett formulär (med tre textrutor) och sparas längst ner i textfilen. När sidan laddas skall även lagersaldot skrivas ut med två decimalers noggrannhet. Lagersaldo = hur mycket allt i lagret är värt tillsammans.

Filen är uppbygd på följande sätt:

  • Den första raden är tom.
  • Den andra raden innehåller rubriker.
  • Alla följande rader innehåller lagerfakta och du vet inte hur många rader det finns i filen.
  • Det som skiljer fälten åt är ett mellanslag.

Ex på fillayout:

 
Namn Antal Pris
SINTESI-Mata 4 19995
KHS-Flite 4 12995
CrossMax 12 3690
CrossRacer 5 1450
DT-Nipplar 2001 0.5

Du kan lägga in ovanstående i en textfil som en start på filen. Innan du lägger in nytt i filen bör lagersaldot bli 184490.50 kr.

Extrauppgift: Gör en kontroll av att man gjort en korrekt inmatning i alla fälten innan informationen sparas i textfilen.

*5.
a) Gör en webbsida där man kan mata in ett filnamn till en textfil. Programmet ska sedan översätta texten i filen till rövarspråket och spara det till en ny textfil med samma filnamn fast med tillägget _rs. Ex. “text.txt” blir “text_rs.txt”.
b) Lägg till på webbsidan så att det även går att översätta från rövarspråk till vanligt språk.

6.
Gör en frågesport

  • Minst 5 frågor som rättas av PHP. Rättning ska göras på en annan sida än den där frågorna är.
  • Frågorna skall vara av typen där endast ett svar är rätt (tips radio buttons).
  • Man skall skriva in sitt namn på frågesidan.
  • När man har svarat skall man få reda på hur många rätt man fick samtidigt som resultat och namn sparas i en textfil.
    Tips! Det kan vara klokt att fundera lite på hur textfilen skall se ut.
  • Det skall visas en high score lista med de 10 bästa resultaten, bäst överst.
  • På er sida skall det vara naturligt och lätt att hitta high score listan. Det känns naturligt att det finns en länk till listan och att man får se high score listan och sitt resultat när man har svarat på frågesporten.
  • Fundera på hur du skall behandla ett svar utan namn och gör den lösning du tycker är bäst.
  • För er som går kursen Webutveckling 1 så gäller att alla sidor skall vara korrekt HTML5 och en CSS som är fri från fel. Sidan bör också ha en layout som är tilltalande.
  • Få highscorelistan att fungera även om det är fler än 10 frågor.

7.
En enkel gästbok

I kursen Webbutveckling 1 har du stylat en gästbok. Nu ska du få den att fungera.

Krav på gästboken:

  • Vissa fält är obligatoriska. “First Name”, “Last Name”, “Message Title” och “Message” får inte lämnas tomma. “EMail” och “URL” får vara tomma.
  • Om man glömmer att fylla i några fält som är obligatoriska skall det bli felmeddelanden. Den data man skrivit ska då finnas kvar. Kontrollen ska ske efter att formuläret skickats, inte före.
  • Man skall få se alla inlägg på samma sida som man skriver in ett inlägg.
  • Man skall se när inlägget gjordes.

En bra stategi kan vara:

 a. Kolla om något kommer med $_POST (undersök om de fält som skall fyllas i är ifyllda).
 b. Om det som kom med $_POST var OK spara det, annars lämpligt felmeddelande.
 c. Visa alla inlägg.

Er uppgift är att göra en gästbok som uppfyller alla krav ovan.

Extrauppgifter:

  • Gör så att man inte kan lägga in html-taggar.
  • Gör så att man måste skriva in ett korrekt svar på en beräkning med slumpade tal för att man skall få spara (captha).
  • Gör också så att du får ett mail när någon skriver i din gästbok. Det kan vara problem att skicka till Hotmail från denna server.
  • Gör så att inläggen delas upp på flera sidor om det är många inlägg, d.v.s. gör så att knapparna längst ner på sidan fungerar.