Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6....

63
1 Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och datavetenskap Högskolan i Gävle S-801 76 Gävle, Sweden E-post: [email protected] Abstrakt Grunden för detta arbete har varit att förenkla hantering och sökning bland ritningar och förteckningar i ett ritningsarkiv. Lösningen har blivit ett webbaserat datasystem som bygger på en databas där all information lagras och är sökbar. Resultatet har blivit ett system som man oavsett var man befinner sig inom företagets nätverk ha tillgång till alla ritningar och förteckningar på ett snabbt och effektivt sätt. Nyckelord: arkiv, ritningar, databas, webbaserat

Transcript of Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6....

Page 1: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

1

Digitalt arkiv

av

Emil Abrahamsson

Institutionen för matematik, natur- och datavetenskap Högskolan i Gävle

S-801 76 Gävle, Sweden

E-post:

[email protected]

Abstrakt

Grunden för detta arbete har varit att förenkla hantering och sökning bland ritningar och förteckningar i ett ritningsarkiv. Lösningen har blivit ett webbaserat datasystem som bygger på en databas där all information lagras och är sökbar. Resultatet har blivit ett system som man oavsett var man befinner sig inom företagets nätverk ha tillgång till alla ritningar och förteckningar på ett snabbt och effektivt sätt. Nyckelord: arkiv, ritningar, databas, webbaserat

Page 2: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

2

Innehåll 1 Introduktion ............................................................................................................. 3

1.1 Bakgrund........................................................................................................................... 31.1.1 Företaget Roundo .................................................................................................. 3

1.2 Syfte.................................................................................................................................. 31.3 Mål.................................................................................................................................... 31.4 Frågeställningar ................................................................................................................ 3

2 Teori .......................................................................................................................... 42.1 PHP: Hypertext Preprocessor ........................................................................................... 42.2 MySQL ............................................................................................................................. 42.3 CSS – Cascading Style Sheets .......................................................................................... 42.4 XHTML ............................................................................................................................ 4

3 Förutsättningar och krav ........................................................................................ 53.1 Kravspecifikation.............................................................................................................. 5

4 Beskrivning av konstruktionslösning..................................................................... 54.1 Databasen.......................................................................................................................... 64.2 Systemet............................................................................................................................ 6

5 Implementering och test .......................................................................................... 65.1 Planeringsfasen ................................................................................................................. 65.2 Implementation av databasen ........................................................................................... 75.3 Implementation av systemet ............................................................................................. 7

5.3.1 Huvudsidan ............................................................................................................ 75.3.2 Sök pdf.................................................................................................................... 85.3.3 Sök ritning.............................................................................................................. 95.3.4 Skapa ritning........................................................................................................ 105.3.5 Lägg till ritning .................................................................................................... 105.3.6 Ny ritningsförteckning ......................................................................................... 105.3.7 Maskin/ritningsförteckningar .............................................................................. 115.3.8 Ritningsändringar ................................................................................................ 155.3.9 Lista ändringar .................................................................................................... 155.3.10Hantera användare .............................................................................................. 165.3.11CSS-filen .............................................................................................................. 16

6 Resultat ................................................................................................................... 176.1 Databasen........................................................................................................................ 176.2 Systemet.......................................................................................................................... 176.3 Svar på frågeställningar .................................................................................................. 17

7 Diskussion ............................................................................................................... 177.1 PHP................................................................................................................................. 177.2 MySQL ........................................................................................................................... 177.3 Systemet.......................................................................................................................... 187.4 Framtida utveckling ........................................................................................................ 18

8 Slutsatser................................................................................................................. 18Referenser ................................................................................................................... 19Webbreferenser .......................................................................................................... 19Bilaga B: Källkod ....................................................................................................... 24

Page 3: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

3

1 Introduktion

1.1 Bakgrund

Jag har fått i uppdrag av företaget Roundo, i Hässleholm, att programmera ett webbsystem som ska ligga på deras Intranät. I dagens läge har de ett ritningsarkiv med massa lådor och pärmar som de får leta i för att hitta den ritning eller maskin som de är ute efter. Eftersom en maskin kan bestå av upp till ett par hundra ritningar så blir det för dem väldigt tidskrävande att leta i alla pärmar och lådor. För att underlätta detta så vill de ha ett ”digitalt ritningsarkiv” som lagrar den information som de har i alla pärmar och sedan kan ta fram de ritningar som eftersöks som pdf-filer.

1.1.1 Företaget Roundo Roundo är ett företag i Hässleholm som utvecklar, konstruerar och säljer maskiner som används för att forma stålprofiler och plåtar. Det grundades 1964 och har sedan dess fått mer än 10 000 nöjda kunder runt om i hela världen och på så sett blivit ett världsledande företag inom sin bransch.

1.2 Syfte

Syftet med detta arbete är att för företaget underlätta och effektivisera deras arbete på bästa möjliga sätt. Genom att skapa detta ritningsarkiv kommer företaget kunna spara mycket tid genom bland annat kunna få fram alla de ritningar som en maskin består av som pdf-filer som de sedan kan skriva ut. Genom att de även ska kunna föra in information om eventuella förändringar som bör genomföras på olika maskiner eller ritningar så kommer även detta minska misstag och fördröjningar på grund av missar.

1.3 Mål

Målet är att skapa ett effektiv och användarvänligt system så att Roundo i fortsättningen inte skall vara beroende av alla de pärmar som idag innehåller information om alla ritningar. De ska även från systemet generera nya ritningsnummer och revisioner av ritningar.

Målet är även att bygga systemet med moduler för att enkelt kunna lägga till och ta bort olika funktioner efter förutsättningar och krav.

1.4 Frågeställningar

• Går det att på ett smidigt sätt leta efter ritningar och skriva ut dessa? • Kan ritningsändringar fångas upp av systemet och går det att lägga in åtgärd

för dessa?

Page 4: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

4

2 Teori

2.1 PHP: Hypertext Preprocessor

PHP är ett skriptspråk som i första hand köra på webbservrar för att driva dynamiska webbsidor som genereras från en databas eller användarformulär.

PHP utvecklades från en samling av Perl-skript av Rasmus Lerdorf. Detta vidareutvecklades senare av Andi Gutmans och Zeev Suraski som år 1998 lanserade den färdiga versionen av PHP 3.0.

Version 5 släpptes den 13 juli 2004 med förbättrat stöd för objekt. Senaste uppdateringen är 5.2.6 kom 6 maj 2008. [1]

2.2 MySQL

MySQL är en fri databashanterare som är licensierad under GNU General Public License. Det är en av de populäraste databashanterarna inom Linux-världen, men finns för de flesta stora operativsystemen också.

Programmet har utvecklats av företaget MySQL AB i Uppsala, som också säljer support, servicekontrakt och kommersiella licensierade kopior. Programmets huvudsaklige utvecklare är Michael Widenius och David Axmark. [2]

2.3 CSS – Cascading Style Sheets

CSS är ett språk som används för att beskriva presentationsstilen för ett strukturerat dokument.

Språket utvecklades av Håkon Wium Lie och Berc Bos 1994 och används främst för att presentera informationen i ett XML- eller XHTML-dokument eftersom de endast innehåller strukturerad text utan stilinformation. Det kan även användas för att anpassa presentationen efter fler olika medier som till exempel hur det skrivs ut på ett papper, en webbsida eller på en mobiltelefon.

Användandet av dessa mallar kan spara mycket tid och arbete eftersom man bara behöver ändra på ett enda ställe för att förändra utseendet på flera filer. [3]

2.4 XHTML

Extensible Hypertext Markup Language (XHTML) är ett standard format för webbsidor som har specificerats av W3C (se Ordlista). Märkspråket XHTML är en vidareutveckling av HTML (se Ordlista). Skillnaden mellan de båda är att XHTML är baserat på XML istället för SGML vilket gör språket mer strikt. XHTML började utvecklas som en omformulering av HTML i XML och anses av många vara den nya versionen av HTML, men XHTML är ett separat märkspråk.

XHTML 1.0 som alltså är en omformulering av HTML 4.01 som XML och definieras på samma sätt som HTML 4.01 av tre olika dokumentmallar, XHTML 1.0 Strict, XHTML 1.0 Transitional och XHTML 1.0 Frameset (se Ordlista). Skillnaderna mellan dessa är att i Strict så tillåts inte vissa utgångna element som exempelvis ”font” eller ”center” (se Ordlista) medan de är tillåtna i Transitional. Frameset liknar HTML 4.01 Frameset fast med XML syntax. Den vanligaste dokumentmallen som används är Transitional.

År 2000 blev XHTML 1.0 en W3C-rekommendation och år 2001 kom version 1.1 som en ny rekommendation. [4]

Page 5: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

5

3 Förutsättningar och krav

Förutsättningarna för detta arbete har varit goda. Jag har av kunden helt själv fått välja programmeringsspråk och databashanterare som jag ville använda.

Att företaget ligger i Hässleholm och jag inte har haft möjlighet att vara där nere hela tiden har varit lite problematiskt. Lösningen blev att jag har jobbat mot en sida på internet där jag kunnat ladda upp och testa alla sidor och sedan vid de tillfällen som jag åkt ner till Hässleholm kunnat lägga över de funktioner som varit klara allt eftersom.

Kraven från kunden har varit att skapa ett system som de kan ha på sitt intranät. Systemets huvudsakliga uppgift ska vara att hantera alla företagets ritningar på lång sikt. Man ska i systemet kunna söka fritt bland alla ritningar som är inlagda, man ska även kunna söka på en specifik maskin och då kunna få upp alla ritningar som denna maskin är byggd av. Användarna av systemet skall även kunna lägga in förslag på önskade ritningsändringar. Dessa ritningsändringsförslag ska sedan de som jobbar på konstruktionsavdelningen kunna ta fram och lägga in vilken åtgärd som har gjorts.

Systemet skall även kunna skriva ut alla ritningar som är nödvändiga för en maskin och de ska skickas till rätt skrivare i förhållande till formatet på ritningen. Det ska även gå att själv välja antalet av respektive ritning.

3.1 Kravspecifikation

Från Roundo fick jag följande krav och önskemål om funktioner: Kunna lagra all nödvändig information om ritningar.

• Kunna koppla samman ritningar till maskiner och delar av maskiner. • Kunna söka bland ritningarna/maskinerna med avseende på följande

parametrar: o Maskinnummer o Serie o Benämning o Maskintyp o Ritningsnummer o Revision o Datum o Anmärkning o Om ritningen ersätter en annan ritning o Om ritningen är ersatt av en annan ritning

• Kunna lägga in information om det finns saker på ritningar som behöver ändras.

• Att konstruktörerna ska kunna få fram denna information innan de skapar en maskin eller serie och då också kunna lägga in att de har åtgärdat problemet.

• Önskemål om att direkt från systemet direkt kunna skriva ut alla ritningar i de antal som önskas för ett visst ändamål.

4 Beskrivning av konstruktionslösning

Jag kommer bygga hela systemet till väldigt stor del på en databas. Detta för att göra det enkelt att kontrollera och uppdatera systemet. Alla ritningar kommer finnas sparade som PDF filer på en server och i databasen kommer sökvägen till dessa finnas. Språken jag kommer använda mig av är PHP och HTML, databasen kommer jag bygga i MySQL.

Page 6: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

6

4.1 Databasen

Databasen består av 10 olika tabeller som lagrar olika delar av informationen som behövs för alla ritningar, maskiner och orders. Det finns även en tabell som lagrar användarinformation och en för att hantera alla menyelement. Jag har valt att ha ett prefix för alla tabeller för att underlätta om man ska anpassa databasen för något annat företag. Detta prefix är roundo_. Alla tabeller och kolumner har engelska namn för att slippa ersätta å ä och ö men a och o. Detta för att minimera risken för missförstånd och feltolkningar. För att se fullständig information om databasen se bilaga A.

4.2 Systemet

Systemet skapar jag med PHP som huvudsakligt språk, men även en del XHTML kommer användas. För att sköta utseendet på alla sidor så används en CSS fil.

Grunden av systemet är en startsida som i sin tur anropar andra PHP-filer, beroende på vad för sida som ska visas för stunden, utifrån olika variabler. Denna konstruktion gör hela systemet mer överskådligt och gör även det möjligt att välja att vissa funktioner bara ska vara tillgänglig för vissa användargrupper. Det underlättar även om det är så att man vill lägga till eller ta bort olika funktioner.

5 Implementering och test

5.1 Planeringsfasen

Det första jag gjorde var att sätta mig och fundera på en struktur av systemet med lämpliga huvudsidor och undersidor och hur de olika funktionerna som efterfrågades skulle kopplas till varandra.

Figur 1: Första skiss av systemstruktur

När detta var gjort började planeringen av databasen. För att göra detta så samlade jag in exempel av ritningsförteckningar, maskinförteckningar och orders som skulle in i systemet. Med dessa papper som grund började jag skissa på vilka tabeller som behövdes, lämpliga primärnycklar och främmande nycklar. Första utkastet till databasen blev 6 olika tabeller.

Page 7: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

7

5.2 Implementation av databasen

Databasen har jag skapat med MySQL som databashanterare. Som verktyg har jag använt det grafiska gränssnittet phpMyAdmin som är väldigt populärt bland olika webbhotell. I detta skapade jag alla de tabeller som jag trodde var nödvändiga. Men dessa har under implementeringen av systemet fått modifieras. Vissa tabeller och fält har jag upptäck varit onödiga och andra har jag saknat och således fått lägga till. Den slutgiltiga databasstrukturen kan du se i bilaga A. Databasen är normaliserad i tredje normalform, så när som tabellen roundo_users där kolumnen name innehåller både för och efternamn.

5.3 Implementation av systemet

Jag har haft som mål att hela systemet skall vara validerat av W3C [5] för både XHTML, enligt XHTML Transitional, och CSS.

5.3.1 Huvudsidan Huvudsida, index.php, är väldigt enkel. Den är skriven i huvudsak XHTML med vissa stycken av PHP-kod för att läsa in de olika sidor som ska visas.

I början av filen har jag ett PHP-stycke som inkluderar en PHP-fil som heter dbfunc.php och även startar en session för att lagra användarinformation [6].

I övrigt har jag byggt upp sidan med fem <div>-taggar. Jag har en som definierar hela sidan, detta för att ha möjlighet att centrera sidan i webbläsarfönstret. Sen består den i sin tur av fyra delar: header, left, content och footer. Left är den del där menyn läses in och content är den del där alla olika sidor laddas. Vilken sida som ska laddas styrs av en if-sats i PHP:

<?php if($_SESSION['online'] || isset($_REQUEST['page'])){ if(isset($_REQUEST['page'])) require_once('pages/'.$_REQUEST['page'].'.php'); else require_once('pages/inside.php'); }else require_once('pages/start.php'); ?>

Detta kodstycke kollar helt enkelt om någon är inloggad och vad variabeln $_REQUEST[’page’] är satt till. Om $_REQUEST[’page’] är satt så laddas helt enkelt den sidan in. Om den inte är satt men någon är inloggad så laddas filen inside.php. Och om inte någon är inloggad så laddar start.php som innehåller inloggningsformuläret.

5.3.1.1 dbfunc.php

Denna fil innehåller tre funktioner, en för att starta en databaskoppling, startDBConnection, en för att stänga en databaskoppling, stopDBConnection, och en funktion som returnerar en sträng innehållande XHTML-koden för menyn, generateMenu. Den läser även in en fil som heter settings.php som innehåller definitioner av följande konstanter:

• DB_USER – användarnamnet på databasen • DB_PASSWORD – lösenordet för databasen • DB_HOST – servernamnet för databasen • DB_NAME – namnet på databasen • TABLE_PREFIX – prefixet för alla tabeller • DRW_PATH – sökvägen till mappen där alla ritningar ligger

Page 8: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

8

Anledningen till att jag lagt dessa konstanter i en egen fil är för att det ska vara enkelt att anpassa allt detta till andra system eller servrar, om så önskas, utan att behöva gå in på allt för många ställen i koden och modifiera.

5.3.1.2 Menyn

Menyn, som laddas in på huvudsidan, skapas av funktionen generateMenu i filen dbfunc. Det denna funktion gör är att den hämtar alla rader i tabellen roundo_menu som har en aktiv status och har den behöringhetsnivån som den inloggade användaren. Detta sorterar den sedan på kolumnen order för att få menyn sorterad på det sätt som önskas. Utifrån den information som databasen returnerar så skapar den sedan den XHTML-kod som behövs för att visa menyn med länkarna.

5.3.1.3 Inloggningsfunktion

Inloggningsfunktionen är väldigt simpel, den tar helt enkelt det användarnamn som skrivs in i formuläret och kontrollerar om det är ett av de användarnamn som finns lagrade i databasen. Om så är fallet så sätts sessionsvariabler för att man är inloggad, namn på användaren och vilket behörighet personen har. Lösenord har valts att inte användas då Roundo inte ansåg detta vara nödvändigt eftersom systemet bara ligger på deras intranät.

5.3.2 Sök pdf Detta blev en extra funktion som efterfrågades under arbetets gång. Denna funktion gör det möjligt för användaren att söka bland alla pdf-filer som finns utan att det ska finnas inlagd information i databasen. Detta för att de redan nu skulle kunna få nytta av systemet trots att inte all information lagrats.

Det som sker här är att det visas ett sökformulär där användaren skriver in ett helt eller en del av ett ritningsnummer. Utifrån det så kollas alla filer i ritningsmappen igenom och ser om det matchar sökkriteriet. För att hämta alla filer i mappen använder jag följande funktion:

function getFiles($dir) { $files = array(); if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { if(filetype("$dir/$file")!="dir") $files[] = $file; } closedir($dh); } } return $files; }

Denna funktion returnerar en array med alla filer som finns i sökvägen som kommer som parametrar. Denna array matchas sedan mot sökkriteriet.

Page 9: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

9

5.3.3 Sök ritning Denna funktion skiljer sig från sök pdf på så sätt att den utgår från informationen i databasen istället för vilka filer som finns i mappen för ritningarna.

Detta är uppbyggt av två filer, en som genererar själva sökformuläret, search_drawing.php, och en som presenterar resultatet, search_result.php.

Figur 2: Sökformuläret för sök ritningsfunktionen

I formuläret, se figur 2, behöver man bara fylla i så mycket man vet, eller inget alls, och då hämtas informationen för alla ritningar som passar in på kriterierna. Detta genom att fråga efter all information i tabellen roundo_drawings där det som står i formuläret ska vara en del av den information som är inlagd i respektive formulär. Frågan för detta ser ut som följer:

