Lektion 4 HTML, CSS och PHP

Relevanta dokument
Lektion 3 HTML, CSS och JavaScript

Lektion 2 - CSS. CSS - Fortsätt så här

Labora&on 5 CSS och layout samt fråga E övningar/uppgi>er

Labora&on 4 CSS och validering samt fråga D övningar/uppgi?er

Labora&on 4 CSS och validering övningar/uppgi9er

ORDLISTA WEBBDESIGN 100P

Lektion 2 Del 1 Kapitel 6

/*formatering för html och body elementen - elementens höjd sträcker sig över hela webbläsarfönstrets höjd*/ html, body { height: 100%; }

En stiligare portal Laboration 3

Laboration 2: Xhtml och CSS.

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

Lektion 5 HTML, CSS, PHP och MySQL

21/01/2016. Stilmallar. styra utseendet av webbplatsen DEL 1. Karin Fahlquist. index.html. recept.html frukt.html grönsaker.html

Guide till Mynewsdesk Hosted Newsroom - Kom igång och spegla ditt pressrum!

Xhtml och CSS.Tillämpad fysik och elektronik Per Kvarnbrink (redigering Ulf Holmgren 2011)

Inför prov 1 i webbdesign

HTML och CSS. Eric Elfving Institutionen för Datavetenskap (IDA)

En bortsprungen katt

Avancerade Webbteknologier

WEBDESIGN A - DTR 1210

Användarmanual WebNailer. 19 januari 2004

Föreläsning 4. CSS Stilmallar för webben

Vilken skillnad gör det var du placerar det? Prova båda.

Lägga till artiklar i Joomla

Carl-Oscar Hermansson WEBB DESIGN

Labora&on 2 Funk&oner, if och loop övningar/uppgi:er

FrontPage Express. Ämne: Datorkunskap (Internet) Handledare: Thomas Granhäll

Övning (X)HTML 2. Sidan 1 av

Labbrapport: HTML och CSS

Förkunskaper: Tim Berners Lees vision webbläsarkriget W3C strukturtagg <h1> layout-tagg <font size="6">

Labora&on 6 CSS och responsiv webbdesign övningar/uppgi:er

Användargränssittet (Front-end) i mobilversionen bygger i stor utsträckning på jquery Mobile-ramverket.

Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor

Tillämpad fysik och elektronik Per Kvarnbrink m.fl. Laboration 2: HTML och CSS.

JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?

Nätet. Uppgiften. Nivå

Labora&on 7 Syfte med laborationen:

Sophia Prosell DREAM WEAVER SKAPA OCH PUBLICERA EFFEKTIVA WEBBSIDOR

Programmeringteknik. Planering MÅL LABB: MOMENT LAB4 HTML - EXEMPEL HTML. Webbdelen

Laboration 2. Webbproduktion En stiligare webbsida HT2015

HTML och CSS. Eric Elfving Institutionen för datavetenskap. 18 augusti 2015

Webbutveckling Laboration 1: HTML5 och CSS3.

Visa och dölja element med JavaScript

TDDD52 CSS. Färger. Färger 1/3/13

En grundkurs i hemsidor och hur de är uppbyggda

Manual. Anpassad för CMS Made Simple version 1.9.x (uppdaterad ) Birger Eriksson webblots.se

WEBBUTVECKLING Kursplanering

<Webbutvecklare lektion="02"> Kursledare: Mahmud Al Hakim

JavaScript del 9 Dynamik och animeringar

Repetition. Hypertext. Internet HTTP. Server och klient Text försedd med länkar till andra texter. Många sammankopplade nät

Repetition. Hypertext. Internet HTTP. Server och klient Föreläsning 2. Text försedd med länkar till andra texter. Många sammankopplade nät

Laboration med Internet och HTML

Webbteknik för ingenjörer

12/9/2010 REGLER WEBBPRODUKTION WEBBDESIGN CASCADING STYLE SHEETS CSS LOKALA STILMALLAR GLOBALA STILMALLAR. Selektor. Deklaration

3. Hämta och infoga bilder

Vi börjar med en penna som ritar när du drar runt den på Scenen.

