MrGarvin Posted November 16, 2011 Share Posted November 16, 2011 Svårt att sätta bra rubrik på den här :-) Jag håller på att bygga ett test av en tjänsteplanerare för min institutions lärare. Tanken är att en kurs ska kunna planeras med både budget och "bokad" personal. Problemet jag brottas med är hur jag på bästa sätt ska lösa beräkningen av den s.k. studentpengen, d v s den ersättning som "kursen" får per högskolepoäng. Det finns ett antal typer av prislappar som styr ersättningen som institutionen får per högskolepoäng (Hp) vid olika moment i en kurs. En kurs på totalt 7.5 hp kan t ex ha fyra moduler med fyra olika prislappar, t ex en undervisningsmodul på 2 hp, en verksamhetsförlagd utbildning 3 hp, ett tekniskt moment 1hp och en övrig på 1.5 hp. Vid beräkning av kursbudget så vill jag att den ansvarige fyller i fördelningen av Hp i en dynamiskt alstrad lista över prislappar och får en total studentpeng som kan budgeteras som intäkt i kursen. Enligt modellen "(antal Hp x prislapp 1) + (antal Hp x prislapp 2) + (antal Hp x prislapp 3)..." o s v. Jag har nu skapat följande tabeller i mySql: CREATE TABLE `prislappar` ( `pris_id` int(11) unsigned NOT NULL AUTO_INCREMENT, `pris_name` char(50) NOT NULL DEFAULT '', `pris_value` int(11) DEFAULT NULL, PRIMARY KEY (`pris_id`) ) Tabellen prislappar är till för att hålla reda på de olika typerna av prislappar som kan förekomma och dess värden (de ändras nämligen över tid) CREATE TABLE `project` ( `proj_id` int(11) unsigned NOT NULL AUTO_INCREMENT, `proj_title` varchar(255) NOT NULL DEFAULT '' COMMENT 'Titel på projektet', `proj_cat` int(3) NOT NULL COMMENT 'Projekttyp, kategori', `proj_descr` text COMMENT 'Beskrivningen', `proj_points` int(3) DEFAULT NULL COMMENT 'Totalt antal Hp', `proj_startdate` date DEFAULT NULL COMMENT 'Startdatum för projektet', `proj_enddate` date DEFAULT NULL COMMENT 'Slutdatum för projektet', `proj_editdate` timestamp NULL DEFAULT NULL COMMENT 'Sparad den', `proj_contact` int(11) DEFAULT NULL COMMENT 'Projektansvarig kontaktperson.', `proj_budget` float DEFAULT NULL COMMENT 'Projektbudgeten', `proj_perscost` float DEFAULT NULL COMMENT 'Personalkostnad', `proj_seats` int(11) DEFAULT NULL COMMENT 'Antal planerade deltagare', `proj_regseats` int(11) DEFAULT NULL COMMENT 'Antal registrerade deltagare', `proj_studpay` int(11) DEFAULT NULL, 'HÄR ska studentpengen in i databasen', PRIMARY KEY (`proj_id`) ) I tabellen Projekt (som då förstås är en kurs) så har jag lagt in en total summa Hp, men den är mest för referens i kursinformationen. Nå, där har vi bakgrunden. Min konkreta fråga är i två delar 1. Vad är enklaste sättet att koppla ihop informationen om Hp-fördelningen i olika prislappar per projekt. Ytterligare en databastabell antar jag, men hur bör den struktureras för att få in rätt värden? 2. Hur gör jag för att skapa ett dynamiskt skapat formulär med ett textfält att fylla i för respektive prislapp från databasen och sen få en totalsumma. Någon form av loop förstår jag. Jag har hittat ett suveränt jquery-script som löser själva beräkningen i grunden, men hur tusan anpassar jag det till ovanstående dynamiska lista och med det extra värdet (prislapp) som ska gångas med varje textfält innan summeringen? Eller finns det en bättre, färdig, lösning? Tips tas tacksamt emot... <table width="300px" border="1"> <tr> <td width="40px">1</td> <td>Prislapp 1</td> <td><input class="txt" type="text" name="txt"/></td> </tr> <tr> <td>2</td> <td>Prislapp 2</td> <td><input class="txt" type="text" name="txt"/></td> </tr> <tr> <td>3</td> <td>Prislapp 3</td> <td><input class="txt" type="text" name="txt"/></td> </tr> <tr> <td>4</td> <td>Prislapp 4</td> <td><input class="txt" type="text" name="txt"/></td> </tr> <tr id="summation"> <td> </td> <td align="right">Summa :</td> <td align="center"><span id="sum">0</span></td> </tr> </table> <script> $(document).ready(function(){ //iterate through each textboxes and add keyup //handler to trigger sum event $("input.txt").each(function() { $(this).keyup(function(){ calculateSum(); }); }); }); function calculateSum() { var sum = 0; //iterate through each textboxes and add the values $(".txt").each(function() { //add only if the value is number if(!isNaN(this.value) && this.value.length!=0) { sum += parseFloat(this.value); } }); //.toFixed() method will roundoff the final sum to 2 decimal places $("#sum").html(sum.toFixed(2)); } </script> Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.