'SELECT * FROM '.TABLE_PREFIX.'drawings WHERE drawingID LIKE "%'.$_REQUEST['drawingID'].'%" AND review LIKE "%'.$_REQUEST['review'].'%" AND machinetype LIKE "%'.$_REQUEST['machinetype'].'%" AND designation LIKE "%'.$_REQUEST['designation'].'%" AND designation2 LIKE "%'.$_REQUEST['designation2'].'%" AND observation LIKE "%'.$_REQUEST['observation'].'%" AND drawed_by LIKE "%'.$_REQUEST['drawed_by'].'%" ORDER BY drawingID, review'

TABLE_PREFIX är en av de definierade konstanterna, de olika $_REQUEST-variablerna är den information som kommer från formuläret. Svaret sorterar jag på både ritningsnumret, drawingID, och revisionen, review.

Resultatet presenteras sedan i en tabell, se figur 3, där det även finns en länk till pdf-filen för respektive ritning, under förutsättning att det finns en pdf för ritningen.

Figur 3: Exempel på hur sökresultatet presenteras

Page 10: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

10

5.3.4 Skapa ritning Detta är en funktion för att skapa en ny ritning. Först kommer man till ett formulär, se figur 4, som ligger i filen create_drawing.php, där användaren väljer vilken typ och storlek det ska vara på ritningen. Detta bestämmer första siffran och/eller bokstaven i ritningsnumret.

När man tryckt på nästa kommer man till ett formulär där man får fylla i övrig information om ritningen. Ritningsnumret är för ifyllt med numret efter det högsta som ligger lagrat i databasen för respektive ritningstyp/storlek.

Figur 4: Formulär för att skapa ritning

När användaren fyllt i all information och trycker på skapa så läggs informationen in i databastabellen roundo_drawings.

5.3.5 Lägg till ritning Detta är en funktion för att lägga till information om äldre ritningar, som skapats innan systemet kommer i funktion, och att lägga till nya revisioner av ritningar. Formuläret är i stort sett identiskt med formuläret för att skapa ritning förutom att det även finns en knapp för att skapa ny revision. Huvudformuläret ligger i filen add_drawing.php, och om man väljer ny revision så krävs att man har fyllt i ett ritningsnummer, om det är ifyllt och det finns sedan tidigare i databasen kommer man till ett likadant formulär där den information som ligger lagrad i databasen kommer för ifylld. Ett extra fält finns för att skriva in vilka förändringar som gjorts från de tidigare revisionerna. Ny revision sköts av filen new_review.php.

5.3.6 Ny ritningsförteckning Detta är funktionen för att skapa de ritningslistor som finns för respektive maskintyp. Här kommer man först till ett stort formulär, se figur 5, där användaren börjar fylla i information om maskintyp, information, vilka ritningar som ska vara med och så vidare. Detta finns i filen new_drawinglist.php. När detta är ifyllt och man trycker på nästa laddas ett större formulär där informationen om de ritningar som ska vara med hämtas från databasen, om ritningen är inlagd det vill säga.

Page 11: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

11

Figur 5: Exempel på hur det kan se ut i steg 2 på skapa ritningsförteckning

Detta genereras av filen drawinglist_info, i detta stadie så kan användaren fylla i mer information och uppdatera fälten på nytt. Man kan även välja att skapa en ny sida om det behövs fler fält i ritningslistan. Om man trycker på ny sida så sparas alla rader i detta formulär ner i databastabellen roundo_tempdrwlistrows. När användaren sedan är nöjd trycker han på Klar och då lagras all information i databasen. Huvudinformationen lagras i tabellen roundo_drawinglist och informationen för respektive rad, även då de som lagrats temporärt, sorteras på ritningsnumret och lagras i tabellen roundo_drawinglist_row.

5.3.7 Maskin/ritningsförteckningar Detta är egentligen flera funktioner som kopplas samman i en händelsekedja. Det första man kan göra är att söka efter ritningsförteckningar utifrån maskintyp, men sen så kan man även gå in och ändra i ritningsförteckningar och skapa serier och maskiner.

Page 12: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

12

5.3.7.1 Söka ritningsförteckningar

Det första man möts av är ett enkelt formulär där användaren får fylla i maskintypen man söker efter. När användaren gjort detta visas en lista över alla ritningsförteckningar för denna maskin, se figur 6.

Figur 6: Exempel på hur sökresultatet kan se ut för sökning av ritningsförteckningar

Här ser användaren också om det finns eventuella ritningsändringar som rör maskintypen eller en specifik ritning, detta flaggas med en liten varningstriangel. Användaren har här möjlighet att gå in och se hela ritningsförteckningen, se figur 7, genom att trycka på ett sidnummer. Om det är så att det är en specifik ritning som har en ritningsförändring registrerad så ser användaren då vilken det är. Allt detta genereras av filen machine_drawinglist.php.

Figur 7: Exempel på hur en ritningsförteckning kan se ut

5.3.7.2 Ändra ritningsförteckningar

Denna funktion kommer användaren åt genom att trycka på Ändra inne i en ritningsförteckning, se figur 8. Om man trycker där så kommer man till sidan för att skapa ritningsförteckningar, men man har bara möjlighet att ändra informationen och lägga till ytterligare sidor.

Page 13: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

13

5.3.7.3 Skapa serier och maskiner

Denna funktion kommer man till genom att trycka på Skapa serie efter det att man sökt efter ritningsförteckningar. Man skickas då till en sida där man kan välja vilka ritningsförteckningar som ska vara med i serien, se figur 8. Detta hanteras av filen new_serie.php.

Figur 8: Formulär för att välja vilka ritningslistor som ska ingå i serien

Efter det så får man upp en sida där man fyller i serienummer och antal maskiner som ska finnas i serien, se figur 9. Man får även upp en lista över alla ritningar som ingår i ritningsförteckningarna så att man har möjlighet att välja bort vissa om de inte ska ingå i just denna serie.

Figur 9: Formuläret där man kan välja vilka ritningar som ska ingå i en serie

När man sedan trycker på nästa så skapas serien och man får fylla i maskinnummer på de maskiner man redan nu vill skapa, se figur 10.

Page 14: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

14

Figur 10: Formulär för att fylla i maskinnummer i serien

När detta är gjort visas en till lista över alla ritningar som ingår i maskinen, då är självklart inte de ritningar man eventuellt valde bort med, se figur 11.

Figur 11: Sista tabellen man ser efter att man skapat en maskin

Här har man möjlighet att trycka fram pdf-filen för respektive ritning och skriva ut i det antal som anges.

Page 15: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

15

5.3.8 Ritningsändringar Detta är en funktion för att användaren ska kunna lägga in önskemål om eventuella förändringar som behöver göras på ritningar eller maskiner. Det fungerar på så sätt att användaren får ett formulär, se figur 12, att fylla i ritningsnummer och/eller maskintyp, meddelande om vad som behöver ändras och vilken prioritet det har.

Figur 12: Formuläret för ritningsändringar

När användaren fyllt i informationen och tryck på registrera så läggs informationen in i databastabellen roundo_drawingchanges. Detta sköts av filen reg_change.php.

5.3.9 Lista ändringar Denna funktion gör det möjligt för användaren att söka efter ritningsändringar, lista de 10 som har högst prioritet eller lista alla registrerade ändringar, se figur 13. Detta sköts av filen drawingchange.php. Det första användaren möts av är ett formulär för sökning. När sökningen är gjord presenteras resultatet under formuläret.

Figur 13: Formulär och sökresultat för ändringar

Om användaren önskar så kan han trycka på antingen ritningsnumret eller maskintypen för att få fram mer information om ändringen. I det läget har även man möjlighet att behandla ändringarna och sätta eventuell åtgärd, se figur 14. Dessa funktioner sköts av filen edit_drawingchange.php.

Page 16: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

16

Figur 14: Exempel på hur det kan se ut när en ritningsändring är åtgärdad.

5.3.10 Hantera användare Denna funktion är till för att skapa, ändra och ta bort användare. Den hanteras av filen handle_users.php tillsammans med add_user.php, delete_user.php och edit_user.php. Användaren möts av ett enkelt formulär, se figur 15, där denne väljer vad han vill göra och vilken användarnamn det gäller. Beroende på vilken uppgift som ska utföras anropas de olika filerna. Självklart uppdateras informationen i databastabellen roundo_drawing.

Figur 15: Formulären för hantering av användare

5.3.11 CSS-filen Denna fil, roundo.css, är den som styr över i stort sett allt utseende på sidan. Allt ifrån typsnitt, var de olika fälten ska placeras, hur de olika formulären och tabellerna ska se ut.

Page 17: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

17

6 Resultat

6.1 Databasen

Databasens struktur och funktioner har blivit ungefär som jag hade tänkt mig från början, dock har vissa förändringar fått tillkomma under tidens gång allt eftersom man fått förståelse för hur Roundo hanterar orders och ritningar.

Det som man här eventuellt skulle kunna förbättra är att skapa vissa indexeringar på vissa kolumner och tabeller för att effektivisera frågorna.

6.2 Systemet

Systemet fungerar bra, dock har jag inte fått med alla de funktioner som från början önskades, så som att kunna söka på maskinförteckningar och att kunna skriva ut hela maskiner med rätt antal kopior. Men det är enkelt att från sidan göra dessa utskrifter genom att ta upp pdf-filen. Systemet har under hela arbetets gång testats av både mig och kunden. Detta har gjorts möjligt genom att det hela tiden legat på internet.

Strukturen för systemet har inte blivit lika modulbaserad som jag tänkt från början, men fortfarande är det ganska enkelt att lägga till och ta bort funktioner efter behov.

6.3 Svar på frågeställningar

• Ja, man kan på ett smidigt sätt leta efter ritningar och skriva ut dessa. • Ja, ritningsändrignar kan fångas upp av systemet och åtgärd kan läggas in.

7 Diskussion

7.1 PHP

Valet av PHP som programmeringsspråk beror på att jag tidigare jobbat en hel del med det och känner mig hemma med dess syntax och semantik. En ytterligare anledning är att det är ett språk som är lätt att använda och har många färdiga komponenter och funktioner som dessutom hela tiden utvecklas. En annan väldigt stor fördel är att det finns en väldigt bra dokumentation på internet över alla funktioner.

Nackdelar som jag upptäckte under arbetets gång var bland annat att det är svårt att installera PHP på en server med Windows Server 2003, detta ledde till att jag fick ägna mer tid än planerat åt att få allt att fungera på Roundos server.

Jag hade även problem (ett känt problem enligt många forum) att få serversökvägar att fungera som planerat. Detta medförde att Roundo var tvungna att flytta på mappen för alla ritningar så att den blev ”fysiskt” placerad på samma hårddisk som själva hemsidan.

7.2 MySQL

Även MySQL valde jag för att jag arbetat med det tidigare och är ett enkelt och smidigt att komma igång med. Det är även den vanligaste databashanteraren som används för öppna projekt på internet.

Jag har egentligen inte upptäckt några direkta problem med MySQL i detta projekt, utan det flöt på utan några direkta komplikationer. Mycket tack vare att det finns ett enkelt webbgränssnitt, phpMyAdmin, för att skapa och modifiera databaser och tabeller.

Page 18: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

18

7.3 Systemet

Utvecklingen av systemet har fungerat bra, jag har under arbetets gång haft bra kontakt med företaget där jag fått mycket och bra respons.

Eftersom jag inte kunnat befinna mig på företaget under hela utvecklingen har jag istället utvecklat systemet mot en hemsida. Tack vare detta har jag haft möjlighet att jobba oavsett var jag har befunnit mig, så länge jag haft tillgång till internet. Detta har också medfört att min kontaktperson på företaget kunnat testa funktionerna allt eftersom de blivit klara och då komma med feedback.

Självklart har man under utvecklingens gång stött på vissa problem, ett av problemen var att få PHP att fungera i Windows Server 2003. Men efter en del efterforskningar på internet hittade jag hjälp för att få allt att fungera [7].

En av de största utmaningarna i utvecklingen har varit att sätta sig in i hur Roundo hanterar sina ritningar, förteckningar och orders. Det har varit mycket bollande fram och tillbaka för att få all data representerad och lagrad på rätt sätt.

När det gäller systemets struktur så känner jag att det skulle finnas mer att önska. Nu i efterhand har jag upptäckt att det hade funnits snyggare och förmodligen effektivare sätt att bygga upp systemet. En önskan hade varit att det skulle varit mer modulbyggt och på så sätt lättare att implementera fler funktioner i efterhand.

7.4 Framtida utveckling

Under utvecklingens gång har jag upptäckt flera saker som man skulle kunna utveckla vidare för att få ett ännu mer komplett system:

• Lägga in funktioner för att hantera alla typer av orders. • Koppla orders till maskinnummer och även kunna skriva ut dessa på önskat

sett. • Få möjligheten att skriva ut hela maskiner, serier eller orders direkt i de

antal som önskas att fungera. • Söka bland standardkomponenter, så som muttrar, skruvar och lager, som

Roundo inte själva tillverkar utan beställer. • Möjlighet att skicka iväg ritningsfiler som epost till kunder och tillverkare

direkt i systemet. • Möjlighet att skicka e-post till ansvarig konstruktör om man behöver en pdf

på en ritning eller någon ritningsändring. • Möjlighet att lägga in lagersaldon och koppla ihop systemet med Pyramid

ekonomisystem.

8 Slutsatser

Detta examensarbete har resulterat i ett system som jag anser kan förenkla väldigt mycket för kunden. Tack vare detta kan de spara mycket tid och arbete genom att de inte behöver leta i pärmar och lådor efter ritningar och förteckningar. Även att skapa ritningsförteckningar förenklas tack vare att information kan hämtas från andra tabeller och således bara behöver skrivas en gång. Systemet uppfyller kravspecifikationen och kunden har ett system som är redo att användas.

Dessvärre lyckades jag inte att lösa problemet med utskrifter direkt från systemet utan att man ska behöva öppna pdf filerna. Men detta är något som jag tänker fortsätta forska i för att förhoppningsvis komma på en bra lösning som kan implementeras i efterhand.

För att sammanfatta examensarbetet så känner jag att det blivit ett bra resultat, men att det finns mycket mer man hade kunnat göra, för att förenkla ännu mer för kunden, om bara tid hade funnits.

Page 19: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

19

Referenser

[6] PHP 5 och MySql Handboken, Jörgen Overgaard, Pagina Förlags AB, 2004, ISBN: 91-636-0801-4

Webbreferenser

[1] http://sv.wikipedia.org/wiki/PHP, 2008-05-30 [2] http://sv.wikipedia.org/wiki/MySQL, 2008-05-30 [3] http://sv.wikipedia.org/wiki/Cascading_Style_Sheets, 2008-05-30 [4] http://sv.wikipedia.org/wiki/XHTML, 2008-05-30 [5] http://www.w3.org/, 2008-05-30 [7] http://www.peterguy.com/php/install_IIS6.html, 2008-05-30

Page 20: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

20

Bilaga A: Databasen

Figur A1: Databasens tabeller och relationer

Tabell A1: roundo_drawings

Namn Datatyp Beskrivning drawingID varchar(10) Ritningsnummer, t.ex. 45911A

CPK review char(1) Revision, t.ex. A

machinetype varchar(15) Maskintyp, t.ex. R-16-S

designation varchar(127) Benämning av vad ritningen är, t.ex. Standardkomponenter

designation2 varchar(127) Benämning 2

observation varchar(127) Anmärkning

drawed_by char(3) Vem som ritat ritningen

date date Datum när ritningen är ritad

changes varchar(127) Eventuella ändringar från tidigare revisioner

replaces varchar(10) Eventuellt ritningsnummer på ritning som denna ritning ersätter

replaced_by varchar(10) Eventuellt ritningsnummer som denna ritning är ersatt av

assy char(1) T om det är en sammansättning av flera ritningar, annars F

Huvudtabell för att lagra information om ritningarna.

Tabell A2: roundo_drawinglist

Namn Datatyp Beskrivning PK drawinglistID int(10) Ett unikt nummer som skapas för respektive

ritningslista review char(1) Revision page int(11) Sidnummer machinetype varchar(15) Maskintyp info varchar(127) Information om vilken del av en maskin som

ritningslistan beskriver date date Datum då ritningslistan skapades

Tabell innehållande huvudinformationen om en ritningslista.

Tabell A3: roundo_drawinglist_row

Namn Datatyp Beskrivning

Page 21: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

21

PK drawinglist_rowID int(11) Ett unikt nummer som skapas för respektive ritningslistrad

FK drawingID varchar(10) Ritningsnummer, koppas till tabellen roundo_drawings

pos varchar(5) Position på ritningen FK drawinglistID int(11) Ritningslistid, kopplas till tabellen

roundo_drawinglist stm char(3) Antal eller längd observation varchar(127) Anmärkning

Tabell som representerar varje rad som en ritningslista innehåller.

Tabell A4: roundo_temp_drwlistrows

Namn Datatyp Beskrivning PK id int(11) Unikt nummer som skapas för varje rad drwID varchar(10) Ritningsnummer pos varchar(5) Position stm char(3) Antal eller längd observation varchar(127) Anmärkning

Tabell som temporärt lagrar bara temporärt innan informationen lagras i roundo_drawinglist_row.

Tabell A5: roundo_series

Namn Datatyp Beskrivning series varchar(4) Serienummer quantity int(2) Antal maskiner som kan ingå i serien CPK number int(2) Löpnummer

Tabell som lagrar alla serier, skapas en rad för varje löpnummer.

Tabell A6: roundo_machine

Namn Datatyp Beskrivning PK machineID varchar(6) Unikt maskinnummer som identifierar en

specifik maskin FK series varchar(4) Serienummer, kopplas till tabellen

roundo_series FK quantity int(2) Antal maskiner som finns i ovannämnda serie,

kopplas till tabellen roundo_series FK number int(2) Löpnummer, kopplas till tabellen roundo_series

Tabell som lagrar maskinnummer och vilken serie maskinen hör till.

Page 22: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

22

Tabell A7: roundo_machinelist

Namn Datatyp Beskrivning drawinglist_rowID int(10) Ritningslistradsnummer, både primärnyckel

och främmande nyckel, kopplas till tabellen roundo_drawinglist_row

series varchar(4) Serienummer, både primärnyckel och främmande nyckel, kopplas till tabellen roundo_series

CPK, FK

number int(2) Löpnummer, både primärnyckel och främmande nyckel, kopplas till tabellen roundo_series

Tabell som lagrar information om vilka ritningar som ingår i en viss maskin eller serie.

Tabell A8: roundo_drawingchanges

Namn Typ Beskrivning PK drawingchangesID int(10) Unikt nummer som skapas för varje

ritningsändring FK drawingID varchar(15) Ritningsnummer, kopplas till tabellen

roundo_drawings FK machinetype varchar(15) Maskintyp, kopplas till tabellen

