JASON Hirschhorn: Välkommen alla till vecka åtta. Vi har en spännande vecka framför oss. Ni har duva under den gångna par föreläsningar till PHP, SQL, HTML, CSS, så fyra helt nya språk som kommer att ta upp resten kursen. Vi får också lära dig ett par andra språk före kursens slut. Men hur som helst, naturligtvis, är detta en mycket spännande tid i CS50, nu du behärskar C, skenbart, och är går vidare till programmering för webbplatser. Så den här veckan kommer vi att gå på en virvlande tur genom de fyra språk jag nyss nämnde, HTML, CSS, PHP och SQL. Och förhoppningsvis kommer vi att lämna gott om tid i slutet av avsnittet för att prata om denna veckas P set och svar alla frågor du alla har. Varje vecka, samma lista över resurser för dig, för att hjälpa dig med veckans problembild och gå över materialet - men denna vecka i synnerhet för dessa webbaserade problemet uppsättningar finns det en mängd andra resurser ut där som du kommer sannolikt hitta otroligt hjälpsamma. Jag har dem här. Jag kommer att skicka dig detta efter avsnitt, och detta också vara online. Men framför allt finns det gott stora resurser ute. Det finns också några inte så stor dem, så var försiktig med dem. Men på denna bild, jag har fyra bra källor, en för var och en av språk som du kommer att arbeta med denna vecka - en referensmall för HTML, ett referensblad för CSS. Denna rätt här är PHP manualen. Så istället för att skriva man och sedan en PHP kommando, det är här du skulle går att slå upp funktionsprototyp och exempel och även en del tips och tricks för att använda PHP funktioner. Du kommer att använda denna webbplats ofta, så jag uppmuntrar dig att bli bekant med den. Det kan vara lite tekniskt, men det ger också en ton av resurser och exempel för alla funktioner och även andra, som hur man använder arrayer eller olika typer av variabler. Denna webbplats är till stor hjälp för PHP. Och sedan, för SQL, om du dök in här veckans problem set, vet du att vi använder en databas. Och vi komma åt databasen via en relativt trevligt användargränssnitt. Eller det är ett sätt att komma åt den databasen. Användargränssnittet är kallas phpMyAdmin. Det finns en flik SQL, som vi ska titta på senare i dag. Och du kan skriva in sina prov SQL frågor, att göra saker i din databas och sedan köra dessa frågor. Och om de är korrekta, det ska säga, den här är korrekta. Om de är felaktiga, det ska säga, det är fel. Det är ett bra ställe att öva din SQL-frågor innan du skriver in dem i din kod, se till att du ha formatet korrekt. Slutligen, en annan webbplats på här. Detta är den webbplats där du kan gå och kontrollera att din HTML-kod är giltig. Så innan du slår dina problem inställd denna vecka, se till att alla HTML är giltig. Förra veckan hade du kör valgrind, till se till att du inte hade några minnesläckor. Denna vecka, måste du se till att alla om din kod är giltig HTML5. Om det inte är giltigt HTML5, du kommer att få poäng från. Så se till att - bara för att det fungerar inte menar att det är helt giltiga. Kör din kod via denna webbplats innan du slår i. Återigen, här är hemsidan. Om du har synpunkter på mig, vi har några fler avsnitt kvar, och jag vill alltid göra vad jag kan för att ge er alla med den bästa delen upplever möjligt. Så låt mig veta om det är något jag kan göra för att förbättra eller om det finns saker du ser att jag kunde göra bättre. Tack, Avi. Sätt den på webbplatsen. Detta var cykeln jag hade när jag var, låt oss säga, fyra hemma. Det är en Teenage Mutant Ninja Turtle cykling, om du inte kan berätta, eftersom det är lite suddiga. Du kan få det nu på ToysRus för, tror jag, ungefär $ 100. Men det inslag i denna cykel som jag vill ha dig att vara uppmärksam på är dessa här. Dessa är stödhjul. Fram tills nu, har du varit hand genom C. Och vi har tagit lång tid, två månader plus, att gå igenom C. För dessa närmaste språk, Vi kommer inte att spendera så mycket tid. De stödhjul är på väg bort. Och vi kommer att dyka in i dessa språk snabbt och gå igenom dem snabbt, vilket är inte att säga att Vi kommer bara att lämna dig simma ute med något sätt att stödja själv eller räkna ut hur dessa språk fungera. Jag bara visade dig en lista över resurser för att hjälpa dig. Men tänk på att PHP är otroligt liknar C. Vi kommer att gå över det idag och några av skillnaderna. Men för det mesta, det finns för slingor. Det finns om förhållandena. När du vill lösa ett problem, du kommer att använda en kombination av dessa. Det är väldigt likt. Logiken bör vara mycket lik vad du har gjort tidigare. Vad är egentligen nytt denna vecka är det syntax och hur du uttrycker dig. Och du vill skriva en for-loop, men det kanske ser lite annorlunda. Eller du vill skapa en array, men det kanske ser lite annorlunda. Så kom ihåg att gå framåt, logiken är mycket lik den som du har gjort tidigare. Men du nu kommer att stöta en hel del ny syntax. Och vi kommer inte att gå igenom alla delar av syntaxen. Så det är verkligen upp till dig att lista ut, på nätet eller genom att nå ut på Diskutera eller maila mig eller prata med varandra, hur man skriver saker i PHP och hur man skriver SQL-frågor och hur man använder HTML och CSS. Men bara så du vet, det är inte det vi försöker kasta dig ut där igen för att simma hajarna. Detta är vad du förmodligen kommer att göra med ditt slutprojekt, om du väljer en annat språk, som IOS och Mål C, eller om du väljer att starta programmering i framtiden och dyka in i andra språk, som Python eller Ruby. Ofta är logiken mycket liknande över alla dessa språk, och Syntaxen är det som är annorlunda. Och det kommer att vara upp till dig, som programmerare, för att gå använda webben resurser tillgängliga för dig och figur ut hur man uttrycker det du vet hur att uttrycka i C, i ett annat språk. Så det här är en bra metod, både för din slutprojekt, och igen, för vad kommer du förmodligen att göra när du lämnar CS50. Innan vi går vidare, inte vem som helst har några frågor om vad Jag har gjort så här långt? Bra. Låt oss gå vidare. Först ska vi prata en kort stund om kommandot chmod. Detta kommer vi att göra i början av dina problem inställd. En av de allra första instruktioner för dig, när du ladda ner fördelning kod, är att ändra behörigheter för filer och kataloger du tar emot. Kan någon gissa eller veta varför det är viktigt att ändra behörigheterna för vissa filer och kataloger på din dator? Avi - PUBLIK: Då ingen utom för du kan se vad du gör? JASON Hirschhorn: OK. Så om vi vill sätta något på webben och du har behörigheter satt att bara du kan se någonting, då ingen annan kan se vad du har skapat. Vad mer? Yeah. PUBLIK: Förhindra någon annan som du vill inte se något, från ser något. JASON Hirschhorn: Det är sant också. Det är nog en del kod som du skriver, att du inte vill att folk ska se. Du är förmodligen OK med folk ser HTML och JavaScript. Men din PHP, en back end-kod, en hel del logiken i din kod, kanske det saker som lagrar en del av dina lösenord för din databas, gör du inte vill att folk ska se att typen av information. Så det är viktigt att varje fil och katalog skapar vi har behörigheter som gäller huruvida vi vill människor att se dessa typer av filer och kataloger och kunna komma åt dem och eventuellt även ändra dem. Så det finns tre typer av behörigheter. Det finns en läsrättigheter, vilket innebär Du kan läsa en fil eller en lista på innehållet i katalogen. Där är skrivrättigheter, vilket innebär att du kan ändra en fil eller förändring en katalog och sedan exekvera tillstånd, vilket innebär att du kan exekvera en fil eller snarare, du kan flytta in i en katalog. Så CD någonting, om du har behörighet att köra den, kan du flytta in i den katalogen. Detta är ett kort exempel. Återigen, har du gått över denna i problemet inställd. Men jag skapar en katalog med kommandot mkdir. Jag ändra behörigheterna. Dessa två rader gör faktiskt exakt samma sak. Det är för att illustrera att syntaxen för ändra behörigheter, oavsett om du gör den a + x eller 711, som är desamma. Vi ser ner på denna trevliga bord. Vi ser att det finns användare behörigheterna först. Det är du, den enskilde, och servern, potentiellt. Och så finns det grupp och andra. Skillnaderna mellan de två relativt triviala. Så generellt, vi klumpa dem tillsammans. Men i grunden, om vi har en fil heter ingår att vi vill vara kunna redigera oss själva och att vi vill andra för att kunna utföra, det tillstånd 711. Och vi ser att ned här i denna tabell. Vi har en läsa, skriva och köra. För var och en av oss, vill vi kunna göra dem. Group och andra, vi bara vill dem för att kunna köra. Vårt sätt att översätta det i ett antal tillstånd är genom binär. Så om vi har tre sådana, är en 1 som i sådana kolumnen, en 1 i tvåor kolumn, en en de fyra kolumnen. Det är 7 rätt där. Och detta tillstånd är 1. Detta tillstånd är 1. Så 711 då är det samma som att ge själva läsa, skriva och köra, och alla andra kör privilegier. Denna linje här, vi generellt kommer att ha läsa och skriva när vi skapa en katalog. Så här linjen här lägger bara köra privilegier till alla. Så det skulle vara besläktad med, i Utöver det vi har, tillsätta en, en, en för alla. Detta är det onödigt att lägga läsa och skriva. Men om du ska använda siffrorna, du kan inte bara lägga till något. Du skriver över allt vad tillstånd var där och genomföra dem med den nya nummer som du ger. Det var ganska snabbt. Är det någon som har några frågor om hur du ändrar behörigheter? OK. Om jag har en PHP-fil, vilka behörigheter vill jag att den ska ha? Detta är i problemet set spec. Så du kan titta på spec och sedan läsa mig svaret. PUBLIK: Du vill att användaren ska har läst-skrivrättigheter. Och du vill att alla annat för att ha någonting. JASON Hirschhorn: Och vad nummer är det? PUBLIK: 600. JASON Hirschhorn: 600. Så chmod 600 - när du skriver ut en PHP-fil, chmod det till 600. OK. Jag har en katalog. Någon förutom Jeff, Jag har en mapp. Vilka behörigheter behöver jag vill att ge till den mappen - även i problembild spec, precis nedanför detta svar eller föregående svar? Också eventuellt på bilden - Marcus. PUBLIK: För mapp, är det 711. JASON Hirschhorn: 711 - så en mapp, du vill ge 711. Du vill kunna läsa den mappen, byta kataloger, flytta in den mappen. Och du vill att alla andra ska kunna att navigera i den mappen, men inte nödvändigtvis ändra innehållet. Vad sägs om en icke-PHP-fil, säga, en JavaScript-fil? Vilka behörigheter vill vi ha för att ge den typen av fil? PUBLIK: 644. JASON Hirschhorn: 644 - varför vi vill ge det 644? PUBLIK: Att låta andra människor läsa den. Och du läsa eller skriva det. JASON Hirschhorn: Så rätt, alla annars kan läsa att JavaScript-fil. Och du kan ändra på det, förutom för att kunna läsa den. Så en av de vanligaste buggar folk har med detta problem set och deras slutprojekt, om det är en webbaserad final Projektet är, kommer de inte ha satt rätt behörighet. Och de kommer inte att kunna att se deras hemsida. Eller en viss del av sin hemsida. Så se till att du ställer in behörigheter korrekt. Inte bara anta att det kommer gör det automatiskt åt dig. OK. Det var en liten sak som vi tillbringade en bra tid på, så vi kunde spika den. Låt oss gå vidare till HTML. Och återigen, för dessa kommande fyra trådar, vi kommer att gå igenom dem relativt snabbt. Så är du välkommen att stoppa mig på något tid, om du har några frågor, oavsett om de är relaterade till vad jag täcker eller något från föreläsning eller även från problemet inställd. Stoppa mig när du behöver. När vi kommer till slutet, vi ska bara börja gå över problemet set. Så HTML står för Hypertext Markup Language. Det är inte ett programmeringsspråk. Allt det gör är att strukturen ditt innehåll och även ge viss metadata. Så till exempel, förmodligen många av du har använt Facebook tidigare. Och du kan inkludera länkar i, eller du kan sätta en länk som din status. Och då kommer du att märka att länken alltid har en fin bild till den och lite text. I allmänhet, är att vissa metadata för en webbsida. Och det är Facebook-specifika metadata. Och då, när Facebook läser att sidan och sätta in den länken, det ser för den specifika metadata, så det vet vad bilden ska visas, vad titel för att visa, och vad abstrakt text för att visa. Så vi kan inkludera metadata med vår hemsida med hjälp av HTML. Och det hjälper också oss struktur innehållet, i allmänhet, vad Vi vill gå där. Allt i HTML är ett element. Och element just här - denna CS50, är ​​text elementet. Och det har några taggar. Det har denna ett tag. Och vi märker att det finns en a på början och sedan ett snedstreck a, så stängning av en tagg i slutet. Ibland finns det inte en öppen tag och ett nära tagg. Det är bara en sak. Vi får se ett exempel på det på nästa bild. Så du inte behöver en öppen och en nära tagg. Men för detta är vi innesluter detta CS50 element i en ankartaggen. Och i grunden, dessa taggar berätta webbläsaren vad man ska göra med vilket grundämne. Så återigen, är CS50 texten vi kommer att se. Och det kommer att bli en typ av ankare. Anchor är i huvudsak används för länkar till något. I synnerhet som du kan redan säga, är detta en länka till CS50 hemsida. Nästa del av etiketten eller - allmänt en del av taggar är attribut. Och vi ser här, att den en tagg har en attribut, detta href-attribut. Och de ändra en viss tagg. Faktum är att om du går till en av de webbplatser eller de referenser som jag gav dig före eller leta upp ett tag på nätet, du kommer att märka att det finns massor av potentiella attribut. Detta är förmodligen en av de vanligaste. Detta säger mig att skapa en länka till den specifika webbplatsen. Och attribut i allmänhet är givna, om inte uteslutande ges, i nyckel-värde-par. Så här är nyckeln, href. Och värdet är det just här. Och det kommer att komma väl till pass senare, när vi börjar använda vissa bibliotek till hjälpa oss kod i JavaScript eller skriva HTML-innehåll. Vi är ofta att vara - precis som vi skulle göra array fäste 0 och att skulle ge oss något värde. I framtiden kommer vi att göra en hel del saker som något fäste href. Och det ger oss värdet av href, eller om vi vill uppdatera href tangenten och sedan ge den ett särskilt värde. Så precis som med matriser där vi hade knapp 0 eller knapp 1 eller knapp 2 eller till och med en hash bord, ja, med dina hashtabeller också, hade du antagligen - det var en matris, så knapp 0, knapp 1, knapp 2. Det index där, vi kan tänker på det som en nyckel. Och värdet är vad lagrades där. Alla dessa attribut är nyckel-värde-par. Och det kommer att vara viktigt för att ändra dem eller uppdatera dem eller föra in dem senare. Slutligen, har du sett denna struktur innan, men detta är den mest grundläggande strukturen i HTML-sidan. På toppen, vi berätta att detta är i själva verket HTML. Och så har vi ett öppet HTML tagg och en nära HTML-tagg. Så allt inuti detta är HTML. Vi ser huvudet och kroppen. Chefen för dokumentet allmänhet innehåller vad? Några gissningar på vad du sätta på huvudet? PUBLIK: Du sätter titeln och stil. JASON Hirschhorn: Titel. Det var en bra gissning. Jag kan ha tippat av dig till. Vilka är några andra saker? Vi nämnde en av dem som kan gå i huvudet. PUBLIK: Han sade, stilar. JASON Hirschhorn: Stilar - så om du vill länka in ett JavaScript eller till och med en CSS, som du pratar om när du pratar om stilar. En annan fil, vill du koppla in en utanför fil, kommer det antagligen i huvudet. Vad mer? Vi nämnde ett par slides sedan en av de saker som HTML kan göra för dig. Det kan ge - börjar med ett M - PUBLIK: Metadata. JASON Hirschhorn: Metadata - så mycket av metadata kommer att gå i huvudet, eftersom det kommer inte nödvändigtvis att vara en del av kroppen av din kod. Det är i allmänhet - kroppen är det innehåll, vad någon ser. Och så jag bara gav bort svaret till min nästa fråga. Men i kroppen är i allmänhet innehållet som kommer att visas på webbsidan. Som vi kommer att se, komplicerade webbsidor tenderar att blandas eller byta upp vad de sätter i huvudet och kroppen. Men i allmänhet, innehåller huvudet saker att användaren inte kommer att ser på skärmen. Den länkar i andra filer och tillhandahåller metadata. Mot innehåller kroppen allt användaren kommer att se. Någon aning om vad den här p-taggen betyder? PUBLIK: Punkt? PUBLIK: Skriv ut. PUBLIK: Det betyder inte att skriva ut. PUBLIK: Betyder det stycke? JASON Hirschhorn: Punkt - så detta är en punkt. Och detta p tag, jag kunde ha just skrev detta på skärmen och sedan inkluderade en radbrytning vid slutet av det. Någon som vet hur man ska inkludera en radbrytning? PUBLIK: pr - JASON Hirschhorn: pr - PUBLIK: Slash pr? JASON Hirschhorn: pr snedstreck står för radbrytning. Men stycken har specifika formatering. Och vi kommer till formatering i ett andra, när vi talar om CSS. Men allt inuti dessa p-taggar kommer att ha en viss standardformatering i samband med det, förmodligen någon avstånd mellan olika stycken. Och det ska vara ett sätt att differentiera block av kod. Alla andra taggar - vad är andra taggar som du har sett? JASON Hirschhorn: h1 genom h6. h1 genom h6, och vad är det? PUBLIK: Det kommer att beteckna hur stor och djärva bokstäverna är. JASON Hirschhorn: Höger, det står för headern. Och så header1 är en stor rubrik. Det kommer nog, som standard, vara djärv, en stor teckenstorlek, centrerad förmodligen på skärmen, hela vägen ner till h6, vilket är en mindre teckenstorlek, mindre betonas. Naturligtvis kan du, i du är CSS-fil eller någonstans i koden - vilket, igen, kommer vi till det på en sekund - ändra det standardbeteende av en H1-tagg är. Men tänk på att Chrome, Safari, Firefox, Internet Explorer har alla default ser för en massa dessa standard taggar. Du kan, återigen, alltid ändra hur de ser ut. Alla andra taggar som alla har sett? Ja - PUBLIK: En div webbplats. JASON Hirschhorn: En div-taggen - div-taggen inte har någon inbyggd format per SE, som används för att blockera olika typer av kod. Alla andra taggar? Ja. PUBLIK: li - JASON Hirschhorn: li - vad är li för? PUBLIK: List. PUBLIK: Lista JASON Hirschhorn: li är för listelement. Det finns två typer av listor. Vilka är de två typerna? PUBLIK: Beställt och oordnade. JASON Hirschhorn: Ordnad och oordnade - så ul montrar för oordnad lista. Det är om du vill ha en kula pekar, en lista med kulor. En ordnad lista är en numrerad lista. Och så att du kommer att göra en öppen ul-tagg och sedan massor av listelement och sedan stänga ul taggen. och att viljan skapa en icke ordnad lista. Vi kommer att se några exempel av HTML i lite. Men innan dess vill jag komma till CSS. Och CSS står för Cascading Style Sheets. Och detta är mycket nära släkt till HTML men något annorlunda. Detta hjälper dig att formatera allt innehåll att HTML-strukturer. Så i CSS, vi i allmänhet inte vill formatera varje header eller varje enda bild eller varje enda stycke. Vi vill att styla vissa delar eller kanske en särskild del. Och hur vi utformar en specifik elementet är att ge det ett ID. Så detta är ett attribut. Den har en nyckel och ett värde. ID är nyckeln. Logo är värdet. Jag plockade logotyp slumpmässigt. Och om du ger något ett ID, Allmänt sett bör det endast ges till ett element. Och sedan, i din stilmall, kan du stil just det elementet, men du vill att det ska se ut. Om du vill styla ett antal element, kanske är det en viss klass av rubriker, bara några av dina rubriker. Kanske är det en rubrik och en bild och ett stycke ni alla vill vara centrerad. Sedan kan du ge dessa grupper element allt en klass. Och du kan ge klassen specifika stilar. Så ett ID och en klass finns två sätt att bryta upp din kod, så att du kan hjälpa till att mer specifik i vad du stil. Det finns tre olika sätt att styla. Den första är, med denna stilattribut. Så ni ser, är stilen nyckeln stil. Stilen värdet är faktiskt en annan viktig värdelista. I det här fallet valde jag en nyckel, text-align. Och jag sa, centrum. Du kanske frågar dig själv på detta punkt, hur jag känner text-align. Vad betyder det ens? Det är en bra fråga att ställa, och vi kommer att komma dit i en sekund. Så det är ett sätt att styla något, bara ge den stilattribut. Ett annat sätt att styla något är - detta är Akshar nämnts tidigare. Du kan använda stil taggar och sätta det i huvudet på HTML-dokumentet. Så du i princip säger, innehållet inne här är en del innehåll stil. Och formatet för det är det du vill styla och sedan, insida klamrar, nyckelvärdet par attribut som du vill ge till just den typ av element. Slutligen, och detta är den Det vanligaste sättet. Och det är så vi göra det i p set 7. Det är en extern formatmall. Så du har en. Css-fil. Och inne i det, ser du en hel del saker som ser ut så här, namnet av någon typ av element eller ett ID-eller en klass och sedan, inne i lockigt hängslen, en lista med nyckelpar värde. Självklart, om du skapar en extern fil, kommer du att måste inkludera det - skarp inkluderar, som skulle vara C analogi - i HTML-filen. Så du måste ta med detta kod i din HTML-fil. Detta är namnet på filen och antar att det är i samma katalog. OK. Det var en hel del. Och vi kommer nu att andas och titta på några riktiga, levande webbplats och utforska den mer. Men innan vi gör det, gör någon några frågor? Så om du vill göra detta tillsammans med mig, kan vi gå till apparaten. Och jag valde CS50 hemsidan. Du kan göra detta med någon hemsida. Men varför inte börja med den CS50 hemsida? Låt oss friska upp. Jag verkligen rekommenderar starkt att du gör detta tillsammans med mig, eftersom det vi ska göra nu kommer att bli otroligt praktiskt för dig, inte bara i P-Set 7, men i P-Set 8 också. Yeah. PUBLIK: Finns det något sätt att göra kommentarer i HTML, utan att använda PHP? JASON Hirschhorn: Ja, kan du göra kommentarer i HTML. PUBLIK: Vad är syntax? PUBLIK: Utropstecken streck streck. PUBLIK: OK. JASON Hirschhorn: Ja. Det är syntaxen. Du kan göra kommentarer i HTML. Du kan lämna synpunkter i PHP. Som du ser, kommentera i HTML kommer fortfarande dyker upp, när vi tittar på HTML-källkoden för en viss webbplats. Så här cs50.net. Om du högerklickar på de flesta moderna webbläsare på de flesta någon sida, du visa sidan källan. Så låt oss göra det på CS50. Och hör och häpna, vi se en gigantisk sak. CS50 faktiskt ser ganska trevligt. Många webbplatser kommer inte ser detta trevligt. Om du går till Googles startsida och öppna upp det. Det kommer inte att se så här bra. Men du märker det, i toppen - Detta är typ av små. Låt oss göra detta större. OK. Upptill DOCTYPE HTML, det är bekant. Sedan ser vi den öppna HTML-taggen och huvudet, just här, alla av dessa metataggar. Och du kan se den här og, inte kommer att gå in på det nu. Men jag är nästan säker på att de skulle vara Facebook. Det är faktiskt Facebook. Jag tror att det står för öppen graf. Så kom ihåg, jag nämner det finns Facebook grupp-specifika metadata kan du ge till en sida. Det är det som är rätt här. Så när du länka denna sida på Facebook, bilden det kommer att visa är denna bild här. Och du faktiskt se att det är Facebook, eftersom det är Facebook-bild. Men hur som helst, vi får undan. Så vi har en del metadatataggar här. Vi ser CS50 titel. Och återigen, är titeln vad som går här uppe i fliken webbläsaren. Vi ser detta är att koppla in, just här, en extern JavaScript-fil. Vi har inte pratat om JavaScript mycket, men nästa vecka - och särskilt om du gör en webbaserad problem set, du kommer att använda JavaScript. Detta är hur du länkar in externa JavaScript-filer. Vi ser här, slutligen, CSS formatmall, dokumenterar att dessa stilar av denna kod. Låt oss faktiskt öppna upp det och titta riktigt snabbt. Det ser galet. Det finns inget sätt jag skulle vara kunna läsa igenom. Så kan du faktiskt ändå, om du tar en blick, kan du slags se att finns det - där går vi. Det ser ut som något vi har sett innan, bakgrundsfärg, ställer det lika lite röd-grön-blå värde. Här grejer slags inte ska verka som utländskt, även om, när den presenteras som denna, kan det vara lite överväldigande. Vi kommer inte att titta på den här CSS-fil eller tillbringar mycket tid på det, eftersom Det är återigen ganska svårt att läsa. Låt oss gå tillbaka till det här HTML-sida för CS50. Och låt oss bläddra ner till kroppen. Och inne ser vi detta div-taggen. Vi ser en rubrik här. Vi ser ankartaggen. Och denna listelement är får en särskild klass. Och vi ser att klassen upprepas om och om igen. Där du är Curtis. Det är den kommentaren i HTML5. Och som du märker, kan vi fortfarande se det, men det är inte dyker upp. Det är faktiskt riktigt intressant. Det ser ut som den här listan gör mål elementet kommen ut. Om vi ​​går till den här sidan, återigen, det är fortfarande visas där, så intressant. Åh, det är därför, på grund av denna nästa rad. Vad behöver vi ser av intresse? Resten av det här är mer förvirrande, i behandlar denna högra halvan av hemsida, vilket är en liten lite mer komplex. Så det här är vad några HTML kommer att se ut. För mig är dock det lite överväldigande, och detta inte hjälp mig så mycket. Men det är något som gör faktiskt hjälpa mig mycket. Och det är vad jag använder när jag är försöka lista ut hur något ser ut som den gör, eller hur kan Jag ändrar min hemsida. Och det är en utvecklare verktyg som är inbyggd i Chrome. Så om du går till dessa tre barer rätt här och gå ner till verktyg klicka på Developer Tools, ett litet fönster kommer dyka upp vid botten av sidan. Och framför allt, Chrome, eftersom det är underbart, kommer att formatera detta fönster och ta HTML och att det ser mycket trevligare för dig. Så nu är det faktiskt en del hopfällbar HTML som du kan utforska för att inspektera de delar av sidan. Om vi ​​vill titta på kroppen, det faktiskt belyser. När du bläddrar över en del av HTML, ner i det här fönstret, kommer det markera den del det pratar omkring i det stora fönstret. Så låt mig återigen försöka blåsa upp detta lite. OK. Så låt oss öppna kroppen. Och jag rulla över det vänstra div. Och du märker att det är att lyfta fram denna vänstra halvan av skärmen. Så låt oss klicka på det och expandera det. Inne i det, ser det ut som det finns två divs. Det är det här första div. Jag ser inte att markeras. Jag vet inte, men det ser ut så här andra en vänster inre är innehållet på den vänstra sidan av skärmen. Sedan finns det något som heter rubrik. Det ser ut som det är att lyfta fram den CS50 delen. Om vi ​​öppnar upp det, ser vi att det är inget mer än rubrik 1. Det har gett ett ID, och det är givet texten CS50. Så återigen, titta på det genom denna konsolen eller med hjälp av utvecklingsverktyg rutan längst ned på de märken skärm utforska denna hemsida, förhoppningsvis, en mycket mindre skrämmande och en mycket mer tillgänglig. Det tillåter oss också att förstå att denna webbplats, om det ser väldigt söt och trevlig, är inte så mycket mer än vad du kommer att bli gör på Problem Set 7. Och detta är helt i din förmåga att skapa. Om vi ​​vill - den andra häftiga med att använda dessa verktygen är, om du högerklicka på titel, kan du redigera HTML. Så låt oss kalla det Jason. Och nu kommer du att märka jag har ändrat HTML på den här sidan. Naturligtvis har jag inte förändrats det permanent. Om jag uppdatera min webbläsare, då det skulle gå tillbaka till den ursprungliga HTML. Men ibland vill jag felsöka min kod, och jag vill inte se ut precis har min gedit-fönstret och försöka förstå vad som händer. Jag vill se vad som händer live. Så jag ska redigera koden så här och få det på det sätt jag vill att det ska se ut. Och sedan ska jag göra förändringar i min kod. Och jag tycker att det är mycket enklare när du kan göra det ögonblickligen, så där. Säg, igen, vi vill göra en annan slump, eftersom vi utforskar med HTML och CSS just nu. Jag kan redigera HTML just nu. Och jag kommer att inkludera en länk. Så jag ska byta CS50 hem sida, så det kommer att länka till - låt oss säga - min hemsida. Vad är namnet, om någon minns, eller vad är det attribut jag vill ge till en flik ankare när jag vill det att knyta någon annanstans? PUBLIK: href? JASON Hirschhorn: href - Så nu kommer du att se att det är en understrykning i Jason. Det beror på Chrome som standard ger ankare en understrykning. Du har säkert sett det förut När du har gått till en webbsida. Saker som är länkar är strukna och blå. Standard stil för en länk är att generellt understryka och lägga den i blått. Om jag inte gillar det, Jag kan ändra på det. Och vi kommer att ändra det på en sekund. Men nu, även att märka att om jag svävar över detta, i det nedre vänstra hörnet av skärmen, precis ovanför ordelementen är den länk som jag gav det. Så om jag klickar på det här - och vi kan högerklicka på det, öppnar en ny flik. Detta är egentligen inte min startsida. Det är bara mitt namn. Varsågod. Nu har vi förvandla det till en länk. Låt oss undersöka några CSS också. Den vackra sak - och jag ska gör det lite mindre - cirka denna konsol är att galna CSS blad vi såg tidigare, var det verkligen svårt att tolka, är nu vackert lagt ut för oss på vänster sida i den här rutan. Så vi kan se ut. Och om vi utöka denna flik stilar, vi kan se alla de olika stilar som är förknippade med, i det här fallet, detta speciella element, detta länkelement. Om vi ​​gör fliken sammansatta stilar, att bara visar oss, inte där allt kommer ifrån, men i stort sett alla dessa stilar som är verksamma på denna faktor just nu. Och låt oss säga, vi vill att ändra det lite. Så detta är alla stilar som verksamma på just denna faktor. Säg att vi vill ändra det, därför att vi vill se hur något ser ut. Och vi bara spelar runt just nu. Eller vi vill testa något, innan skriva det i kod och trycka den och göra den levande. Vi kan gå till fliken stilar. Och i den första rutan är säger, element.style. Och här kan du infoga, du kan lägga till något. Så jag vill - Låt oss gå till min länk och ange bakgrundsfärgen. Och det faktiskt AutoFills det åt dig, alla möjliga egenskaper. Bakgrundsfärg, och jag vill att göra det blå. Blus är inte ett ord. Blue är ett ord. Har jag ser det kommer upp? Åh, är det för att det är i href? OK. Så jag kan inte se någon förändring här. Och det beror på om vi lyfta fram länk, kommer du att märka att länken faktiskt inte styra egenskaper för denna del. Det är faktiskt, om vi öppna länken, denna rubrik just här det är kontrollerar hur det ser ut. Så om jag vill göra bakgrunden blå, jag har faktiskt ändra bakgrundsfärg på samlingsrörselementet. Och nu ser vi att Bakgrunden är blå. Så återigen, detta snabbt kan gå genom detta material ganska snabbt. Men det är i huvudsak vad du kommer att göra. Det är inte på Problem Set 7, men säkert när du är kodning på webben. OK. Jag vill göra bakgrunden blå. Även om, i detta fall, blått ser ganska ful. Jag kan gå in här, leka. Jag ser att ändra det till blått fungerar inte på en. Jag måste faktiskt ändra rubriken element för att inkludera den blå bakgrund. Och sedan, om det sedan går jag tillbaka till min CSS fil, hur gör jag faktiskt ställa detta bakgrund att vara blå och göra denna förändring pinne? För om vi märker om jag uppdatera sida, är alla de förändringar jag gjort borta. Så jag insåg, OK, min Bakgrunden är blå. Jag behöver gå in i den header1 inslag och ändra bakgrundsfärg till blå. Hur gör jag faktiskt göra den förändringen? Tja, minns att, om vi går in härifrån, denna rubrik, det titel har ett ID. Och det är titeln. Och så i vår CSS-fil, kan vi säga, OK, ta något med ID förbehåll och ger den här extra egenskap. Hur kan vi referera något med ID av titel, några idéer, eller vem som helst vet hur vi refererar ID i vår CSS-fil? En hash, det är precis rätt. Och du fick en antydan till det här. Så någonstans i denna CSS-fil, Det är det här kodraden - # Vänster # vänsterinner # header # titel. Och det ger den marginal botten, definiera marginalen bottnen av denna visst element. Tja, om jag ville ändra på det, Jag skulle gå in i den här CSS-fil. Och jag kunde antingen hitta denna del av CSS-fil. Eller jag kunde skriva min egen. Jag kunde göra hash titel klammer och då bakgrundsfärg kolon blå semikolon och nära att klammer. Och det skulle ändra bakgrunden färgen på detta element till blått. Anledningen till att de ger dig så många här är det, det är nödvändigt i det här fallet, eftersom titeln är ett unikt ID. Men vad du kan göra är att kapsla saker. Så här säger, OK, gå till vänster. Det är mycket liten. Jag ber om ursäkt för det. Men gå till tinget med ID vänster. Inne i det, leta efter sak med ID vänster inre. Inne i den där blicken, leta efter saken med ID header. Inne i det, leta efter saken ID-titel och ändra ID-titel. Så det här är bara ett sätt häckande saker. Vissa människor gillar boet det, eftersom det gör det lite tydligare. Du ser här nere också, höger här, det finns ingen hash. Det är bara h1. Det beror på h1 ges namnet på en generisk etikett. Och det finns några CSS-egenskaper samband med varje enskild h1. Så om jag hittade en annan h1 på denna sida, Jag vill också se att den här stilen var tillämpas på det också. Om jag ville använda en stil till en klass, hur gör jag refererar till en klass eller tala om en klass i en CSS-fil? PUBLIK: Dot. JASON Hirschhorn: Det är med en prick. Så låt oss gå tillbaka till den här sidan innan. Om jag gör hash-ID. Det är att ändra stil av saken med ID. Eller förlåt, om jag gör hash logotyp, det är finna saken med ID för logotyp och ge det en viss CSS-stil. Om jag gör något. Toppen, det är att hitta allt med den klass av topp-och ändra sina stilar. Om jag helt enkelt h1, finner varje som enstaka h1 och ger den allt stil jag vill ge det. Om jag gör h1 utrymme och då. Toppen. Det kommer att gå att hitta alla H1S och sedan alla de med den klass av toppen och då endast ändra dessa stilar till vad jag vill ge det. Och återigen, kunde vi ha skrivit en del av detta på egen hand. Men vi skulle inte ha kommit så långt. Mycket bättre, verkar det faktiskt gå på en verkligt levande webbplats och se hur de gör det och titta på alla de fantastiska saker du får göra. Låt oss titta på ytterligare en webbplats innan vi går vidare. Och det här är en som du kommer förmodligen bli bekant med. Detta är CS50 Finance. Så återigen, kan du faktiskt gå in och följa denna CSS-fil på din dator, eftersom du har laddat ner den här CSS-fil, om du laddat ner problem set. Vi kan gå till Verktyg och Utvecklarverktyg. Och vi ser en mycket enklare HTML-layout. Vi har toppen, mitten och botten. Och återigen, något du bör vara förtrogen med, eftersom du har tittat genom distributionskoden för denna veckas problem set. Upptill är, per koden, en enda bild heter. Och det är källan av bilden. Säga att jag är klar med allt vad Jag ville för Problem Set 7. Och den fungerar på rätt sätt, men Jag vill ändra hur det ser ut. Och jag vill ändra bakgrunden av den övre delen av sidan som, t.ex. blå. Om det var jag, skulle jag komma in här och räkna ut, OK vad vill jag byta. Låt oss se, div ID-topp, som ser ut som toppen på sidan. Så låt oss gå dit. Låt oss prova att byta bakgrundsfärg. Låt oss gå göra Alice blått, eftersom det är en trevligare. Och du kommer att märka det - du antagligen inte kan se det. Men det finns en ljusblå, tillsammans med CS50-logotypen. Låt oss ändra det i stället för rött. Och du kommer att märka nu bytte jag bara bakgrundsfärgen till rött. Så nu vill jag gå in i min CSS-fil och typ # topp lockigt paren här. Du kan se koden rätt Här klammer. Och då skulle jag lägga till bakgrunds färg, röd. Och sedan, det skulle vara en klammer. Så det är hur jag skulle utforska och experimentera med formatering på CS50 Finans webbplats. Jag skulle kunna göra det här och testa ut det på min webbläsare. Och då kunde jag gå in i min faktiska koden och göra de förändringar som kommer faktiskt gå live och att människor faktiskt se, om de skulle komma till min viss plats. OK. Det var en hel del. Jag ber om ursäkt för att gå igenom det så snabbt. Är det någon som har några frågor alls om HTML eller CSS? PUBLIK: Kan du bara gå över hur man kopplade vad blev Jason, igen? JASON Hirschhorn: Vad menar du länkade? PUBLIK: Du angav en länk till en annan hemsida, med användning av ankaret. JASON Hirschhorn: Så du frågar, bara allmänt, hur du gör en länk? PUBLIK: Ja. JASON Hirschhorn: OK. Koden för att göra en länk - PUBLIK: Nej, som i HTML. JASON Hirschhorn: Här nere, menar du? Så om jag vill ha med en länk någonstans, säg, är detta HTML på min sidan här. Detta är HTML. Kanske är det öppet i en fil, index.html. Jag går i. Låt oss ha denna upphovsrätts John Harvard länk till något. Så vi ska redigera allt detta som HTML. Allt du behöver göra är inkludera a, så bracket en nära fäste på början, och sedan fäste snedstreck en nära fästet i slutet. Så nu har jag inkluderat en ankartaggen. Och faktiskt, om du klickar av detta, kommer det nu formatera det redigera som HTML. Och säga, vi vill länka den. Vi skulle du attributet href. Och vi säger - Och nu, som ni märker, upphovsrätt John Harvard är blå. Och när jag rulla över det, det är nu en länk. Så du kan skriva koden. Du kan omge stort sett allt du vill ha i en ankartaggen och vrid den till en länk. PUBLIK: OK. Uppfattat. JASON Hirschhorn: Och om jag inte vill ha det - naturligtvis, ibland människor tenderar att tro dessa saker som bara ser blå allmänt och understrukna är inte den vackraste sättet att göra en länk. Så om jag kommer hit, ser du att, någonstans i en CSS-fil, det finns skrivit denna a och sedan två klammerparenteser. Så låt oss säga att, för länkar, det gör jag inte vill att de ska bli blå, snarare jag vill att färgen på en länk till vara denna trevliga magenta. Låt oss ge den färg. Låt oss plocka magenta. Nu, alla länkar på min sida har blir det fin färg av magenta. Vissa människor tycker inte om färgerna alls. Vissa människor tycker inte om understrykningar. Du får välja. Med länkar kan du styla hur de ser när du har besökt dem. Som du kommer att märka på en massa sidor, länkar sväng lila på du besöker dem. Du kan ändra den färgen också. Yeah. PUBLIK: Så du ändra det för varje enskild länk. Men om du bara ville göra den länken själv, skulle du göra just i ID botten eller något? JASON Hirschhorn: Så stor fråga. Som du märkt här, ändrade jag lite del av CSS som gäller för allt som är ett A. Om jag ville bara göra den länken längst ner, jag skulle gå till min CSS-fil och förmodligen gör precis som du sa, hash botten utrymme a. Och det skulle ge mig allt Som i botten. Eller jag kunde, alternativt ge det en unikt ID och sedan bara göra hash länk. Och som skulle tillåta mig att byta ut denna. Men bara dela ut ID mot sin vilja är i allmänhet en dålig praktiken, eftersom de bör vara unik. Och ju mer du har dem, det kan bli lite förvirrande. Yeah. PUBLIK: Kan du ge samma ID för att flera ägare? JASON Hirschhorn: Tekniskt sett ja. Ingenting kommer att stoppa dig, men du borde inte du borde ge det en klass. OK, några andra frågor om HTML eller CSS? OK. Låt oss gå vidare till PHP. Oh, ja. PUBLIK: Vad är det med dessa webbplatser som gör att vi kan redigera dem innan vi uppdatera. Men när vi uppdaterar den återgår tillbaka till den ursprungliga HTML? JASON Hirschhorn: Bra fråga - så när vi har laddat detta webbsida, det är HTML. Och det är JavaScript. Dess PHP utförs för att ge oss vad typ av webbplats som vi ser. Och det har skapat en del HTML, vissa JavaScript, och en del CSS. Och det är nu tillgänglig med vår dator. Och en kopia av dessa filer sparas lokalt på vår dator, för tillfället. Så vi kan redigera den lokala kopian. Men naturligtvis är vi inte redigerar servern kopia. Och när vi uppdatera sidan, Vi får en annan server kopia. Och så ser vi saker tillbaka som de var. Om vi ​​kunde, härifrån, för att redigera officiella hemsida, skulle vi ha mycket problem. PUBLIK: Ja, så att vi kan läsa och skriver att kopian. JASON Hirschhorn: Höger. Vi ska bara göra lokala förändringar här, men återigen, mycket hjälpsamma för att utforska, ofta nog. När jag skriver mitt slutprojekt, för Exempelvis vill jag se hur vissa webbplats gjort något look det sätt de gjorde. Jag kommer att gå in och använda den här panelen ner här, för att titta på vad CSS de gav till den eller vilken färg de valde eller hur de fick det så att när man svävade över något, kom ner listan i en fin forsande mode. Det är ett bra sätt att kontrollera vad andra webbplatser gör och låna av dem. Låt oss gå vidare till PHP. PHP står för, i en rekursiv bemärkelse, PHP Hypertext Processor. Och PHP, vad det kommer att göra är exekvera kod serversidan. Så vi kommer aldrig att se PHP-kod. Men det spelar fint med HTML och ofta genererar en hel del av HTML-kod. Men som du kommer att bli bekant med problem Set 7, kommer din PHP-kod exekvera, generera en del HTML, och det är vad användaren kommer att sluta se. PHP är otroligt lik C. Det finns dock ett par skillnader, och dessa skillnader är viktigt att notera. En skillnad är att variabler i PHP är löst skrivit. Är det någon som har en känsla av vad det betyder? PUBLIK: Inget behov av att kasta det själv. Som ingen anledning att skriva in text. JASON Hirschhorn: Jag skulle inte använda Ordet rösterna, men ja, inget behov av att deklarera en typ för en viss variabel. Så istället ska vi deklarera en variabel? PUBLIK: Använd ett dollartecken. JASON Hirschhorn: Använd ett dollartecken. Så $ x är en variabel. 1 $ är en variabel. $ String är en variabel. De variabler, $ x kunde vara ett heltal. Då skulle det kunna vara en sträng. Då skulle det kunna vara ett tecken. Det spelar egentligen ingen roll. Också, det häftiga med PHP är, säg, är $ x strängen ett. Och $ y är tecknet en. Du kan lägga till $ x och $ y, och det ska ge dig 2, vad du förväntar dig. Så det finns verksamhet i PHP. Eftersom det är löst skrivit variabler, några implicita gjutning är gjort för dig och vissa operationer. Du kan göra operationer på saker av olika typer. Beaktande innan, du ofta får ett felmeddelande i C säger, är det inte den typen som är tänkt att gå här. Bara saker av detta slag kan gå här. Du kommer inte att få den typen av misstag, i allmänhet, i PHP. Så det är en stor skillnad - hur vi handskas med variabler. Den andra stora skillnaden är att PHP-kod tolkas. Wheres, är C-kod kompileras. Vad menar du? Tja, för C-kod som du körde det genom en kompilator. Du genererade en binär fil. Och du körde den binär fil. Du tog hand om alla fel innan du skapade den binära filen. Naturligtvis kan det förekommit segmentering fel, när du körde binär fil. Men det är inte som du glömde att inkludera definitionen av printf eller du inte använder en variabel och bara skapade en slösaktig variabel. Eller du inte definiera en funktionsprototyp. Allt som hände innan du sammanställt. Det gav dig alla de fel eller dåligt saker som det trodde skulle hända. Och då, hade du din 0 och 1 fil som du körde. PHP-kod fungerar inte så. Du kommer att skriva din PHP-kod. Då kommer du att spara den, förmodligen. Och åtminstone i P-Set 7, du kommer att uppdatera din webbläsare, och du kommer att se vad som hände. Du ska se produktionen av att PHP-kod. Du kan också se, på toppen på din sida, ett fel. Därför att du hade några fel i din PHP. Du kan fortfarande se resten av webbsidan ser bra. Men en del är fel, och det finns ett fel på den platsen. Och det beror på att en del av din PHP-kod fungerar inte. Det är när du kör, när du gå till något som by.php. Det kommer att gå igenom din PHP filen rad för rad och utföra det då och endast då. Det kommer inte att kompilera det i förväg tid eller sammanställa ett exemplar och sedan ge som sammanställt kopia till alla. Varje gång, det kommer att gå igenom rad för rad och köra den. Så några rader skulle kunna fungera och output något rätt. Och andra linjer kan brytas och presentera ett felmeddelande i stället. Så när felsökning med PHP, har vi gett dig ett par hjälp saker att hjälpa dig att felsöka, liksom tömningsfunktion. Men generellt, du kommer att se dessa fel. Och det är hur du ska vet att du gjorde något fel. Men du kommer bara att se felet när du faktiskt köra koden. En annan viktig aspekt av PHP och webbutveckling är tanken att få kontra inlägget. Kan någon förklara vad skillnaden mellan får och inlägg är? Ingen - Ja. PUBLIK: Har inte en av dem så att användaren kan se informationen, och en av dem inte gör det? JASON Hirschhorn: Great. Ja, har du något att tillägga? PUBLIK: Jag tunn inlägget är en super global variabel. JASON Hirschhorn: Så båda dessa variabler ges till dig. Dessa är bara variabler. Och du vet att de är variabler, eftersom just här jag använda dollartecken. Dessa variabler ges till dig av PHP. Och när du flyttar mellan webbsidor, du vill spara lite information. Du vill förmodligen att spara om användaren är inloggad i. Det är inte sparas i GET och POST. Som är sparat i något annat, en annan variabel. Någon som vet vad variabel som är sparad i, eller vilken variabel du använder i P-Set 7, för att se till att användaren är inloggad? $ _SESSION, Det är precis rätt, nog viktigt att känna till namnen på dessa saker du använder ofta. Så du använder sessionsvariabel för att spara Information från sida till sida. Det är en super variabel. Det finns på varje sida, kanske som en global variabel, om du vill tänka om det så. Det finns ett par andra variabler som gör att du kan överföra information från sida till sida. I synnerhet de som vi kommer att fokusera på är GET och POST-variabler. I PHP de ser ut $ _GET Och $ _POST. Och skillnaden, pekade som Marcus ut, mellan två av dem är det, informationen i $ _GET är visas i webbadressen. Så om vi ser här nere, Vi ser en YouTube-länk. Vi ser detta frågetecken. Vi ser v = och lite värde. Tillbaka till den här idén om nyckelvärde par, är det v nyckeln. Och här är det värde. Så om vi skulle gå till den här sidan, eller kodning på den här sidan, skulle vi ha en variabel som heter $ _GET. Om vi ​​gick till $ _GET öppna fäste "v" nära fästet, mycket lik array notation, är detta ett intresseföretag array eftersom vi inte använder index. Använde strängar som nycklar. Men mycket liknande idé. Om vi ​​gick vi skulle få detta värde. På den här sidan, skulle vi kunna att använda detta värde. Om vi ​​faktiskt ser, låt oss gå till en YouTube-sida. Vilken video ska vi titta på? Detta är människor Hobbit fans? PUBLIK: Ja. JASON Hirschhorn: Så jag kopierar deras andel webbadress och klistra in den i ett nytt fönster. Och nu, om man tittar upp här, kommer du märka det, ännu en gång - Jag kommer att kopiera och klistra in detta i gedit, så att vi kan se det större. Du kommer att märka att den har detta frågetecken. Frågetecknet anger att allt efter detta kommer att bli sparas i get variabel. Den har sedan v, det är den första nyckeln och detta första värde. Ampersand är speciell. Ampersand säger, OK, vi avslutade det första värdet. Nu går vi vidare till ett annat nyckelvärde paret. Här är nyckeln kallas funktionen, och värdet är youtu.be. Så om jag var en kodning denna sida och någon gick till denna URL och jag hade kanske watch.php. Och jag var kodning detta. Och jag skulle kunna använda $ _GET variabel. Och jag skulle ha en volym, och Jag skulle ha en funktion. Och om jag använder v-knappen, jag skulle få detta värde. Och om jag gjorde $ _GET fäste "funktion" nära fästet, skulle jag få detta värde. Återigen, det gör det inte nödvändigtvis tillämpas på - självklart, YouTube-nycklar och värden och få information som inte gäller vår Problem Set 7. Men det finns vissa saker som vi passera via GET i vår Problem Set 7. Och visst, när du går till en webbsida eller kodning din egen sida, det $ _GET Kommer att komma väl till pass när din kodning. Vad är en anledning att använda $ _GET sedan, om det ger något privatliv? Ser du all denna information som är som överförs. Det är allt visas för användaren. Men vad är en anledning till att du kanske vill spara något i $ _GET, som motsats till $ _POST? Varför skulle du vilja göra det? Okej. Jag frågade dig i Quiz 1. Vad är pro på $ _GET? Vad är en pro? Ja - PUBLIK: Det är lättare att dela information. JASON Hirschhorn: Jag tror det är bra. Det är lättare att dela information. Det är lättare att bokmärka. Du kan spara bokmärken nu, YouTube.com / watch v = något? Och gå till den specifika video. Om YouTube gjorde alltid POST-begäran till olika sidor, varje YouTube URL skulle vara YouTube.com. Du kan inte bokmärka en enda video. För om du säger delat den länken med någon annan, det gör de inte automatiskt få ditt inlägg variabel. De bara få den här länken, och länk är samma för alla. Så det är ett proffs. Det gör att du till bokmärken denna information eller dela denna information eller göra det lite mer användarvänliga. Naturligtvis finns det ingen sekretess, så vi har det här inlägget variabel. Och efter information inte visas i webbadressen. Det är inte helt privat. Men det är marginellt mer privat. Och så ser du den här webbadressen här nere, cs50.net. Oavsett om du är inloggad på hemsida, det kommer att ha samma URL, cs50.net. Uppenbarligen är något annorlunda, om du har loggat in på webbplatsen. Du har, en, troligtvis ingång din PIN-kod. Och det har bekräftats att med servern. Och det är nog rädda någon annan information. Men webbadressen inte ändras alls. Och så är fallet, då något skickas med POST. Webbadressen ändras inte. Denna POST information inte visas i webbadressen. Men några tillstånd har förändrats, och kanske det finns en del information som sparats i POST variabel. Ursäkta. innan jag går in i SQL, något frågor om PHP, i synnerhet, frågor om saker som vi inte gå över att du har hittat eller någon syntax eller logiska frågor om PHP? OK. Den slutliga språk kommer du att interagera med den här veckan är det Structured Query Language, SQL, uttalad uppföljare ofta. Det gör att du kan interagera med databas på ett formaliserat sätt. Och det spelar väldigt fint med PHP. Som du ser i Problem Set 7, vi har gett dig en funktion som heter fråga. Och det tar en SQL-sträng och exekverar att fråga på databasen. Under år tidigare, var inte du ges denna funktion. Du var tvungen att använda PHP funktioner för att göra frågan om databasen och kontroll för fel och sedan få resultatet. Och faktiskt, det är inte så svårt, eftersom igen, spelar det mycket fint med PHP. Och PHP ger dig en hel del funktioner att interagera med en SQL-databas. Så ofta, två av dessa går ihop. Naturligtvis kan du interagera med SQL-databas med alla antal andra språk. Men PHP är en stor en att välja. En databas - Vi ska gå igenom det här snabbt, eftersom detta är ett modeord vi ska börja använda ofta - är en samling av tabeller. Så vi kan tänka på det som en Excel-fil. En Excel-fil har flera flikar på undersidan av skärmen. Varje flik vi nu kallar en tabell, där en tabell som är en samling av rader. Och vad är en rad? Tja, är en rad som samma sak i Excel-filen. Det har bara vissa värden för varje visst område eller varje given kolumn. Det är som en post i tabellen. Det är en student, som har ett ID, en specifika ID, och ett specifikt namn och ett specifikt hus. Så en databas är en samling av tabeller. Och tabeller själva är en antal rader eller poster. Det finns också, i varje bord, vissa områden. Och som anger vad varje post är kommer att ha, områden som ibland kallas kolumner men generellt kallas fält. I denna mycket enkla bord, jag har tre fält, ett ID-fält, ett användarnamn fält, och ett hash-fält. Och jag har tre rader. Just nu, de är tomma. De skulle nog inte vara tomt Om detta var min riktiga databas. Så om du har använt Excel, liknande idé vad du gör i Excel, men, självklart, nu ska vi kunna göra mycket mer kraftfulla saker på information som är lagrad i vår databas. Du kommer att skapa dig själv en databas för Problem Set 7. Men du kommer att skapa flera tabeller i databasen. Du kommer att skapa en databas eller ett bord för användarna. Du ska också skapa en tabell för förmodligen lagertransaktioner, för att hålla reda på dem, eftersom du måste genomföra en historia funktion. Båda dessa tabeller kommer att ha olika områden. Till exempel, i ett användarfält, du antagligen vill att deras användarnamn och ett ID och en hash av sitt lösenord. I Lager tabell som håller reda på historia eller historiktabellen, du förmodligen inte behöver användarnamnet och hash-och ID. Du kanske bara behöver en av dem värden som är unika, att associera den med en given användare. Men då, du vill lagra andra saker som, vilken tid var transaktionen gjordes. Vilka lager köptes eller såldes? Hur många aktier i lager köptes eller såldes? Vad var det pris till vilket den lager köptes eller såldes? Så återigen, du kommer att interagera med databaser som finns kommer att ha flera tabeller. Varje bord kommer att ha sin egen uppsättning av fält. Det kommer dock sannolikt att vara en liknande fält i varje tabell, som relaterar dem till varandra. Vanligtvis är detta ett ID-fält. För om varje användare har ett unikt ID- och du associerar detta ID med varje transaktion som användaren gör eller allt detta användarens historia. Och du har användarens ID. Du kan få information från någon av tabellerna. Du kan få sitt användarnamn, och du kan få alla sina transaktioner. Eventuella frågor om databaser, eller specifika frågor? Faktiskt, låt oss hålla det. Vi är där om två sidor. Så det finns fyra operationer på databaser som du kommer att använda i Problem Set 7 och sannolikt någonsin att använda. Det första du vill göra är att infoga en ny post i en tabell eller en ny rad i en tabell. Detta är den generiska funktion, generisk form av att SQL-fråga. INSERT INTO tabellen, oavsett kolumner du vill infoga och sedan de värden som du kommer att vilja tas i dessa kolumner eller fält. Om du har flera tabeller i en databas eller flera databaser, du kan också behöva ange databasen och den tabell som du vill för att sätta saker i. Men mycket enkel, om du vill infoga till något, säger du, här är det fält jag vill infoga i. Och här är de värdena. I vissa tabeller, också, och denna användares Tabellen är ett bra exempel. Förmodligen i den här användar bord och förmodligen i din användares bord i P-Set 7, det finns inte bara ett användarnamn värde. Det är inte bara ett kontantvärde, eller fält, snarare. Det finns också ett ID-fält. Jag tänker inte sätta in det ID-fältet. Det kommer att ges till ut automatiskt, när en nytt rekord sätts in. Så det finns vissa fält som du kan ställa in att ske automatiskt. Kanske vill du ge varje användare $ 10,000 i kontanter utanför bat. Så jag behöver inte sätta in ett antal kontanter här. Allt jag behöver för att sätta in är användarnamnet. Och då kommer kontantfältet vara förifylld, och ID-fältet kommer vara ifyllda. Så ofta, är vi inte sätta in något i varje område, eftersom de andra fälten är ifyllda. Därför att det är hur vi ställa in bordet. Det andra du ska till vill göra är att ta bort en post. Radering något är mycket enkel. Du ger den tabell där du vill att ta bort något från. Och du säger, OK, jag vill ta bort den post som har ett användarnamn i Milo. Eller jag vill ta bort alla poster som har ett användarnamn på Milo eller det var en transaktion från användar-ID nummer 2. Eventuella frågor om dessa två typer av frågor? PUBLIK: [OHÖRBAR]. JASON Hirschhorn: Ja. Så jag ska använda raden och spela utbytbart och några med kolumn och fält. Men en rad är en post. En kolumn är ett fält, går tillbaka till denna tabell. OK. Nästa sak du förmodligen kommer att göra är att få lite information från tabellen. Det är en urvalsfråga. Och återigen, vilken tabell jag välja från? Och vilken kolumn vill jag välja, eller vilket värde vill jag markera och från vilken rad? Så Select är lite specifik. Jag säger, OK, jag vill ha den här tabellen. Och då jag vill att kolumnen användarnamn och Jag vill ha det från raden med ID 2. Det är ett sätt att göra en Select. Eller jag kan säga, ge mig varje enda användarnamn. Eller jag kan säga, ge mig en hel ro från denna tabell, där användarnamnet är 1. Så det finns ett par olika sätt att göra urvalsfrågor, beroende på hur mycket information du vill ha, Du kan alltid bara välja allt från det specifika bordet och sedan slinga genom den, plocka ut de saker du vill. Men kom ihåg, om du väljer en massa saker från ett bord och du har ett riktigt stort bord, kommer att ta en tid, så bäst att bara välja saker som du kommer att sluta använda. Dessutom, med Select och med alla dessa andra SQL-kommandon också, jag är vilket ger dig den hake version. Men att säga, jag väljer användare och jag vill för att skriva ut dem i bokstavsordning, Jag kunde välja alla användare och sedan sortera dem i alfabetisk ordning i min kod. Eller finns det ett sätt att skriva select fråga, väljer att saker och ting i ett alfabetisk mode, baserad bort av en särskild kolumn, antingen stigande eller Fallande. Så kom ihåg att mycket av det du vill göra kan troligen göras i frågan genom ett ytterligare attribut. Så ser upp dessa frågor på nätet eller andra saker du kan göra med dessa frågor för att utöka dem. Slutligen, det sista du vill göra är inte in något eller ta bort något, utan snarare uppdatera något. Och det är gjort med uppdateringen query, och igen, vilket bord. Och vilken förändring vill jag göra? Och till vilken rad eller spela göra Jag vill göra den förändringen? Har du frågor om SQL? OK. Så vi har ungefär 15 minuter. Och det här är den sista bilden jag har. Och förhoppningsvis är detta sista bilden en bra segue in i problembild, eftersom att förstå vart vi vill infoga poster, ta bort dem väljer du dem, och uppdatera dem kommer att hjälpa oss förstå den större logik och flöde av Problem Set 7. Så jag vet att alla svar på dessa frågor. Jag tänker inte berätta för dig alla svaren. Men om någon annan vill presentera en fråga till gruppen eller svaret på en av dessa frågor, kan vi använda det som en hoppa av punkt till prata om problemet set. Eller om någon har en mer allmän fråga av problemet set, känner fri att fråga det också. Och vi kan börja där. Tänk på att du är tyst skadar alla. Yeah. PUBLIK: Så är det enda sättet att klara variabler till och från annan webbsida sidor eller den mest praktiska sätt, med hjälp av POST eller GET? JASON Hirschhorn: Så ja, det är det mest bekväma sättet att säga - när någon fyller i ett formulär - få information på en annan webbsida sida, med hjälp av GET-eller POST. På grund av den ram vi använder i detta problem set, kommer du att märka det, många gånger, vi återge en annan sida. Vi Eller vi gör en annan fil, inte nödvändigtvis en annan sida. Så passerar vi i en variabel. Och sedan, gör det en HTML-sida, med hjälp av information från den variabeln. Det är inte tekniskt går information mellan olika webbsidor. Det passerar informationen mellan olika filer. Och så att vi kan använda alla variabel för att göra det. Men ja, om vi ville passera information från en viss sida i en annan sida, GET och POST skulle vara ett sätt att göra det. Alla andra frågor om problemet inställd? OK. Låt oss gå igenom, då, en specifik del av problemet inställd. Du kommer att behöva, vid ett tillfälle, visa någons portfölj på skärmen. Vad menar jag när jag säger portfölj, i samband med detta problem inställd? PUBLIK: Det är som de lager som de har hur många aktier de äger, priset, och hur mycket pengar de har kvar. JASON Hirschhorn: Det låter bra. Så jag vill visa alla bestånd de äger för varje aktie företags aktier och förmodligen hur mycket som är värd, och sedan en separat variabel, hur mycket pengar de äger. Så säger jag vill beskriva det. Låt oss börja prata om hur jag kunde gå om att göra det, vilka tabeller jag kommer att behöva att behöva att kunna göra det. Ja - PUBLIK: Well-användare, och då, antar jag du kan göra en tabell som heter Aktier eller något liknande, som skulle vara hur många de har köpt. JASON Hirschhorn: OK. Så jag kommer att behöva en tabell som heter Användare, som håller reda på de användarnamn, förmodligen, förmodligen några ID, förmodligen en individs lösenord. Vad är något annat som du just sagt att associeras? Någon förutom Mikael, vad är något annat som är förknippade med varje användare, unikt för dem? PUBLIK: ID. JASON Hirschhorn: ID - vad är en annan sak som vi är antagligen kommer att vilja visas på den här sidan? PUBLIK: Deras namn. JASON Hirschhorn: Deras namn - vad är en annan sak i samband med detta särskilt problem set? PUBLIK: Vilka aktier de äger - JASON Hirschhorn: Det kommer att bli en hel del vad bestånden de äger. Vad är en det specifika värdet dock, att de kommer att ha förknippas med dem? Hur kommer de att köpa och sälja sina aktier? PUBLIK: Cash. JASON Hirschhorn: De är kommer att ha kontanter. Så varje användare kommer att ha ett värde för kontanter. Och det kommer att bli unik för varje användare. Så i användarens tabellen, gör det vettigt att sätta in kontanter. Du kan naturligtvis skapa en annan tabell som har användarnamn och deras värdet av kontanter. Men det är inte vettigt. Det är vettigt att bara sätta allt detta i en tabell. Så vi kommer att ha en tabell med den informationen. Och sedan, vad är den andra tabellen vi ska ha? Du sa, en Stocks bord. Vad är det vi sätter in den Stocks bordet? Vem som helst, idéer - PUBLIK: Företaget. JASON Hirschhorn: Vi kommer att sätta i namnet på företag, så AAPL för Apple. Yeah. PUBLIK: Hur många aktier och hur mycket de är värda. JASON Hirschhorn: Hur många aktier, hur mycket de är värda - vad är något annat vi behöver i tabellen? PUBLIK: Ett användar-ID för att indexera den. JASON Hirschhorn: Ett användar-ID. Så i den tabellen, vi ska förmodligen - låt oss säga, om det är någon som äger tre lager, tre rader, var och en med som användar-ID eller den personens användare ID, men ett annat företagsnamn, en annat antal aktier Förmodligen och ett annat pris värde för varje av dessa bestånd. Återigen, är inte vad jag säger nu nödvändigtvis genomförandet, eftersom du inser att det finns lite mer effektiva sätt att genomföra det. Men det här är ett bra ställe att börja. OK. Så de är de två tabeller som vi har. Nu vill vi visa den här sidan. Vilken är den första typen av fråga vi skulle behöva göra. På varje sida, antas att en användare är loggat in, har vi deras användar-ID. Så vad är den första typen av fråga måste vi göra? Yeah. PUBLIK: Deras användarnamn. JASON Hirschhorn: Vi har deras användar-ID, när vi börjar koden på början på vår sida. Så vad är den första typen av fråga som vi måste göra, med tanke på en användares ID? Vi gick under de fyra typerna. Det finns bara fyra möjliga svar. PUBLIK: Det är att välja en post. JASON Hirschhorn: A Välj - vi vill välja från användarens bord för att få, låt oss säga, deras mängd kontanter. Och vi kan trycka hur mycket pengar på toppen av skärmen. OK. Vad är nästa typ av fråga vi vill göra? Vi har en del andra saker vi måste visa. De som sparas i en annan tabell. Så hur ska vi få det? PUBLIK: Du väljer för dem. JASON Hirschhorn: A Välj - igen, finns det bara fyra alternativ. Välj förmodligen ljud som den rätta. Så vi behöver göra en urvalsfråga, igen med det användar-ID. Och nu, vi vill återvända inte bara en rad, bu alla rader som matchar vår kriterier, där användar-ID är lika 1. Och då kan vi gå och låta en slinga precis skriva ut alla dem ut på skärmen, kanske skriva ut företaget från var och en av dem på skärmen. Bra, det låter som det är visning av en portfölj, inte mycket mer komplicerat än så. OK beslutar användaren sedan att de har gott om pengar över. Och de vill köpa några fler aktier i ett lager. Låt oss säga, de redan äger detta företags lager också. Så de går till ditt köp sidan. De ingång företagets namn. Vad är frågan, efter att mata in företagets namn, att du måste exekvera härnäst? Yeah. PUBLIK: Update. JASON Hirschhorn: Update - och vad bord vill du uppdatera? PUBLIK: Deras bord, baserad på deras ID-nummer? JASON Hirschhorn: Så uppdatera inte användarens bordet - så uppdatera tabellen Aktier, där användar-ID inte bara matcher, men det aktienamnet matchar också. Du får något värde. Och då, vill du ta det värdet och lägga hur många lager som de vill köpa den. Så du vill inte blint skriva över det värdet. Men du kan faktiskt ta det första värdesätter och bara uppdatera den. Du kan göra som ett plus är lika, snarare än bara ett likhets. Vad är något men - om vi är tänka på detta och vi vill vara så robust som möjligt - vi borde göra innan vi kör den uppdateringsfråga? De vill köpa fem år av Apple. Varje aktie av Apple är $ 200. PUBLIK: Vi bör kontrollera pengar först. JASON Hirschhorn: Vi bör Kontrollera pengar först. Vi bör se till att de har tillräckligt med pengar. Vilken typ av fråga kan vi köra till se till att de har tillräckligt med pengar? PUBLIK: Another Välj. JASON Hirschhorn: A Välj - Vi väljer utifrån deras användar-ID, att få sitt värde av kontanter. Gör några snabba matte. Och om det går uppbåda, de har tillräckligt med pengar. Då kan vi köra vår uppdatering. Eller kanske, om inte, vi passerar sedan. Vi ger dem en varning. OK. Säger att de inte har ett företag. De köper ett nytt företag. De köper Microsoft. Vilken typ av frågor vill vi göra, om de vill köpa Microsoft? Och de inte äger någon Microsoft. Inte Manu, någon annan, vem som helst förutom Marcus? Carlos - PUBLIK: A Välj, för att se till de har tillräckligt med pengar. JASON Hirschhorn: Låter bra. PUBLIK: Och då du sätter på [OHÖRBAR]. JASON Hirschhorn: Exakt, vi är kommer att vilja sätta in i tabellen Stocks. Och vi kommer att vilja sätta in. Vi kan sätta in sitt användar-ID, namn av företaget, och hur många aktier de vill köpa. Vilka är några andra verksamheter som är sidor eller funktioner du är kommer att behöva genomföra i P-Set 7, att vi skulle gå över? PUBLIK: Egentligen slags måste jag en fråga om detta. Innan du visar portfölj, bör du kontrollerar Yahoos hemsida se till att aktiekurserna har inte förändrats? JASON Hirschhorn: Det är ljud som en bra idé. Så vad Marcus säger är, OK, lager priserna förändras ständigt. I de lager som de äger bord, vår Tabellen heter Stocks, kunde vi rädda priset på aktien de köpte den på. Men det verkar inte som robust, eftersom priset på aktien är ständigt kommer att förändras. Så i själva verket är du förmodligen inte behöver att rädda priset på aktien. Men varje gång du visar deras portfölj, du uppdatera eller uppdatera priset på aktien. Och om du har - och du har redan. Jag vet att ni alla har tittat på Problemet ställer tillbaka redan. Du har insett att vi har skrivit lite kod för dig som gör att du att få priset på en aktie, ges ett företags namn. Så ja, det kanske låter lite mer robust. Men tabellen behöver inte nödvändigtvis att rädda priset på aktien. OK. Vilka är några andra funktioner du behöver för att genomföra den här veckan som Vi kan prata om? Jag vill prata om dem. Vad vill du prata om? Det är nog i detta spec. Jag skulle bara rulla ner till botten på spec och fråga mig det första ordet du ser det är inte rimligt. En annan funktion - låt oss tala om något. Vi börjar där. PUBLIK: Inspelning historierna. JASON Hirschhorn: Inspelning historien, stor en. Så du kommer att behöva hålla reda av en historia av transaktioner. Så du vill hålla reda på varje gång de köper eller säljer en aktie. Jag köpte mitt lager. Vi sa bara, är det antagligen meningen att inkludera en Select, för att få sina mängd kontanter och tillbaka. Det är förmodligen smarta då att inkludera en infoga eller en uppdatering, beroende på oavsett om de äger detta bestånd. Om vi ​​vill också att hålla reda på en historia, hur kan vi göra det? Betyder det går i tabellen Stocks? PUBLIK: Nej. JASON Hirschhorn: Nej det förmodligen går i en annan tabell. Därför att säga att du köper 10 aktier i Apple. Då du köper ytterligare 10 aktier. Du vill bogsera separata poster. Det är två separata transaktioner. Så vi har en annan tabell, en historia bord. Så återigen, köper vi. Vi utför en Select, då en Infoga eller Uppdatera. Vad ska vi göra nu? Vad är nästa fråga vi utför när vi ska köpa något? Vi vill hålla koll på historien. Yeah. PUBLIK: Du vill hålla koll av misslyckade transaktioner också. JASON Hirschhorn: Tja, innan vi säga vilken typ av transaktion, Vad vill vi - Vilken typ av fråga, Carlos, skulle det möjligt för oss att hålla reda om saker i allmänhet? Du har fyra gissningar. Vilken tycker du? PUBLIK: Uppdaterar. JASON Hirschhorn: Inte uppdatera. Vad är din andra gissning? PUBLIK: Val. JASON Hirschhorn: Om du vill behålla reda på något, vill du förmodligen att skriva ner det någonstans eller spara den till senare. Så om inte uppdatera, då - PUBLIK: Sätt i den. JASON Hirschhorn: Insert, där går vi. Ja, så du väljer hur mycket pengar de har, låter bra. De har inte tillräckligt med pengar. Transaktionen kommer inte att fungera. Nej, du behöver inte hålla reda på en transaktion, om det inte fungerar. Eller så kan du, om du vill ge dem en hård tid. Men du behöver inte. Då du sätter i eller uppdatera i sina lager tabellen. Och nu har du din andra tabellen. Du har din historia bord eller vad du än vill kalla det. Och i den tabellen, kommer du för att infoga en ny rad. Det är förmodligen att ha användarens ID. Det kommer förmodligen att ha namnet på aktien. Det kommer förmodligen att ha en tid att de gjorde det. Och i det här fallet, kommer du antagligen vill infoga priset. På grund av en historia, gör du inte bry sig om vad det nuvarande priset är. Du bryr dig vad priset är när de köpt eller sålt något. Så det låter som, att genomföra köp fullt involverar ett antal olika SQL-frågor, men ärligt talat, inte så mycket kod övergripande. OK. Och som tar hand om historien. Låt oss säga, vill vi visa vår historia. Vi pratade om att visa vår portfölj. Hur skulle vi visa vår historia? PUBLIK: Förmodligen kronologiskt. JASON Hirschhorn: Förmodligen kronologiskt - vilken fråga tror du att vi skulle använda? PUBLIK: En select. JASON Hirschhorn: En select - väljer kanske alla rader från tabellen att matcha användar-ID och sedan visa dem kronologiskt, låter bra. Behöver vi skriva kod till sortera igenom den listan? PUBLIK: Nej, eftersom du sa oss finns det en stigande och fallande sak. JASON Hirschhorn: Thing? PUBLIK: Ja. JASON Hirschhorn: Ja. OK, inte vända i koden för mig, att manuellt sorterar igenom dina frågor, att sortera dem. Den koden är redan given. Du kan skriva en urvalsfråga som sorterar saker. Sortera dem i förväg och sedan skriva ut dem. Det gör så mycket mer meningsfullt att göra det på det sättet, än det andra hållet. Ja. PUBLIK: Behöver vi att sortera dem i förväg? Betyder det att du sorterar dem i databasen? JASON Hirschhorn: urvalsfrågan tillbaka dem till dig sorterade. Så gör det, istället för att bara ha dem tillbaka till dig i en slumpmässig ordning och sedan sortera dem själv. Yeah. PUBLIK: Finns det ett sätt att hålla den sorteras i själva databasen, så att du behöver inte sortera det varje gång du - PUBLIK: Kan du sätta in det sorterade? JASON Hirschhorn: Fråga - spelar det någon roll att det är sorterade i databasen? PUBLIK: Nej. JASON Hirschhorn: Tja, de sorteras. De är sorterade i kronologisk ordning. Men låt oss anta att saker sorteras kronologiskt, från topp till botten. Vi har ett Google-formulär. När någon svarar på vår Google bildar, bara det blir sätta i botten i tabellen. Spelar det någon roll att det är sorteras inte kronologiskt? PUBLIK: Om det inte är kronologisk, behöver du inte sortera det varje gång du tar info ut. Men om det redan är sorterade, kan inte du inte göra det extra funktionsanrop? JASON Hirschhorn: Så det är faktiskt en bra poäng. För oss som programmerare, kan det roll. Och vi kanske vill hitta en databas som inte sorterar saker kronologiskt. Eller ställa in i vår databas, så det håller saker sorterade efter användar-ID. Så på det sättet, säger, vi har 1.000 användar-ID. Eller Facebook, har vi miljontals av användar-ID. Vi vill inte att vårt bord för att bara vara slumpmässig eller vår databas för att vara slumpmässigt. Det skulle vara trevligt om alla de användar-ID sorterades. Så då vi kunde köra binära sökningar på vårt bord och sedan bara hitta den specifik bit. Så ja, beroende på - om vi skalas upp, Vi kanske vill hitta en databas som hålls saker sorteras i en annan sätt, så att dessa frågor skulle ta mindre tid. Och vi behövde inte gå igenom vår hela databasen i varje enskild rad i en viss tabell. Men den nivå vi jobbar på, vi behöver inte oroa dig för att hålla saker sortering. Vi kan anta att den tid det tar den frågan för att köra kommer att bli försumbara, med tanke på vad vi har att göra med. Men ja, bra idé - som vi skala upp, kan det vara meningsfullt att utforma vår databas i en bit av ett annat sätt. En sista databasdesign jag vill att nämna också, eftersom du kommer graderas, eller gjorde snarare, på utformningen av din databas. Vi pratade om det här. Cash är unik för varje användare. Så du har en tabell som heter pengar som har deras användar-ID och deras mängd kontanter och sedan en tabell som heter användare som har sina användare ID och deras användarnamn. Dessa tabeller avbildas på varje andra en-till-en. Det gör nog rimligt att dem att vara en tabell. Så låt oss anta att du har en användare tabell som håller reda på användarnamn och kontanter. Du har nu en tabell som har bestånd en person äger. Och en person kan äga mer än ett lager. Så dessa inte karta på varandra en-till-en. Det är inte rimligt att ha en jätte tabell som har 30 poster som alla upprepa ett användarnamn, som alla upprepa ett lösenord, så att alla upprepa ett antal kontanter. Men alla har kanske en annan lager namn eller en annan aktiekurs. Det är inte meningsfullt att ha att många stora skivor. Var smart om när du skapar dessa databaser, så att du inte gör något dumt som detta, upprepa en massa onödig information. OK. Vi har två minuter kvar. Människor utanför är glada att gå med oss eller troligen, förmodligen, starta sin egen klass. Är det någon som har några frågor innan vi avslutar upp? OK, det var verkligen en virvelvind genom allt. Jag ber om ursäkt att det måste vara så snabb och att vi inte kan vara så praktisk denna vecka som jag skulle har velat ha varit. Men om du har några frågor om något vi gick över eller någonting detta problem set - Förutsatt att du har läst den och lägga i god tro ansträngning - välkommen att maila mig eller kontakta mig. Jag är mer än glad att arbeta igenom din kod med dig eller svara på någon frågor du har. Tänk på att, den här veckan, en hel del din tid kommer att spenderas lära ny syntax och försöka förstå hur man skriver SQL-frågor eller PHP funktioner eller affär med en ram MVC. En hel del av din tid denna vecka förmodligen kommer inte att försöka lista ut det galna logik som vi är ber dig att göra. Mycket av det vi just gick över är relativt enkelt. Så det betyder inte att vänta till sista minuten. Men det betyder inte att justera hur du gör din arbeta i enlighet med detta för att se till du förstå och lära sig syntaxen. Så du är inte, helt plötsligt, att veta exakt vad du vill göra, men med ingen aning om hur man precis skriva det. OK, vi ses nästa vecka.