Personalsupport. Medicinska fakulteten, Lunds universitet. Textredigeraren. Moodle version 2.7.1

Internet A. HTML Grunder Maximilien Chiang 1

Sidan kommer inte läggas upp någonstans utan du redovisar den för mig på något handledningstillfälle.

Vilken version av Dreamweaver använder du?

Labora&on 8 Formulär övningar/uppgi6er

Lägga till bild i e- handeln

Internet och WWW Laboration 3 VT10 Högskolan Dalarna Hans Rosendahl. Laboration 3 CSS del 2. 1 av 20

F07 Stilmallar Dagens agenda

Lathund för att lägga in information på ovanaker.se Innehållsförteckning

Labora&on 5 Dynamisk HTML och &mers övningar/uppgi=er

Laboration 6 Formulär och stränghantering övningar/uppgifter

Att använda laget.se

Gränssnitt för FakeGranska. Lars Mattsson

Om man vill ändra färg inuti går det, men skuggan blir densamma.

Kom igång. Readyonet Lathund för enkelt admin. Logga in Skriv in adressen till din webbsida följt av /login. Exempel:

Lathund för att lägga in information på ovanaker.se Innehållsförteckning

Dokument i klassens aktivitet

JavaScript. JavaScript Ramverk (Bibliotek) jquery + jquery UI

Widgetguiden Vad är Publits widgetshop?

Manual till funktionen Rapport/Export (beta) i Compos - Föräldrastöd February 2, 2016

EDA095 HTML. Per Andersson. April 26, Lund University Innehåll: HTML, CSS, DOM, JavaScript

Mappar och filer för webbsidor


GUIDE TO CHANGE OR ADJUST THE WEBSITE FOR YOUR COMPANY

Labora&on 2 HTML och validering övningar/uppgi:er

Du kan själv följa med i denna steg-för-steg guide i din texteditor.

Innan man börjar bygga ett skin i LUVIT bör man göra vissa förberedelser. Dessa är beskrivna nedan.

Manual HSB Webb brf

Manual för din hemsida

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

Övningar i CSS för anpassning till olika enheter

Arbeta med bilder på sunne.se i CMS 7.5 Sida 1 av 9

Lathund för redigering av Falkenbergs gymnasieskolas hemsidor

CSS-övningar. 1. Grunder

Kom igång med FrontPage 2003

Kursvärdering. Denna manual beskriver hur du kan skapa en mapp i Fronter som heter Kursvärdering där du ladda upp reslutat från kursutvärderingar.

«Sida 2 av 4 Till kursens framsida Sida 4 av 4»

Gesällprov. Webbutveckling klient- och serversidan. Tomas Pålson topa4233

Labora&on 1 Variabler och beräkningar övningar/uppgi9er

Verktyget är begränsat till Microsoft Internet Explorer v 7.0 och uppåt

Tema: Kom igång med Webbfronter

Användarmanual för Content tool version 7.5

Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet

CMS. - Content management system

Transkript:

Lektion 4 HTML, CSS och PHP I den här lektionen behandlas i huvudsak PHP. Det förutsätts att lektion 1, 2 och 3 är gjorda, eller att du har tillräckliga kunskaper i grundläggande HTML och CSS för att klara den här lektionen. För att du ska hinna med det viktiga i den här lektionen, krävs det att du snabbt betar av de tre första sidorna om HTML och CSS. Lägg inte för mycket tid på CSS i den här lektionen, det viktiga är att ni testar på PHP. Hellre fult, men med fungerande PHP. I denna lektion kommer PHP att användas för att göra en meny till webbsidorna från lektion 1 och 2, samt 3, och för att förändra innehållet som visas på webbsidan. Börja så här 1. Skapa en ny mapp för lektionsfilerna på webbservern. PHP körs på webbservern och visas som HTML i webbrowsern, så filerna måste ligga på webbservern och sedan öppnas via nätet och inte lokalt. 2. Kopiera HTML-filen från lektion 2 till den nya mappen, byt namn på den till lektion2.php. Kopiera också CSS-filen från lektion 2. Och, kopiera slutligen HTMLfilen från lektion 3, döp om den till lektion3.php, samt javascriptet. 3. Nu har ni kopierat över de filer vi behöver för att göra lektion 3, men ni kommer under lektionen också skapa ett antal nya filer. Idén med lektionen är att skapa en meny som ska ligga överst på webbsidan. Detta skulle kunna göras individuellt i varje webbsida som ska ha menyn, men om vi senare lägger till ett menyval eller ändrar en menytext måste detta ändras i varje enskilt HTML-dokument. I stället ska vi använda PHP så att webbservern sätter in en och samma meny-fil överst på varje webbsida. 4. Det går utmärkt att blanda HTML och PHP på en webbsida, men för att webbservern ska läsa PHP måste sidan ha PHP som filändelse. Ovan bytte ni filändelse på era HTML-dokument, och nu kan ni skriva in PHP-kod som läses av webbservern. PHP-kod inleds med <?php följt av koden och avslutas sedan med?>. 5. Öppna/skapa ett nytt tomt textdokument som ska bli menyn. Menyfilen ska vara en vanlig textfil (.txt), och ska innehålla inledningen på ett HTML-dokument, dvs: <!doctype html> <html> <head> </head> <body>

