- PHP 98.3%
- Hack 1.7%
| .gitignore | ||
| config.php | ||
| index.php | ||
| LICENSE | ||
| operations.php | ||
| PHPApplikation.php | ||
| proc_toolcount.php | ||
| rapporter.php | ||
| README.md | ||
| tools.php | ||
PUCKO – PHP, del 2
Utgångspunkten är mina sex PHP-filer från förra året. Samma filer och huvudfunktioner behålls: operationer, hjälpmedelsbokning, rapporter och antal hjälpmedel.
Variant och avgränsning
Jag gör Reexamination – Same as Last Year Assignment Variant. Formulären är självrefererande som i min tidigare kod. Den nästlade tabellen använder radlayout. Detta är ett antagande som behöver bekräftas för omexaminationen; det innebär inte att jag har tilldelats grupp A, C eller E.
Applikationen använder gruppledarkontot kopplat till G1. Den är inget fullständigt gränssnitt för alla databasens roller och funktioner.
PHP-krav och lösning
| Krav | Lösning |
|---|---|
| Självrefererande formulär | Formulären skickas till samma PHP-fil som visar dem. |
| Enkel HTML-tabell utan JOIN | tools.php visar hela Hjalpmedel. operations.php visar Operation, med möjlighet att filtrera. |
| Procedur som hämtar data | proc_toolcount.php anropar GETOPTOOLCOUNT och visar resultatet i en tabell. |
| Nästlad tabell med JOIN | tools.php hämtar operationer och bokningar med LEFT JOIN. Varje operationsrad innehåller en tabell över hjälpmedlen: radlayout. |
| Sökning och separat filtrering | operations.php söker på kodnamn och filtrerar med dropdown för gruppledare eller region. |
| Procedur, INSERT och UPDATE | tools.php anropar BokaHjalpmedel; rapporter.php gör INSERT i Rapport; operations.php uppdaterar SlutDatum. |
| Separat dropdown för skrivning | Bokningsformuläret har egna dropdownfält för operation och hjälpmedelsnamn. |
| Synliga ändringar | Bokningar, rapporter och ändrat slutdatum visas efter åtgärden. |
| Kommentarregeln | Endast enradiga kommentarer vid formulär och komplex tabell; högst 80 tecken per kommentar. |
Krav överförda från databasens README
- ”När slutdatum ändras ska bokningar och ledargränser prövas på nytt; en konflikt ska avbryta ändringen.” Formuläret ändrar SlutDatum; databasens triggers kontrollerar ändringen.
- ”Ett hjälpmedel får inte användas av överlappande operationer.” Bokning görs med BokaHjalpmedel, som kontrollerar detta.
- ”Datum, titel, författare, typ och kort kommentar ska lagras. Rapporttypen är slutrapport om den inte anges. Kort kommentar får vara högst 25 tecken.” Ny rapport använder kontots författare, dagens datum och databasens standardtyp.
- ”Rapportens text, radantal och antal uppföljningar ska vara åtkomliga.” Dessa visas i rapporttabellen.
- ”Beräkna radantal, sidantal (48 rader/sida), ordantal och antal uppföljningar vid läsning i klienten. Visa varning under 25 ord för originalrapporter. Import/export hör till klienten.” Rapportdelen visar antal och varnar när kort text sparas. Import/export är inte implementerat i PHP-applikationen; detta delkrav från databasens README återstår om det ska examineras.
- ”Rapporttext skrivs genom SkrivRapportText för att textlagring och radnummer ska stämma.” Textformuläret använder proceduren.
- ”Fånga nekade direkta SQL-anrop och anropa LoggaForbjudenAtgard.” Gemensam felhantering anropar proceduren vid databasfel.
Egna gränssnittskrav: lista operationer med sökning och filter; lista hjälpmedel och bokningar med möjlighet att avboka; skapa egen rapport och redigera dess text; hämta antal hjälpmedel för vald operation. Databasens rättigheter och triggers avgör vilka ändringar kontot får göra.
Nödvändiga ändringar från gamla PHP-koden
Arkiveringsanropet som inte finns i den aktuella databasen har ersatts med ändring av slutdatum. Rapportborttagning och titeländring som gruppledarkontot saknar rättighet till har ersatts med avbokning respektive tillåten textredigering. Agentuppgifter hämtas genom den tillåtna vyn. Författaren hämtas från det konfigurerade kontot. PDO-parametrar, HTML-escaping, indatakontroll och formulärtoken skyddar inmatningen. Efter lyckad skrivning sker omdirigering så att omladdning inte skickar samma formulär igen.
Körning
- Använd den aktuella databasen från del 1, med dess procedurer, vyer och konton.
- Kontrollera anslutningsuppgifterna i config.php. Databaskontot och AGENT_KOD måste motsvara samma agent; leveransen använder gruppledarkontot och G1.
- Lägg de sex PHP-filerna i samma katalog på wwwlab med filnamnen i ZIP-filen. PHP behöver PDO MySQL och sessioner. Öppna index.php.
- Testa läsning, sökning, dropdownfilter, antal, bokning, avbokning, slutdatum samt skapande och textändring av rapport. Prova även en överlappande bokning och kontrollera att den avvisas.
Verifiering och återstående kursmoment
Alla sex filer klarar PHP 8.3:s syntaxkontroll. 24 lokala tester med simulerad PDO kontrollerar sidvisning, tomma tabeller, inmatning, parametrisering, escaping och formulärflöden. Genererad HTML från dessa testfall har validerats utan fel med Nu HTML Checker. Det är inte ett test av en riktig databasanslutning eller filuppladdning på wwwlab.
Följande återstår i kursmiljön:
- Forka PHP Assignment Startup på git.webug.se om det inte redan är gjort. Gör den begärda inledande committen och kontrollera att den syns där.
- Kör sidorna på wwwlab mot den installerade databasen, inklusive kontots rättigheter.
- Validera samtliga undersidor med validator.w3.org efter körning på wwwlab.
- Gör relevanta commits för de verkliga arbetsstegen och kontrollera dem på git.webug.se. Använd uppgiftens ord: formulär, tabeller, radlayout, sökning/dropdown samt insert/update/delete/procedur.
- Bekräfta självrefererande formulär och radlayout för omexaminationsvarianten.
Ingen publicering på wwwlab, fork eller fjärrcommit har gjorts i denna leverans.