roundo_drawinglist message varchar(255) Meddelande från personen som lagt till

ritningsändringen prio char(1) Vilken prioritet ändringen har, 1 högst sender varchar(50) Avsändare messagedate date Datum när ändringen skapades measure varchar(255) Åtgärd attended_by varchar(50) Vem som åtgärdat attended_date date Datum för åtgärd measured char(1) T om det är åtgärdad, annars F

Tabell med all nödvändig information om de ritningsändringar som ska göras eller har gjorts.

Tabell A9: roundo_users

Namn Datatyp Beskrivning PK userID int(10) Unikt nummer för alla användare username varchar(15) Användarnamn name varchar(50) För och efternamn auth char(1) Vilken behörighet användaren har

Tabell som lagrar all information om användarna i systemet.

Page 23: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

23

Tabell A10: roundo_menus

Namn Datatyp Beskrivning PK menu_ID mediumint(9) Unikt nummer som skapas för varje

menyelement menu_title varchar(100) Titel, den text som ska synas som länk menu_description text Beskrivning, den text som syns när man håller

över länken menu_status char(1) Status, anger om menyelementet skall vara

aktivt eller inte menu_URL varchar(255) URL, sökväg, adress dit länken ska leda menu_order mediumint(9) Ordning, anger i vilken ordning

menyelementen skall visas menu_auth char(1) Behörighet, anger vilken behörighet som krävs

av användaren för att menyelementet skall vara synligt

Tabell för att lagra information om de olika menyelementen som skall finnas på sidan.

Page 24: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

24

Bilaga B: Källkod

Källkoden kan fås digitalt på begäran via e-post. All PHP-kod är har röd text och alla kommentarer har grön text.

index.php