Klipp ut allt från början av dokumentet, lektion2.php, till och med <body>, men lämna kvar sidinnehållet och avslutningen på HTML-koden. Spara textfilen som meny.txt. Spara lektion2.php. 6. Nu har ni en textfil som inte tolkas som HTML, och en PHP som inte heller tolkas som korrekt HTML. Därför ska ni med hjälp av PHP inkludera meny.txt i början av lektion2.php. Detta görs med include: <?php include "meny.txt";?> http://www.w3schools.com/php/php_includes.asp 7. Spara lektion 2.php och öppna sidan i en webbrowser. Nu ser sidan lektion2.php ungefär ut som den gjorde förut. Snygga till länken till bilden om bilden inte visas. Samt ändra i meny.txt så att den visar Lektion 4 som title i stället. 8. Gör nu samma operation för lektion3.php. Testa att det funkar. Troligtvis ser inte lektion3.php alls ut som den gjorde förut. Detta beror på att CSS-filen inte har rätt inställningar för lektion3.php. Kopiera därför all CSS-kod, förutom body, från CSS-filen till lektion 3 och klistra in i CSS-filen för lektion 4. Nu kommer den nya CSS-koden att förändra utseendet på alla stycken (p), och ni behöver därför ändra den nya paragrafinställningen från att gälla p till att bara gälla IDt på räknaren, dvs #clickcounter. Vi använde det IDt för att javascriptet skulle kunna ändra innehållet, dvs räkna upp antalet klick i lektion 3. Därför går det smidigt att ändra p till IDt i CSS-filen, och få rätt utseende på såväl p som på #clickcounter. 9. Uppdatera sedan meny.txt så att den även innehåller länken till javascriptet. Och kontrollera avslutningsvis så att både lektion2.php och lektion3.php ser ut som de ska. Skapa sedan menysystemet 1. I meny.txt ska vi nu skapa en onumrerad lista (ul), med två poster, Lektion 2 och Lektion 3. Listan ska ligga i en div som ska ha en class (eller ett ID) header. Knappen Lektion 2 respektive knappen Lektion 3 ska ha länkar a href kopplade till lektion2.php och lektion3.php. 2. I CSS-koden ska vi nu anpassa header så att det i stället för en lista med två bullets i höjdled, blir två knappar i bredd. Vi börjar med att ställa in diven header. Positionen för menyn ska vara fixed, så att menyn inte försvinner om man scrollar. Därefter anger vi att z-index ska vara 1, vilket innebär att menyn hamnar överst bland lager på webbsidan. Ställ in bredd, höjd, bakgrundsfärg, och sätt gärna dit en kantlinje nederst. Liknande:.header { position: fixed; z-index: 1; top: 0; width: 100%; height: 80px; background-color: #ff7d00; border-bottom: solid 3px #fff; http://www.w3schools.com/css/css_positioning.asp http://www.w3schools.com/cssref/pr_pos_z-index.asp

