JASON HIRSCHHORN: Welcome alle til uge otte. Vi har en spændende uge foran os. I gutter har due i denne sidste par forelæsninger til PHP, SQL, HTML, CSS, så fire helt nye sprog, der går at tage resten dette kursus. Vi vil også lære et par andre sprog, før kursets slutning. Men alligevel, det er overflødigt at sige, det er en meget spændende tid i CS50, du nu har mestret C, angiveligt, og er går videre til programmering til hjemmesider. Så i denne uge, vi kommer til at gå på en hvirvelvind tur gennem fire sprog, jeg lige har nævnt, HTML, CSS, PHP og SQL. Og forhåbentlig vil vi forlade masser af tid i slutningen af ​​afsnittet for at tale om denne uges P-sæt og svar eventuelle spørgsmål, du har alle. Hver uge, den samme liste over ressourcer for dig, for at hjælpe dig med ugens problem sæt og gå over materialet - men i denne uge i særdeleshed, for disse webbaserede problemet sæt, der er en væld af andre ressourcer ud der, at du vil sandsynligvis finde utroligt hjælpsomme. Jeg har dem op her. Jeg e-mailer dig dette efter afsnit, og dette også være online. Men i særdeleshed, er der masser af store ressourcer derude. Der er også nogle ikke så stor dem, så vær på vagt over for dem. Men på dette dias, jeg har fire gode ressourcer, en for hver af de sprog, du skal arbejde med i denne uge - en henvisning ark til HTML, en reference ark til CSS. Denne ret her er PHP manual. Så i stedet for at skrive mand og derefter en PHP kommando, det er her du ville gå at kigge op funktionsprototypen og eksempler og også nogle tips og tricks til at bruge PHP funktioner. Du skal bruge dette site ofte, så jeg vil opfordre dig til at blive fortrolig med det. Det kan være lidt teknisk, men det giver også et væld af ressourcer og eksempler på alle de funktioner og endog andre, som hvordan man bruger arrays eller forskellige typer af variabler. Dette site er meget nyttigt for PHP. Og så, til SQL, hvis du dykkede ind i denne uges problem sæt, vil du vide at vi bruger en database. Og vi få adgang til denne database via en relativt nice brugergrænseflade. Eller det er en måde at få adgang databasen. Brugergrænsefladen er kaldet phpMyAdmin. Der er en fane SQL, som vi vil se på senere i dag. Og du kan skrive ind i deres prøve SQL forespørgsler, at gøre tingene på din database og derefter køre disse forespørgsler. Og hvis de er korrekte, vil det sige, denne ene er korrekt. Hvis de er forkerte, det vil sige, det er forkert. Det er et godt sted at øve dit SQL-forespørgsler, før du skriver dem ind din kode, for at sikre, at du har formatet korrekt. Endelig er en anden hjemmeside på her. Det er den hjemmeside, hvor du kan gå ud og tjekke for at sikre din HTML-kode er gyldig. Så før du tænder dine problemer sæt denne uge, sørge for alle din HTML er gyldig. I sidste uge, havde du løber valgrind, at sørg for at du ikke havde nogen memory leaks. I denne uge, skal du sørge for alle af din kode er gyldig HTML5. Hvis det ikke er gyldigt HTML5, er du kommer til at få punkter off. Så sørg for - bare fordi det virker ikke mener det er fuldt gyldig. Kør din kode via denne hjemmeside før du tænder det i. Igen, her er hjemmesiden. Hvis du har feedback til mig, vi har et par af flere sektioner tilbage, og jeg vil altid gøre, hvad jeg kan for at give jer alle med den bedste sektion opleve muligt. Så lad mig vide, hvis der er noget jeg kan gøre for at forbedre eller hvis der er ting, du ser, at jeg kunne gøre det bedre. Tak, Avi. Sæt det på hjemmesiden. Dette var cykel, jeg havde, da jeg var, lad os sige, fire derhjemme. Det er en Teenage Mutant Ninja Turtle cykling, i tilfælde af at du ikke fortælle, fordi det er lidt sløret. Du kan få det nu på ToysRUs for, tror jeg, omkring 100 dollars. Men funktionen af ​​denne cykel, som jeg ønsker du skal være opmærksom på er disse lige her. Det er de støttehjul. Indtil nu har du været håndholdte gennem C. Og vi har taget en lang gang to måneder og, at gå gennem C. For disse næste par sprog, Vi kommer ikke til at bruge så meget tid. De støttehjul kommer fra. Og vi kommer til at dykke ned i disse sprog hurtigt og bevæge sig gennem dem hurtigt, hvilket ikke er at sige, at vi bare at forlade dig svømning derude med ingen måde at støtte dig selv eller finde ud af, hvordan disse sprog virker. Jeg bare viste dig en liste over ressourcer til at hjælpe dig. Men husk på, at PHP er utroligt ligner C. Vi vil gå over det i dag, og nogle af forskellene. Men for det meste, Der er efter sløjfer. Der er, hvis betingelserne. Når du ønsker at løse et problem, du kommer til at bruge en kombination af disse. Det er meget ens. Logikken bør være meget lig hvad du har gjort i fortiden. Hvad er virkelig nyt i denne uge er det syntaks og hvordan du udtrykker dig. Og du ønsker at skrive en for-løkke, men det ser måske en lille smule anderledes. Eller du ønsker at oprette et array, men det ser måske en lille smule anderledes. Så husk, at bevæge sig fremad, logikken er meget lig det du har gjort i fortiden. Men du skal nu støde en masse nye syntaks. Og vi kommer ikke til at gå dig gennem alle elementer i syntaksen. Så det er virkelig op til dig at finde ud af, online eller via nå ud på Diskuter eller e-maile mig eller tale med hinanden, hvordan man skriver tingene i PHP og hvordan man skriver SQL-forespørgsler og hvordan man bruger HTML og CSS. Men bare så du ved, det er ikke det vi forsøger at smide dig derude igen for at svømme hajerne. Dette er, hvad vil du sandsynligvis gøre med din endelige projekt, hvis du vælger en andet sprog, som IOS og Objective C, eller hvis du beslutter at starte programmering i fremtiden, og dykke ned i andre sprog, ligesom Python eller Ruby. Ofte, logikken er meget ens på tværs af alle disse sprog, og det syntaks er, hvad der er anderledes. Og det vil være op til dig, som programmør, til at gå bruge web ressourcer til rådighed for dig og tal ud af, hvordan at udtrykke, hvad du ved, hvordan at udtrykke i C, i et andet sprog. Så det er god praksis, både for din afsluttende projekt, og igen, for hvad vil du sandsynligvis gøre når du forlader CS50. Før vi går videre, gør nogen har spørgsmål om, hvad Jeg har gjort hidtil? Store. Lad os komme videre. Først, vi vil kort tale om kommandoen chmod. Det, vi vil gøre i starten af dine problemer indstillet. En af de allerførste vejledning for dig, når du henter den fordeling kode, er at ændre den tilladelser for de filer og mapper, du modtager. Kan nogen vove et gæt eller kender hvorfor det er vigtigt at ændre tilladelser for visse filer og mapper på din computer? Avi - PUBLIKUM: Så ingen undtagen for du kan se, hvad du laver? JASON HIRSCHHORN: OK. Så hvis vi ønsker at sætte noget på nettet og du har tilladelser indstillet, at kun du kan se noget, så ingen andre kan se, hvad du har oprettet. Hvad ellers? Ja. PUBLIKUM: Undgå alle andre, at du ønsker ikke at se noget, fra se noget. JASON HIRSCHHORN: Det er sandt også. Der er sikkert noget kode, du skriver, at du ikke vil have folk til at se. Du er sikkert OK med mennesker at se din HTML og dit JavaScript. Men din PHP, en back-end kode, en masse logikken til din kode, måske ting, der gemmer nogle af dine adgangskoder til din database, behøver du ikke vil have folk til at se, at type oplysninger. Så det er vigtigt, at hver enkelt fil og mappe vi opretter, har tilladelser gælder for, hvorvidt vi ønsker folk til at se disse typer af filer og mapper og være i stand til at få adgang til dem og potentielt endda ændre dem. Så der er tre typer af tilladelser. Der er en læse-tilladelse, hvilket betyder, du kan læse en fil eller en liste af Indholdet af fortegnelsen. Der er skriverettigheder, som betyder, at du kan ændre en fil eller ændre en mappe og derefter udføre tilladelse, hvilket betyder, at du kan eksekvere en fil eller rettere, du kan flytte ind i en mappe. Så CD noget, hvis du har den tilladelse til at udføre det, kan du flytte ind i denne mappe. Dette er et kort eksempel. Igen, du har gået over dette i problemet indstillet. Men jeg oprette en mappe med kommandoen mkdir. Jeg ændre tilladelserne. Disse to linjer rent faktisk gør præcis de samme ting. Det er at illustrere, at syntaksen for skiftende tilladelser, uanset om du gør a + x eller 711, der er de samme. Vi ser ned på denne nice tabel. Vi ser, at der er bruger tilladelserne først. Det er dig, den enkelte, og din server, potentielt. Og så er der gruppen og andre. Forskellene mellem dem to relativt ubetydelige. Så generelt vil vi klumpe dem sammen. Men det væsentlige, hvis vi har en fil kaldet omfatter, at vi ønsker at være stand til at redigere os selv og at vi ønsker andre til at være i stand til at udføre, det er den tilladelse 711. Og vi ser, at ned her i denne tabel. Vi har en læse-, skrive og udføre. For hver af os, vi ønsker at være i stand til at gøre dem. Group og andre, vi kun ønsker dem at være i stand til at udføre. Den måde, vi oversætte det i en række tilladelse er gennem binær. Så hvis vi har tre dem, det er en 1 i dem kolonnen, en 1 i parvis søjle, en 1 fours kolonne. Det er 7 lige der. Og denne tilladelse er 1.. Denne tilladelse er 1.. Så 711, når er det samme som at give selv læse, skrive og udføre, og alle andre udføre privilegier. Denne linje lige her, vi generelt vil have læse og skrive, når vi oprette en mappe. Så denne linje her blot tilføjer eksekvere privilegier til alle. Så det ville være beslægtet med, i Udover hvad vi har, tilsætte 1, 1, 1 til alle. Dette, er det unødvendigt at tilføje læse og skrive. Men hvis du kommer til at bruge tallene, du kan ikke bare tilføje noget. Du overskrive uanset tilladelse var der og gennemføre dem med det nye nummer, du giver. Det var temmelig hurtig. Er der nogen har nogen spørgsmål om at ændre tilladelser? OK. Hvis jeg har en PHP-fil, hvilke tilladelser ønsker jeg det at have? Dette er i det problem indstillede spec. Så du kan se på spec og derefter læse mig svaret. PUBLIKUM: Du ønsker, at brugeren har læse-skrive-tilladelser. Og du vil have alle andet at have ingenting. JASON HIRSCHHORN: Og hvad tal er det? PUBLIKUM: 600. JASON HIRSCHHORN: 600. Så chmod 600 - når du udskriver en PHP-fil, chmod til 600. OK. Jeg har en mappe. Nogen udover Jeff, Jeg har en fil mappe. Hvilke tilladelser ønsker jeg at give til denne mappe - også i det problem indstillet spec, lige under dette svar eller det tidligere svar? Også potentielt på slide - Marcus. PUBLIKUM: Til mappe, det er 711. JASON HIRSCHHORN: 711 - så en mappe, du ønsker at give 711. Du vil være i stand til at læse denne mappe, ændre mapper, flytte ind mappen. Og du vil have alle andre til at være i stand at navigere i denne mappe, men ikke nødvendigvis ændre indholdet. Hvad med en ikke-PHP-fil, sige, en JavaScript-fil? Hvilke tilladelser ønsker vi at give denne type fil? PUBLIKUM: 644. JASON HIRSCHHORN: 644 - hvorfor vi ønsker at give det 644? PUBLIKUM: at lade andre mennesker at læse den. Og du læse eller skrive det. JASON HIRSCHHORN: Så lige, alle ellers kan læse, at JavaScript-fil. Og du kan ændre det, udover at være i stand til at læse den. Så en af ​​de mest almindelige bugs folk har dette problem sæt og deres afsluttende projekt, hvis det er en web-baseret endelig projekt, vil de ikke har sat de korrekte tilladelser. Og de vil ikke være i stand at se deres hjemmeside. Eller en bestemt del af deres hjemmeside. Så sørg for at du har indstillet tilladelser korrekt. Må ikke bare antage, at det vil gøre det automatisk for dig. OK. Det var en lille ting, som vi har brugt en god mængde tid på, så kunne vi søm det. Lad os gå videre til HTML. Og igen, for de næste fire emner, vi kommer til at gå igennem dem relativt hurtigt. Så er du velkommen til at stoppe mig på ethvert gang, hvis du har spørgsmål, uanset om de er relateret til, hvad jeg dækker eller noget fra forelæsning eller selv fra problemet indstillet. Stop mig, når du har brug for. Når vi kommer til slutningen, vi vil bare begynder at gå over problemet sæt. Så HTML står for HyperText Markup Language. Det er ikke et programmeringssprog. Alt det gør, er at strukturere dit indhold og også give nogle metadata. Så for eksempel formodentlig mange af du har brugt Facebook før. Og du kan indeholde links i, eller du kan sætte et link, som din status. Og så vil du bemærke, at link altid har et flot billede til det og noget tekst. Generelt, der er nogle metadata for en webside. Og det er Facebook-specifikke metadata. Og så, når Facebook læser at side og indsætte dette link, det ser til metadata, så det ved, hvad billedet for at vise, hvad titel til at vise, og hvad abstrakt tekst at vise. Så vi kan omfatte metadata med vores webside ved hjælp af HTML. Og det hjælper os også struktur indholdet generelt, at vi ønsker at gå hvor. Alt i HTML er et element. Og elementer lige her - denne CS50, tekst er elementet. Og det har nogle tags. Det har det et tag. Og vi bemærker, at der er en a på begynder og derefter en skråstreg a, så lukning af et tag i slutningen. Nogle gange er der ikke en åben tag og et tæt tag. Der er bare én ting. Vi vil se et eksempel på, at på det næste dias. Så du behøver ikke en åben og et tæt tag. Men for at dette, er vi omslutter dette CS50 element i et anker tag. Og i det væsentlige, disse tags fortælle browseren, hvad de skal gøre med det særlige element. Så igen, CS50 er den tekst, vi kommer til at se. Og det kommer til at være en type af anker. Anchor anvendes hovedsageligt for links til noget. Især som du kan allerede fortælle, dette er en linke til CS50 hjemmeside. Den næste del af tag - eller generelt, en del af tags attributter. Og vi ser her, at a tag har en tilskriver denne href attribut. Og de ændre et bestemt mærke. I virkeligheden, hvis du går til en af ​​de hjemmesider eller henvisninger jeg gav dig før eller kigge op på et tag online, du vil bemærke, at der er et væld af potentielle egenskaber. Dette er sandsynligvis en af de mest almindelige. Det fortæller mig at skabe en linke til den specifikke hjemmeside. Og attributter generelt er givet, om ikke udelukkende givet, i nøgleværdipar. Så her er nøglen, href. Og værdien er dette lige her. Og der vil komme i handy senere, når vi begynder at bruge nogle biblioteker til hjælpe os med kode i JavaScript eller skrive HTML-indhold. Vi bliver ofte kommer til at være - ligesom vi ville gøre matrix beslag 0, og at ville give os en vis værdi. I fremtiden vil vi gøre en masse ting som noget beslag href. Og det vil give os værdien af href, eller hvis vi ønsker at opdatere href tasten og derefter give det en bestemt værdi. Så ligesom med arrays, hvor vi havde tast 0 eller tast 1 eller tast 2 eller endda med en hash tabel, ja, med dine hash-tabeller så godt, har du sandsynligvis - det var en matrix, så tast 0, tast 1, tast 2. Det indeks der, vi kan tænke på det som en nøgle. Og værdien er, hvad blev opbevaret der. Alle disse egenskaber er nøgleværdipar. Og det vil være vigtigt for at ændre dem eller opdatere dem eller indsætte dem senere. Endelig har du set denne struktur før, men det er den mest grundlæggende strukturen af ​​HTML-side. På toppen, vi fortælle dig, at dette er faktisk HTML. Og så har vi en åben HTML tag og en nær HTML-tag. Så alt inde i dette er HTML. Vi ser hovedet og kroppen. Lederen af ​​dit dokument omfatter normalt hvad? Enhver gæt for hvad du sætte i hovedet? PUBLIKUM: Du sætter titel og stil. JASON HIRSCHHORN: Den titel. Det var en stor gæt. Jeg kan have tippet dig til. Hvad er nogle andre ting? Vi nævnte en af ​​dem, kan gå i hovedet. PUBLIKUM: Han sagde, stilarter. JASON HIRSCHHORN: Styles - så hvis du ønsker at linke i en JavaScript eller endda en CSS, som du taler om, når du taler om stilarter. En anden fil, du vil linke i en udenfor fil, vil der formentlig gå i hovedet. Hvad ellers? Vi nævnte et par af dias siden en af ​​de ting, HTML kan gøre for dig. Det kan give - starter med en M - PUBLIKUM: Metadata. JASON HIRSCHHORN: Metadata - så en masse af metadata vil gå i hovedet, fordi det vil ikke nødvendigvis at være en del af kroppen af ​​din kode. Det er generelt - kroppen er det indhold, hvad nogen ser. Og så gav jeg bare væk svaret til mit næste spørgsmål. Men i kroppen er generelt indhold der kommer til at blive vist på websiden. Som vi vil se, komplicerede hjemmesider en tendens til at blande sig eller ændre op, hvad de sætter i hovedet og kroppen. Men generelt, lederen indeholder ting at brugeren ikke kommer til at ser på skærmen. Det forbinder i andre filer og giver metadata. Henviser til, at kroppen indeholder alt brugeren kommer til at se. Enhver idé om, hvad denne p tag betyder? PUBLIKUM: Afsnit? PUBLIKUM: Udskriv. PUBLIKUM: Betyder ikke print. PUBLIKUM: Betyder det punkt? JASON HIRSCHHORN: Afsnit - så dette er et afsnit. Og denne p tag, jeg kunne bare have skrevet dette på skærmen, og omfattede et linjeskift ved udgangen af ​​det. Enhver ved, hvordan man kan inddrage et linjeskift? PUBLIKUM: PR - JASON HIRSCHHORN: PR - PUBLIKUM: Slash PR? JASON HIRSCHHORN: PR-skråstreg står for linjeskift. Men afsnit har specifik formatering. Og vi vil komme til at formatere i en sekund, når vi taler om CSS. Men alt inde i disse p-tags vil have en vis standard formatering forbundet med det, sandsynligvis nogle afstanden mellem forskellige stykker. Og det vil være en måde at differentiere blokke af kode. Alle andre tags - hvad er andre tags, du har set? JASON HIRSCHHORN: H1 gennem h6. h1 gennem h6, og hvad er det? PUBLIKUM: Det vil betegne hvor stor og fed bogstaverne er. JASON HIRSCHHORN: Right, det står for header. Og så header1 er en stor overskrift. Det vil sandsynligvis som standard være fed, en stor skriftstørrelse, sandsynligvis centreret om skærmen, hele vejen ned til h6, som er en mindre skriftstørrelse, mindre understreget. Selvfølgelig kan du, i du er CSS-fil eller andet sted i din kode - hvilket, igen, vil vi komme til at i et sekund - ændre, hvad den standard opførsel en h1 tag er. Men husk på, at Chrome, Safari, Firefox, Internet Explorer har alle standard ser for en masse disse standard tags. Du kan, igen, altid ændre hvordan de ser ud. Alle andre mærker, der alle har set? Ja - PUBLIKUM: En div site. JASON HIRSCHHORN: En div tag - div tag ikke har nogen indbyggede format pr se, som bruges til at blokere forskellige typer af kode. Alle andre tags? Ja. PUBLIKUM: li - JASON HIRSCHHORN: li - hvad er li for? PUBLIKUM: List. PUBLIKUM: List JASON HIRSCHHORN: li er for listeelementer. Der er to typer af lister. Hvad er de to typer? PUBLIKUM: Bestilt og uordnet. JASON HIRSCHHORN: Bestilt og uordnede - så ul stande for uordnet liste. Det er hvis du vil have en kugle pege en liste af kugler. En ordnet liste er en nummereret liste. Og så vil du gøre et åbent ul-tag og derefter tonsvis af listeelementer og derefter lukke ul tag. og der vil oprette en uordnet liste. Vi kommer til at se nogle eksempler html i en bit. Men inden da, jeg ønsker at komme til CSS. Og CSS står for Cascading Style Sheets. Og det er meget nært beslægtet til HTML, men lidt anderledes. Dette hjælper dig med at formatere alt indhold at HTML strukturer. Så i CSS, vi generelt ikke ønsker at style hver enkelt sidehoved eller hver enkelt billede eller hver enkelt afsnit. Vi ønsker at style nogle elementer eller måske et specifikt element. Og den måde, vi stil en specifik element er at give det et ID. Så dette er en attribut. Det har en nøgle og en værdi. ID er nøglen. Logo er værdien. Jeg plukket logo tilfældigt. Og hvis du giver noget et ID, generelt, at der kun bør gives til ét element. Og så, i dit typografiark, kan du stil netop dette element, men du vil have det til at se ud. Hvis du ønsker at style en række elementer, måske er det en bestemt klasse af overskrifter, kun nogle af dine overskrifter. Måske er det en overskrift og et billede og en afsnit, du ønsker alle at være centreret. Derefter kan du give disse grupper elementer alle en klasse. Og du kan give klassen specifikke stilarter. Så et ID og en klasse er to måder at bryde op din kode, så du kan hjælpe være mere specifik i hvad du stil. Der er tre måder at style. Den første er med denne stil attribut. Så du ser, den stil nøglen er stil. Stilen værdi er faktisk en anden vigtig værdi liste. I dette tilfælde, jeg plukkede en nøgle, tekst-align. Og jeg sagde, center. Du kan spørge dig selv på dette punkt, hvordan vidste jeg om text-align. Hvad betyder, at selv gøre? Det er et stort spørgsmål at stille, og vi vil komme der i et sekund. Så det er en måde at style noget, bare give det den stil attribut. En anden måde at style noget er - dette er Akshar nævnt tidligere. Du kan bruge typografi-tags og sætte det i hovedet af din HTML-dokument. Så du dybest set siger, indholdet i den her er noget indhold stil. Og formatet for det er den ting, du ønsker at style og derefter indersiden af krøllede parenteser, nøglen værdi par attributter, som du vil give til denne særlige type af element. Endelig, og dette er mest almindelige måde. Og det er den måde, vi gøre det i p sæt 7. Det er et eksternt typografiark. Så du har en. Css-fil. Og inde i det, kan du se en masse af ting, der ser sådan ud, navnet af en form for element eller et ID eller en klasse og derefter indersiden af ​​krøllet seler, en liste over de vigtigste værdi par. Selvfølgelig, hvis du opretter en ekstern fil, du kommer til at behov for at medtage det - skarp omfatter, ville være C analogt - i din HTML-fil. Så du er nødt til at medtage denne kode i dit HTML-fil. Dette er navnet på filen, og forudsat det er i den samme mappe. OK. Det var en masse. Og vi nu kommer til at trække vejret og se på nogle reelle, live hjemmeside og udforske dette mere. Men før vi gør det, gør nogen har nogen spørgsmål? Så hvis du ønsker at gøre dette sammen med mig, kan vi gå til apparatet. Og jeg valgte CS50 startside. Du kan gøre dette med enhver hjemmeside. Men hvorfor gør vi ikke starte med det CS50 hjemmeside? Lad os genopfriske. Jeg faktisk varmt anbefale dig at gøre dette sammen med mig, fordi det, vi kommer til at gøre nu, vil være utroligt praktisk for dig, ikke kun i P-Set 7, men i P-sæt 8 så godt. Ja. PUBLIKUM: Er der en måde at gøre kommentarer i HTML, uden at bruge PHP? JASON HIRSCHHORN: Ja, du kan fremsætte bemærkninger i HTML. PUBLIKUM: Hvad er syntaksen? PUBLIKUM: Udråbstegn dash bindestreg. PUBLIKUM: OK. JASON HIRSCHHORN: Ja. Det er syntaks. Du kan lave kommentarer i HTML. Du kan lave kommentarer i PHP. Som du kan se, kommentere i HTML vil stadig dukke op, når vi ser på det HTML-kildekoden på et bestemt websted. Så denne cs50.net. Hvis du højreklikker i de fleste moderne browsere på de fleste helst side, du får vist sidens kilde. Så lad os gøre det på CS50. Og vupti, vi se en kæmpe ting. CS50 faktisk ser ret nice. En masse hjemmesider vil ikke se denne nice. Hvis du går til Google startside og åbne det op. Det vil ikke se denne nice. Men du bemærker, at på toppen - det er lidt lille. Lad os gøre dette større. OK. Øverst DOCTYPE HTML, det er velkendt. Så ser vi den åbne HTML-tag og hovedet, lige her, alle af disse meta tags. Og du kan se denne and, ikke kommer til at gå ind i det nu. Men jeg er næsten positivt på det de ville være Facebook. Det er faktisk det Facebook. Jeg tror, ​​der står for åben graf. Så husk, jeg nævne at der er Faceboook-specifikke metadata kan du give en side. Det er, hvad der er rigtigt her. Så når du linker denne side på Facebook, billedet det kommer til at vise er billedet lige her. Og du faktisk se, at det er Facebook, fordi det er Facebook billedet. Men alligevel, vi får til side. Så vi har nogle metadatatags her. Vi ser CS50 titel. Og igen, titlen er, hvad der foregår heroppe på fanen browser. Vi ser dette linker i, lige her, en ekstern JavaScript fil. Vi har ikke talt om JavaScript meget, men i næste uge - og i hvert fald hvis du laver en web-baseret problem sæt, du vil bruge JavaScript. Dette er, hvordan du linker i ekstern JavaScript filer. Vi ser lige her endelig, CSS style sheet, der dokumenterer disse stilarter af denne kode. Lad os faktisk åbne det op og tage et kig virkelig hurtigt. Det ser vanvittigt. Der er ingen måde jeg ville være stand til at læse igennem. Så du kan faktisk selv, hvis du tager et udseende, kan du slags se, at der er - der vi går. Det ligner noget, vi har set før, baggrundsfarve, sætte det svarende til ca rød-grøn-blå værdi. Denne ting slags bør ikke ud til, at fremmed, selvom, når de præsenteres som dette, kan det være en smule overvældende. Vi kommer ikke til at se på denne CSS fil eller tilbringe meget tid på det, fordi Det er igen temmelig svært at læse. Lad os gå tilbage til dette HTML-side til CS50. Og lad os rulle ned til kroppen. Og indeni ser vi denne div tag. Vi ser en header lige her. Vi ser anker tag. Og denne liste element er fået en bestemt klasse. Og vi ser, at klasse gentaget igen og igen. Der er du Curtis. Der er kommentaren i HTML5. Og som du bemærker, kan vi stadig se det, men det er ikke at dukke op. Det er faktisk rigtig interessant. Det ser ud som denne scoringer liste element kommenteret ud. Hvis vi går til denne side, igen, er det stadig forekommer der, så interessant. Åh, det er derfor, fordi denne næste linje. Hvad ser vi af interesse? Resten af ​​denne er mere forvirrende i beskæftiger sig med denne højre halvdel af hjemmeside, hvilket er en smule smule mere kompliceret. Så dette er hvad nogle HTML kommer til at se ud. For mig selv, det er lidt overvældende, og det ikke hjælpe mig så meget. Men der er noget, betyder i virkeligheden hjælpe mig meget. Og det er hvad jeg bruger, når jeg er forsøger at finde ud af, hvordan noget ser ud som det gør, eller hvordan kan Jeg foretage ændringer til min hjemmeside. Og det er en udvikler værktøj der er indbygget i Chrome. Så hvis du går til dette tre søjler til højre her og gå ned til værktøjer klikker på Developer Tools, et lille vindue vil poppe op nederst på siden. Og i særdeleshed, Chrome, da det er vidunderlige, vil formatere dette vindue, og tage HTML og gøre det ser meget pænere til dig. Så nu er det faktisk nogle sammenklappelig HTML, som du kan udforske for at inspicere de elementer på siden. Hvis vi ønsker at se på kroppen, det faktisk fremhæver. Når du ruller over en del af HTML, ned i dette vindue, vil det fremhæve den rolle, det taler om i det store vindue. Så lad mig igen forsøge blæse det lidt op. OK. Så lad os åbne kroppen. Og jeg at rulle over denne venstre div. Og du bemærker, at det er at fremhæve denne venstre halvdel af skærmen. Så lad os klikker på det og udvide det. Inde i det, det ligner der er to divs. Der er denne første div. Jeg kan ikke se, fremhævet. Jeg ved det ikke, men det ser sådan ud anden, venstre indre, er indholdet på venstre side af skærmen. Så er der denne ting kaldet header. Det ligner der er at fremhæve det CS50 del. Hvis vi åbner det op, ser vi, at det er intet mere end header 1. Det har givet et ID, og ​​det er givet teksten CS50. Så igen, ser det gennem dette konsol eller ved hjælp af udviklingsværktøjer rude nederst på skærmen gør udforske denne hjemmeside, forhåbentlig, en meget mindre skræmmende og en meget mere tilgængelig. Det giver os også til at forstå, at denne hjemmeside, selvom det ser meget smuk og dejlig, er ikke så meget mere end hvad du kommer til at være gør på Problem Set 7.. Og dette er helt indenfor din evne til at skabe. Hvis vi ønsker at - den anden cool ting om at bruge disse værktøjer er, hvis du højreklikker på titel, kan du redigere HTML. Så lad os kalde det Jason. Og nu vil du bemærke, jeg har ændret HTML på denne side. Selvfølgelig har jeg ikke ændret det permanent. Hvis jeg opdatere min browser, så ville det gå tilbage til den oprindelige HTML. Men nogle gange vil jeg debug min kode, og jeg ønsker ikke at se lige have min gedit vinduet og prøve at forstå hvad der foregår. Jeg ønsker at se, hvad der vil ske Live. Så jeg vil redigere kode som denne og få det som jeg vil have det til at se ud. Og så vil jeg gøre ændringer i min kode. Og jeg synes, at det er meget nemmere når du kan gøre de ting, øjeblikkeligt, sådan. Sig, igen, vi ønsker at gøre en anden chance, fordi vi udforsker med HTML og CSS lige nu. Jeg kan redigere HTML lige nu. Og jeg har tænkt mig at inkludere et link. Så jeg har tænkt mig at ændre CS50 hjem side, så det vil linke til - lad os sige - min startside. Hvad er navnet, hvis nogen minder eller hvad er den egenskab, jeg ønsker at give til et anker fane, når jeg vil det at forbinde et andet sted? PUBLIKUM: href? JASON HIRSCHHORN: href - Så nu vil du se, at der er en understregning under Jason. Det er fordi Chrome som standard giver ankre en understregning. Du har sikkert set det før når du har gået til en webside. Ting, der er links er understreget og i blåt. Som standard stil for et link er generelt understrege og sætte det i blåt. Hvis jeg ikke kan lide det, Jeg kan ændre det. Og vi vil ændre det i et sekund. Men nu også mærke, at hvis jeg hover i denne, i nederste venstre hjørne af skærm, lige over ordbestanddelene er det link, jeg gav det. Så hvis jeg gjorde klikke på dette - og vi kan højreklikke på dette ved at åbne en ny fane. Det er faktisk ikke min hjemmeside. Det er bare mit navn. Værsgo. Vi har nu gøre det til et link. Lad os udforske nogle CSS så godt. Den smukke ting - og jeg har tænkt mig at gøre dette til en lille smule mindre - om denne konsol er, at skøre CSS ark vi så før, der var virkelig vanskeligt at analysere, er nu smukt lagt ud for os på den venstre side af denne rude. Så vi kan se. Og hvis vi udvider denne fane stilarter, vi kan se alle de forskellige stilarter der er forbundet med i dette tilfælde, dette særlige element, dette bøjleelement. Hvis vi gør fanen sammensatte stilarter, at bare viser os, ikke hvor alt kommer fra, men i det væsentlige alle disse stilarter, der opererer på denne særlige element lige nu. Og lad os sige, vi ønsker at ændre det en smule. Så dette er alle de stilarter, der er opererer på dette særlige element. Sig vi ønsker at ændre det, fordi vi ønsker at se, hvordan noget ser ud. Og vi er bare at spille rundt lige nu. Eller vi ønsker at teste noget ud, før skrive det i kode og skubbe det og gøre det live. Vi kan gå til fanen stilarter. Og i den første boks det siger, element.style. Og her kan du indsætte, du kan tilføje noget. Så jeg vil gerne - lad os gå til mit link, og indstille baggrundsfarven. Og det faktisk fylder automatisk det for dig, alle de mulige egenskaber. Baggrundsfarve, og jeg vil at gøre denne blå. Blus er ikke et ord. Blue er et ord. Har jeg se det komme op? Åh, er det fordi det er i href? OK. Så jeg kan ikke se nogen ændring her. Og det er fordi, hvis vi fremhæve link, vil du bemærke, at linket faktisk ikke styre egenskaber af dette særlige element. Det er faktisk, hvis vi åbner linket, denne overskrift lige her, der er kontrollerende hvad det ligner. Så hvis jeg ønsker at gøre baggrunden blå, jeg faktisk nødt til at ændre baggrundsfarve på header element. Og nu ser vi, at Baggrunden er blå. Så igen, denne hurtigt kan gå gennem dette materiale temmelig hurtigt. Men det er væsentligt, hvad du kommer til at gøre. Det er ikke på Problem Set 7. men helt sikkert, når du er kodning på nettet. OK. Jeg ønsker at gøre baggrunden blå. Selvom, i dette tilfælde, blå ser temmelig grimt. Jeg kan gå ind her, lege. Jeg kan se, at ændre det til blå virker ikke på en. Jeg har rent faktisk at ændre overskriften element omfatter blå baggrund. Og så, hvis så går jeg tilbage til min CSS fil, hvordan kan jeg faktisk sætte dette baggrund at være blå og foretage denne ændring pind? Fordi hvis vi bemærker, hvis jeg genopfriske side, bliver alle de ændringer, jeg har lavet væk. Så indså jeg, OK, min Baggrunden er blå. Jeg nødt til at gå ind i denne header1 element og ændre baggrundsfarven til blå. Hvordan kan jeg faktisk gøre denne ændring? Nå, minde om, at hvis vi går indenfor herfra, denne overskrift, den titel har et ID. Og det er titel. Og så i vores CSS-fil, kan vi sige, OK, tage noget med ID af titel og give det denne ekstra egenskab. Hvordan kan vi referere til noget med den ID titel, nogen ideer, eller nogen vide hvordan vi referere Id'er i vores CSS-fil? En hash, det er helt rigtigt. Og du fik en antydning af denne ret her. Så sted i denne CSS-fil, der er denne linje kode - # Venstre # venstre indre # header # titel. Og det er at give den margin bund, definere margin bunden af ​​denne bestemt element. Tja, hvis jeg ønskede at ændre det, Jeg vil gå ind i denne CSS fil. Og jeg kunne enten finde dette del af CSS-fil. Eller jeg kunne skrive mit eget. Jeg kunne gøre hash titel klammeparentes og derefter baggrundsfarve kolon blå semikolon og tæt, at klammeparentes. Og det ville ændre baggrunden farve af dette element til blå. Grunden til at de giver dig så mange her er , at det er nødvendigt i denne sag, fordi titlen er et unikt id. Men hvad du kan gøre, er reden ting. Så dette er at sige, OK, gå til venstre. Det er meget lille. Jeg undskylder for det. Men gå til ting med ID venstre. Inde i det, kigge efter ting med ID forlod indre. Inde i det blik, kigge efter ting med ID header. Inde i det, kigge efter ting ID titel og ændre ID titel. Så dette er blot en måde rugende ting. Nogle mennesker kan lide reden det, fordi det gør det lidt klarere. Du vil se hernede også, højre her er der ingen hash. Det er bare H1. Det er fordi h1 er givet navnet på en generisk tag. Og der er nogle CSS egenskaber forbundet med hver enkelt h1. Så hvis jeg fandt en anden h1 på denne side, Jeg vil også se, at denne stil var anvendt på det så godt. Hvis jeg ønskede at anvende en typografi til en klasse, hvordan kan jeg referere til en klasse eller tale om en klasse i en CSS-fil? PUBLIKUM: Dot. JASON HIRSCHHORN: Det er med en prik. Så lad os gå tilbage til denne side før. Hvis jeg gør hash id. Det er at ændre stil af ting med ID. Eller ked af det, hvis jeg gør hash-logoet, der er finde ting med id af logo og give det en bestemt CSS stil. Hvis jeg gør noget. Top, der er at finde alt med den klasse af top-og ændre dens stilarter. Hvis jeg simpelthen H1, der finder hver enkelt H1 og giver det uanset stil, jeg ønsker at give det. Hvis jeg gør h1 plads og derefter. Top. Det vil gå finde alle de H1S og derefter alle dem med den klasse af top-og da kun ændre disse formater til hvad jeg ønsker at give det. Og igen, vi kunne have skrevet noget af dette på vores egen. Men vi ville ikke have, at langt fået. Meget bedre ser det ud til rent faktisk at gå på en rigtig levende hjemmeside og se, hvordan de gør det og se på alle de fantastiske ting, du får at gøre. Lad os se på en mere website før vi går videre. Og det er en, som du vil sandsynligvis blive fortrolig med. Dette er CS50 Finance. Så igen, kan du faktisk gå ind og observere denne CSS fil på din computer, fordi du har downloadet dette CSS-fil, hvis du har hentet problem indstillet. Vi kan gå til Funktioner og Developer Tools. Og vi ser en meget enklere HTML layout. Vi har toppen, midten og bunden. Og igen, noget, du bør være bekendt med, fordi du har set gennem uddeling kode for denne uges problem indstillet. Øverst er pr koden, et enkelt billede kaldes. Og det er kilden af ​​billedet. Sige, at jeg er færdig med alt hvad Jeg ønskede at for Problem Set 7. Og det fungerer korrekt, men Jeg ønsker at ændre, hvordan det ser ud. Og jeg ønsker at ændre baggrunden af toppen af ​​den side, for eksempel blå. Hvis det var mig, ville jeg komme i her og finde ud af, OK hvad ønsker jeg at ændre. Lad os se, div id top, at udseende ligesom toppen af ​​siden. Så lad os gå der. Lad os prøve at ændre baggrundsfarve. Lad os gå gøre Alice blå, fordi det er en pænere én. Og du vil opdage, at - du sandsynligvis ikke kan se det. Men der er en lyseblå, sammen med CS50 logo. Lad os ændre det i stedet for rød. Og du vil opdage nu jeg lige ændret baggrundsfarven til rød. Så nu vil jeg gå ind i min CSS-fil og Type # top krøllede paren lige her. Du kan se koden til højre her, klammeparentes. Og så vil jeg tilføje baggrund farve, rød. Og så ville der være en klammeparentes. Så det er, hvordan jeg ville udforske og eksperimentere med formateringen på CS50 Finance site. Jeg kunne gøre det her, og test det ud på min browser. Og så kunne jeg gå ind i mit egentlige kode og foretage de ændringer, der vil faktisk gå live, og at folk faktisk se, hvis de skulle komme til mit bestemt websted. OK. Det var en masse. Jeg undskylder for at gå gennem det så hurtigt. Er der nogen har nogen spørgsmål ved alt om HTML eller CSS? PUBLIKUM: Kan du bare gå over, hvordan du forbundet, hvad der blev Jason, igen? JASON HIRSCHHORN: Hvad mener du tilknyttet? PUBLIKUM: Du angav et link til en anden hjemmeside, ved hjælp af anker. JASON HIRSCHHORN: Så spørger du, bare generisk, hvordan du laver et link? PUBLIKUM: Ja. JASON HIRSCHHORN: OK. Koden for at gøre et link - PUBLIKUM: Nej, ligesom i HTML. JASON HIRSCHHORN: Hernede, mener du? Så hvis jeg ønsker at inkludere et link sted, sige, det er HTML på min side lige her. Dette er HTML. Måske er det åbent i en fil, index.html. Jeg går i. Lad os få denne copyright John Harvard link til noget. Så vi vil redigere alt dette som HTML. Alt du skal gøre er inkludere en, så beslag tæt beslag på begynder, og derefter beslaget skråstreg et tæt beslag i slutningen. Så nu har jeg medtaget et anker tag. Og faktisk, hvis du klikker ud af denne, vil den nu formatere det redigere som HTML. Og sige, at vi ønsker at forbinde det. Vi ville du href attribut. Og vi siger - Og nu, som du bemærker, copyright John Harvard er blå. Og når jeg ruller i det, er det nu et link. Så du kan skrive denne kode. Du kan omgive temmelig meget noget du ønsker i et anker-tag og slå det til et link. PUBLIKUM: OK. Fik det. JASON HIRSCHHORN: Og hvis jeg ikke ønskede det - selvfølgelig, nogle gange folk har tendens at tænke disse ting, der bare ser blå generisk og understreget er ikke den smukkeste måde at gøre et link. Så hvis jeg kom herover, kan du se det, sted i en CSS-fil, der er skrevet denne a og derefter to krøllede parenteser. Så lad os sige, at for links, det gør jeg ikke vil have dem til at blive blå, snarere jeg ønsker farven på et link til være denne nice magenta. Lad os give det farve. Lad os plukke magenta. Nu er alle de links på min side har bliver denne nice farve magenta. Nogle mennesker kan ikke lide farver på alle. Nogle mennesker kan ikke lide understregninger. Du kommer til at plukke. Med links, kan du style, hvordan de se ud, når du har besøgt dem. Som du vil bemærke på en masse sider, links tænder lilla på du besøger dem. Du kan ændre den farve som godt. Ja. PUBLIKUM: Så du ændre det for hver enkelt forbindelse. Men hvis du bare ønskede at gøre det link selv, ville du bare gøre i ID bunden eller noget? JASON HIRSCHHORN: Så stor spørgsmål. Som du har bemærket her, jeg har ændret nogle del af CSS, der gælder for alt, hvad der er en A. Hvis jeg ønskede at bare gøre at linket nederst, jeg ville gå til min CSS-fil og sandsynligvis gøre lige som du sagde, hash nederste rum et. Og det ville give mig alle Som i bunden. Eller jeg kunne alternativt giver det en unikt id og så bare gøre hash link. Og der ville tillade mig til at ændre dette. Men bare uddele id'er forgodtbefindende er generelt en dårlig praksis, fordi de skal være unikt. Og jo mere du har dem, det kan få en lidt forvirrende. Ja. PUBLIKUM: Kan du give den samme ID til flere ejere? JASON HIRSCHHORN: Teknisk, ja. Intet kommer til at stoppe dig, men du Skulle du ikke bør give det en klasse. OK, andre spørgsmål om HTML eller CSS? OK. Lad os gå videre til PHP. Åh, ja. PUBLIKUM: Hvad er det ved disse hjemmesider, der betyder, at vi kan redigere dem, før vi genopfriske. Men når vi opdatere den vender tilbage til den oprindelige HTML? JASON HIRSCHHORN: Great spørgsmål - så når vi har indlæst denne webside, det er HTML. Og det er JavaScript. Dens PHP udføres for at give os, hvad type hjemmeside vi ser. Og det er skabt nogle HTML, nogle JavaScript, og nogle CSS. Og det er nu tilgængelig af vores computer. Og en kopi af disse filer gemmes lokalt på vores computer, for tiden. Så vi kan redigere den lokale kopi. Men selvfølgelig er vi ikke redigerer serveren kopi. Og når vi opdatere siden, vi får en anden server kopi. Og så ser vi tingene tilbage, som de var. Hvis vi var i stand, herfra, at redigere officielle hjemmeside, ville vi have en masse problemer. PUBLIKUM: Yeah, så vi kan læse og skrive kopien. JASON HIRSCHHORN: Right. Vi laver kun lokale ændringer her, men igen, meget nyttigt for at udforske, oftentimes. Når jeg skriver mit afsluttende projekt, eksempel, jeg ønsker at se, hvordan nogle hjemmeside lavet noget udseende den måde, de gjorde. Jeg vil gå ind og bruge denne rude ned her, at se på, hvad CSS de gav det, eller hvad farve de plukkes eller hvordan de fik det så, når du svævede over noget, listen kom ned i et dejligt cascading mode. Det er en fantastisk måde at inspicere, hvad andre websites gøre og låne hos dem. Lad os gå videre til PHP. PHP står for, i en rekursiv forstand, PHP Hypertext Processor. Og PHP, hvad det kommer til at gøre er eksekvere kode server side. Så vi aldrig kommer til at se PHP kode. Men det lege pænt med HTML og ofte genererer en masse af HTML-kode. Men som du vil være bekendt med Problem Set 7, vil din PHP kode udføre, generere nogle HTML, og det er hvad brugeren vil ende med at se. PHP er utrolig ligner C. Der er dog et par forskelle og disse forskelle er vigtigt at bemærke. En forskel er, at variable i PHP er løst skrevet. Er der nogen, der har en følelse af, hvad det betyder? PUBLIKUM: Ingen grund til at kaste det selv. Ligesom ingen grund til at skrive i teksten. JASON HIRSCHHORN: Jeg ville ikke bruge Ordet cast, men ja, ingen grund til at erklære en type til en bestemt variabel. Hvordan stedet får vi erklære en variabel? PUBLIKUM: Brug et dollartegn. JASON HIRSCHHORN: Brug et dollartegn. Så $ x er en variabel. 1 $ er en variabel. $ String er en variabel. De variabler, $ x kunne være et heltal. Derefter kunne det være en streng. Derefter kunne det være et tegn. Det betyder ikke rigtig noget. Også den fede ved PHP er, sige, $ x er strengen én. Og $ y er tegnet en. Du kan tilføje $ x og $ y, og det vil give dig 2, hvad du ville forvente. Så der er operationer i PHP. Fordi det løst er indtastet variabler, nogle implicitte støbning er gjort for dig og nogle operationer. Du kan gøre operationer på tingene forskellige typer. Hvor der før, du ofte får en fejl i C siger, det er ikke den type der er meningen at gå her. Kun ting af denne type kan gå her. Du kommer ikke til at få denne type af fejl generelt i PHP. Så det er en stor forskel - hvordan vi behandler variabler. Den anden store forskel er, at PHP kode fortolkes. Wheres er C-kode kompileret. Hvad betyder det? Tja, for C-kode du kørte det gennem en compiler. Du genererede en binær fil. Og du kørte det binære fil. Du tog sig af alle fejl, før du genererede den binære fil. Selvfølgelig kunne der have været segmentering fejl, da du kørte binær fil. Men det er ikke som du har glemt at inkludere definitionen af ​​printf eller du ikke bruge en variabel og bare skabt en ødsel variabel. Eller du ikke definere en funktion prototype. Alle, der er sket før du har kompileret. Det gav dig alle de fejl eller dårlig ting, at det mente kunne ske. Og så, du havde din 0 og 1 fil, du kørte. PHP kode virker ikke sådan. Du kommer til at skrive din PHP kode. Så er du nødt til gemme det, formentlig. Og i hvert fald i P-Set 7, er du nødt at genopfriske din webbrowser, og du kommer til at se, hvad der skete. Du kommer se output af, at PHP kode. Du kan også se, øverst af din side, en fejl. Fordi du havde nogle fejl i din PHP. Du kan stadig se resten af websiden ser fint. Men en del er forkert, og der er en fejl på dette sted. Og det er fordi, at en del af din PHP kode virker ikke. Faktisk, når du udfører, når du gå til noget som by.php. Det kommer til at gå gennem din PHP fil linje for linje og udføre det da og kun da. Det kommer ikke til at kompilere det forud for tid eller kompilere en kopi og derefter give der kompileret kopi til alle. Hver gang, det kommer til at gå igennem linje for linje og udføre den. Så nogle linjer kan arbejde og output noget korrekt. Og andre strækninger kan være brudt og output en fejl i stedet. Så når debugging med PHP, har vi givet dig et par nyttige ting til at hjælpe dig debug, ligesom dump funktion. Men generelt, er du nødt at se disse fejl. Og det er, hvordan du kommer til at kender du gjorde noget forkert. Men du kun kommer til at se fejlen når du rent faktisk køre koden. Et andet vigtigt aspekt af PHP og webudvikling er ideen om get versus indlæg. Kan nogen forklare, hvad forskellen mellem får og post er? Nobody - Ja. PUBLIKUM: Er ikke en af ​​dem lader brugeren se data, og en af ​​dem ikke? JASON HIRSCHHORN: Great. Ja, har du noget at tilføje? PUBLIKUM: Jeg tynd indlæg er et super-global variabel. JASON HIRSCHHORN: Så begge disse variabler er givet til dig. Disse er blot variabler. Og du ved, at de er variable, fordi lige her jeg bruge dollartegn. Det er variabler givet til dig af PHP. Og når du flytter mellem websider, du vil gemme nogle oplysninger. Du vil sandsynligvis at spare, hvis brugeren er logget ind Det er ikke gemt i GET og POST. Der er gemt i noget andet, en anden variabel. Nogen vide, hvad variabel, der er gemt i, eller hvad variabel, du bruger i P-Set 7, for at sikre, at brugeren er logget ind? $ _SESSION, Det er helt rigtigt, formentlig vigtigt at være bekendt med navnene på disse ting du bruger ofte. Så du bruger session-variablen for at spare oplysninger fra side til side. Det er en super variabel. Den findes på hver side, måske som en global variabel, hvis du ønsker at tænke om det på den måde. Der er et par andre variabler der giver dig mulighed for at overføre oplysninger fra side til side. Især dem, vil vi fokusere på er GET og POST variabler. I PHP de ligner $ _GET Og $ _POST. Og forskellen, pegede da Marcus ud mellem to af dem er, at oplysninger i $ _GET er vises i webadressen. Så hvis vi ser hernede, vi ser en YouTube-link. Vi ser dette spørgsmålstegn. Vi ser v = og derefter nogle værdi. Tilbage til denne idé om nøgleværdi par, v er nøglen. Og herovre er værdien. Så hvis vi skulle gå til denne side, eller kodning på denne side, ville vi have en variabel kaldet $ _GET. Hvis vi gik til $ _GET åbneparentes "v" tæt beslag, meget lig matrix notation, dette er et associeret matrix fordi vi ikke bruger indeks. Brugte strenge som nøgler. Men meget lignende ide. Hvis vi gik vi ville få denne værdi. På denne side vil vi være i stand at bruge denne værdi. Hvis vi rent faktisk ser, lad os gå til en YouTube-side. Hvilken video skal vi se? Denne ene, er folk Hobbit fans? PUBLIKUM: Ja. JASON HIRSCHHORN: Så jeg kopierer deres andel URL og indsætte det i et nyt vindue. Og nu, hvis man ser op her, vil du bemærke, at igen - Jeg har tænkt mig at kopiere og indsætte denne i gedit, så vi kan se det større. Du vil bemærke, at det har dette spørgsmålstegn. Spørgsmålstegnet betegner, at alt efter dette vil være gemt i get variabel. Derefter har den v, det er det første nøgle og denne første værdi. Ampersand er speciel. Ampersand siger, OK, vi færdig med den første værdi. Vi er nu bevæger sig videre til en anden nøgleværdi par. Her er nøglen kaldes funktionen og værdien er youtu.be. Så hvis jeg var en kodning denne side og nogen gik til denne webadresse, og jeg havde måske watch.php. Og jeg var kodning dette. Og jeg kunne bruge $ _GET variabel. Og jeg ville have en v, og Jeg ville have en funktion. Og hvis jeg bruger v-tasten, jeg ville få denne værdi. Og hvis jeg gjorde $ _GET beslag "feature" tæt beslag, ville jeg få denne værdi. Igen, det gør ikke nødvendigvis gælder - Det er klart, at YouTube-nøgler og værdier og få oplysninger gælder ikke for Vores problem Set 7. Men der er visse ting, som vi passere via GET i vores Problem Set 7. Og helt sikkert, når du går til en webside eller kodning din egen side, $ _GET Vil komme i handy når din kodning. Hvad er en grund til at bruge $ _GET da, hvis det giver intet privatliv? Du kan se alle disse oplysninger der bliver overført. Det hele vises for brugeren. Men hvad er en grund til, at du måske ønsker at spare noget i $ _GET, som i modsætning til $ _POST? Hvorfor du måske ønsker at gøre det? Ok. Jeg spurgte dig i Quiz 1. Hvad er pro på $ _GET? Hvad er en pro? Ja - PUBLIKUM: Det er nemmere at dele oplysninger. JASON HIRSCHHORN: Jeg tror det er fantastisk. Det er nemmere at dele information. Det er nemmere at bogmærke. Du kan oprette bogmærker nu YouTube.com / watch? V = noget og gå til den specifikke video. Hvis YouTube altid gjorde POST-anmodninger til forskellige sider, hver YouTube URL ville være YouTube.com. Du kunne ikke bogmærke en enkelt video. Fordi hvis du siger delte dette link med en anden, ikke gør de automatisk få dit indlæg variabel. De er lige ved at komme på dette link, og link er den samme for alle. Så det er en pro. Det giver dig mulighed for at bogmærke denne oplysninger eller dele disse oplysninger eller gøre det en lille smule mere brugervenlig. Selvfølgelig er der ingen privatliv, så vi har dette indlæg variabel. Og skrive information ikke er vises i webadressen. Det er ikke helt privat. Men det er marginalt mere privat. Og så vil du se denne URL hernede, cs50.net. Uanset om du er logget ind hjemmeside, går det til at have den samme URL, cs50.net. Det er klart, er noget anderledes, hvis du er logget ind på hjemmesiden. Du har én, sandsynligvis indtaste din PIN-kode. Og det er bekræftet, at med serveren. Og det er nok at spare nogle andre oplysninger. Men URL'en ændrer ikke på alle. Og så er tilfældet, når noget er sendt med posten. Webadressen ændres ikke. Denne information POST ikke er vises i webadressen. Men nogle stat har ændret sig, og måske Der er nogle oplysninger gemt i POST variabel. Undskyld. før jeg går ind i SQL, enhver spørgsmål om PHP, i særdeleshed, spørgsmål om ting, vi ikke gå over at du har fundet eller nogen syntaks eller logiske spørgsmål om PHP? OK. Den endelige sprog, du vil være interagere med denne uge er Structured Query Language, SQL, udtalt efterfølger ofte. Det giver dig mulighed for at interagere med database på en formaliseret måde. Og det spiller meget pænt med PHP. Som du kan se i Problem Set 7, vi har givet dig en funktion kaldet forespørgsel. Og det tager en SQL-streng og udfører at forespørgslen på databasen. I de forløbne år, du var ikke givet denne funktion. Du var nødt til at bruge PHP funktioner til at gøre forespørgslen på databasen, og kontrollen for fejl og derefter få resultaterne. Og det er faktisk ikke så svært, fordi igen, det spiller meget pænt med PHP. Og PHP giver dig en masse funktioner til at interagere med en SQL-database. Så ofte, de to af disse går sammen. Selvfølgelig kunne du interagerer med SQL database med alle række andre sprog. Men PHP er en stor en til at vælge. En database - vi vil gå over dette hurtigt, fordi dette er et modeord, vi kommer til at begynde at bruge ofte - er en samling af tabeller. Så vi kan tænke på det som en Excel-fil. En Excel-fil har flere faneblade i bunden af ​​skærmen. Hver fane vi nu kalder en tabel, hvor en tabel er en samling af rækker. Og hvad er en række? Tja, en række er den samme ting i Excel-fil. At netop har visse værdier for hver givet felt eller hver given kolonne. Det er ligesom en post i tabellen. Det er en studerende, der har et id, et specifik id og et bestemt navn og en specifik hus. Så en database er en samling af tabeller. Og bordene er en antallet af rækker eller poster. Der er også i hver bord, visse områder. Og der angiver, hvad hver post er nødt til, marker kaldes kolonner, men generelt kaldet felter. I denne meget simpel tabel, jeg har tre felter, et id felt, et brugernavn felt, og en hash felt. Og jeg har tre rækker. Lige nu er de tomme. De ville sandsynligvis ikke være tom hvis dette var min rigtige database. Så hvis du har brugt Excel, lignende idé til, hvad du gør i Excel, selvom, selvfølgelig, vi nu kommer til at være i stand til at gøre meget mere kraftfuld ting på oplysninger, der er gemt i vores database. Du vil være at skabe dig en database for Problem Set 7. Men du vil være at skabe flere tabeller i databasen. Du vil være at skabe en database eller en tabel for brugerne. Du vil også blive oprette en tabel for sandsynligvis lagertransaktioner, for at holde styr på dem, fordi du har brug for implementere en historie funktion. Begge disse tabeller vil have forskellige områder. For eksempel i en bruger felt skal du sandsynligvis vil have deres brugernavn og en Id og en hash af deres adgangskode. I Aktier tabel, der holder styr på historie eller historie bordet, du sandsynligvis ikke brug for brugernavn og hash og id. Du har sikkert kun brug for en af ​​dem værdier, der er unikke på at associere det med en given bruger. Men så, du ønsker at gemme andre ting som, hvad tid blev transaktionen foretaget. Hvad bestand blev købt eller solgt? Hvor mange aktier i bestanden blev købt eller solgt? Hvad var den pris, som bestand blev købt eller solgt? Så igen, er du nødt til at interagere med et databaser, der findes i kommer til at have flere tabeller. Hver tabel vil have sit eget sæt af felter. Imidlertid vil der sandsynligvis være en lignende felt i hver tabel, at relaterer dem til hinanden. Normalt er dette et id felt. Fordi hvis hver bruger har et unikt id og du forbinder dette ID med hver transaktion, som brugeren foretager eller alle denne brugers historie. Og du har brugerens id. Du kan få information enten tabel. Du kan få deres brugernavn, og du kan få alle deres transaktioner. Eventuelle spørgsmål om databaser, eller specifikke spørgsmål? Faktisk, lad os holde det. Vi vil være der i to sider. Så der er fire operationer på databaser, som du vil bruge i Problem Set 7 og sandsynligvis nogensinde bruge. Den første ting, du ønsker at gøre, er at indsætte en ny rekord i en tabel eller et ny række i en tabel. Dette er den generiske funktion, generiske form af denne SQL-forespørgsel. Indsætte i tabellen, uanset kolonner du vil indsætte, og derefter de værdier, du vil ønsker at sat i disse kolonner eller felter. Hvis du har flere tabeller i en database eller flere databaser, du måske også nødt til at angive databasen og den tabel, du vil have at sætte tingene i. Men meget simpelt, hvis du ønsker at indsætte ind i noget, du siger, her er det felter, jeg ønsker at indsætte i. Og her er de værdier. I nogle tabeller også og denne brugers bordet er et godt eksempel. Sandsynligvis i denne brugers bord og sandsynligvis i din brugers bord i P-Set 7, er der ikke blot et brugernavn værdi. Der er ikke bare en kontantværdi, eller felt, snarere. Der er også et ID-felt. Jeg har ikke tænkt mig at indsætte det id-felt. Det kommer til at blive givet til mig automatisk, når en ny rekord er indsat. Så der er nogle felt, du kan indstilles til at være automatisk. Måske du ønsker at give alle brugere $ 10,000 af kontanter off the bat. Så jeg behøver ikke at indsætte en række af kontanter her. Alt, hvad jeg har brug for at indsætte er brugernavnet. Og så vil den kontante felt være præ-befolket, og id-feltet vil på forhånd udfyldt. Så ofte, vi ikke indsætte noget i alle områder, fordi de øvrige felter er præ-befolket. Fordi det er, hvordan vi oprette tabellen. Den anden ting du vil ønsker at gøre, er at slette en post. Sletning noget er meget enkel. Du giver den tabel, hvor du vil have at slette noget fra. Og du siger, OK, jeg ønsker at slette post, der har et brugernavn Milo. Eller jeg ønsker at slette alle poster, har et brugernavn af Milo eller som var en transaktion fra bruger-ID nummer 2. Eventuelle spørgsmål vedrørende disse to typer af forespørgsler? PUBLIKUM: [uhørligt]. JASON HIRSCHHORN: Ja. Så jeg har tænkt mig at bruge række og optage flæng og nogle med kolonne og felt. Men én række er en rekord. Én søjle er et felt, der går tilbage til denne tabel. OK. Den næste ting du sandsynligvis kommer til at gøre, er at få nogle information fra tabellen. Det er en Select forespørgsel. Og igen, hvad bord jeg vælge fra? Og hvad kolonne ønsker jeg at vælge, eller hvilken værdi ønsker jeg at vælge og hvorfra træk? Så Select er lidt specifik. Jeg siger, OK, jeg vil have denne tabel. Og så vil jeg kolonnen brugernavn, og Jeg vil have det fra rækken med ID 2. Det er en måde at gøre en Select. Eller jeg kan sige, giv mig hver enkelt brugernavn. Eller jeg kan sige, giv mig en hel ror fra denne tabel, hvor brugernavnet er 1.. Så der er et par forskellige måder at vælger forespørgsler, afhængigt af hvordan mange oplysninger du ønsker, Du kan altid vælge bare alt fra den specifikke tabel og derefter loop gennem det, plukke ud de ting du ønsker. Men husk, hvis du vælger en masse ting fra en tabel, og du har en virkelig stor tabel, vil det tage stykke tid, så bedst at kun vælge ting, som du kommer at ender med at bruge. Også med Select og med alle disse andre SQL-kommandoer så godt, jeg er giver dig den fødte knogler version. Men sige, jeg vælger brugere, og jeg vil at udskrive dem alfabetisk, Jeg kunne vælge alle brugere, og derefter sortere dem alfabetisk i min kode. Eller der er en måde at skrive select forespørgsel, der vælger tingene i et alfabetisk mode, baseret ud af en bestemt kolonne, enten stigende eller faldende. Så husk på, at en masse af, hvad du ønsker at gøre, kan sandsynligvis gøres i forespørgslen gennem en yderligere attribut. Så ser op på disse forespørgsler online eller de andre ting, du kan gøre med disse forespørgsler til at udvide dem. Endelig er den sidste ting du ønsker at gøre er ikke indsætte noget eller slette noget, men snarere opdatere noget. Og der er gjort med opdateringen forespørgsel, og igen, hvad bord. Og hvad forandring ønsker jeg at gøre? Og til hvilken række eller optage gøre Jeg ønsker at foretage denne ændring? Eventuelle spørgsmål om SQL? OK. Så vi har cirka 15 minutter. Og dette er den sidste slide jeg har. Og forhåbentlig det sidste dias er en god Overgang til problemet indstillet, fordi at forstå, hvor vi ønsker at indsætte poster, slette dem, skal du vælge dem, og opdatere dem, vil hjælpe os forstå større logik og flow Problem Set 7. Så jeg kender alle svarene på disse spørgsmål. Jeg har ikke tænkt mig at fortælle dig alle svarene. Men hvis nogen ellers gerne vil præsentere et spørgsmål til gruppen eller svaret på et af disse spørgsmål, kan vi bruge det som en hoppe fra punkt til tale om problemet sæt. Eller hvis nogen har en mere generisk spørgsmål fra problemet sæt føler fri til at bede om, at så godt. Og vi kan starte der. Husk, at du være tavs er såre alle. Ja. PUBLIKUM: Så er den eneste måde at videregive variabler til og fra forskellige web sider, eller den mest bekvemme måde, ved hjælp POST eller GET? JASON HIRSCHHORN: Så ja, det er mest bekvemme måde at sige - når nogen udfylder en formular - få oplysninger om en anden web side, ved hjælp af GET eller POST. På grund af de rammer, vi bruger i dette problem sæt, vil du bemærke , at en masse gange, vi gengive en anden side. vi Eller vi gør en anden fil, der ikke nødvendigvis en anden side. Så vi passere i en variabel. Og så det gør en HTML-side ved hjælp af oplysninger fra denne variabel. Det er ikke teknisk passerer oplysninger mellem forskellige websider. , Der passerer information mellem forskellige filer. Og så vi kan bruge en hvilken som helst variabel til at gøre det. Men ja, hvis vi ønskede at videregive information fra en bestemt side en anden side, GET og POST ville være den måde at gøre det. Eventuelle andre spørgsmål om problemet indstillet? OK. Lad os gå igennem, så en specifik del af problemet indstillet. Du vil få brug for, på et tidspunkt, vise nogen portefølje på skærmen. Hvad mener jeg, når jeg siger portefølje, i forbindelse med dette problem indstillet? PUBLIKUM: Det er ligesom de lagre, de har Hvor mange aktier de ejer, prisen, og hvor meget penge, de har tilbage. JASON HIRSCHHORN: Det lyder godt. Så jeg ønsker at vise alle bestande de ejer for hver bestand virksomheds aktier og sandsynligvis hvor meget der er værd, og derefter en separat variabel, hvor mange penge de ejer. Så jeg siger ønsker at beskrive det. Lad os begynde at tale om, hvordan jeg kunne gå om at gøre det, hvad tabeller jeg vil få brug for at have til være i stand til at gøre det. Ja - PUBLIKUM: Well-brugere, og så jeg gætte kan du lave en tabel kaldet Aktier eller sådan noget, der ville være, hvor mange de har købt. JASON HIRSCHHORN: OK. Så jeg har tænkt mig at bruge en tabel kaldet Brugere, der holder styr på brugernavn, formentlig, sandsynligvis noget ID, sandsynligvis en persons password. Hvad er noget andet, som du lige sagt der er forbundet? Nogen udover Michael, hvad er noget andet, der er forbundet med hver bruger, unikke for dem? PUBLIKUM: ID. JASON HIRSCHHORN: ID - hvad der er en anden ting, som vi er sandsynligvis lyst til at vist på denne side? PUBLIKUM: Deres navn. JASON HIRSCHHORN: Deres navn - hvad er en anden ting relateret til dette særligt problem indstillet? PUBLIKUM: Hvilke aktier, de ejer - JASON HIRSCHHORN: Der kommer til at være en masse af, hvad bestandene de ejer. Hvad er en den specifikke værdi selv, at de er nødt til forbundet med dem? Hvordan vil de købe og sælge deres aktier? PUBLIKUM: Kontant. JASON HIRSCHHORN: De er kommer til at have kontanter. Så hver bruger vil have én værdi for kontanter. Og det kommer til at blive unik for hver bruger. Så i brugerens tabel, gør det mening at sætte i kontanter. Du kan selvfølgelig oprette en anden tabel, der har bruger-id'er og deres værdien af ​​kontanter. Men det giver ikke mening. Det giver mening at bare sætte alt dette i én tabel. Så vi kommer til at have en tabel med disse oplysninger. Og så, hvad er den anden tabel vi skal have? Du sagde, en Stocks bord. Hvad skal vi sætte i den Aktier bordet? Enhver, ideer - PUBLIKUM: Virksomheden. JASON HIRSCHHORN: Vi vil at sætte i navn selskab, så AAPL for Apple. Ja. PUBLIKUM: Hvor mange aktier og hvor meget de er værd. JASON HIRSCHHORN: Hvor mange aktier, hvor meget de er værd - hvad der er noget andet, vi har brug for i denne tabel? PUBLIKUM: En bruger-id til at indeksere det. JASON HIRSCHHORN: En bruger-id. Så i den tabel, vi vil sandsynligvis have - lad os sige, hvis det er nogen, der ejer tre aktier, tre rækker, hver med at bruger-id eller at de enkelte bruger- ID, men et andet firmanavn, et forskelligt antal aktier Formentlig og en anden pris for hver af disse bestande. Igen, hvad jeg siger nu, er ikke nødvendigvis gennemførelsen fordi du indser, at der er nogle flere effektive måder at gennemføre den. Men det er et godt sted at starte. OK. Så det er de to tabeller, vi har. Nu ønsker vi at vise denne side. Hvad er den første type forespørgsel ville vi nødt til at gøre. På hver side antaget, at en bruger er logget ind, har vi deres bruger-id. Så hvad er den første type forespørge vi nødt til at gøre? Ja. PUBLIKUM: Deres bruger-id. JASON HIRSCHHORN: Vi har deres bruger-id, når vi begynder at kode ved begyndelsen af ​​vores side. Så hvad er den første type forespørgsel, vi nødt til at gøre, da en brugers id? Vi gik over de fire typer. Der er kun fire mulige svar. PUBLIKUM: Det er at vælge en rekord. JASON HIRSCHHORN: A Vælg - vi ønsker at vælge fra brugerens tabel for at få, lad os sige, deres beløb i kontanter. Og vi kan printe mængden af ​​kontanter på toppen af ​​skærmen. OK. Hvad er den næste type forespørge vi ønsker at gøre? Vi har nogle andre ting vi nødt til at vise. De gemmes i en anden tabel. Så hvordan skal vi få det? PUBLIKUM: Du vælger for dem. JASON HIRSCHHORN: A Vælg - igen, der er kun fire muligheder. Vælg sandsynligvis lyde som den rigtige. Så vi er nødt til at gøre en anden udvælgelsesforespørgsel, igen ved hjælp af denne bruger-id. Og nu ønsker vi at vende tilbage ikke bare én række, bu alle rækker, der matcher vores kriterier, hvor bruger-id er lig med 1. Og så kan vi gå og lade en løkke bare printe alle dem ud på skærmen, måske udskrive virksomheden fra hver af dem på skærmen. Store, det lyder som det er visning af en portefølje, ikke meget mere kompliceret end som så. OK, beslutter brugeren da, at de har masser af penge tilovers. Og de ønsker at købe nogle flere aktier i et lager. Lad os sige, at de allerede ejer dette selskabs bestand også. Så de går til din buy-side. De input virksomhedens navn. Hvad er forespørgslen, efter input virksomhedens navn, som du har brug for eksekvere næste? Ja. PUBLIKUM: Update. JASON HIRSCHHORN: Opdatering - og hvad tabel ønsker du at opdatere? PUBLIKUM: Deres bord, der er baseret på deres ID-nummer? JASON HIRSCHHORN: Så opdatere ikke brugerens tabel - så opdatere Stocks bordet, hvor bruger-ID matcher ikke alene, men bestand navn også matcher. Du får en vis værdi. Og så vil du ønsker at tage denne værdi og tilføjer dog mange bestande de ønsker at købe det. Så du ikke ønsker at blindt overskrive denne værdi. Men du kan faktisk tage det indledende værdsætter og bare opdatere den. Du kan gøre som en plus lig, snarere end blot en ligemænd. Hvad er noget selv - hvis vi er tænker om dette, og vi ønsker at være så robuste som muligt - vi skal gøre før vi kører det opdateringsforespørgsel? De ønsker at købe fem års Apple. Hvert aktiebeløb på Apple er 200 dollars. PUBLIKUM: Vi bør kontrollere penge først. JASON HIRSCHHORN: Vi bør tjek penge først. Vi bør sikre, at de har penge nok. Hvilken slags forespørgsel kan vi udføre til sørg for at de har penge nok? PUBLIKUM: Endnu Vælg. JASON HIRSCHHORN: A Vælg - vi vælger på grundlag af deres bruger-id, at få deres værdi af kontanter. Har nogle hurtige matematik. Og hvis der går mønstre, de har nok kontanter. Så kan vi køre vores opdatering. Eller måske, hvis ikke, vi passerer derefter. Vi giver dem en advarsel. OK. Siger, at de ikke har et firma. De køber et nyt selskab. De køber Microsoft. Hvilken form for henvendelser ønsker vi at gøre, hvis de ønsker at købe Microsoft? Og de ikke ejer nogen Microsoft. Ikke Manu, nogen anden, nogen foruden Marcus? Carlos - PUBLIKUM: A Vælg, for at sikre de har penge nok. JASON HIRSCHHORN: Det lyder godt. PUBLIKUM: Og så du indsætter på [uhørligt]. JASON HIRSCHHORN: Præcis, vi er lyst til at indsætte i Stocks tabel. Og vi vil ønsker at indsætte. Vi kan indsætte deres bruger-id, navn af virksomheden, og hvor mange aktier de ønsker at købe. Hvad er nogle andre operationer, er sider eller funktionalitet du er nødt til at gennemføre i P-Set 7, at vi skulle gå over? PUBLIKUM: Faktisk jeg slags har et spørgsmål om dette ene. Før du vise porteføljen, bør du tjekker Yahoos hjemmeside Sørg for, at aktiekurserne har ikke ændret sig? JASON HIRSCHHORN: Det er lyde som en god idé. Så hvad Marcus siger, er, OK, lager priserne er under konstant forandring. I de lagre, de ejer bord, vores tabel kaldet Stocks, kunne vi spare prisen på aktien, de købte det på. Men, der ikke synes, at den robuste, fordi prisen på bestanden er konstant kommer til at ændre. Så i virkeligheden, har du sandsynligvis ikke brug for at gemme prisen på aktien. Men hver gang du viser deres portefølje, du genopfriske eller opdatere den prisen på aktien. Og hvis du har - og du allerede har. Jeg kender jer alle har kigget i Problemet sætter tilbage allerede. Du har indset, at vi har skrevet noget kode til dig, der vil give dig at få prisen på en bestand, givet en virksomheds navn. Så ja, der sandsynligvis lyde en smule mere robust. Men at tabellen ikke nødvendigvis at gemme prisen på aktien. OK. Hvad er nogle andre funktioner du nødt til at gennemføre denne uge, at kan vi tale om? Jeg ønsker at tale om dem. Hvad vil du tale om? Det er nok i denne spec. Jeg ville bare rulle ned til bunden af spec og beder mig det første ord du se, at ikke giver mening. En anden funktionalitet - lad os tale om én. Vi starte der. PUBLIKUM: Optagelse af historier. JASON HIRSCHHORN: Optagelse historie, stor én. Så du er nødt til at holde styr af en historie af transaktioner. Så du ønsker at holde styr på alle gang de købe eller sælge en bestand. Jeg købte min bestand. Vi har lige sagt, er det sandsynligvis fornuftigt til at omfatte en Select, for at få deres beløb i kontanter og tjekke tilbage. Det sandsynligvis er smart så at omfatte en indsætte eller en opdatering, afhængigt af uanset om de ejer denne bestand. Hvis vi også ønsker at holde styr på en historie, hvordan kan vi gøre det? Betyder at gå i Aktier bordet? PUBLIKUM: Nej. JASON HIRSCHHORN: Nej det sandsynligvis går i en anden tabel. Fordi sige du køber 10 aktier i Apple. Så kan du købe yderligere 10 aktier. Du ønsker at trække separate records. Det er to adskilte transaktioner. Så vi har en anden tabel, en historie bord. Så igen, vi køber. Vi udfører en Select, så en Insert eller Update. Hvad gør vi nu? Hvad er det næste forespørgsel, vi udfører når vi køber noget? Vi ønsker at holde styr på historien. Ja. PUBLIKUM: Du ønsker at holde styr af mislykkedes transaktioner også. JASON HIRSCHHORN: Nå, før vi sige, hvilken type transaktion, Hvad vil vi - Hvilken type forespørgsel, Carlos, ville giver os mulighed for at holde styr ting i almindelighed? Du har fire gæt. Hvilken en tror du? PUBLIKUM: Opdatering. JASON HIRSCHHORN: Ikke opdatere. Hvad er dit andet gæt? PUBLIKUM: Valg. JASON HIRSCHHORN: Hvis du ønsker at beholde styr på noget, du sandsynligvis vil at skrive det ned et eller andet sted eller gemme den til senere. Så hvis ikke opdatere, så - PUBLIKUM: Indsæt det. JASON HIRSCHHORN: Indsæt, der vi går. Ja, så du vælge den mængde kontanter, de har, lyder fantastisk. De har ikke penge nok. Denne transaktion er ikke at gå på arbejde. Nej, du behøver ikke at holde styr på en transaktion, hvis det ikke virker. Eller du kan, hvis du ønsker at give dem en hård tid. Men du behøver ikke at. Derefter skal du indsætte eller opdatere i deres lagre tabellen. Og nu, du har din anden tabel. Du har din historie bord eller uanset hvad du ønsker at kalde det. Og i den tabel, du vil at indsætte en ny række. Det er sandsynligvis kommer til at have brugerens id. Det er formentlig kommer til at have navnet på bestanden. Det er formentlig kommer til at have et tidspunkt, at de gjorde det. Og i dette tilfælde, vil du sandsynligvis ønsker at indsætte prisen. Fordi for en historie, du ikke ligeglad med, hvad den aktuelle pris er. Du bekymrer dig, hvad prisen er, når de købt eller solgt noget. Så det lyder som, at gennemføre opkøb fuldt involverer en række forskellige SQL-forespørgsler, men helt ærligt, ikke så meget kode samlet. OK. Og der tager sig af historien. Lad os sige, vi ønsker at vise vores historie. Vi talte om at vise vores portefølje. Hvordan ville vi viser vores historie? PUBLIKUM: Formentlig kronologisk. JASON HIRSCHHORN: Formentlig kronologisk - hvad forespørgslen tror du vi ville bruge? PUBLIKUM: En udvalgt. JASON HIRSCHHORN: En udvalgt - Vælg måske alle rækker fra tabellen der matcher bruger-ID og derefter vise dem kronologisk, lyder godt. Har vi brug for at skrive kode til sortere gennem denne liste? PUBLIKUM: Nej, fordi du fortalte os er der en stigende og faldende ting. JASON HIRSCHHORN: Thing? PUBLIKUM: Ja. JASON HIRSCHHORN: Ja. OK, ikke vende i kode til mig, at manuelt sorterer gennem dine spørgsmål, at sortere dem. At koden er allerede givet. Du kan skrive en udvælgelsesforespørgsel der sorterer ting. Sortere dem på forhånd og derefter printe dem ud. Det gør så meget mere mening at gøre det på den måde, end den anden vej. Ja. PUBLIKUM: Har vi brug for at sortere dem på forhånd? Betyder det, at du sortere dem i databasen? JASON HIRSCHHORN: udvælgelsesforespørgslen returnerer dem til dig sorteres. Så gør det, snarere end blot have dem vende tilbage til dig i en tilfældig rækkefølge og derefter sortere dem selv. Ja. PUBLIKUM: Er der en måde at holde det sorteret i selve databasen, således at behøver du ikke at sortere det hver gang du - PUBLIKUM: Kan du indsætter det sorteret? JASON HIRSCHHORN: Spørgsmål - betyder det noget, at tingene sorteret i databasen? PUBLIKUM: Nej. JASON HIRSCHHORN: Jamen, de er sorteret. De er ordnet kronologisk. Men lad os antage, at tingene er ordnet kronologisk, fra top til bund. Vi har en Google-formular. Når nogen reagerer på vores Google dannes, det bare bliver sat i bunden af ​​denne tabel. Betyder det noget, at tingene er sorteres ikke kronologisk? PUBLIKUM: Hvis det ikke er kronologisk, behøver du ikke at sortere det hver gang du tager info ud. Men hvis den allerede er sorteret, kan du ikke ikke nødt til at gøre det ekstra funktion opkald? JASON HIRSCHHORN: Så det er faktisk en god pointe. For os som programmører, det kunne noget. Og vi måske ønsker at finde en database der ikke sortere tingene kronologisk. Eller oprettet vores database, så det holder tingene sorteret efter bruger-id. Så på den måde, siger, vi har 1.000 bruger-id'er. Eller Facebook, har vi millioner af bruger-id'er. Vi ønsker ikke vores bord til bare at være tilfældig eller vores database til at være tilfældig. Det ville være rart, hvis alle bruger-id'er blev sorteret. Så vi kunne køre binære søgninger på vores bord, og så bare finde det specifik luns. Så ja, alt efter - hvis vi skaleres op, vi måske ønsker at finde en database der holdt tingene sorteret i en anden måde, således at disse forespørgsler ville tage mindre tid. Og vi behøvede ikke at gå igennem vores hele databasen i hver enkelt række i en given tabel. Men det niveau, vi arbejder på, vi behøver ikke at bekymre sig om at holde ting sorteres. Vi kan antage, at den tid det tager denne forespørgsel til at køre vil være ubetydelig lyset af, hvad vi har at gøre med. Men ja, rigtig god idé - som vi skalere op, det kan give mening at designe vores database i lidt af en anderledes måde. En sidste database design ting jeg vil at nævne så godt, fordi du vil sorteres, eller scorede snarere om udformningen af ​​din database. Vi talte om dette. Cash er unik for hver bruger. Så du har fået en tabel kaldet kontanter, har deres bruger-id, og deres mængde kontanter og derefter en tabel kaldet brugere, der har deres bruger ID og deres brugernavn. Disse tabeller kort på hver anden-til-én. Det sandsynligvis giver mening for dem til at være en enkelt tabel. Så lad os antage at du har en bruger tabel, der holder styr på brugernavne og kontanter. Du har nu en tabel, der har den lagre en person ejer. Og en person kan eje mere end én bestand. Så disse ikke kort på hinanden én-til-én. Det giver ikke mening at have en kæmpe tabel, der har 30 poster, alle gentage et brugernavn, der alle gentage en adgangskode, at alle gentage en række af kontanter. Men hver har måske en anden bestand navn eller en anden bestand pris. Det giver ikke mening at have at mange store poster. Være smart om når du opretter disse databaser, så du ikke laver noget dumt gerne, at gentage en masse unødvendige oplysninger. OK. Vi har to minutter tilbage. Folk udenfor er glade for at slutte sig til os eller sandsynligvis formodentlig starte deres egen klasse. Er der nogen har nogen spørgsmål før vi slutter op? OK, det var faktisk en hvirvelvind gennem alt. Jeg undskylder, at det skulle være så hurtig og at vi ikke kunne være så hands-on denne uge, som jeg ville have gerne have været. Men hvis du har spørgsmål om noget vi gik over eller noget i dette problem sæt - Formodning du har læst det og sætte i en god tro indsats - velkommen til at kontakte mig eller kontakte mig. Jeg er mere end glad for at arbejde gennem din kode med dig eller besvare alle spørgsmål, du har. Husk på, at i denne uge, en masse din tid vil blive brugt på at lære det ny syntaks og forsøger at forstå hvordan man skriver SQL-forespørgsler eller PHP funktioner eller aftale med en MVC ramme. En masse af din tid i denne uge sandsynligvis vil ikke forsøge at finde ud af skøre logik, at vi er beder dig om at gøre. En masse af det, vi bare gik over er relativt ligetil. Så det betyder ikke vente indtil det sidste minut. Men det betyder, justere, hvordan du gør din arbejde i overensstemmelse hermed, for at sikre du forstå og lære syntaks. Så du er ikke, alle af en pludselig, vel vidende præcis, hvad du ønsker at gøre, men med ingen idé om, hvordan man præcis skrive det. OK, jeg vil se dig i næste uge.