Gemensam bankapplikation EE16:7

Vi fortsätter med trenden att påbörja varje ny lektion med en bugg, denna gång så kunde vi inte hämta datum från vår fil utan rad för rad lästes in och gjordes om till ett tal och då försvann vår ”delimiter” (|, pipe) och datumet i omvandlingen. Detta behöver vi börja ta hand om.

Läs in från fil till $transactions[]

Vi behöver bygga om inläsningen från fil så att vi läser in hela raden till vår array, uppdelningen av tal och datum gör vi senare. Vi skulle kunna ha gjort det redan här och lagrat det i två olika arrayer också, bägge sätten fungerar. Sök efter det ställe i koden där inläsning sker, ”feof”, ”fgets” eller ”while” som sökord bör leda dig rätt. Byt sedan ut den koden som finns där med följande;

Nu bör inläsningen fungera, vi behöver då flytta beräkningen av saldo ($balance) och uppdelandet av innehållet i varje komponent. Detta gör vi samtidigt som vi bygger upp vår tabell för utskrift. Vår nya kod för att bygga upp tabellen ser ut som följer;

Lägg märke till att jag i koden har lagt till två ”<th>” för att skapa rubrikraden i tabellen. Testa nu så att det fungerar, för mig ser det ut så här.

Formatera negativa tal

Det är lite svårt att läsa stora tal i vår bank och vi funderade på hur vi kan göra det bättre. Dels vill jag högerställa hela kolumnen, sedan vill jag lägga till ” kr” som utskrift efter talet, rödmarkera negativa tal och sedan införa en tusentalsavgränsare som gör stora tal lättare att läsa då dessa grupperas typ 1 234 567 kr.

Vi skapar en funktion som vi döper till colorFormat, numberFormat hade kanske varit bättre, men det finns redan en funktion som heter number_format som vi skall använda oss av och vi ville inte blanda ihop namnen och förvilla oss mer än nödvändigt. Funktionen skriver vi så här;

Funktionen number_format är användbar, den tar fyra parametrar;

  • vilken variabel som skall formateras
  • hur många decimaler som skall användas
  • vilket tecken vi vill använda som decimaltecken mellan heltal och decimalerna
  • vilket tecken vi vill använda som tusentalsavgränsare

De instruktionerna vi gör just nu number_format($amount, 0, ",", " ") kommer formatera variabeln $amount med 0 decimaler, kommatecken innan decimalerna (vilket inte syns eftersom vi inte har decimaler) och sedan ett mellanslag som tusentalsavgränsare. Detta får väl anses vara svensk standard.

Sedan gör vi följande tillägg i vår css.

Klassen negative har ju samma instruktioner som klassen mess så vi lägger dem på samma rad så länge, vill vi göra något mer med negative senare så är det enkelt att bryta ut.

Klassen number i en tabellcell används för att högerställa texten.

Då gäller det bara att skriva om utskriftstabellen så att vi tar hand om dessa formateringar. Detta görs på en enda rad och det är den raden där vi bygger upp raden med utskrifter, denna enda rad skriver vi nu så här;

Innan vi testar skall vi göra en sak till, eftersom vi redan har en formateringsfunktion så använder vi den även på utskriften av hela kontots saldo som presenteras ovanför vårt formulär. I den slutliga produkten kommer vi inte kunna ha negativa värden på vårt saldo men det finns ändå en tanke med att formatera även denna utskrift på samma sätt som alla andra utskrifter. Främst vill vi ha det på detta sätt om vi senare vill ändra någon formateringsregel t.ex. om vi vill använda oss av två decimaler, då ändras detta i funktionen colorFormat och står igenom i hela applikationen automatiskt, det är precis så vi vill använda våra funktioner. Koden då? Den kommer här;

Nu testar vi och kikar att det ser ut som vi förväntar oss, testa gärna att göra stora uttag så att ditt saldo hamnar på ett negativt värde för att enklare se att det ser ut som vi förväntar oss.

[klicka på bilden för att se den större]
Perfekt, precis som vi vill att det skall fungera.

Fortsättningen

Nu återstår nog bara en sak och det är att hindra saldot att bli negativt. Detta skall vi jobba med på nästa lektion och sedan kommer vi snygga till koden en sista gång och se till att vår applikation fungerar även på Bineros server innan vi utvärderar detta projekt och går vidare i kursen.

2 svar på “Gemensam bankapplikation EE16:7”

Kommentera

E-postadressen publiceras inte. Obligatoriska fält är märkta *