3. Menylisten ser rätt ok ut nu, men har en marginal till vänster. Sätt därför vänstermarginalen till 0 för body. 4. Nu ska listan ändras till knappar. Sätt först ul till att få marginal och padding. Sätt margin till 20px och padding till 10px. Om du har satt menyn till en class gör du detta genom:.header ul { margin: 20px; padding: 10px; 5. Nästa steg är att göra om listen från en vertikal lista till en horisontell lista, detta görs med display: inline-block; för listobjektet (li)..header li { display: inline-block; 6. Länkar som finns i header ska vara knappar, därför ska dessa få bakgrundsfärg (background), en kant runt om (boarder), textfärg som skiljer sig mot bakgrunden (color), padding så att texten inte sitter vid kanten på knapparna, och understrykningen (text-decoration) av länken ska tas bort. Liknande:.header a { background: #6a6a6a; background: linear-gradient(#a6a6a6, #6a6a6a); border: solid 2px #000; color: #fff; padding: 12px 20px; text-decoration: none; 7. Nu ska menyknapparna ändras något till. Jag vill nämligen att knappen längst till vänster ska ha rundade hörn åt vänster, och knappen längst åt höger ska ha rundade hörn åt höger. Knappar där emellan, om vi har fler än två val, ska ha vassa hörn. Genom att använda li:first-child kommer man åt första positionen i en lista, respektive li:last-child för att komma åt den sista positionen i en lista. Motsvarande kan man använda exempelvis i tabeller eller paragrafer/stycken. Hörnen rundas med border-radius och räknas övre vänster, övre höger, nedre höger, och nedre vänster om fyra värden anges..header li:first-child a { border-radius: 6px 0 0 6px;.header li:last-child a { border-radius: 0 6px 6px 0; http://www.w3schools.com/cssref/sel_firstchild.asp http://www.w3schools.com/cssref/sel_last-child.asp http://www.w3schools.com/cssref/css3_pr_border-radius.asp 8. Avslutningsvis ska vi lägga till en hover-effekt som ändrar utseendet på knappen när muspekaren är ovanför den. Ett sätt att göra detta på är att lägga på en inre skugga på länken, dvs a-objektet, med hjälp av box-shadow och inset som lägger skuggan på insidan av objektet. Sedan anges skuggan med fem värden: 1) horisontell skugga, 2) vertikal skugga, 3) suddighet, 4) utbredning, och 5) färg.

Genom att ange färgen i rgba kan man också enkelt ange genomskinligheten. Exempelvis:.header a:hover { box-shadow: inset 0 0 10px 1px rgba(0, 0, 0,.3); http://www.w3schools.com/cssref/css3_pr_box-shadow.asp http://www.w3schools.com/cssref/css_colors_legal.asp 9. Nu skymmer tyvärr menyn fyrkanterna i lektion3.php något. Ändra därför marginalerna för fyrkanterna (.content) till fasta mått, liknande: margin: 120px 20px 20px 20px; Rutan med siffran som räknas upp är nu också ljusgrå. Ändra därför den rutans (#textbox) bakgrundsfärg till att bli mörkgrå, background-color: #6a6a6a;. PHP Äntligen dags 1. Det är god praxis att alltid ha en indexsida. Indexsidan är den sida som per automatik visas om inget annat specificeras i URLen i webbrowsern. Skapa därför en index.php med följande information: <?php include "meny.txt";?> <h1></h1> <p class="maintext></p> </body> </html> 2. Den här sidan kommer inte att visa något än, men snart ska vi skriva PHP-kod för att låta webbservern fylla på med information. Denna information ska vi skriva i två nya dokument, två språkfiler, som innehåller PHP-kod med textinformation i en array som webbservern sedan läser och sätter in på webbsidan. 3. Lägg därför till en menyknapp intro först i menylistan, och lägg sedan till två knappar Svenska och English sist. 4. Knappen intro ska länkas till index.php, och länkarna kopplade till Svenska och English ska se ut så här: <a href="?lang=sv"> respektive: <a href="?lang=en"> De lägger till information sist i URLen, som senare ska tolkas av webbservern, så att rätt språkfil används vid skapandet av webbsidan. Språkfilerna PHP 1. Nu ska ni skapa själva språkfilerna. Språkfilerna ska innehålla en array med all (nästan) textinformation som behövs för två språk, svenska och engelska. 2. En enradig kommentar i PHP inleds med // och en flerradig kommentar inleds med /* och avslutas senare med */. 3. Ett variabelnamn skrivs med $ först, och en array deklareras med array(). Vi ska skapa en array, $lang, enligt: $lang = array(); http://php.net/manual/en/language.variables.php http://php.net/manual/en/book.array.php

http://www.w3schools.com/php/php_variables.asp http://www.w3schools.com/php/php_arrays.asp 4. I den här lektionen ska vi använda en associativ array. Det innebär att instanserna i arrayen definieras med namn. Eftersom vi tänker ha två språk så måste naturligtvis menyknapparna ha bättre beskrivningar än lektion1 osv. Liknande så här för den svenska språkfilen: // Meny $lang['menuintro'] = 'Introduktion'; $lang['menuhtml'] = 'Lektion i HTML & CSS'; $lang['menujs'] = 'Mitt första JavaScript'; 5. Skapa två språkfiler. Döp dem till lang.sv.php respektive lang.en.php. Inled och avsluta dessa PHP-filer korrekt. Skapa arrayen $lang, och fyll arrayen med svenska respektive engelska menyord enligt ovan. 6. Nu ska meny.txt ändras så att den ersätter befintliga menyknappar med texten från språkfilerna. Det gör vi genom att tala om för PHP att sätta in text, echo, från vår array, $lang, med rätt instans, exempelvis menuintro Enligt: <li><a href="index.php"><?php echo $lang['menuintro'];?></a></li> Och så vidare för de andra knapparna till lektion 2 och lektion 3. http://php.net/manual/en/function.echo.php http://www.w3schools.com/php/func_string_echo.asp Knyta ihop PHP-koden 1. Avslutningsvis måste vi berätta för webbservern hur den ska läsa språkfilerna. Detta gör vi genom att skriva en ganska lång PHP-kod först i meny.txt. Kom ihåg att inleda och avsluta PHP-koden på korrekt sätt. 2. Först ska vi starta en PHP-session. En PHP-session är ett sätt att använda information sparad i variabler, på flera olika webbsidor. session_start(); http://php.net/manual/en/book.session.php http://www.w3schools.com/php/php_sessions.asp 3. Sedan ska vi se vilket språk som är valt. Det gör vi med en if-sats. Hela if-satsen finns längre ned i detta dokument, men först följer en förklaring av if-satsens steg. Vi ska använda arrayen $lang för att spara språkversionen i, och det är ju den vi använder för att hämta rätt text från rätt språkfil. Läs mer här om if-satser: http://php.net/manual/en/control-structures.if.php http://php.net/manual/en/control-structures.elseif.php http://www.w3schools.com/php/php_if_else.asp 4. Vi ska börja med att se om lang har definierats i adressfönstret i browsern. Man kollar om en variabel har fått ett värde med isset, eller om den är tom, dvs NULL. Läs mer här om isset: http://php.net/manual/en/function.isset.php

5. Till språkknapparna i HTML-koden la vi till information, exempelvis "?lang=sv", vilket anger språket användaren valt i URLen. Vi ska använda $_GET för att hämta den informationen från adressfönstret i browsern. Läs mer här om $_GET: http://php.net/manual/en/reserved.variables.get.php http://www.w3schools.com/php/php_forms.asp 6. Om lang har definierats i URLen, ska en variabel, $lang, få det värdet, och en global PHP-variabel (en sessionsvariabel), $_SESSION, ska också tilldelas det värdet. http://php.net/manual/en/reserved.variables.session.php 7. Därefter ska vi sätta en cookie med setcookie. En cookie sparas i användarens dator och används av webbservern för att, i det här fallet, veta vilket språk som användaren har valt. Cookien sparas med setcookie(namnet-på-cookien, värdet-i-cookien, tiden-cookien-gäller). I det här fallet ska cookien heta lang, värdet som ska sparas är variabeln $lang, och tiden nu time() och ytterligare 30 dagar räknat i sekunder (60*60*24*30). Läs mer här om setcookie: http://php.net/manual/en/function.setcookie.php http://www.w3schools.com/php/func_http_setcookie.asp 8. Annars om, else if, språket finns definierat i den globala variabeln, $_SESSION ska $lang tilldelas det värdet. 9. Annars om, else if, språket finns definierat i cookien, $_COOKE, ska $lang tilldelas det värdet. http://php.net/manual/en/reserved.variables.cookies.php http://www.w3schools.com/php/php_cookies.asp 10. Annars, else, dvs språketvalet finns inte definierat någonstans, ska $lang sättas till sv. Det innebär rent praktiskt att svenska är defaultspråk. if(isset($_get['lang'])) { $lang = $_GET['lang']; $_SESSION['lang'] = $lang; setcookie('lang', $lang, time() + (60 * 60 * 24 * 30)); else if(isset($_session['lang'])) { $lang = $_SESSION['lang']; else if(isset($_cookie['lang'])) { $lang = $_COOKIE['lang']; else { $lang = 'sv'; 11. Nu finns rätt språkversion i variabeln $lang Vi ska nu sätta ihop en sträng, $lang_file, som innehåller sökvägen till rätt språkfil. Man sätter ihop strängar, konkatenerar strängar, med punk i PHP. Så här: $lang_file = 'lang.'.$lang.'.php'; Denna kodrad skapar alltså strängen lang. lägger till valt språk (sv eller en) och fortsätter med att lägga till strängen.php. Detta skapar strängen lang.sv.php. http://php.net/manual/en/language.operators.string.php

12. Avslutningsvis ska vi inkludera texten från rätt språkfil att använda till webbsidorna. Eftersom vi kan tänkas ladda om sidan flera gånger utan att ändra språk, exempelvis när vi gör flera olika val i menyn, ska vi använda include_once som bara inkluderar en fil en gång under en session. Men, om vi ändrar språk inkluderar vi inte samma fil igen, utan då läses den nya filen in. include_once $lang_file; http://php.net/manual/en/function.include-once.php http://www.w3schools.com/php/php_includes.asp http://php.net/manual/en/function.include.php Avslutningsvis 1. Till sist kan vi lägga till text i båda språkfilerna för index.php, och sedan förstås uppdatera index.php på samma sätt som vi gjorde med menysystemet så att rubriken och texten på indexsidan ändras med språkversion. Liknande: $lang['maintitle'] = 'Mina lektioner hittills'; $lang['maintext'] = 'Här finns mina första lektioner på kursen TNMK30. Ok, den första lektionen saknas, men den var så ful utan CSS att jag hoppade över den här. Men, lektion 2 och lektion 3 finns att välja i menyn ovan.'; 2. Därefter kan även texten från lektion 2 (och 3?) ändras på samma sätt. 3. När all kodning är klar, testa alltid webbsidorna i en validator för att få hjälp att upptäcka syntaxfel. HTML: https://validator.w3.org/ CSS: https://jigsaw.w3.org/css-validator/ 4. Om allt stämmer enligt validatorerna, har vi nu en enkel webbsida som innehåller ett utbud av vanliga element, en del CSS-finesser samt ett menysystem som via PHP ändrar innehåll (språk i alla fall) på webbsidan. Hela PHP-koden i meny.txt <?php session_start(); if(isset($_get['lang'])) { $lang = $_GET['lang']; $_SESSION['lang'] = $lang; setcookie('lang', $lang, time() + (3600 * 24 * 30)); else if(isset($_session['lang'])) { $lang = $_SESSION['lang']; else if(isset($_cookie['lang'])) { $lang = $_COOKIE['lang']; else { $lang = 'sv'; $lang_file = 'lang.'.$lang.'.php';?> include_once $lang_file;

PHP-koden i lang.sv.php <?php $lang = array(); $lang['menuintro'] = 'Introduktion'; $lang['menuhtml'] = 'Lektion i HTML & CSS'; $lang['menujs'] = 'Mitt första JavaScript';?> $lang['maintitle'] = 'Mina lektioner hittills'; $lang['maintext'] = 'Här finns mina första lektioner på kursen TNMK30...';