<?php /** * index.php * * Generates the mainpage for the system * * @author Emil Abrahamsson <[email protected]> */ /* Starts buffering */ ob_start(); /* Starts session */ session_start(); /* Includes dbfunc.php */ include('dbfunc/dbfunc.php'); /* Starts databaseconnection */ $dbh=startDBConnection(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link href="css/roundo.css" rel="stylesheet" type="text/css" /> <title>ROUNDO</title> </head> <body> <div class="container"> <div class="header"> <table width="100%"> <tr> <td><a href="http://intranet/">INTRANÄT</a></td> <td><a href="http://www.roundo.com/">INTERNET</a></td> <td><a href="index.php">RITNINGSARKIV</a></td> </tr> </table> </div> <div class="left"> <?php echo(generateMenu($dbh)); ?> </div> <div class="content"> <?php if($_SESSION['online'] || isset($_REQUEST['page'])){ if(isset($_REQUEST['page'])) require_once('pages/'.$_REQUEST['page'].'.php'); else require_once('pages/inside.php'); }else require_once('pages/start.php'); ?> </div> <div class="footer"> <table width="100%"> <tr> <td>Sidan är skapad av: Emil Abrahamsson</td> </tr> </table> </div> </div> </body> </html>

Page 25: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

25

dbfunc.php

<?php /** * dbfunc.php * * Contains some function comunication with the database * * @author Emil Abrahamsson <[email protected]> */ /* Includes the settings */ include("settings.php"); /** * startDBConnection() * * Connects to the database with the settings gotten from settings.php * * @return pointer to the database */ function startDBConnection() { $dbh = @mysql_connect(DB_HOST, DB_USER, DB_PASSWORD); @mysql_select_db(DB_NAME, $dbh) or die("Could not connect to database"); return $dbh; } /** * stopDBConnection($dbh) * * Stops the databaseconnection that comes as parameter * * @param $dbh pointer to the database */ function stopDBConnection($dbh) { @mysql_close($dbh); } /** * generateMenu($dbh) * * Genterates the HTML code needed to show the menu. * All information is retrieved from the database. * * @param $dbh pointer to the database * @return String the HTML code needed to show the menu */ function generateMenu($dbh){ $buffer=''; if(!isset($_SESSION['online'])){ $sql='SELECT * FROM '.TABLE_PREFIX.'menus WHERE menu_status="A" AND menu_auth>=4 ORDER BY menu_order'; $result=@mysql_query($sql,$dbh); if($result){ while($row=@mysql_fetch_array($result, MYSQL_ASSOC)){ $buffer.=' <div class="menu"> <a href="'.$row["menu_URL"].' "title="'.$row['menu_description'].'" class="menu">'.$row["menu_title"].'</a> </div> '; } }else{ $buffer.='<div class="menu"><b>Query failed</b></div>'; } }else{ $sql='SELECT * FROM '.TABLE_PREFIX.'menus WHERE menu_status="A" AND menu_auth>='.$_SESSION['auth'].' ORDER BY menu_order'; $result=@mysql_query($sql,$dbh); if($result){ while($row=@mysql_fetch_array($result, MYSQL_ASSOC)){

Page 26: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

26

$buffer.=' <div class="menu"><a href="'.$row["menu_URL"].'"title="'.$row['menu_description'].'"class="menu">'.$row["menu_title"].'</a></div> '; } }else{ $buffer.='<div class="menu"><b>Query failed</b></div>'; } } return $buffer; } ?>

settings.php

<?php /** * settings.php * * Contains some settings for the system * * @author Emil Abrahamsson <[email protected]> */ /* Database username */ define("DB_USER", "root"); /* Database password */ define("DB_PASSWORD", "Emil"); /* Database host */ define("DB_HOST", "localhost"); /* Database name */ define("DB_NAME", "ritningsarkiv"); /* Prefix for all tables in database */ define("TABLE_PREFIX", "roundo_"); /* Path to all drawings */ define("DRW_PATH","/draings/pdf/"); ?>

roundo.css

@charset "utf-8"; A:link{ color: #b22e1e; font-weight: bold; text-decoration: none; } A:active{ color: #b22e1e; font-weight: bold; text-decoration: none; } A:visited { color: #b22e1e; font-weight: bold; text-decoration: none; } A:hover { color: #999999; font-weight: bold; text-decoration: none; }

Page 27: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

27

div.container{ background-image: url(/images/background.jpg); background-repeat:no-repeat; margin:0px auto; width:920px; height:670px; line-height:150%; } div.header{ font-family:Verdana, sans-serif; font-size:18px; text-align:left; line-height:35px; position:absolute; float:left; width:680px; height:50px; margin-left:10px; padding:1em; } div.left{ position:absolute; text-align:center; width:88px; height:265px; margin-left:10px; margin-top:156px; padding:1em; } div.content{ position:absolute; margin-left:150px; margin-top:156px; width:710px; height:425px; padding:1em; float:left; overflow:scroll; } div.footer{ font-family:Verdana, Arial, Helvetica, sans-serif; font-size:9px; color:#666666; position:absolute; margin-top:615px; margin-left:10px; width:900px; top: 34px; float:left; } .menu{ font-family: Verdana, sans-serif; font-size: 10px; text-align:center; color: #000000; line-height: 12px; padding-bottom:0.5em; padding-top:0.5em; } label{ margin-right: 0.5em; display: block; } input, select, textarea{ color: #781351; background: #fee3ad; border: 1px solid #781351; font-family: Verdana, sans-serif; font-size:10px; } fieldset{ border: 1px solid #781351; width:480px; }

Page 28: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

28

fieldset.signin{ border: 1px solid #783151; width: 260px; height:80px; } legend{ color: #b22e1e; font-weight:700; background: #fec337; border: 1px solid #781351; padding: 2px 6px; } .text{ font-family: Verdana, sans-serif; font-size: 10px; text-align:justify; color: #000000; line-height: 20px; } .error{ font-family: Verdana, sans-serif; font-size: 12px; font-weight:800; text-align:justify; color:#FF0000; line-height: 20px; } table.result{ font-family:Verdana, sans-serif; font-size:10px; text-align:center; color:#000000; line-height:15px; width:710px; table-layout:auto; border-collapse:collapse; } table.drwlist{ font-family:Verdana, sans-serif; font-size:10px; text-align:center; color:#000000; line-height:15px; table-layout:auto; border-collapse:collapse; } table.drawingchange{ font-family:Verdana, sans-serif; font-size:10px; text-align:left; color:#000000; background-color:#FFFFFF; line-height:18px; table-layout:auto; border-collapse:collapse; text-indent:3px; } .machinetype{ font-family:Verdana, sans-serif; font-size:16px; font-weight:bold; color:#000000; line-height:20px; } .info{ font-family:Verdana, sans-serif; font-size:14px; color:#000000; line-height:20px; }

Page 29: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

29

add_drawing.php

<?php /** * add_drawing.php * * Generates a form where the user can fill in information about a drawing. * When the user presses "Lägg till" the drawinginformation will be inserted * into the databasetable drawings. * * @author Emil Abrahamsson <[email protected]> */ $drawingID=ereg_replace("[^A-Za-z0-9]", "", $_REQUEST['drawingID']); if($_REQUEST['new_review']){ if($drawingID!=''){ require_once('pages/new_review.php'); return; }else{ echo('<div class="error">Du har inte angivit något ritningsnummer!</div><br />'); } } if($_REQUEST['save']){ if($_REQUEST['drawingID']!='' && $_REQUEST['review']!=''){ $sql = 'INSERT INTO '.TABLE_PREFIX.'drawings (drawingID, review, machinetype, designation, designation2, observation, drawed_by, date, replaces, replaced_by, assy) VALUES ("'.$drawingID.'", "'.$_REQUEST['review'].'", "'.$_REQUEST['machinetype'].'", "'.$_REQUEST['designation'].'", "'.$_REQUEST['designation2'].'", "'.$_REQUEST['observation'].'", "'.$_REQUEST['drawed_by'].'", "'.$_REQUEST['date'].'", "'.$_REQUEST['replaces'].'", "'.$_REQUEST['replaced_by'].'", "'.$_REQUEST['assy'].'")'; $result=@mysql_query($sql,$dbh); if($result){ echo('<div class="text">Ins&auml;ttningen lyckades!</div>'); return; }else{ echo('<div class="error">Ins&auml;ttningen misslyckades!</div><br />'); } }else{ echo('<div class="error">Du har inte angivit både ritningsnummer och revision!</div>'); } } ?> <div class="text"> <form id="add_drawing" name="add_drawing" action="index.php" method="post"> <input type="hidden" name="page" id="page" value="add_drawing" /> <fieldset style="height:210px;width:510px;"> <legend>L&auml;gg till ritning</legend> <table width="470"> <tr> <td><label for="drawingID">Ritningsnummer:</label></td> <td width="91"><input type="text" name="drawingID" id="drawingID" size="10" value="<?php echo($drawingID); ?>" /></td> <td width="67" align="right"><label for="review">Revision:</label></td> <td width="98"><input type="text" name="review" id="review" size="2" value="<?php if($_REQUEST['review']) echo($_REQUEST['review']); else echo('A'); ?>" /></td> <td width="90" align="right"><label for="machinetype">Maskintyp:</label></td> <td width="122" align="right"><input type="text" name="machinetype" id="machinetype" size="15" value="<?php echo($_REQUEST['machinetype']); ?>" /></td> </tr> <tr> <td width="109"><label for="designation">Ben&auml;mning:</label></td> <td colspan="5"><input type="text" name="designation" id="designation" size="60" value="<?php echo($_REQUEST['designation']); ?>" /></td> </tr> <tr> <td width="109"><label for="designation2">Ben&auml;mning 2:</label></td> <td colspan="5"><input type="text" name="designation2" id="designation2" size="60" value="<?php echo($_REQUEST['designation2']); ?>" /></td> </tr> <tr> <td width="109"><label for="observation">Anm&auml;rkning:</label></td>

Page 30: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

30

<td colspan="5"><input type="text" name="observation" id="observation" size="60" value="<?php echo($_REQUEST['observation']); ?>" /></td> </tr> <tr> <td width="109"><label for="drawed_by">Ritad av:</label></td> <td><input type="text" name="drawed_by" id="drawed_by" size="3" value="<?php echo($_REQUEST['drawed_by']); ?>" /></td> <td align="right"><label for="date">Datum:</label></td> <td><input type="text" name="date" id="date" size="12" value="<?php if($_REQUEST['date']) echo($_REQUEST['date']); else echo(date('Y-m-d')); ?>" /></td> <td align="right"><label for="replaces">Ers&auml;tter:</label></td> <td><input type="text" name="replaces" id="replaces" size="15" value="<?php echo($_REQUEST['replaces']); ?>" /></td> </tr> <tr> <td><label for="assy">Sammanst&auml;llning:</label></td> <td> <select name="assy" id="assy"> <option value="T">Ja</option> <option value="F" selected="selected">Nej</option> </select> </td> <td>&nbsp;</td> <td>&nbsp;</td> <td align="right"><label for="replaced_by">Ersatt av:</label></td> <td><input type="text" name="replaced_by" id="replaced_by" size="15" value="<?php echo($_REQUEST['replaced_by']); ?>" /></td> </tr> <tr> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> <td><input type="submit" name="new_review" id="new_review" value="Ny revision" /></td> <td>&nbsp;</td> <td align="right"><input type="submit" name="save" id="save" value="L&auml;gg till" /></td> </tr> </table> </fieldset> </form> </div>

add_user.php

<?php /** * add_user.php * * Generates a form where the administrator can fill in information about a new user. * When "Spara" is pressed, the information will be inserted into the databasetable users. * * @author Emil Abrahamsson <[email protected]> */ if($_REQUEST['save']){ $ok=1; $sql='SELECT username FROM '.TABLE_PREFIX.'users'; $result=@mysql_query($sql,$dbh); if($result){ while($row=@mysql_fetch_array($result,MYSQL_ASSOC)){ if($row['username']==$_REQUEST['username']) $ok=0; } } if($ok){ $sql='INSERT INTO roundo_users (username,name,auth) VALUES ("'.$_REQUEST['username'].'","'.$_REQUEST['name'].'",'.$_REQUEST['auth'].')'; $result=@mysql_query($sql,$dbh); if($result){ echo('<div class="text">Ins&auml;ttningen lyckades</div>'); return; }else{ echo('<div class="text">Ins&auml;ttningen misslyckades</div>'); return; }

Page 31: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

31

}else echo('<div class="text">Anv&auml;ndarnamnet anv&auml;nds redan!</div><br />'); } ?> <div class="text"> <form id="add_user" name="add_user" action="index.php" method="post"> <input type="hidden" name="page" id="page" value="add_user" /> <fieldset style="height:60px; width:640px;"> <legend>Fyll i informationen</legend> <table width="350"> <tr> <td><label for="username">Anv&auml;ndarnamn:</label></td> <td><input type="text" name="username" id="username" size="15" value="<?php echo($_REQUEST['username']) ?>" /></td> <td><label for="name">Namn:</label></td> <td><input type="text" name="name" id="name" size="50" /></td> <td> <select name="auth" id="auth"> <option value="1">Admin</option> <option value="2">Kostr</option> <option value="3" selected="selected">&Ouml;vriga</option> </select> </td> <td><input type="submit" name="save" id="save" value="Spara" /></td> </tr> </table> </fieldset> </form> </div>

create_drawing.php

<?php /** * create_drawing.php * * Genereates the form where the user selects what size/type of drawing * to create. When "Nästa" is pressed the file new_drawing will be launched. * * @author Emil Abrahamsson <[email protected]> */ ?> <div class="text"> <form name="create_drawing" id="create_drawing" action="index.php" method="post"> <input type="hidden" name="page" id="page" value="new_drawing" /> <fieldset style="width:200px"> <legend>V&auml;lj typ storlek:</legend> <table> <tr> <td><input type="radio" name="type" id="type" value="1" /></td> <td><label for="1">1</label></td> <td><input type="radio" name="type" id="type" value="2" /></td> <td><label for="2">2</label></td> <td><input type="radio" name="type" id="type" value="3" /></td> <td><label for="3">3</label></td> <td><input type="radio" name="type" id="type" value="4" /></td> <td><label for="4">4</label></td> </tr> <tr> <td><input type="radio" name="type" id="type" value="I1" /></td> <td><label for="I1">I-1</label></td> <td><input type="radio" name="type" id="type" value="I2" /></td> <td><label for="I2">I-2</label></td> <td><input type="radio" name="type" id="type" value="I3" /></td> <td><label for="I3">I-3</label></td> <td><input type="radio" name="type" id="type" value="I4" /></td> <td><label for="I4">I-4</label></td> </tr> <tr> <td><input type="radio" name="type" id="type" value="SK" /></td> <td><label for="SK">SK</label></td> </tr>

Page 32: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

32

<tr> <td colspan="8" align="right"><input type="submit" name="next" id="next" value="N&auml;sta" /></td> </tr> </table> </fieldset> </form> </div>

delete_user.php

<?php /** * delete_user.php * * Deletes the user from databasetable users where the username is the same as * the variable $_REQUEST['username']. * * @author Emil Abrahamsson <[email protected]> */ $sql='DELETE FROM '.TABLE_PREFIX.'users WHERE username="'.$_REQUEST['username'].'"'; $result=@mysql_query($sql,$dbh); if($result){ echo('<div class="text">Ins&auml;ttningen lyckades</div>'); return; }else{ echo('<div class="text">Ins&auml;ttningen misslyckades</div>'); return; } ?>

drawingchange.php

<?php /** * drawingchange.php * * Generates the form that shows all information about a drawingchange. * The information is retrieved from the databasetable drawingchanges * where drawingchangeID is the same as $_REQUEST['id']. * If the user has authorisation he can edit the change and also add * a measure, if thats is selected the file edit_drawingchange.php * will be launched. * * @author Emil Abrahamsson <[email protected]> */ $sql='SELECT * FROM '.TABLE_PREFIX.'drawingchanges WHERE drawingchangesID='.$_REQUEST['id']; $result=@mysql_query($sql,$dbh); if($result) $row=@mysql_fetch_array($result,MYSQL_ASSOC); else echo('<div class="text">Query failed</div>'); ?> <form name="drawingchange" id="drawingchange" method="post" action="index.php"> <input type="hidden" name="page" id="page" value="edit_drawingchange" /> <input type="hidden" name="id" id="id" value="<?php echo($_REQUEST['id']); ?>" /> <table class="drawingchange" width="720" border="1"> <tr> <td width="110"><b>Ritningsnummer:</b></td> <td width="50"><?php echo($row['drawingID']); ?></td> <td width="70"><b>Maskintyp:</b></td> <td width="70"><?php echo($row['machinetype']); ?></td> <td colspan="5" width="70">&nbsp;</td> </tr> <tr style="height:150px"> <td colspan="8"><label for="message"><b>Meddelande:</b></label><textarea style="background-color:#FFFFFF; color:#000000; border:1px solid #CCCCCC; text-indent:3px; margin-left:2px;" disabled="disabled" name="message" id="message" cols="115" rows="9"><?php echo($row['message']); ?></textarea></td> </tr> <tr> <td><b><label for="prio">Prio:</label></b></td>

Page 33: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

33

<td><?php echo($row['prio']); ?></td> <td><b>Datum:</b></td> <td><?php echo($row['messagedate']); ?></td> <td width="70"><b>Avs&auml;ndare:</b></td> <td colspan="3"><?php echo($row['sender']); ?></td> </tr> <tr> <td colspan="8"><b><label for="measure">Åtgärd:</label></b><textarea style="background-color:#FFFFFF; color:#000000; border:1px solid #CCCCCC; text-indent:3px; margin-left:2px;" disabled="disabled" name="measure" id="measure" cols="115" rows="9"><?php echo($row['measure']); ?></textarea></td> </tr> <tr> <td colspan="8" align="right"> <?php if($row['measured']=='T') echo('&Aring;tg&auml;rdad av '.$row['attended_by'].' '.$row['attended_date'].'&nbsp;&nbsp;'); else echo('Ej &aring;tg&auml;rdad&nbsp;&nbsp;'); ?> </td> </tr> </table> <table border="0" width="720"> <tr> <td width="50" colspan="8"><?php if($_SESSION['auth']<='2') echo('<input type="submit" name="attend" id="attend" value="Behandla" />'); ?></td> </tr> </table> </form>

drawinglist_info.php

<?php /** * drawinglist_info.php * * Genereates the form that shows all information about the drawings * to add to a drawinglist. Also contains the functions to add and * update the lists. * * @author Emil Abrahamsson <[email protected]> */ if(!isset($_REQUEST['next'])&&!isset($_REQUEST['new_page'])&&!isset($_REQUEST['finished'])){ $sql5='DELETE FROM '.TABLE_PREFIX.'temp_drwlistrows'; $result5=@mysql_query($sql5,$dbh) or die('sql5: '.mysql_error($dbh)); } if(isset($_REQUEST['next'])||isset($_REQUEST['edit'])){ for($i=1;$i<17;$i++) $drawings[$i]=ereg_replace("[^A-Za-z0-9]", "", $_REQUEST['drawingID'.$i]); $sql1= 'SELECT drawingID,review,designation,designation2 FROM '.TABLE_PREFIX.'drawings WHERE drawingID="'.$drawings[1].'" ORDER BY review DESC'; $sql2= 'SELECT drawingID,review,designation,designation2 FROM '.TABLE_PREFIX.'drawings WHERE drawingID="'.$drawings[2].'" ORDER BY review DESC'; $sql3= 'SELECT drawingID,review,designation,designation2 FROM '.TABLE_PREFIX.'drawings WHERE drawingID="'.$drawings[3].'" ORDER BY review DESC'; $sql4= 'SELECT drawingID,review,designation,designation2 FROM '.TABLE_PREFIX.'drawings WHERE drawingID="'.$drawings[4].'" ORDER BY review DESC'; $sql5= 'SELECT drawingID,review,designation,designation2 FROM '.TABLE_PREFIX.'drawings WHERE drawingID="'.$drawings[5].'" ORDER BY review DESC'; $sql6= 'SELECT drawingID,review,designation,designation2 FROM '.TABLE_PREFIX.'drawings WHERE drawingID="'.$drawings[6].'" ORDER BY review DESC'; $sql7= 'SELECT drawingID,review,designation,designation2 FROM '.TABLE_PREFIX.'drawings WHERE drawingID="'.$drawings[7].'" ORDER BY review DESC'; $sql8= 'SELECT drawingID,review,designation,designation2 FROM '.TABLE_PREFIX.'drawings WHERE drawingID="'.$drawings[8].'" ORDER BY review DESC'; $sql9= 'SELECT drawingID,review,designation,designation2 FROM '.TABLE_PREFIX.'drawings WHERE drawingID="'.$drawings[9].'" ORDER BY review DESC'; $sql10='SELECT drawingID,review,designation,designation2 FROM '.TABLE_PREFIX.'drawings WHERE drawingID="'.$drawings[10].'" ORDER BY review DESC'; $sql11='SELECT drawingID,review,designation,designation2 FROM '.TABLE_PREFIX.'drawings WHERE drawingID="'.$drawings[11].'" ORDER BY review DESC';

Page 34: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

34

$sql12='SELECT drawingID,review,designation,designation2 FROM '.TABLE_PREFIX.'drawings WHERE drawingID="'.$drawings[12].'" ORDER BY review DESC'; $sql13='SELECT drawingID,review,designation,designation2 FROM '.TABLE_PREFIX.'drawings WHERE drawingID="'.$drawings[13].'" ORDER BY review DESC'; $sql14='SELECT drawingID,review,designation,designation2 FROM '.TABLE_PREFIX.'drawings WHERE drawingID="'.$drawings[14].'" ORDER BY review DESC'; $sql15='SELECT drawingID,review,designation,designation2 FROM '.TABLE_PREFIX.'drawings WHERE drawingID="'.$drawings[15].'" ORDER BY review DESC'; $sql16='SELECT drawingID,review,designation,designation2 FROM '.TABLE_PREFIX.'drawings WHERE drawingID="'.$drawings[16].'" ORDER BY review DESC'; $result1= @mysql_query($sql1,$dbh) or die('sql1: '.mysql_error($dbh)); $result2= @mysql_query($sql2,$dbh) or die('sql2: '.mysql_error($dbh)); $result3= @mysql_query($sql3,$dbh) or die('sql3: '.mysql_error($dbh)); $result4= @mysql_query($sql4,$dbh) or die('sql4: '.mysql_error($dbh)); $result5= @mysql_query($sql5,$dbh) or die('sql5: '.mysql_error($dbh)); $result6= @mysql_query($sql6,$dbh) or die('sql6: '.mysql_error($dbh)); $result7= @mysql_query($sql7,$dbh) or die('sql7: '.mysql_error($dbh)); $result8= @mysql_query($sql8,$dbh) or die('sql8: '.mysql_error($dbh)); $result9= @mysql_query($sql9,$dbh) or die('sql9: '.mysql_error($dbh)); $result10=@mysql_query($sql10,$dbh) or die('sql10: '.mysql_error($dbh)); $result11=@mysql_query($sql11,$dbh) or die('sql11: '.mysql_error($dbh)); $result12=@mysql_query($sql12,$dbh) or die('sql12: '.mysql_error($dbh)); $result13=@mysql_query($sql13,$dbh) or die('sql13: '.mysql_error($dbh)); $result14=@mysql_query($sql14,$dbh) or die('sql14: '.mysql_error($dbh)); $result15=@mysql_query($sql15,$dbh) or die('sql15: '.mysql_error($dbh)); $result16=@mysql_query($sql16,$dbh) or die('sql16: '.mysql_error($dbh)); $row1 =@mysql_fetch_array($result1,MYSQL_ASSOC); $row2 =@mysql_fetch_array($result2,MYSQL_ASSOC); $row3 =@mysql_fetch_array($result3,MYSQL_ASSOC); $row4 =@mysql_fetch_array($result4,MYSQL_ASSOC); $row5 =@mysql_fetch_array($result5,MYSQL_ASSOC); $row6 =@mysql_fetch_array($result6,MYSQL_ASSOC); $row7 =@mysql_fetch_array($result7,MYSQL_ASSOC); $row8 =@mysql_fetch_array($result8,MYSQL_ASSOC); $row9 =@mysql_fetch_array($result9,MYSQL_ASSOC); $row10=@mysql_fetch_array($result10,MYSQL_ASSOC); $row11=@mysql_fetch_array($result11,MYSQL_ASSOC); $row12=@mysql_fetch_array($result12,MYSQL_ASSOC); $row13=@mysql_fetch_array($result13,MYSQL_ASSOC); $row14=@mysql_fetch_array($result14,MYSQL_ASSOC); $row15=@mysql_fetch_array($result15,MYSQL_ASSOC); $row16=@mysql_fetch_array($result16,MYSQL_ASSOC); $path1=DRW_PATH.$row1['drawingID'].strtolower($row1['review']).'.pdf'; $path2=DRW_PATH.$row2['drawingID'].strtolower($row2['review']).'.pdf'; $path3=DRW_PATH.$row3['drawingID'].strtolower($row3['review']).'.pdf'; $path4=DRW_PATH.$row4['drawingID'].strtolower($row4['review']).'.pdf'; $path5=DRW_PATH.$row5['drawingID'].strtolower($row5['review']).'.pdf'; $path6=DRW_PATH.$row6['drawingID'].strtolower($row6['review']).'.pdf'; $path7=DRW_PATH.$row7['drawingID'].strtolower($row7['review']).'.pdf'; $path8=DRW_PATH.$row8['drawingID'].strtolower($row8['review']).'.pdf'; $path9=DRW_PATH.$row9['drawingID'].strtolower($row9['review']).'.pdf'; $path10=DRW_PATH.$row10['drawingID'].strtolower($row10['review']).'.pdf' ; $path11=DRW_PATH.$row11['drawingID'].strtolower($row11['review']).'.pdf' ; $path12=DRW_PATH.$row12['drawingID'].strtolower($row12['review']).'.pdf' ; $path13=DRW_PATH.$row13['drawingID'].strtolower($row13['review']).'.pdf' ; $path14=DRW_PATH.$row14['drawingID'].strtolower($row14['review']).'.pdf' ; $path15=DRW_PATH.$row15['drawingID'].strtolower($row15['review']).'.pdf' ; $path16=DRW_PATH.$row16['drawingID'].strtolower($row16['review']).'.pdf' ; }else if(isset($_REQUEST['new_page'])){ if($_REQUEST['machinetype']!=''&&$_REQUEST['info']!=''){ storeDrawings($dbh); header('Location: index.php?page=new_drawinglist&machinetype='.$_REQUEST['machinetype'].'&info='.$_REQUEST['info']); exit(); }else{ echo('<div class="error">Du har inte angivit b&aring;de maskintyp och info!</div>'); } }else if(isset($_REQUEST['edit_new_page'])){ if($_REQUEST['machinetype']!=''&&$_REQUEST['info']!=''){ $sql='DELETE FROM '.TABLE_PREFIX.'drawinglist WHERE drawinglistID='.$_REQUEST['drawinglistID']; $result=@mysql_query($sql,$dbh) or die('edit sql: '.mysql_error($dbh)); $sql2='DELETE FROM '.TABLE_PREFIX.'drawinglist_row WHERE drawinglistID='.$_REQUEST['drawinglistID'];

Page 35: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

35

$result2=@mysql_query($sql,$dbh) or die('edit sql2: '.mysql_error($dbh)); storeDrawings($dbh); header('Location: index.php?page=new_drawinglist&machinetype='.$_REQUEST['machinetype'].'&info='.$_REQUEST['info']); exit(); }else{ echo('<div class="error">Du har inte angivit b&aring;de maskintyp och info!</div>'); } }else if(isset($_REQUEST['save'])){ $sql='DELETE FROM '.TABLE_PREFIX.'drawinglist WHERE drawinglistID='.$_REQUEST['drawinglistID']; $result=@mysql_query($sql,$dbh) or die('edit sql: '.mysql_error($dbh)); $sql2='DELETE FROM '.TABLE_PREFIX.'drawinglist_row WHERE drawinglistID='.$_REQUEST['drawinglistID']; $result2=@mysql_query($sql,$dbh) or die('edit sql2: '.mysql_error($dbh)); storeDrawings($dbh); saveDrawinglist($dbh); echo(' <head><meta http-equiv="refresh" content="2;url=index.php"></head> <div class="text">Listan tillagd.</div> '); exit(); }else if(isset($_REQUEST['finished'])){ if($_REQUEST['machinetype']!=''&&$_REQUEST['info']!=''){ storeDrawings($dbh); saveDrawinglist($dbh); echo(' <head><meta http-equiv="refresh" content="2;url=index.php"></head> <div class="text">Listan tillagd.</div> '); exit(); }else{ echo('<div class="error">Du har inte angivit b&aring;de maskintyp och info!</div> '); } } /** * storeDrawings($dbh) * * Stores the information about the drawings to add to a drawing list * in the databasetable temp_drwlistrows * * @param $dbh pointer to the database */ function storeDrawings($dbh){ $sql1='SELECT count(*) FROM '.TABLE_PREFIX.'drawinglist WHERE machinetype="'.$_REQUEST['machinetype'].'" AND info="'.$_REQUEST['info'].'"'; $result1=@mysql_query($sql1,$dbh) or die('sql1: '.mysql_error($dbh)); if(mysql_result($result1,0)!=0){ echo(' <head><meta http-equiv="refresh" content="2;url=index.php?page=new_drawinglist"></head> <div class="error">Det finns redan en ritningsf&ouml;rteckning med denna ben&auml;mning och info!</div> '); exit(); } for($i=1;$i<17;$i++){ $drwID=ereg_replace("[^A-Za-z0-9]", "", $_REQUEST['drawingID'.$i]); if($drwID!=''){ $sql2='INSERT INTO '.TABLE_PREFIX.'temp_drwlistrows VALUES (null, "'.$drwID.'", "'.$_REQUEST['pos'.$i].'", "'.$_REQUEST['stm'.$i].'", "'.$_REQUEST['observation'.$i].'")'; $result2=@mysql_query($sql2,$dbh) or die('sql2 '.$i.': '.mysql_error($dbh)); } } }

Page 36: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

36

/** * saveDrawinglist($dbh) * * Saves the drawinginformation from temp_drwlistrows into * the databasetable drawinglist * * @param $dbh pointer to the database */ function saveDrawinglist($dbh){ $sql1='SELECT * FROM '.TABLE_PREFIX.'temp_drwlistrows ORDER BY drwID'; $result1=@mysql_query($sql1,$dbh) or die('sql1: '.mysql_error($dbh)); $num_rows=@mysql_num_rows($result1); $page=1; for($i=0;$i<$num_rows;){ $sql2='INSERT INTO '.TABLE_PREFIX.'drawinglist VALUES (null, "A", '.$page.', "'.$_REQUEST['machinetype'].'", "'.$_REQUEST['info'].'", "'.date("Y-m-d").'")'; $result2=@mysql_query($sql2,$dbh) or die('sql2: '.mysql_error($dbh)); $sql3='SELECT LAST_INSERT_ID()'; $result3=@mysql_query($sql3,$dbh) or die('sql19: '.mysql_error($dbh)); $id=@mysql_result($result3,0); for($j=1;$j<17;$j++){ $row1=@mysql_fetch_array($result1,MYSQL_ASSOC); if($row1['drwID']!=''){ $sql4='INSERT INTO '.TABLE_PREFIX.'drawinglist_row VALUES (null, "'.$row1['drwID'].'", "'.$row1['pos'].'", '.$id.', "'.$row1['stm'].'", "'.$row1['observation'].'")'; $result4=@mysql_query($sql4,$dbh) or die('sql4: '.mysql_error($dbh)); } $i++; } $page++; } } ?> <div class="text"> <form name="drawinglist_info" id="drawinglist_info" action="index.php" method="post"> <input type="hidden" name="page" id="page" value="drawinglist_info" /> <input type="hidden" name="drawinglistID" id="drawinglistID" value="<?php echo($_REQUEST['drawinglistID']); ?>" /> <fieldset style="width:700px;"> <legend>Ritningsf&ouml;rteckning:</legend> <table> <tr> <td style="width:50px;"><label for="machinetype">Maskintyp:</label></td> <td style="width:200px;"><input type="text" name="machinetype" id="machinetype" value="<?php echo($_REQUEST['machinetype']); ?>" /></td> <td style="width:30px;"><label for="info">Info:</label></td> <td style="width:200px;"><input type="text" name="info" id="info" size="40" value="<?php echo($_REQUEST['info']); ?>" /></td> </tr> </table> <table> <tr> <td><label>Ritningsnr</label></td> <td align="center"><label>Position</label></td> <td align="center"><label>Rev</label></td> <td align="center"><label>Ben&auml;mning</label></td> <td align="center"><label>Ben&auml;mning 2</label></td> <td align="center"><label>St/m</label></td> <td style="width:400px;"><label>Anm&auml;rkning</label></td> <td align="center"><label>PDF</label></td> </tr> <tr> <td><input type="text" name="drawingID1" id="drawingID1" size="10" value="<?php echo($_REQUEST['drawingID1']); ?>" /></td> <td align="center"><input type="text" name="pos1" id="pos1" size="5" value="<?php echo($_REQUEST['pos1']); ?>" /></td> <td align="center"><input type="text" name="rev1" id="rev1" size="2" value="<?php echo($row1['review']); ?>" /></td> <td align="center"><input type="text" name="designation1_1" id="designation1_1" size="20" value="<?php echo ($row1['designation']); ?>" /></td> <td align="center"><input type="text" name="designation2_1" id="designation2_1" size="20" value="<?php echo($row1['designation2']); ?>" /></td> <td align="center"><input type="text" name="stm1" id="stm1" size="2" value="<?php echo($_REQUEST['stm1']); ?>" /></td>

Page 37: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

37

<td><input type="text" name="observation1" id="observation1" size="40" value="<?php echo($_REQUEST['observation1']); ?>" /></td> <td align="center"><?php if(file_exists($path1)) echo('<a href="'.$path1.'" target="_blank">PDF</a>'); ?></td> </tr> <tr> <td><input type="text" name="drawingID2" id="drawingID2" size="10" value="<?php echo($_REQUEST['drawingID2']); ?>" /></td> <td align="center"><input type="text" name="pos2" id="pos2" size="5" value="<?php echo($_REQUEST['pos2']); ?>" /></td> <td align="center"><input type="text" name="rev2" id="rev2" size="2" value="<?php echo($row2['review']); ?>" /></td> <td align="center"><input type="text" name="designation1_2" id="designation1_2" size="20" value="<?php echo ($row2['designation']); ?>" /></td> <td align="center"><input type="text" name="designation2_2" id="designation2_2" size="20" value="<?php echo($row2['designation2']); ?>" /></td> <td align="center"><input type="text" name="stm2" id="stm2" size="2" value="<?php echo($_REQUEST['stm2']); ?>" /></td> <td><input type="text" name="observation2" id="observation2" size="40" value="<?php echo($_REQUEST['observation2']); ?>" /></td> <td align="center"><?php if(file_exists($path2)) echo('<a href="'.$path2.'" target="_blank">PDF</a>'); ?></td> </tr> <tr> <td><input type="text" name="drawingID3" id="drawingID3" size="10" value="<?php echo($_REQUEST['drawingID3']); ?>" /></td> <td align="center"><input type="text" name="pos3" id="pos3" size="5" value="<?php echo($_REQUEST['pos3']); ?>" /></td> <td align="center"><input type="text" name="rev3" id="rev3" size="2" value="<?php echo($row3['review']); ?>" /></td> <td align="center"><input type="text" name="designation1_3" id="designation1_3" size="20" value="<?php echo ($row3['designation']); ?>" /></td> <td align="center"><input type="text" name="designation2_3" id="designation2_3" size="20" value="<?php echo($row3['designation2']); ?>" /></td> <td align="center"><input type="text" name="stm3" id="stm3" size="2" value="<?php echo($_REQUEST['stm3']); ?>" /></td> <td ><input type="text" name="observation3" id="observation3" size="40" value="<?php echo($_REQUEST['observation3']); ?>" /></td> <td align="center"><?php if(file_exists($path3)) echo('<a href="'.$path3.'" target="_blank">PDF</a>'); ?></td> </tr> <tr> <td><input type="text" name="drawingID4" id="drawingID4" size="10" value="<?php echo($_REQUEST['drawingID4']); ?>" /></td> <td align="center"><input type="text" name="pos4" id="pos4" size="5" value="<?php echo($_REQUEST['pos4']); ?>" /></td> <td align="center"><input type="text" name="rev4" id="rev4" size="2" value="<?php echo($row4['review']); ?>" /></td> <td align="center"><input type="text" name="designation1_4" id="designation1_4" size="20" value="<?php echo ($row4['designation']); ?>" /></td> <td align="center"><input type="text" name="designation2_4" id="designation2_4" size="20" value="<?php echo($row4['designation2']); ?>" /></td> <td align="center"><input type="text" name="stm4" id="stm4" size="2" value="<?php echo($_REQUEST['smt4']); ?>" /></td> <td ><input type="text" name="observation4" id="observation4" size="40" value="<?php echo($_REQUEST['observation4']); ?>" /></td> <td align="center"><?php if(file_exists($path4)) echo('<a href="'.$path4.'" target="_blank">PDF</a>'); ?></td> </tr> <tr> <td><input type="text" name="drawingID5" id="drawingID5" size="10" value="<?php echo($_REQUEST['drawingID5']); ?>" /></td> <td align="center"><input type="text" name="pos5" id="pos5" size="5" value="<?php echo($_REQUEST['pos5']); ?>" /></td> <td align="center"><input type="text" name="rev5" id="rev5" size="2" value="<?php echo($row5['review']); ?>" /></td> <td align="center"><input type="text" name="designation1_5" id="designation1_5" size="20" value="<?php echo ($row5['designation']); ?>" /></td> <td align="center"><input type="text" name="designation2_5" id="designation2_5" size="20" value="<?php echo($row5['designation2']); ?>" /></td> <td align="center"><input type="text" name="stm5" id="stm5" size="2" value="<?php echo($_REQUEST['smt5']); ?>" /></td> <td ><input type="text" name="observation5" id="observation5" size="40" value="<?php echo($_REQUEST['observation5']); ?>" /></td> <td align="center"><?php if(file_exists($path5)) echo('<a href="'.$path5.'" target="_blank">PDF</a>'); ?></td> </tr>

Page 38: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

38

<tr> <td><input type="text" name="drawingID6" id="drawingID6" size="10" value="<?php echo($_REQUEST['drawingID6']); ?>" /></td> <td align="center"><input type="text" name="pos6" id="pos6" size="5" value="<?php echo($_REQUEST['pos6']); ?>" /></td> <td align="center"><input type="text" name="rev6" id="rev6" size="2" value="<?php echo($row6['review']); ?>" /></td> <td align="center"><input type="text" name="designation1_6" id="designation1_6" size="20" value="<?php echo ($row6['designation']); ?>" /></td> <td align="center"><input type="text" name="designation2_6" id="designation2_6" size="20" value="<?php echo($row6['designation2']); ?>" /></td> <td align="center"><input type="text" name="stm6" id="stm6" size="2" value="<?php echo($_REQUEST['smt6']); ?>" /></td> <td ><input type="text" name="observation6" id="observation6" size="40" value="<?php echo($_REQUEST['observation6']); ?>" /></td> <td align="center"><?php if(file_exists($path6)) echo('<a href="'.$path6.'" target="_blank">PDF</a>'); ?></td> </tr> <tr> <td><input type="text" name="drawingID7" id="drawingID7" size="10" value="<?php echo($_REQUEST['drawingID7']); ?>" /></td> <td align="center"><input type="text" name="pos7" id="pos7" size="5" value="<?php echo($_REQUEST['pos7']); ?>" /></td> <td align="center"><input type="text" name="rev7" id="rev7" size="2" value="<?php echo($row7['review']); ?>" /></td> <td align="center"><input type="text" name="designation1_7" id="designation1_7" size="20" value="<?php echo ($row7['designation']); ?>" /></td> <td align="center"><input type="text" name="designation2_7" id="designation2_7" size="20" value="<?php echo($row7['designation2']); ?>" /></td> <td align="center"><input type="text" name="stm7" id="stm7" size="2" value="<?php echo($_REQUEST['smt7']); ?>" /></td> <td ><input type="text" name="observation7" id="observation7" size="40" value="<?php echo($_REQUEST['observation7']); ?>" /></td> <td align="center"><?php if(file_exists($path7)) echo('<a href="'.$path7.'" target="_blank">PDF</a>'); ?></td> </tr> <tr> <td><input type="text" name="drawingID8" id="drawingID8" size="10" value="<?php echo($_REQUEST['drawingID8']); ?>" /></td> <td align="center"><input type="text" name="pos8" id="pos8" size="5" value="<?php echo($_REQUEST['pos8']); ?>" /></td> <td align="center"><input type="text" name="rev8" id="rev8" size="2" value="<?php echo($row8['review']); ?>" /></td> <td align="center"><input type="text" name="designation1_8" id="designation1_8" size="20" value="<?php echo($row8['designation']); ?>" /></td> <td align="center"><input type="text" name="designation2_8" id="designation2_8" size="20" value="<?php echo($row8['designation2']); ?>" /></td> <td align="center"><input type="text" name="stm8" id="stm8" size="2" value="<?php echo($_REQUEST['smt8']); ?>" /></td> <td ><input type="text" name="observation8" id="observation8" size="40" value="<?php echo($_REQUEST['observation8']); ?>" /></td> <td align="center"><?php if(file_exists($path8)) echo('<a href="'.$path8.'" target="_blank">PDF</a>'); ?></td> </tr> <tr> <td><input type="text" name="drawingID9" id="drawingID9" size="10" value="<?php echo($_REQUEST['drawingID9']); ?>" /></td> <td align="center"><input type="text" name="pos9" id="pos9" size="5" value="<?php echo($_REQUEST['pos9']); ?>" /></td> <td align="center"><input type="text" name="rev9" id="rev9" size="2" value="<?php echo($row9['review']); ?>" /></td> <td align="center"><input type="text" name="designation1_9" id="designation1_9" size="20" value="<?php echo ($row9['designation']); ?>" /></td> <td align="center"><input type="text" name="designation2_9" id="designation2_9" size="20" value="<?php echo($row9['designation2']); ?>" /></td> <td align="center"><input type="text" name="stm9" id="stm9" size="2" value="<?php echo($_REQUEST['smt9']); ?>" /></td> <td ><input type="text" name="observation9" id="observation9" size="40" value="<?php echo($_REQUEST['observation9']); ?>" /></td> <td align="center"><?php if(file_exists($path9)) echo('<a href="'.$path9.'" target="_blank">PDF</a>'); ?></td> </tr> <tr> <td><input type="text" name="drawingID10" id="drawingID410" size="10" value="<?php echo($_REQUEST['drawingID10']); ?>" /></td> <td align="center"><input type="text" name="pos10" id="pos10" size="5" value="<?php echo($_REQUEST['pos10']); ?>" /></td>

Page 39: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

39

<td align="center"><input type="text" name="rev10" id="rev10" size="2" value="<?php echo($row10['review']); ?>" /></td> <td align="center"><input type="text" name="designation1_10" id="designation1_10" size="20" value="<?php echo($row10['designation']); ?>" /></td> <td align="center"><input type="text" name="designation2_10" id="designation2_10" size="20" value="<?php echo($row10['designation2']); ?>" /></td> <td align="center"><input type="text" name="stm10" id="stm10" size="2" value="<?php echo($_REQUEST['smt10']); ?>" /></td> <td ><input type="text" name="observation10" id="observation10" size="40" value="<?php echo($_REQUEST['observation10']); ?>" /></td> <td align="center"><?php if(file_exists($path10)) echo('<a href="'.$path10.'" target="_blank">PDF</a>'); ?></td> </tr> <tr> <td><input type="text" name="drawingID11" id="drawingID11" size="10" value="<?php echo($_REQUEST['drawingID11']); ?>" /></td> <td align="center"><input type="text" name="pos11" id="pos11" size="5" value="<?php echo($_REQUEST['pos11']); ?>" /></td> <td align="center"><input type="text" name="rev11" id="rev11" size="2" value="<?php echo($row11['review']); ?>" /></td> <td align="center"><input type="text" name="designation1_11" id="designation1_11" size="20" value="<?php echo($row11['designation']); ?>" /></td> <td align="center"><input type="text" name="designation2_11" id="designation2_11" size="20" value="<?php echo($row11['designation2']); ?>" /></td> <td align="center"><input type="text" name="stm11" id="stm11" size="2" value="<?php echo($_REQUEST['smt11']); ?>" /></td> <td ><input type="text" name="observation11" id="observation11" size="40" value="<?php echo($_REQUEST['observation11']); ?>" /></td> <td align="center"><?php if(file_exists($path11)) echo('<a href="'.$path11.'" target="_blank">PDF</a>'); ?></td> </tr> <tr> <td><input type="text" name="drawingID12" id="drawingID12" size="10" value="<?php echo($_REQUEST['drawingID12']); ?>" /></td> <td align="center"><input type="text" name="pos12" id="pos12" size="5" value="<?php echo($_REQUEST['pos12']); ?>" /></td> <td align="center"><input type="text" name="rev12" id="rev12" size="2" value="<?php echo($row12['review']); ?>" /></td> <td align="center"><input type="text" name="designation1_12" id="designation1_12" size="20" value="<?php echo($row12['designation']); ?>" /></td> <td align="center"><input type="text" name="designation2_12" id="designation2_12" size="20" value="<?php echo($row12['designation2']); ?>" /></td> <td align="center"><input type="text" name="stm12" id="stm12" size="2" value="<?php echo($_REQUEST['smt12']); ?>" /></td> <td ><input type="text" name="observation12" id="observation12" size="40" value="<?php echo($_REQUEST['observation12']); ?>" /></td> <td align="center"><?php if(file_exists($path12)) echo('<a href="'.$path12.'" target="_blank">PDF</a>'); ?></td> </tr> <tr> <td><input type="text" name="drawingID13" id="drawingID13" size="10" value="<?php echo($_REQUEST['drawingID13']); ?>" /></td> <td align="center"><input type="text" name="pos13" id="pos13" size="5" value="<?php echo($_REQUEST['pos13']); ?>" /></td> <td align="center"><input type="text" name="rev13" id="rev13" size="2" value="<?php echo($row13['review']); ?>" /></td> <td align="center"><input type="text" name="designation1_13" id="designation1_13" size="20" value="<?php echo($row13['designation']); ?>" /></td> <td align="center"><input type="text" name="designation2_13" id="designation2_13" size="20" value="<?php echo($row13['designation2']); ?>" /></td> <td align="center"><input type="text" name="stm13" id="stm13" size="2" value="<?php echo($_REQUEST['smt13']); ?>" /></td> <td ><input type="text" name="observation13" id="observation13" size="40" value="<?php echo($_REQUEST['observation13']); ?>" /></td> <td align="center"><?php if(file_exists($path13)) echo('<a href="'.$path13.'" target="_blank">PDF</a>'); ?></td> </tr> <tr> <td><input type="text" name="drawingID14" id="drawingID14" size="10" value="<?php echo($_REQUEST['drawingID14']); ?>" /></td> <td align="center"><input type="text" name="pos14" id="pos14" size="5" value="<?php echo($_REQUEST['pos14']); ?>" /></td> <td align="center"><input type="text" name="rev14" id="rev14" size="2" value="<?php echo($row14['review']); ?>" /></td> <td align="center"><input type="text" name="designation1_14" id="designation1_14" size="20" value="<?php echo($row14['designation']); ?>" /></td>

Page 40: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

40

<td align="center"><input type="text" name="designation2_14" id="designation2_14" size="20" value="<?php echo($row14['designation2']); ?>" /></td> <td align="center"><input type="text" name="stm14" id="stm14" size="2" value="<?php echo($_REQUEST['smt14']); ?>" /></td> <td ><input type="text" name="observation14" id="observation14" size="40" value="<?php echo($_REQUEST['observation14']); ?>" /></td> <td align="center"><?php if(file_exists($path14)) echo('<a href="'.$path14.'" target="_blank">PDF</a>'); ?></td> </tr> <tr> <td><input type="text" name="drawingID15" id="drawingID15" size="10" value="<?php echo($_REQUEST['drawingID15']); ?>" /></td> <td align="center"><input type="text" name="pos15" id="pos15" size="5" value="<?php echo($_REQUEST['pos15']); ?>" /></td> <td align="center"><input type="text" name="rev15" id="rev15" size="2" value="<?php echo($row15['review']); ?>" /></td> <td align="center"><input type="text" name="designation1_15" id="designation1_15" size="20" value="<?php echo($row15['designation']); ?>" /></td> <td align="center"><input type="text" name="designation2_15" id="designation2_15" size="20" value="<?php echo($row15['designation2']); ?>" /></td> <td align="center"><input type="text" name="stm15" id="stm15" size="2" value="<?php echo($_REQUEST['smt15']); ?>" /></td> <td ><input type="text" name="observation15" id="observation15" size="40" value="<?php echo($_REQUEST['observation15']); ?>" /></td> <td align="center"><?php if(file_exists($path15)) echo('<a href="'.$path15.'" target="_blank">PDF</a>'); ?></td> </tr> <tr> <td><input type="text" name="drawingID16" id="drawingID16" size="10" value="<?php echo($_REQUEST['drawingID16']); ?>" /></td> <td align="center"><input type="text" name="pos16" id="pos16" size="5" value="<?php echo($_REQUEST['pos16']); ?>" /></td> <td align="center"><input type="text" name="rev16" id="rev16" size="2" value="<?php echo($row16['review']); ?>" /></td> <td align="center"><input type="text" name="designation1_16" id="designation1_16" size="20" value="<?php echo($row16['designation']); ?>" /></td> <td align="center"><input type="text" name="designation2_16" id="designation2_16" size="20" value="<?php echo($row16['designation2']); ?>" /></td> <td align="center"><input type="text" name="stm16" id="stm16" size="2" value="<?php echo($_REQUEST['smt16']); ?>" /></td> <td ><input type="text" name="observation16" id="observation16" size="40" value="<?php echo($_REQUEST['observation16']); ?>" /></td> <td align="center"><?php if(file_exists($path16)) echo('<a href="'.$path16.'" target="_blank">PDF</a>'); ?></td> </tr> <tr> <td colspan="7" align="right"> <?php if(!isset($_REQUEST['edit'])) echo(' <input type="submit" value="Uppdatera" id="next" name="next" /> <input type="submit" name="new_page" id="new_page" value="Ny sida" /> <input type="submit" name="finished" id="finished" value="Klar" /> '); else echo(' <input type="submit" value="Uppdatera" id="edit" name="edit" /> <input type="submit" name="edit_new_page" id="edit_new_page" value="Ny sida" /> <input type="submit" name="save" id="save" value="Spara" /> '); ?> </td> </tr> </table> </fieldset> </form> </div>

Page 41: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

41

edit_drawingchange.php

<?php /** * edit_drawingchange.php * * Generates the form that makes it possible to edit and add a measure * to a drawingchange. * * @author Emil Abrahamsson <[email protected]> */ if(isset($_REQUEST['save'])){ $sql='UPDATE '.TABLE_PREFIX.'drawingchanges SET message="'.$_REQUEST['message'].'"'; if($_REQUEST['attend']!='') $sql.=', measure="'.$_REQUEST['measure'].'", attended_by="'.$_REQUEST['attended_by'].'", attended_date='.date("Y-m-d").', measured="T"'; $sql.=' WHERE drawingchangesID='.$_REQUEST['id']; $result=@mysql_query($sql,$dbh) or die(mysql_error($dbh)); if($result) header('Location: index.php'); else echo('<div class="error">Query failed</div>'); } $sql='SELECT * FROM '.TABLE_PREFIX.'drawingchanges WHERE drawingchangesID='.$_REQUEST['id']; $result=@mysql_query($sql,$dbh); if($result) $row=@mysql_fetch_array($result,MYSQL_ASSOC); else echo('<div class="error">Query failed</div>'); ?> <form name="edit_drawingchange" id="edit_drawingchange" method="post" action="index.php"> <input type="hidden" name="page" id="page" value="edit_drawingchange" /> <input type="hidden" name="id" id="id" value="<?php echo($_REQUEST['id']); ?>" /> <table class="drawingchange" width="720" border="1"> <tr> <td width="110"><b>Ritningsnummer:</b></td> <td width="50"><?php echo($row['drawingID']); ?></td> <td width="70"><b>Maskintyp:</b></td> <td width="70"><?php echo($row['machinetype']); ?></td> <td colspan="5" width="70">&nbsp;</td> </tr> <tr style="height:150px"> <td colspan="8"> <label for="message"><b>Meddelande:</b></label> <textarea style="background-color:#FFFFFF; color:#000000; border:1px solid #CCCCCC; text-indent:3px; margin-left:2px;" name="message" id="message" cols="115" rows="9"><?php echo($row['message']); ?></textarea> </td> </tr> <tr> <td><b><label for="prio">Prio:</label></b></td> <td><?php echo($row['prio']); ?></td> <td><b>Datum:</b></td> <td><?php echo($row['messagedate']); ?></td> <td width="70"><b>Avs&auml;ndare:</b></td> <td colspan="3"><?php echo($row['sender']); ?></td> </tr> <tr> <td colspan="8"> <b><label for="measure">Åtgärd:</label></b> <textarea style="background-color:#FFFFFF; color:#000000; border:1px solid #CCCCCC; text-indent:3px; margin-left:2px;" name="measure" id="measure" cols="115" rows="9"><?php echo($row['measure']); ?></textarea> </td> </tr> <tr> <td colspan="8" align="right"> <label for="attended_by">&Aring;tgärdas av: </label> <input type="text" name="attended_by" id="attended_by" style="background-color:#FFFFFF; color:#000000; border:1px solid #CCCCCC; text-indent:3px; margin-left:2px;" value="<?php echo($_SESSION['name']); ?>" /> </td> </tr> </table>

Page 42: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

42

<table border="0" width="720"> <tr> <td colspan="8" align="right"><input type="submit" name="save" id="save" value="Spara" /></td> </tr> </table> </form>

edit_user.php

<?php /** * edit_user.php * * Generates the form needed to edit the infomration for a user. * * @author Emil Abrahamsson <[email protected]> */ if(isset($_REQUEST['save'])){ $sql = 'UPDATE roundo_users SET username="'.$_REQUEST['username'].'", name="'.$_REQUEST['name'].'", auth="'.$_REQUEST['auth'].'" WHERE userID='.$_REQUEST['userID'].' LIMIT 1'; $result=@mysql_query($sql,$dbh); if($result){ echo('<div class="text">Användaren har uppdaterats!</div>'); return; }else{ echo('<div class="text">Uppdateringen misslyckades!</div>'); return; } }else if($_REQUEST['username']==''){ echo('<div class="text">Du har inte angivit något användarnamn!</div>'); return; }else{ $sql='SELECT * FROM '.TABLE_PREFIX.'users WHERE username="'.$_REQUEST['username'].'" LIMIT 0,1'; $result=@mysql_query($sql,$dbh); $row=@mysql_fetch_array($result,MYSQL_ASSOC); if($row['username']==''){ echo('<div class="text">Anv&auml;ndaren finns inte</div>'); return; } } ?> <div class="text"> <form id="edit_user" name="edit_user" action="index.php" method="post"> <input type="hidden" name="page" id="page" value="edit_user" /> <input type="hidden" name="userID" id="userID" value="<?php echo($row['userID']); ?>" /> <fieldset style="height:60px; width:360px;"> <legend>&Auml;ndra vad som &ouml;nskas</legend> <table width="350"> <tr> <td><label for="username">Anv&auml;ndarnamn:</label></td> <td><input type="text" name="username" id="username" size="15" value="<?php echo($row['username']) ?>" /></td> <td><label for="name">Namn:</label></td> <td><input type="text" name="name" id="name" size="50" value="<?php echo($row['name']); ?>" /></td> <td> <?php if($row['auth']==1) echo(' <select name="auth" id="auth"> <option value="1" selected="selected">Admin</option> <option value="2">Kostr</option> <option value="3">&Ouml;vriga</option> </select> '); else if($row['auth']==2){ echo(' <select name="auth" id="auth"> <option value="1">Admin</option> <option value="2" selected="selected">Kostr</option> <option value="3">&Ouml;vriga</option> </select> ');

Page 43: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

43

}else{ echo(' <select name="auth" id="auth"> <option value="1">Admin</option> <option value="2">Kostr</option> <option value="3" selected="selected">&Ouml;vriga</option> </select> '); } ?> </td> <td><input type="submit" name="save" id="save" value="Spara" /></td> </tr> </table> </fieldset> </form> </div>

handle_users.php

<?php /** * handle_users.php * * Generates the form where the user selects what action and what user * to perform that action to. Also calls the correct file depending on action. * * @author Emil Abrahamsson <[email protected]> */ ?> <div class="text"> <form id="handle_users" name="handle_users" action="index.php" method="post"> <input type="hidden" name="page" id="page" value="handle_users" /> <fieldset style="height:60px; width:360px;"> <legend>V&auml;lj alternativ</legend> <table width="350"> <tr> <td> <select name="action" id="action"> <option value="add">L&auml;gg till</option> <option value="edit">&Auml;ndra</option> <option value="delete">Ta bort</option> </select> </td> <td align="right"><label for="username">Anv&auml;ndarnamn:</label></td> <td><input type="text" name="username" id="username" size="15" /></td> <td><input type="submit" value="OK" /></td> </tr> </table> </fieldset> </form> </div> <br /> <br /> <?php switch($_REQUEST['action']){ case 'add': require_once('pages/add_user.php'); break; case 'edit': require_once('pages/edit_user.php'); break; case 'delete': require_once('pages/delete_user.php'); break; } ?>

Page 44: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

44

inside.php

<?php /** * inside.php * * Shows a welcomemessage * * @author Emil Abrahamsson <[email protected]> */ ?> <div class="text"> <h1>V&auml;lkommen!</h1> Detta &auml;r en b&ouml;rjan p&aring; ert nya ritningsarkiv. </div>

list_changes.php

<?php /** * list_changes.php * * Generates the form where the user can search for drawingchanges. * Depending on what submitbutton that is pressed the question to the * database, table drawingchanges, will be diffrent. Then the file * list_drawingchanges_result.php will be required. * * @author Emil Abrahamsson <[email protected]> */ ?> <div class="text"> <form name="list_changes" id="list_changes" action="index.php" method="post"> <input type="hidden" name="page" id="page" value="list_changes" /> <fieldset> <legend>Lista &auml;ndring</legend> <table width="470"> <tr> <td><label for="drawingID">Ritningsnummer:</label></td> <td><input type="text" name="drawingID" id="drawingID" size="15" /></td> <td align="right"><label for="machinetype">Maskintyp:</label></td> <td align="right"><input type="text" name="machinetype" id="machinetype" size="15" /></td> </tr> <tr> <td colspan="2" align="left"><input type="submit" name="all" id="all" value="Lista alla" /></td> <td colspan="2" align="right"> <input type="submit" name="topten" id="topten" value="10 med h&ouml;gst prio" /> <input type="submit" name="search" id="search" value="S&ouml;k" /> </td> </tr> </table> </fieldset> </form> <br /> <br /> </div> <?php $sql='SELECT * FROM '.TABLE_PREFIX.'drawingchanges WHERE drawingID LIKE "%'.$_REQUEST['drawingID'].'%" AND machinetype LIKE "%'.$_REQUEST['machinetype'].'%" AND measure="" ORDER BY prio, messagedate DESC'; if(isset($_REQUEST['topten'])){ $sql.=' LIMIT 0,10'; $result=@mysql_query($sql,$dbh); if($result){ require_once('pages/list_changes_result.php'); } }else if(isset($_REQUEST['search'])){ $result=@mysql_query($sql,$dbh); if($result){ require_once('pages/list_changes_result.php'); }

Page 45: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

45

}else if(isset($_REQUEST['all'])){ $sql='SELECT * FROM '.TABLE_PREFIX.'drawingchanges WHERE drawingID LIKE "%'.$_REQUEST['drawingID'].'%" AND machinetype LIKE "%'.$_REQUEST['machinetype'].'%" ORDER BY attended_date, prio, messagedate DESC'; $result=@mysql_query($sql,$dbh); if($result){ require_once('pages/list_changes_result.php'); } } ?>

list_drawingchanges_result.php

<?php /** * list_drawingchanges_result.php * * Generates the searchresult from list_drawingchanges.php * * @author Emil Abrahamsson <[email protected]> */ echo(' <div class="text"> <table class="result" border="1"> <tr valign="top"> <td width="50"><b>Ritnings- nummer</b></td> <td width="50"><b>Maskintyp</b></td> <td width="20"><b>Prio</b></td> <td width="540"><b>Meddelande</b></td> <td width="75"><b>Datum</b></td> <td width="20"><b>Klar</b></td> </tr> '); while($row=@mysql_fetch_array($result, MYSQL_ASSOC)){ echo(' <tr> <td><a href="index.php?page=drawingchange&amp;id='.$row['drawingchangesID'].'">'.$row['drawingID'].'</a></td> <td><a href="index.php?page=drawingchange&amp;id='.$row['drawingchangesID'].'">'.$row['machinetype'].'</a></td> <td>'.$row['prio'].'</td> <td align="left">'.nl2br(substr($row['message'],0,100)).'</td> <td>'.$row['messagedate'].'</td> <td>'); if($row['measured']=='T') echo('X </td> </tr> '); } echo(' </table> </div> '); ?>

Page 46: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

46

machine_drawinglist.php

<?php /** * machine_drawinglist.php * * Generats all forms for listing drawinglists for diffrent machinetypes. * Also contains functionality that makes it possible to edit lists, * by calling drawinglist_info.php, and creating series for machines * by calling new_series.php * * @author Emil Abrahamsson <[email protected]> */ if($_REQUEST['op']=='list_drawinglists' || $_REQUEST['back']!=''){ $sql1='SELECT info FROM '.TABLE_PREFIX.'drawinglist WHERE machinetype="'.$_REQUEST['machinetype'].'" GROUP BY info'; $result1=@mysql_query($sql1,$dbh) or die ('sql1: '.mysql_error($dbh)); $sql2='SELECT * FROM '.TABLE_PREFIX.'drawingchanges WHERE machinetype="'.$_REQUEST['machinetype'].'" AND measured="F"'; $result2=@mysql_query($sql2,$dbh) or die('sql2: '.mysql_error($dbh)); $bool=(mysql_num_rows($result2)>0)?true:false; echo(' <div class="text"> <table> <tr> <td colspan="3" class="machinetype">'.$_REQUEST['machinetype'].'</td> <td>');if($bool)echo('<img title="Det finns ritnings&auml;ndringar f&ouml;r denna maskin!" src="images/attention.gif" alt="Det finns ritningsändringar för denna maskin!" />'; echo(' </td> </tr> '); while($row1=@mysql_fetch_array($result1,MYSQL_ASSOC)){ echo(' <tr> <td colspan="3"><font style="font-family:Verdana, sans-serif;font-size:14px;color:#000000;line-height:25px;">'.$row1['info'].'</font></td> </tr> <tr> <table class="drwlist" border="1"> <tr> <td width="50"><b>Sida</b></td> <td width="50"><b>Revision</b></td> <td width="70"><b>Datum</b></td> <td>&nbsp;</td> </tr> '); $sql3='SELECT * FROM '.TABLE_PREFIX.'drawinglist WHERE machinetype="'.$_REQUEST['machinetype'].'" AND info="'.$row1['info'].'" GROUP BY page ORDER BY page, review DESC'; $result3=@mysql_query($sql3,$dbh) or die('sql3: '.mysql_error($dbh)); while($row3=@mysql_fetch_array($result3,MYSQL_ASSOC)){ $sql4='SELECT * FROM '.TABLE_PREFIX.'drawinglist_row WHERE drawinglistID="'.$row3['drawinglistID'].'"'; $result4=@mysql_query($sql4,$dbh) or die('sql4: '.mysql_error($dbh)); $bool2=false; while($row4=@mysql_fetch_array($result4,MYSQL_ASSOC)){ $sql5='SELECT * FROM '.TABLE_PREFIX.'drawingchanges WHERE drawingID="'.$row4['drawingID'].'" AND measured="F"'; $result5=@mysql_query($sql5,$dbh) or die('sql5: '.mysql_error($dbh)); if(mysql_num_rows($result5)>0) $bool2=true; } echo(' <tr> <td><a href="index.php?page=machine_drawinglist&op=list_rows&id='.$row3['drawinglistID'].'">'.$row3['page'].'</td> <td>'.$row3['review'].'</td> <td>'.$row3['date'].'</td> <td>');if($bool2)echo('<img title="Det finns ritnings&auml;ndringar f&ouml;r denna maskin!" src="images/attention.gif" alt="Det finns ritningsändringar för denna maskin!" />');else echo('&nbsp;'); echo('</td> </tr> '); }

Page 47: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

47

echo(' </table> </tr> '); } if($_SESSION['auth']<3) echo(' </table> <table width="200"> <tr> <form name="serie" id="serie" action="index.php" method="post"> <input type="hidden" name="machinetype" id="machinetype" value="'.$_REQUEST['machinetype'].'" /> <input type="hidden" name="info" id="info" value="'.$_REQUEST['info'].'" /> <input type="hidden" name="page" id="page" value="new_series" /> <td align="right"> <input type="submit" name="new_serie" id="new_serie" value="Skapa serie" /> <td> </form> <tr> </table> </div> '); else echo(' </table> </div> '); }else if($_REQUEST['op']=='list_rows'){ $sql1='SELECT * FROM '.TABLE_PREFIX.'drawinglist WHERE drawinglistID='.$_REQUEST['id']; $result1=@mysql_query($sql1,$dbh) or die('sql1: '.mysql_error($dbh)); $row1=@mysql_fetch_array($result1,MYSQL_ASSOC); $sql2='SELECT count(*) FROM '.TABLE_PREFIX.'drawinglist WHERE machinetype="'.$row1['machinetype'].'" AND info="'.$row1['info'].'"'; $result2=@mysql_query($sql2,$dbh) or die('sql2: '.mysql_error($dbh)); $pages=@mysql_result($result2,0); $sql3='SELECT * FROM '.TABLE_PREFIX.'drawinglist_row WHERE drawinglistID='.$_REQUEST['id'].' ORDER BY drawingID'; $result3=@mysql_query($sql3,$dbh) or die('sql3: '.mysql_error($dbh)); echo(' <form name="list_rows" id="list_rows" action="index.php" method="post"> <input type="hidden" name="page" id="page" value="machine_drawinglist" /> <input type="hidden" name="machinetype" id="machinetype" value="'.$row1['machinetype'].'" /> <input type="hidden" name="info" id="info" value="'.$row1['info'].'" /> <input type="hidden" name="drawinglistID" value="'.$_REQUEST['id'].'" /> <div class="text"> <table class="info" width="100%" style="border-bottom:2px solid"> <tr> <td>Maskintyp: '.$row1['machinetype'].'</td> <td>Info: '.$row1['info'].'</td> <td>Sida: '.$row1['page'].'/'.$pages.'</td> <td>Datum: '.$row1['date'].'</td> </tr> </table> <table class="result" border="1"> <tr> <td style="width:20px;">&nbsp;</td> <td style="width:40px;"><label>Ritningsnr</label></td> <td style="width:20px;"><label>Pos</label></td> <td style="width:20px;"><label>Rev</label></td> <td style="width:100px;"><label>Ben&auml;mning</label></td> <td style="width:100px;"><label>Ben&auml;mning 2</label></td> <td style="width:20px;"><label>St/m</label></td> <td style="width:100px;"><label>Anm&auml;rkning</label></td> <td style="width:40px;"><label>PDF</label></td> </tr> '); for($i=0;$i<16;$i++){ $row3=@mysql_fetch_array($result3,MYSQL_ASSOC); $sql4='SELECT * FROM '.TABLE_PREFIX.'drawings WHERE drawingID="'.$row3['drawingID'].'" ORDER BY review DESC'; $result4=@mysql_query($sql4,$dbh) or die('sql4: '.mysql_error($dbh)); $row4=@mysql_fetch_array($result4,MYSQL_ASSOC); $path=DRW_PATH.$row4['drawingID'].strtolower($row4['review']).'.pdf'; if(file_exists($path)) $p=true;

Page 48: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

48

else $p=false; $sql5='SELECT * FROM '.TABLE_PREFIX.'drawingchanges WHERE drawingID="'.$row3['drawingID'].'" AND measured="F"'; $result5=@mysql_query($sql5,$dbh) or die('sql5: '.mysql_error($dbh)); $bool=(mysql_num_rows($result5)>0&&$row3['drawingID']!='')?true:false; echo(' <tr height="20"> <td>');if($bool)echo('<img title="Det finns ritnings&auml;ndringar f&ouml;r denna maskin!" src="images/attention.gif" alt="Det finns ritningsändringar för denna maskin!" />'); echo('</td> <td align="left"><input type="text" name="drawingID'.($i+1).'" id="drawingID'.($i+1).'" style="background-color:white;color:black;border:0px;width:40px;" value="'.$row3['drawingID'].'" /></td> <td align="left"><input type="text" name="pos'.($i+1).'" id="pos'.($i+1).'" style="background-color:white;color:black;border:0px;width:40px;" value="'.$row3['pos'].'" /></td> <td>'.$row4['review'].'</td> <td>'.$row4['designation'].'</td> <td>'.$row4['designation2'].'</td> <td>'.$row3['stm'].'</td> <td>'.$row3['observation'].'</td> <td>');if($p) echo('<a href="'.$path.'" target="_blank">PDF</a>');echo('</td> </tr> '); } echo(' </table> <table width="100%"> <tr> <td><input type="submit" name="back" id="back" value="Tillbaka" /></td> <td align="right"><input type="submit" name="edit" id="edit" value="&Auml;ndra" /></td> </tr> </table> </div> </form> '); }else if(isset($_REQUEST['edit'])){ require_once('pages/drawinglist_info.php'); exit(); }else{ echo(' <div class="text"> <form id="machine_drawinglist" name="machine_drawinglist" action="index.php" method="post"> <input type="hidden" name="page" id="page" value="machine_drawinglist" /> <fieldset style="width:270px"> <legend>S&ouml;k efter maskin eller ritningsf&ouml;rteckning:</legend> <table width="150"> <tr> <td><label for="machinetype">Maskintyp:</label></td> <td width="108"><input type="text" name="machinetype" id="machinetype" size="15" /></td> <td align="right"><input type="submit" name="search" id="search" value="S&ouml;k" /></td> </tr> </table> </fieldset> </form> </div> '); if(isset($_REQUEST['search'])&&$_REQUEST['machinetype']!=''){ $sql='SELECT * FROM '.TABLE_PREFIX.'drawinglist WHERE machinetype LIKE "%'.$_REQUEST['machinetype'].'%" GROUP BY machinetype'; $result=@mysql_query($sql,$dbh) or die('sql: '.mysql_error($dbh)); echo(' <br /> <div class="text"> <table border="1" style="border-collapse:collapse"> <tr align="center"> <td width="200"><b>Maskintyp</b></td> <td width="70"><b>Datum</b></td> </tr> '); while($row=@mysql_fetch_array($result,MYSQL_ASSOC)){ echo('

Page 49: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

49

<tr> <form id="machine_drawinglist" name="machine_drawinglist" action"index.php" method="post"> <input type="hidden" name="page" id="page" value="machine_drawinglist" /> <input type="hidden" name="op" id="op" value="list_drawinglists" /> <td align="left"><input type="submit" name="machinetype" id="machinetype" value="'.$row['machinetype'].'" style="color:#b22e1e; font-weight:bold; background:#FFFFFF; border:0px;" /></td> <td align="center">'.$row['date'].'</td> </form> </tr> '); } echo(' </table> </div> '); } } ?>

new_drawing.php

<?php /** * new_drawing.php * * Generates the form for creating a new drawing. Depending on the chosen typ/size in * create_drawing.php the next drawingnumber from the database will be generated. * * @author Emil Abrahamsson <[email protected]> */ if(!isset($_REQUEST['type']) && !isset($_REQUEST['create'])){ echo('<div class="error">Du har inte valt storlek!</div>'); require_once('create_drawing.php'); return; } $sql='SELECT drawingID FROM '.TABLE_PREFIX.'drawings WHERE drawingID LIKE "'.$_REQUEST['type'].'%" ORDER BY drawingID DESC LIMIT 0,1'; $result=@mysql_query($sql,$dbh); $drawingID; switch($_REQUEST['type']){ case '1' : case '2' : case '3' : case '4' : $drawingID=(@mysql_result($result,0)+1); break; case 'I1': case 'I2': case 'I3': case 'I4': $id=(substr(@mysql_result($result,0),1))+1; $drawingID='I'.$id; break; case 'SK': $id=(substr(@mysql_result($result,0),2))+1; $drawingID='SK'.$id; break; } if($_REQUEST['create']){ if($_REQUEST['drawingID']!='' && $_REQUEST['review']!=''){ $sql = 'INSERT INTO '.TABLE_PREFIX.'drawings (drawingID, review, machinetype, designation, designation2, observation, drawed_by, date, replaces, replaced_by, assy) VALUES ("'.$drawingID.'", "'.$_REQUEST['review'].'", "'.$_REQUEST['machinetype'].'", "'.$_REQUEST['designation'].'", "'.$_REQUEST['designation2'].'", "'.$_REQUEST['observation'].'", "'.$_REQUEST['drawed_by'].'", "'.$_REQUEST['date'].'", "'.$_REQUEST['replaces'].'", "'.$_REQUEST['replaced_by'].'", "'.$_REQUEST['assy'].'")'; $result=@mysql_query($sql,$dbh); if($result){ echo('<div class="text">Ins&auml;ttningen lyckades!</div>'); return; }else{

Page 50: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

50

echo('<div class="error">Ins&auml;ttningen misslyckades!</div><br />'); } }else{ echo('<div class="error">Du har inte angivit både ritningsnummer och revision!</div>'); } } ?> <div class="text"> <form id="add_drawing" name="add_drawing" action="index.php" method="post"> <input type="hidden" name="page" id="page" value="new_drawing" /> <fieldset style="height:210px;width:510px;"> <legend>Skapa ritning</legend> <table width="470"> <tr> <td><label for="drawingID">Ritningsnummer:</label></td> <td width="91"><input type="text" name="drawingID" id="drawingID" size="10" value="<?php echo($drawingID); ?>" /></td> <td width="67" align="right"><label for="review">Revision:</label></td> <td width="98"><input type="text" name="review" id="review" size="2" value="A" readonly="readonly" /></td> <td width="90" align="right"><label for="machinetype">Maskintyp:</label></td> <td width="122" align="right"><input type="text" name="machinetype" id="machinetype" size="15" /></td> </tr> <tr> <td width="109"><label for="designation">Ben&auml;mning:</label></td> <td colspan="5"><input type="text" name="designation" id="designation" size="60" /></td> </tr> <tr> <td width="109"><label for="designation2">Ben&auml;mning 2:</label></td> <td colspan="5"><input type="text" name="designation2" id="designation2" size="60" /></td> </tr> <tr> <td width="109"><label for="observation">Anm&auml;rkning:</label></td> <td colspan="5"><input type="text" name="observation" id="observation" size="60" /></td> </tr> <tr> <td width="109"><label for="drawed_by">Ritad av:</label></td> <td><input type="text" name="drawed_by" id="drawed_by" size="3" /></td> <td align="right"><label for="date">Datum:</label></td> <td><input type="text" name="date" id="date" size="12" value="<?php echo(date('Y-m-d')); ?>" /></td> <td align="right"><label for="replaces">Ers&auml;tter:</label></td> <td><input type="text" name="replaces" id="replaces" size="15" /></td> </tr> <tr> <td><label for="assy">Sammanst&auml;llning:</label></td> <td> <select name="assy" id="assy"> <option value="T">Ja</option> <option value="F" selected="selected">Nej</option> </select> </td> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> </tr> <tr> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> <td align="right"><input type="submit" name="create" id="create" value="Skapa" /></td> </tr> </table> </fieldset> </form> </div>

Page 51: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

51

new_drawinglist.php

<?php /** * new_drawinglist.php * * Genereates the form for creating a new drawinglist. * When "Nästa" is pressed the file drawinglist_info.php * will be called. * * @author Emil Abrahamsson <[email protected]> */ ?> <div class="text"> <form name="new_drawinglist" id="new_drawinglist" action="index.php" method="post"> <input type="hidden" name="page" id="page" value="drawinglist_info" /> <fieldset style="width:500px"> <legend>Ny ritningsf&ouml;rteckning:</legend> <table> <tr> <td style="width:50px;"><label for="machinetype">Maskintyp:</label></td> <td style="width:200px;"><input type="text" name="machinetype" id="machinetype" value="<?php echo($_REQUEST['machinetype']); ?>" /></td> <td style="width:30px;"><label for="info">Info:</label></td> <td style="width:200px;"><input type="text" name="info" id="info" size="40" value="<?php echo($_REQUEST['info']); ?>" /></td> </tr> </table> <table> <tr> <td><label>Ritningsnr</label></td> <td align="center"><label>Position</label></td> <td align="center"><label>St/m</label></td> <td style="width:400px;"><label>Anm&auml;rkning</label></td> </tr> <tr> <td><input type="text" name="drawingID1" id="drawingID1" size="10" /></td> <td align="center"><input type="text" name="pos1" id="pos1" size="5" /></td> <td align="center"><input type="text" name="stm1" id="stm1" size="2" /></td> <td><input type="text" name="observation1" id="observation1" size="55" /></td> </tr> <tr> <td><input type="text" name="drawingID2" id="drawingID2" size="10" /></td> <td align="center"><input type="text" name="pos2" id="pos2" size="5" /></td> <td align="center"><input type="text" name="stm2" id="stm2" size="2" /></td> <td><input type="text" name="observation2" id="observation2" size="55" /></td> </tr> <tr> <td><input type="text" name="drawingID3" id="drawingID3" size="10" /></td> <td align="center"><input type="text" name="pos3" id="pos3" size="5" /></td> <td align="center"><input type="text" name="stm3" id="stm3" size="2" /></td> <td><input type="text" name="observation3" id="observation3" size="55" /></td> </tr> <tr> <td><input type="text" name="drawingID4" id="drawingID4" size="10" /></td> <td align="center"><input type="text" name="pos4" id="pos4" size="5" /></td> <td align="center"><input type="text" name="stm4" id="stm4" size="2" /></td> <td ><input type="text" name="observation4" id="observation4" size="55" /></td> </tr> <tr> <td><input type="text" name="drawingID5" id="drawingID5" size="10" /></td> <td align="center"><input type="text" name="pos5" id="pos5" size="5" /></td> <td align="center"><input type="text" name="stm5" id="stm5" size="2" /></td> <td><input type="text" name="observation5" id="observation5" size="55" /></td> </tr> <tr> <td><input type="text" name="drawingID6" id="drawingID6" size="10" /></td> <td align="center"><input type="text" name="pos6" id="pos6" size="5" /></td> <td align="center"><input type="text" name="stm6" id="stm6" size="2" /></td> <td ><input type="text" name="observation6" id="observation6" size="55" /></td> </tr> <tr> <td><input type="text" name="drawingID7" id="drawingID7" size="10" /></td> <td align="center"><input type="text" name="pos7" id="pos7" size="5" /></td> <td align="center"><input type="text" name="stm7" id="stm7" size="2" /></td>

Page 52: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

52

<td ><input type="text" name="observation7" id="observation7" size="55" /></td> </tr> <tr> <td><input type="text" name="drawingID8" id="drawingID8" size="10" /></td> <td align="center"><input type="text" name="pos8" id="pos8" size="5" /></td> <td align="center"><input type="text" name="stm8" id="stm8" size="2" /></td> <td ><input type="text" name="observation8" id="observation8" size="55" /></td> </tr> <tr> <td><input type="text" name="drawingID9" id="drawingID9" size="10" /></td> <td align="center"><input type="text" name="pos9" id="pos9" size="5" /></td> <td align="center"><input type="text" name="stm9" id="stm9" size="2" /></td> <td ><input type="text" name="observation9" id="observation9" size="55" /></td> </tr> <tr> <td><input type="text" name="drawingID10" id="drawingID10" size="10" /></td> <td align="center"><input type="text" name="pos10" id="pos10" size="5" /></td> <td align="center"><input type="text" name="stm10" id="stm10" size="2" /></td> <td ><input type="text" name="observation10" id="observation10" size="55" /></td> </tr> <tr> <td><input type="text" name="drawingID11" id="drawingID11" size="10" /></td> <td align="center"><input type="text" name="pos11" id="pos11" size="5" /></td> <td align="center"><input type="text" name="stm11" id="stm11" size="2" /></td> <td ><input type="text" name="observation11" id="observation11" size="55" /></td> </tr> <tr> <td><input type="text" name="drawingID12" id="drawingID12" size="10" /></td> <td align="center"><input type="text" name="pos12" id="pos12" size="5" /></td> <td align="center"><input type="text" name="stm12" id="stm12" size="2" /></td> <td ><input type="text" name="observation12" id="observation12" size="55" /></td> </tr> <tr> <td><input type="text" name="drawingID13" id="drawingID13" size="10" /></td> <td align="center"><input type="text" name="pos13" id="pos13" size="5" /></td> <td align="center"><input type="text" name="stm13" id="stm13" size="2" /></td> <td ><input type="text" name="observation13" id="observation13" size="55" /></td> </tr> <tr> <td><input type="text" name="drawingID14" id="drawingID14" size="10" /></td> <td align="center"><input type="text" name="pos14" id="pos14" size="5" /></td> <td align="center"><input type="text" name="stm14" id="stm14" size="2" /></td> <td ><input type="text" name="observation14" id="observation14" size="55" /></td> </tr> <tr> <td><input type="text" name="drawingID15" id="drawingID15" size="10" /></td> <td align="center"><input type="text" name="pos15" id="pos15" size="5" /></td> <td align="center"><input type="text" name="stm15" id="stm15" size="2" /></td> <td ><input type="text" name="observation15" id="observation15" size="55" /></td> </tr> <tr> <td><input type="text" name="drawingID16" id="drawingID16" size="10" /></td> <td align="center"><input type="text" name="pos16" id="pos16" size="5" /></td> <td align="center"><input type="text" name="stm16" id="stm16" size="2" /></td> <td ><input type="text" name="observation16" id="observation16" size="55" /></td> </tr> <tr> <td colspan="4" align="right"><input type="submit" name="next" id="next" value="N&auml;sta"</td> </tr> </table> </fieldset> </form> </div>

Page 53: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

53

new_review.php

<?php /** * new_review.php * * Generates the form needed to create a new review for a already existing drawing. * * @author Emil Abrahamsson <[email protected]> */ $sql = 'SELECT * FROM '.TABLE_PREFIX.'drawings WHERE drawingID="'.$drawingID.'" ORDER BY review DESC'; $result=@mysql_query($sql,$dbh); if($result){ $row=@mysql_fetch_array($result, MYSQL_ASSOC); if($row['review']==''){ echo('<div class="error">Det finns inte n&aring;gon tidigare ritning med detta nummer!</div>'); return; } }else{ echo('<div class="error">Query failed!</div>'); } if($_REQUEST['save']){ if($_REQUEST['drawingID']!='' && $_REQUEST['review']!=''){ $url= DRW_PATH.$drawingID.strtolower($_REQUEST['review']).'.pdf'; $sql = 'INSERT INTO '.TABLE_PREFIX.'drawings (drawingID, review, machinetype, designation, designation2, observation, drawed_by, date, changes, replaces, replaced_by, assy, path) VALUES ("'.$drawingID.'", "'.$_REQUEST['review'].'", "'.$_REQUEST['machinetype'].'", "'.$_REQUEST['designation'].'", "'.$_REQUEST['designation2'].'", "'.$_REQUEST['observation'].'", "'.$_REQUEST['drawed_by'].'", "'.$_REQUEST['date'].'", "'.$_REQUEST['changes'].'", "'.$_REQUEST['replaces'].'", "'.$_REQUEST['replaced_by'].'", "'.$_REQUEST['assy'].'", "'.$url.'")'; $result=@mysql_query($sql,$dbh); if($result){ echo('<div class="text">Ins&auml;ttningen lyckades!</div>'); return; }else{ echo('<div class="error">Ins&auml;ttningen misslyckades!</div><br />'); } }else{ echo('<div class="error">Du har inte angivit både ritningsnummer och revision!</div>'); } } ?> <div class="text"> <form id="new_review" name="new_review" action="index.php" method="post"> <input type="hidden" name="page" id="page" value="new_review" /> <fieldset width="500"> <legend>L&auml;gg till ritning</legend> <table width="470"> <tr> <td><label for="drawingID">Ritningsnummer:</label></td> <td width="91"><input type="text" name="drawingID" id="drawingID" size="10" value="<?php echo($drawingID); ?>" /></td> <td width="67" align="right"><label for="review">Revision:</label></td> <td width="98"><input type="text" name="review" id="review" size="2" /></td> <td width="90" align="right"><label for="machinetype">Maskintyp:</label></td> <td width="122" align="right"><input type="text" name="machinetype" id="machinetype" size="15" value="<?php echo($row['machinetype']); ?>" /></td> </tr> <tr> <td width="109"><label for="designation">Ben&auml;mning:</label></td> <td colspan="5"><input type="text" name="designation" id="designation" size="60" value="<?php echo($row['designation']); ?>" /></td> </tr> <tr> <td width="109"><label for="designation2">Ben&auml;mning 2:</label></td> <td colspan="5"><input type="text" name="designation2" id="designation2" size="60" value="<?php echo($row['designation2']); ?>" /></td> </tr> <tr> <td width="109"><label for="observation">Anm&auml;rkning:</label></td>

Page 54: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

54

<td colspan="5"><input type="text" name="observation" id="observation" size="60" value="<?php echo($row['observation']); ?>" /></td> </tr> <tr> <td width="109"><label for="changes">&Auml;ndringar:</label></td> <td colspan="5"><input type="text" name="changes" id="changes" size="60" value="<?php echo($row['changes']); ?>" /></td> </tr> <tr> <td width="109"><label for="drawed_by">Ritad av:</label></td> <td><input type="text" name="drawed_by" id="drawed_by" size="3" value="<?php echo($row['drawed_by']); ?>" /></td> <td align="right"><label for="date">Datum:</label></td> <td><input type="text" name="date" id="date" size="12" value="<?php echo(date('Y-m-d')); ?>" /></td> <td align="right"><label for="replaces">Ers&auml;tter:</label></td> <td><input type="text" name="replaces" id="replaces" size="15" value="<?php echo($row['replaces']); ?>" /></td> </tr> <tr> <td><label for="assy">Sammanst&auml;lning:</label></td> <td> <select name="assy" id="assy"> <option value="T">Ja</option> <option value="F" selected="selected">Nej</option> </select> </td> <td>&nbsp;</td> <td>&nbsp;</td> <td align="right"><label for="replaced_by">Ersatt av:</label></td> <td><input type="text" name="replaced_by" id="replaced_by" size="15" value="<?php echo($row['replaced_by']); ?>" /></td> </tr> <tr> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> <td align="right"><input type="submit" name="save" id="save" value="L&auml;gg till" /></td> </tr> </table> </fieldset> </form> </div>

new_series.php

<?php /** * new_series.php * * Generates all the forms for creating a new series and machinenumbers. * One form for selecting what drawinglists the serie should contain. * One form for selecting what drawing the serie should contain and select * a serienumber. * One form for selecting machinnumbers. * One form for listing all drawings with all information and number of * copies that should be printed. * This is where the function to automaticly print all drawings should be called * when that function is availible. * * @author Emil Abrahamsson <[email protected]> */ if(isset($_REQUEST['list_drw'])){ $info; for($i=0;$i<20;$i++){ if(isset($_REQUEST['info'.$i])) $info[$i]=$_REQUEST['info'.$i]; } $sql1='SELECT * FROM '.TABLE_PREFIX.'drawinglist WHERE machinetype="'.$_REQUEST['machinetype'].'"'; $result1=mysql_query($sql1,$dbh) or die('sql1: '.mysql_error($dbh)); $drwlists;

Page 55: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

55

$j=0; while($row1=@mysql_fetch_array($result1,MYSQL_ASSOC)){ foreach($info as $inf){ if($row1['info']==$inf){ $drwlists[$j]=$row1; $j++; } } } echo(' <div class="text"> <form name="list_drw" id="list_drw" action="index.php" method="post"> <input type="hidden" name="page" id="page" value="new_series" /> <fieldset style="border:1px solid #783151;width: 355px;height:60px;"> <legend>Ange serienummer och antal:</legend> <table> <tr> <td><label for="series">Serie:</label></td> <td><input type="text" name="series" id="series" /></td> <td><label for="quantity">Antal:</label></td> <td><input type="text" name="quantity" id="quantity" /></td> </tr> </table> </fieldset> '); $counter=0; foreach($drwlists as $list){ echo(' <table class="info" width="100%" style="border-bottom:2px solid"> <tr> <td>Maskintyp: '.$list['machinetype'].'</td> <td>Info: '.$list['info'].'</td> <td>Datum: '.$list['date'].'</td> </tr> </table> <table width="100%" style="border-collapse:collapse;text-align:center;" border="1"> <tr> <td style="width:20px;">&nbsp;</td> <td style="width:40px;"><label>Ritningsnr</label></td> <td style="width:15px;"><label>Pos</label></td> <td style="width:15px;"><label>Rev</label></td> <td style="width:150px;"><label>Ben&auml;mning</label></td> <td style="width:20px;"><label>St/m</label></td> <td style="width:100px;"><label>Anm&auml;rkning</label></td> </tr> '); $sql2='SELECT * FROM '.TABLE_PREFIX.'drawinglist_row WHERE drawinglistID='.$list['drawinglistID']; $result2=@mysql_query($sql2,$dbh) or die('sql2: '.mysql_error($dbh)); while($row2=@mysql_fetch_array($result2,MYSQL_ASSOC)){ $sql3='SELECT * FROM '.TABLE_PREFIX.'drawings WHERE drawingID="'.$row2['drawingID'].'" ORDER BY review DESC'; $result3=@mysql_query($sql3,$dbh) or die('sql3: '.mysql_error($dbh)); $row3=@mysql_fetch_array($result3,MYSQL_ASSOC); echo(' <tr> <td><input type="checkbox" name="drwlist_rowID[]" id="drwlist_rowID[]" value="'.$row2['drawinglist_rowID'].'" checked="checked"></td> <td>'.$row2['drawingID'].'</td> <td>'.$row2['pos'].'</td> <td>'.$row3['review'].'</td> <td>'.$row3['designation'].'</td> <td>'.$row2['stm'].'</td> <td>'.$row2['observation'].'</td> </tr> '); } echo(' </table> '); } echo(' <table width="100%"> <tr> <td align="right"><input type="submit" name="new_series" id="new_series" value="N&auml;sta" /></td> </tr>

Page 56: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

56

</table> </form> </div> '); }else if(isset($_REQUEST['new_series'])){ $count=count($drwlist_rowID); for($i=0;$i<$_REQUEST['quantity'];$i++){ $sql='INSERT INTO '.TABLE_PREFIX.'series VALUES("'.$_REQUEST['series'].'", '.$_REQUEST['quantity'].', '.($i+1).')'; $result=@mysql_query($sql,$dbh) or die('sql: '.mysql_error($dbh)); for($j=0;$j<$count;$j++){ $sql2='INSERT INTO '.TABLE_PREFIX.'machinelist VALUES("'.$drwlist_rowID[$j].'", "'.$_REQUEST['series'].'", '.($i+1).')'; $result2=@mysql_query($sql2,$dbh) or die('sql2: '.mysql_error($dbh)); } } echo(' <div class="text"> <form name="new_series" id="new_series" action="index.php" method="post"> <input type="hidden" name="page" id="page" value="new_series" /> <input type="hidden" name="series" id="series" value="'.$_REQUEST['series'].'" /> <input type="hidden" name="quantity" id="copies" value="'.$_REQUEST['quantity'].'" /> <fieldset style="border:1px solid #783151;width: 200px;"> <legend>Ange maskinnummer:</legend> <table> <tr> <td>Serie</td> <td>L&ouml;pnummer</td> <td>Antal</td> <td>Maskinnummer</td> </tr> '); for($i=0;$i<$_REQUEST['quantity'];$i++){ echo(' <tr> <td>'.$_REQUEST['series'].'</td> <td><input type="hidden" name="number[]" id="number[]" value="'.($i+1).'" />'.($i+1).'</td> <td>'.$_REQUEST['quantity'].'</td> <td><input type="text" name="machinenr[]" id="machinenr[]" /></td> </tr> '); } echo(' <tr> <td colspan="4" align="right"><input type="submit" name="create" id="create" value="Skapa" /></td> </table> </form> </div> '); }else if(isset($_REQUEST['create'])){ $count=count($machinenr); for($i=0;$i<$count;$i++){ if($machinenr[$i]!=''){ $sql='INSERT INTO '.TABLE_PREFIX.'machine VALUES ("'.$machinenr[$i].'", "'.$_REQUEST['series'].'", '.$_REQUEST['quantity'].', '.$number[$i].')'; $result=@mysql_query($sql,$dbh) or die('sql: '.mysql_error($dbh)); } } $sql2 = 'SELECT drawinglist_rowID FROM '.TABLE_PREFIX.'machinelist WHERE series="'.$_REQUEST['series'].'" GROUP BY drawinglist_rowID'; $result2=@mysql_query($sql2,$dbh) or die('sql2: '.mysql_error($dbh)); $sql3='SELECT * FROM '.TABLE_PREFIX.'drawinglist_row WHERE drawinglist_rowID='.@mysql_result($result2,0,'drawinglist_rowID'); $result3=@mysql_query($sql3,$dbh) or die('sql3: '.mysql_error($dbh)); $sql4='SELECT machinetype FROM '.TABLE_PREFIX.'drawinglist WHERE drawinglistID='.@mysql_result($result3,0,'drawinglistID'); $result4=@mysql_query($sql4,$dbh) or die('sql4: '.mysql_error($dbh)); echo(' <div class="text"> <form name="print_drw" id="print_drw action="index.php" method="post"> <input type="hidden" name="page" id="page" value="new_series" /> <table class="info" width="100%" style="border-bottom:2px solid"> <tr> <td>Maskintyp: '.@mysql_result($result4,0,'machinetype').'</td> </tr>

Page 57: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

57

</table> <table width="100%" style="border-collapse:collapse;text-align:center;" border="1"> <tr> <td style="width:40px;"><label>Ritningsnr</label></td> <td style="width:15px;"><label>Pos</label></td> <td style="width:15px;"><label>Rev</label></td> <td style="width:150px;"><label>Ben&auml;mning</label></td> <td style="width:20px;"><label>St/m</label></td> <td style="width:100px;"><label>Anm&auml;rkning</label></td> <td style="width:40px;"><label>PDF</label></td> <td style="width:50px;"><label>Utskr. ant.</label></td> </tr> '); while($row2=@mysql_fetch_array($result2,MYSQL_ASSOC)){ $sql5='SELECT * FROM '.TABLE_PREFIX.'drawinglist_row WHERE drawinglist_rowID='.$row2['drawinglist_rowID']; $result5=@mysql_query($sql5,$dbh) or die('sql5: '.mysql_error($dbh)); $row5=@mysql_fetch_array($result5,MYSQL_ASSOC); $sql6='SELECT designation, review FROM '.TABLE_PREFIX.'drawings WHERE drawingID="'.$row5['drawingID'].'" ORDER BY review DESC'; $result6=@mysql_query($sql6, $dbh) or die('sql6: '.mysql_error($dbh)); $row6=@mysql_fetch_array($result6,MYSQL_ASSOC); $type=substr(preg_replace("/[^0-9]/", '', $row5['drawingID']),0,1); $no; switch($type){ case '1': case '2': $no=4; break; case '3': case '4' :$no=3; break; } echo(' <tr> <td>'.$row5['drawingID'].'</td> <td>'.$row5['pos'].'</td> <td>'.$row6['review'].'</td> <td>'.$row6['designation'].'</td> <td>'.$row5['stm'].'</td> <td>'.$row5['observation'].'</td> <td> '); $url= DRW_PATH.$row5['drawingID'].strtolower($row6['review']).'.pdf'; if(file_exists($url)) echo('<a href="'.$url.'" target="_blank">PDF</a><input type="hidden" name="url[]" id="url[]" value="'.$url.'" />'); echo(' </td> <td><input type="text" name="copies[]" id="copies[]" size="2" style="text-align:center;" value="'.$no.'"/></td> </tr> '); } /* Not functional yet */ /* echo(' </table> <table width="100%"> <tr> <td align="right"><input type="submit" name="print" id="print" value="Skriv ut" /></td> </tr> </table> </form> </div> '); */ echo(' </table> </form> </div> '); }else{ $sql1='SELECT info FROM '.TABLE_PREFIX.'drawinglist WHERE machinetype="'.$_REQUEST['machinetype'].'" GROUP BY info';

Page 58: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

58

$result1=@mysql_query($sql1,$dbh) or die ('sql1: '.mysql_error($dbh)); echo(' <div class="text"> <form name="new_serie" id="new_serie" action="index.php" method="post"> <input type="hidden" name="page" id="page" value="new_series" /> <input type="hidden" name="machinetype" id="machinetype" value="'.$_REQUEST['machinetype'].'" /> <table> <tr> <td colspan="2" class="machinetype">'.$_REQUEST['machinetype'].'</td> </tr> '); $j=0; while($row1=@mysql_fetch_array($result1,MYSQL_ASSOC)){ echo(' <tr> <td><font style="font-family:Verdana, sans-serif;font-size:14px;color:#000000;line-height:25px;">'.$row1['info'].'</font></td> <td><input type="checkbox" name="info'.$j.'" id="info'.$j.'" value="'.$row1['info'].'" /></td> </tr> '); $j++; } echo(' <tr> <td colspan="2" align="right"><input type="submit" name="list_drw" id="list_drw" value="N&auml;sta" /></td> </tr> </table> </form> </div> '); } ?>

reg_change.php

<?php /** * reg_change.php * * Generates the form for register a new drawingchange. * Also the code for adding the information to the database. * * @author Emil Abrahamsson <[email protected]> */ if(isset($_REQUEST['drawingID'])||isset($_REQUEST['machinetype'])){ $sql='INSERT INTO '.TABLE_PREFIX.'drawingchanges (drawingID, machinetype, message, prio, sender, messagedate, measured) VALUES ("'.$_REQUEST['drawingID'].'", "'.$_REQUEST['machinetype'].'", "'.$_REQUEST['message'].'", "'.$_REQUEST['prio'].'", "'.$_REQUEST['sender'].'", "'.date('Y-m-d').'", "F")'; $result=@mysql_query($sql,$dbh); if($result){ echo(' <head><meta http-equiv="refresh" content="2;url=index.php"></head> <div class="text">Ändringen registrerad</div> '); exit(); }else{ echo(' <head><meta http-equiv="refresh" content="2;url=index.php"></head> <div class="text">Insättningen misslyckades</div> '); exit(); } } ?> <div class="text"> <form name="reg_change" id="reg_change" action="index.php" method="post"> <input type="hidden" name="page" id="page" value="reg_change" /> <fieldset> <legend>Registrera &auml;ndring</legend> <table width="470">

Page 59: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

59

<tr> <td><label for="drawingID">Ritningsnummer:</label></td> <td><input type="text" name="drawingID" id="drawingID" size="15" /></td> <td><label for="machinetype">Maskintyp:</label></td> <td><input type="text" name="machinetype" id="machinetype" size="15" /></td> </tr> <tr> <td colspan="4"><label for="message">&Auml;ndringsf&ouml;rslag:</label></td> </tr> <tr> <td colspan="4" align="center"><textarea name="message" id="message" cols="80" rows="10" lang="sv"></textarea></td> </tr> <tr> <td width="30"><label for="prio">Prioritet:</label></td> <td width="30"> <select name="prio" id="prio"> <option value="1">1</option> <option selected="selected" value="2">2</option> <option value="3">3</option> <option value="4">4</option> </select> </td> <td align="right"><label for="sender">Avsändare:</label></td> <td align="right"><input type="text" name="sender" id="sender" size="36" value="<?php echo($_SESSION['name']); ?>" /></td> </tr> <tr> <td colspan="4" align="right"><input type="submit" value="Registrera" /></td> </tr> </table> </fieldset> </form> </div>

search_drawing.php

<?php /** * search_drawing.php * * Generates the form for searching for a drawing. * * @author Emil Abrahamsson <[email protected]> */ ?> <div class="text"> <form id="search_drawing" name="search_drawing" action="index.php" method="post"> <input type="hidden" name="page" id="page" value="search_result" /> <fieldset> <legend>S&ouml;k efter ritning</legend> <table width="470"> <tr> <td><label for="drawingID">Ritningsnummer:</label></td> <td width="108"><input type="text" name="drawingID" id="drawingID" size="10" /></td> <td width="80" align="right"><label for="review">Revision:</label></td> <td width="26"><input type="text" name="review" id="review" size="2" /></td> <td width="129" align="right"><label for="machinetype">Maskintyp:</label></td> <td width="128" align="right"><input type="text" name="machinetype" id="machinetype" size="15" /></td> </tr> <tr> <td width="109"><label for="designation">Ben&auml;mning:</label></td> <td colspan="5" align="right"><input type="text" name="designation" id="designation" size="60" /></td> </tr> <tr> <td width="109"><label for="designation2">Ben&auml;mning 2:</label></td> <td colspan="5" align="right"><input type="text" name="designation2" id="designation2" size="60" /></td> </tr> <tr> <td width="109"><label for="observation">Anm&auml;rkning:</label></td> <td colspan="5" align="right"><input type="text" name="observation" id="observation" size="60" /></td>

Page 60: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

60

</tr> <tr> <td width="109"><label for="drawed_by">Ritad av:</label></td> <td><input type="text" name="drawed_by" id="drawed_by" size="3" /></td> </tr> <tr> <td colspan="6" align="right"><input type="submit" value="S&ouml;k" /></td> </tr> </table> </fieldset> </form> </div>

search_pdf.php

<?php /** * search_pdf.php * * Generates the form for searching for a pdf file. * Also the code for find and list the result. * * @author Emil Abrahamsson <[email protected]> */ $drawingID=ereg_replace("[^A-Za-z0-9]", "", $_REQUEST['drawingID']); if(isset($_REQUEST['drawingID']) && strlen($drawingID)<5) echo('<div class="error">Du m&aring;ste ange ett ritningsnummer med minst 5 siffror!</div><br />'); if (is_dir(DRW_PATH) && strlen($drawingID)>=5) { $files=getFiles(DRW_PATH); echo(' <table style="font-family:Verdana, sans-serif; font-size:10px; text-align:center; color:#000000; line-height:15px; width:300px; table-layout:auto; border-collapse:collapse;" border="1"> <tr valign="top"> <td width="50"><b>Ritningsnummer</b></td> <td width="20"><b>Revision</b></td> <td width="34"><b>PDF</b></td> </tr> '); foreach($files as $f) if(stristr($f,$drawingID)){ $drawingID=substr($f,0,(strlen($f)-5)); $rev=strtoupper(substr($f,(strlen($f)-5),1)); echo(' <tr> <td>'.$drawingID.'</td> <td>'.$rev.'</td> <td><a href="'.DRW_PATH.$f.'" target="_blank"><img src="images/icon_pdf.gif" alt="PDF" border="0" height="34" width="34" /></a></td> </tr> '); } echo(' </table> '); }else{ ?> <div class="text"> <form id="search_pdf" name="search_pdf" action="index.php" method="post"> <input type="hidden" name="page" id="page" value="search_pdf" /> <fieldset style="width:210px"> <legend>S&ouml;k efter pdf</legend> <table width="150"> <tr> <td><label for="drawingID">Ritningsnummer:</label></td> <td width="108"><input type="text" name="drawingID" id="drawingID" size="10" /></td> <td align="right"><input type="submit" value="S&ouml;k" /></td> </tr> </table> </fieldset> </form> </div> <?php

Page 61: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

61

} /** * getFiles($dir) * * Searches for all the files in the directory * that comes as parameter and returns a array * with all files. * * @param String $dir the path to the directory * @return Array all files in $dir */ function getFiles($dir) { $files = array(); if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { if(filetype("$dir/$file")!="dir") $files[] = $file; } closedir($dh); } } return $files; } ?>

search_result.php

<?php /** * search_result.php * * Generates a list of all drawings found matching the parameters from * search_drawing.php * * @author Emil Abrahamsson <[email protected]> */ $sql='SELECT * FROM '.TABLE_PREFIX.'drawings WHERE drawingID LIKE "%'.$_REQUEST['drawingID'].'%" AND review LIKE "%'.$_REQUEST['review'].'%" AND machinetype LIKE "%'.$_REQUEST['machinetype'].'%" AND designation LIKE "%'.$_REQUEST['designation'].'%" AND designation2 LIKE "%'.$_REQUEST['designation2'].'%" AND observation LIKE "%'.$_REQUEST['observation'].'%" AND drawed_by LIKE "%'.$_REQUEST['drawed_by'].'%" ORDER BY drawingID, review'; $result=@mysql_query($sql,$dbh); if($result){ echo(' <table class="result" border="1"> <tr valign="top"> <td>&nbsp;</td> <td width="50"><b>Ritnings-<br />nummer</b></td> <td width="20"><b>Rev</b></td> <td width="34"><b>PDF</b></td> <td width="50"><b>Maskintyp</b></td> <td width="116"><b>Ben&auml;mning</b></td> <td width="116"><b>Ben&auml;mning 2</b></td> <td width="50"><b>Anm.</b></td> <td width="20"><b>Ritad av</b></td> <td width="50"><b>Datum</b></td> <td width="50"><b>Ers&auml;tter</b></td> <td width="50"><b>Ersatt av</b></td> </tr> '); while($row=@mysql_fetch_array($result, MYSQL_ASSOC)){ $path=DRW_PATH.$row['drawingID'].strtolower($row['review']).'.pdf'; if(file_exists($path)) $p=true; else $p=false; $sql2='SELECT * FROM '.TABLE_PREFIX.'drawingchanges WHERE drawingID="'.$row['drawingID'].'" AND measured="F"'; $result2=@mysql_query($sql2,$dbh) or die('sql2: '.mysql_error($dbh)); $bool=(mysql_num_rows($result2)>0)?true:false; echo(' <tr valign="middle">

Page 62: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

62

<td>');if($bool)echo('<img title="Det finns ritnings&auml;ndringar f&ouml;r denna maskin!" src="images/attention.gif" alt="Det finns ritningsändringar för denna maskin!" />'); echo('</td> <td>'.$row['drawingID'].'</td> <td>'.$row['review'].'</td> <td>');if($p)echo('<a href="'.$row['path'].'" target="_blank"><img src="images/icon_pdf.gif" alt="PDF" border="0" height="34" width="34" /></a>');echo('</td> <td>'.$row['machinetype'].'</td> <td align="left">'.$row['designation'].'</td> <td align="left">'.$row['designation2'].'</td> <td>'.$row['observation'].'</td> <td>'.$row['drawed_by'].'</td> <td>'.$row['date'].'</td> <td>'.$row['replaces'].'</td> <td>'.$row['replaced_by'].'</td> '); } echo(' </table> '); }else{ echo('Query failed'); } ?>

signout.php

<?php /** * signout.php * * Destroys all sessionvariables and goes to index.php * * @author Emil Abrahamsson <[email protected]> */ unset($_SESSION['online'],$_SESSION['name'],$_SESSION['auth']); session_destroy(); header('Location: index.php'); ?>

start.php

<?php /** * start.php * * Generates the login form * * @author Emil Abrahamsson <[email protected]> */ if($_SESSION['online']==1){ require_once('pages/inside.php'); }else{ $sql = 'SELECT * FROM '.TABLE_PREFIX.'users WHERE username="'.$_REQUEST['username'].'" LIMIT 0, 1'; $result=@mysql_query($sql, $dbh); $row=@mysql_fetch_array($result,MYSQL_ASSOC); if(strlen($_REQUEST['username'])>0&&$_REQUEST['username']==$row['username']){ $_SESSION['online']=1; $_SESSION['auth']=$row['auth']; $_SESSION['name']=$row['name']; header('Location: index.php'); }else{ echo(' <div class="text"> <form id="signin" name="signin" action="index.php" method="post"> <fieldset class="signin"> <legend>Logga in</legend> <table width="250"> <tr> <td width="120"><label for="username">Anv&auml;ndarnamn:</label></td>

Page 63: Digitalt arkiv - DiVA portalhig.diva-portal.org/smash/get/diva2:120184/FULLTEXT01.pdf · 2008. 6. 19. · Digitalt arkiv av Emil Abrahamsson Institutionen för matematik, natur- och

63

<td width="130" align="right"><input type="text" name="username" id="username" size="15" /></td> </tr> <tr> <td colspan="2" align="right"><input type="submit" value="Logga in" /></td> </tr> </table> </fieldset> </form> </div> '); } } ?>