JASON Hirschhorn: Velkommen alle til uke åtte. Vi har en spennende uke foran oss. Dere har due i denne siste par av forelesninger til PHP, SQL, HTML, CSS, så fire splitter nye språk som kommer å ta opp resten av dette kurset. Vi vil også lære et par andre språk før slutten kursets. Men uansett, unødvendig å si, er dette en veldig spennende tid i CS50, nå du har mestret C, tilsynelatende, og er går videre til programmering for nettsteder. Så denne uken, har vi tenkt å gå på en rask tur gjennom fire språk jeg nettopp nevnte, HTML, CSS, PHP og SQL. Og forhåpentligvis vil vi la god tid på slutten av delen for å snakke om denne ukens P sett og svar eventuelle spørsmål du alt har. Hver uke, den samme listen over ressurser for deg, for å hjelpe deg med ukens oppgavesettet og går over materialet - men dette uke særlig for disse nettbaserte oppgavesett, er det en rekke andre ressurser ut det at du vil sannsynligvis finner utrolig nyttig. Jeg har dem her oppe. Jeg vil sende deg dette etter delen, og dette også være online. Men i særdeleshet, er det nok av store ressurser der ute. Det er også noen ikke så stor seg, så vær forsiktig med disse. Men på dette lysbildet, jeg har fire gode ressurser, en for hver av de språk som du skal jobbe med denne uken - en referanse ark for HTML, en referanse ark for CSS. Denne retten her er PHP manualen. Så i stedet for å skrive mann og deretter en PHP kommando, er dette hvor du ville gå å se opp funksjonen prototype og eksempler og også noen tips og triks for å bruke PHP funksjoner. Du vil bruke dette området ofte, så jeg oppfordrer deg til å bli kjent med den. Det kan være litt teknisk, men det gir også massevis av ressurser og eksempler for alle funksjoner og selv andre, som hvordan å bruke arrays eller ulike typer variabler. Dette området er svært nyttig for PHP. Og så, for SQL, hvis du due i dette ukes problem sett, vet du at vi bruker en database. Og vi tilgang til denne databasen gjennom en relativt fin brukergrensesnitt. Eller det er en måte å få tilgang den databasen. Brukergrensesnittet er kalt phpMyAdmin. Det er en SQL-kategorien, som vi vil se på senere i dag. Og du kan skrive inn i deres prøve SQL spørringer, for å gjøre ting i databasen og deretter kjøre disse søkene. Og hvis de er riktige, det vil si, dette er riktig. Hvis de er feil, det vil si, det er feil. Det er et flott sted å øve på SQL-spørringer før du skriver dem inn koden, for å sørge for at du har formatet riktig. Endelig, en annen nettside på her. Dette er nettstedet hvor du kan gå og sjekke for å sørge for at HTML-kode er gyldig. Så før du slår dine problemer innstilt denne uken, sørge for at alle HTML er gyldig. I forrige uke hadde du kjører Valgrind, til pass på at du ikke hadde noen minnelekkasjer. Denne uken, må du sørge for at alle av koden din er gyldig HTML5. Hvis det ikke er gyldig HTML5, er du kommer til å få poeng av. Så sørg for - bare fordi det fungerer ikke mener det er helt gyldig. Kjør koden din via denne nettsiden før du slår det i. Igjen, her på nettsiden. Hvis du har noen tilbakemeldinger for meg, har vi et par av flere deler igjen, og jeg ønsker alltid å gjøre det jeg kan for å gi dere alle med den beste delen oppleve mulig. Så gi meg beskjed hvis det er noe jeg kan gjøre for å forbedre eller om det er ting du ser at jeg kunne gjøre det bedre. Takk, Avi. Sett det på nettsiden. Dette var den sykkelen jeg hadde da jeg var, la oss si, fire hjemme. Det er en Teenage Mutant Ninja Turtle sykling, i tilfelle du ikke kan fortelle, fordi det er litt uskarpt. Du kan få det nå på ToysRUs for, tror jeg, ca 100 kr. Men den funksjonen i denne sykkelen som jeg vil du å ta hensyn til er disse akkurat her. Disse er de støttehjul. Frem til nå har du vært håndholdt gjennom C. Og vi har tatt lang gang, to måneder pluss, å gå gjennom C. For disse neste par språk, vi kommer ikke til å bruke så mye tid. De trening hjul kommer av. Og vi kommer til å dykke inn i disse språk raskt og bevege seg gjennom dem raskt, noe som ikke er å si at vi bare kommer til å la deg svømme ute med ingen måte å støtte selv eller finne ut hvordan disse språk fungerer. Jeg bare viste deg en liste over ressurser til å hjelpe deg. Men husk at PHP er utrolig lik C. Vi skal gå over det i dag, og noen av forskjellene. Men for det meste det er for sløyfer. Det er hvis forholdene. Når du ønsker å løse et problem, du kommer til å bruke en kombinasjon av disse. Det er veldig lik. Logikken bør være svært likt hva du har gjort i fortiden. Hva er egentlig nytt denne uken er det syntaks og hvordan du uttrykker deg. Og du ønsker å skrive en for loop, men det kan se litt annerledes. Eller du ønsker å opprette en matrise, men det kan se litt annerledes. Så husk at, går fremover, logikk er svært likt det du har gjort i fortiden. Men du er nå kommer til å bli møter mye ny syntaks. Og vi kommer ikke til å gå gjennom alle elementer av syntaksen. Så det er egentlig opp til deg å finne ut, online eller gjennom å nå ut på Diskuter eller maile meg eller snakke med hverandre, hvordan å skrive ting i PHP og hvordan å skrive SQL-spørringer og hvordan du bruker HTML og CSS. Men bare så du vet, det er ikke det vi prøver å kaste deg ute igjen å svømme haiene. Dette er hva du vil sannsynligvis gjøre med det endelige prosjektet, hvis du velger en annet språk, som IOS og Objective C, eller hvis du bestemmer deg for å starte programmering i fremtiden, og dykke til andre språk, som Python eller Ruby. Ofte er det logiske svært like på tvers av alle disse språkene, og syntaks er det som er annerledes. Og det vil være opp til deg, som programmerer, å gå bruke nettet ressurser tilgjengelig for deg og figur ut hvordan de skal uttrykke hva du vet hvordan å uttrykke i C, i en annet språk. Så dette er god praksis, både for din endelige prosjektet, og igjen, for hva vil du sannsynligvis gjøre etter at du forlater CS50. Før vi går videre, gjør noen har noen spørsmål om hva Jeg har gjort så langt? Flott. La oss gå videre. Først skal vi snakke kort om chmod kommandoen. Dette vil vi gjøre i starten av dine problemer innstilt. En av de aller første instruksjoner for deg, etter at du har lastet ned fordelingskode, er å endre tillatelser av filer og kataloger du mottar. Kan noen våge en gjetning eller vet hvorfor det er viktig å endre tillatelser av visse filer og kataloger på datamaskinen din? Avi - PUBLIKUM: Da ingen unntatt for du kan se hva du gjør? JASON Hirschhorn: OK. Så hvis vi ønsker å sette noe på Internett og du har tillatelser satt som bare du kan se noe, så ingen andre kan se hva du har opprettet. Hva annet? Yeah. PUBLIKUM: Forhindre noen andre at du ønsker ikke å se noe, fra å se noe. JASON Hirschhorn: Det er sant også. Det er sannsynligvis noen kode som du skriver, at du ikke gjør det ønsker folk å se. Du er sikkert OK med folk ser HTML og Javascript. Men din PHP, en back end-kode, mye logikken til koden din, kanskje ting som lagrer noen av passordene dine for databasen din, gjør du ikke vil at folk skal se at type informasjon. Så det er viktig at hver fil og katalog vi skaper har tillatelser gjelder hvorvidt vi ønsker folk å se disse typer filer og kataloger og være i stand til å få tilgang til dem og potensielt også endre dem. Så er det tre typer av tillatelser. Det er en lese tillatelse, noe som betyr du kan lese en fil eller en liste på innholdet i katalogen. Det er skrivetilgang, som betyr at du kan endre en fil eller endre en katalog og deretter utføre tillatelse, noe som betyr at du kan kjøre en fil eller rettere sagt, du kan flytte inn i en katalog. Så CD noe, hvis du har den tillatelse til å utføre det, kan du flytte inn i den katalogen. Dette er et lite eksempel. Igjen, har du gått over denne i oppgavesettet. Men jeg opprette en katalog med mkdir kommandoen. Jeg endre tillatelsene. Disse to linjene faktisk gjør akkurat det samme. Det er for å illustrere at syntaksen for endring av tillatelser, enten du gjør a + x eller 711, de er de samme. Vi ser ned på denne hyggelig bord. Vi ser at det er bruker tillatelser først. Det er deg, den enkelte, og serveren din, potensielt. Og så er det gruppen og andre. Forskjellene mellom de to er relativt trivielt. Så generelt, vil vi klumpe de sammen. Men egentlig, hvis vi har en fil kalt inkluderer at vi ønsker å være i stand til å redigere oss selv og at vi ønsker andre til å være i stand til å utføre, det er tillatelse 711. Og vi ser at ned her i denne tabell. Vi har en lese, skrive, og utføre. For hver enkelt av oss, vi ønsker å være i stand til å gjøre dem. Gruppe og andre, vi vil bare ha at de skal være i stand til å utføre. Måten vi oversette det inn i en rekke tillatelse er gjennom binær. Så hvis vi har tre enere, det er en en i de kolonnen, en 1 i toere kolonne, en 1 de fire kolonne. Det er 7 rett der. Og denne tillatelsen er en. Denne tillatelsen er en. Så 711 når er det samme som å gi oss selv lese, skrive, og utføre, og alle andre kjørerettigheter. Denne linjen her, vi generelt vil ha lese og skrive når vi opprette en katalog. Så denne linjen her legger bare utføre privilegier til alle. Så det ville være beslektet med, i tillegg til det vi har, legge en, en, en for alle. Mens dette, er det unødvendig å legge til lese og skrive. Men hvis du kommer til å bruke tallene, du kan ikke bare legge til noe. Du overskrive hva tillatelse var der og implementere dem med den nye nummeret du gi. Det var ganske rask. Er det noen som har noen spørsmål om endring av tillatelser? OK. Hvis jeg har en PHP-fil, hvilke rettigheter ønsker jeg det å ha? Dette er i problemet sett spec. Så du kan se på spec og deretter lese meg svaret. PUBLIKUM: Du vil at brukeren skal har lese-og skriverettigheter. Og du vil at alle annet å ha ingenting. JASON Hirschhorn: Og hva tall er det? PUBLIKUM: 600. JASON Hirschhorn: 600. Så chmod 600 - når du skriver ut en PHP-fil, chmod den til 600. OK. Jeg har en katalog. Noen foruten Jeff, Jeg har en fil mappe. Hva tillatelser ønsker jeg å gi til den mappen - også i oppgavesettet spec, rett under dette svaret eller forrige svar? Også potensielt på lysbildet - Marcus. PUBLIKUM: For det mappe, er det 711. JASON Hirschhorn: 711 - så en mappe, vil du gi 711. Du ønsker å være i stand til å lese den mappen, endre kataloger, flytte inn den mappen. Og du vil at alle andre skal kunne å navigere i den mappen, men ikke nødvendigvis å endre innholdet. Hva om en ikke-PHP-fil, si, en Javascript-fil? Hvilke rettigheter vi ønsker å gi den type fil? PUBLIKUM: 644. JASON Hirschhorn: 644 - hvorfor vi ønsker å gi det 644? PUBLIKUM: Å la andre folk lese det. Og du lese eller skrive det. JASON Hirschhorn: Så rett, alle sammen annet kan lese at Javascript-fil. Og du kan endre det, i tillegg å være i stand til å lese den. Så en av de vanligste bugs folk har med dette problemet satt og deres endelige prosjektet, hvis det er en web-basert finalen prosjektet er, vil de ikke har satt de riktige tillatelsene. Og de vil ikke være i stand å se deres hjemmeside. Eller en bestemt del av deres hjemmeside. Så sørg for at du setter tillatelser riktig. Ikke bare anta at det vil gjør det automatisk for deg. OK. Det var en liten ting som vi brukte en god mengde tid på, så vi kunne spikre det. La oss gå videre til HTML. Og igjen, for disse neste fire emner, vi kommer til å gå gjennom dem relativt raskt. Så kan du gjerne stoppe meg når som helst tid, hvis du har noen spørsmål, enten de er relatert til hva jeg dekke eller noe fra forelesning eller selv fra problemet definert. Stopp meg når du trenger det. Når vi kommer til slutten, vil vi bare begynne å gå over problemet sett. Så HTML står for Hypertext Markup Language. Det er ikke et programmeringsspråk. Alt den gjør er struktur innholdet og også gi noen metadata. Slik at for eksempel antagelig er mange av du har brukt Facebook før. Og du kan ta med koblinger i, eller du kan legge en link som din status. Og så, vil du legge merke til at koblingen alltid har et fint bilde til det og litt tekst. Vanligvis er at noen metadata for en web-side. Og det er Facebook-spesifikke metadata. Og så, når Facebook leser at side og sette inn denne koblingen, det ser for den spesifikke metadata, slik det vet hva bildet skal vises, hva tittelen for å vise, og hva abstrakt tekst som skal vises. Så vi kan inkludere metadata med vår nettside ved hjelp av HTML. Og det hjelper også oss struktur innholdet, generelt, hvilken vi ønsker å gå der. Alt i HTML er et element. Og elementer rett her - dette CS50, er tekst elementet. Og det har noen koder. Den har dette en kode. Og vi legger merke til er det en en på begynner, og deretter en skråstrek a, så lukking av en kode på slutten. Noen ganger, det er ikke et åpent tag og en sluttkode. Det er bare én ting. Vi får se et eksempel på at på neste lysbilde. Slik at du ikke trenger en åpen og en sluttkode. Men for dette, er vi skal kapsle inn dette CS50 element i en ankerkoden. Og egentlig, disse kodene forteller leseren hva de skal gjøre med vedkommende element. Så igjen, er CS50 teksten vi kommer til å se. Og det kommer til å være en type anker. Ankeret er i hovedsak brukt for koblinger til noe. Spesielt, som du kan allerede si, er dette en koble til CS50 hjemmeside. Den neste delen av koden - eller generelt, en del av kodene er attributter. Og vi ser her, at det en tag har en attributt, dette href attributt. Og de endre et bestemt merke. Faktisk, hvis du går til en av de nettsteder eller referansene jeg ga deg før eller slå opp en kode på nettet, du vil legge merke til at det er massevis av potensielle attributter. Dette er trolig en av de mest vanlige. Dette forteller meg for å lage en koble til bestemt nettsted. Og attributter generelt er gitt, om ikke utelukkende gitt, i nøkkel-verdi-par. Så her er nøkkelen, href. Og verdien er denne retten her. Og det vil komme godt med senere, når vi begynner å bruke noen bibliotekene til hjelpe oss kode i Javascript eller skrive HTML-innhold. Vi er ofte tenkt å være - akkurat som vi ville gjøre matrise brakett 0 og at ville gi oss noen verdi. I fremtiden vil vi skal gjøre mye av ting som noe brakett href. Og det vil gi oss verdien av href, eller om vi ønsker å oppdatere href tasten og deretter gi det en bestemt verdi. Så akkurat som med matriser hvor vi hadde Nøkkelen 0 eller tast 1 eller tast 2 eller selv med en hash table, vel, med hash tabeller i tillegg, har du sannsynligvis har hatt - det var en matrise, så tast 0, tast 1, tast 2. At indeksen der, kan vi tenker på det som en nøkkel. Og verdien er uansett ble lagret der. Alle disse egenskapene er nøkkel-verdi par. Og det vil være viktig for å endre dem eller oppdatere dem eller sette dem senere. Til slutt, har du sett denne strukturen før, men dette er den mest grunnlegg struktur av HTML-siden. På toppen, forteller vi deg som Dette er faktisk HTML. Og så har vi en åpen HTML tag og en nær HTML-kode. Så alt innsiden av dette er HTML. Vi ser hodet og kroppen. Lederen for dokumentet På generelt hva? Eventuelle gjetninger for hva du satt i hodet? PUBLIKUM: Du setter tittelen og stil. JASON Hirschhorn: Tittelen. Det var en stor gjetning. Jeg kan ha tipset du av til den. Hva er noen andre ting? Vi nevnte ene av dem som kan gå i hodet. PUBLIKUM: Han sa, stiler. JASON Hirschhorn: Styles - så hvis du ønsker å koble til, i en Java eller enda en CSS, som du snakker om når du snakker om stilarter. En annen fil, vil koble inn en du utenfor fil, vil det sannsynligvis kommer i hodet. Hva annet? Vi har nevnt et par lysbilder siden en av de tingene som HTML kan gjøre for deg. Det kan gi - starter med en M - PUBLIKUM: Metadata. JASON Hirschhorn: Metadata - så mye av metadataene vil gå i hodet, fordi det ikke nødvendigvis trenger å være en del av kroppen av koden din. Det er generelt - kroppen er innhold, hva noen ser. Og så jeg bare ga bort svaret til mitt neste spørsmål. Men i kroppen er vanligvis innholdet som kommer til å bli vist på nettsiden. Som vi skal se, kompliserte nettsteder en tendens til å blande seg eller endre opp hva de satt i hodet og kroppen. Men generelt, inneholder lederen ting at brukeren ikke kommer til å ser på skjermen. Den linker i andre filer og gir metadata. Mens, inneholder legemet alt brukeren kommer til å se. Noen ide hva dette p tag betyr? PUBLIKUM: Avsnitt? PUBLIKUM: Skriv ut. PUBLIKUM: Betyr ikke print. PUBLIKUM: Betyr det avsnittet? JASON Hirschhorn: Punkt - så dette er et avsnitt. Og denne p-taggen, jeg kunne bare ha skrevet dette på skjermen, og deretter inkludert et linjeskift på slutten av den. Noen som vet hvordan man skal inkludere et linjeskift? PUBLIKUM: pr - JASON Hirschhorn: pr - PUBLIKUM: Slash pr? JASON Hirschhorn: pr slash står for linjeskift. Men avsnitt har bestemt formatering. Og vi får til formatering i en andre, når vi snakker om CSS. Men alt inni disse p-koder vil ha noen standardformatering forbundet med det, sannsynligvis noen avstanden mellom forskjellige avsnitt. Og det vil være en måte å differensiere blokker av kode. Eventuelle andre koder - hva er andre koder som du har sett? JASON Hirschhorn: h1 gjennom h6. h1 gjennom h6, hva er og at? PUBLIKUM: Det vil betegne hvor stor og fet bokstavene er. JASON Hirschhorn: Høyre, det står for header. Og så header1 er en stor overskrift. Det vil sannsynligvis, som standard, være dristig, en stor skriftstørrelse, sannsynligvis sentrert på skjermen, hele veien ned til h6, som er en mindre skriftstørrelse, mindre streket. Selvfølgelig kan du, i du er CSS-fil eller et sted i koden din - som, igjen, vil vi få til det i et sekund - endre hva standard virke av en h1 tag er. Men husk at Chrome, Safari, Firefox, Internet Explorer har alle Standard ser for mange disse standard koder. Du kan, igjen, alltid endre hvordan de ser ut. Eventuelle andre koder som alle har sett? Yeah - PUBLIKUM: En div nettstedet. JASON Hirschhorn: En div tag - div tag ikke har noen innebygde format, per se, som brukes til å blokkere ulike typer kode. Eventuelle andre koder? Ja. PUBLIKUM: li - JASON Hirschhorn: li - hva er li for? PUBLIKUM: List. PUBLIKUM: Liste JASON Hirschhorn: li er for listeelementer. Det er to typer av lister. Hva er de to typene? PUBLIKUM: Bestilt og sorterte. JASON Hirschhorn: Bestilt og unordered - så ul stands for sorterte liste. Det er hvis du vil ha en kule peke, en liste over kuler. En ordnet liste er en nummerert liste. Og så vil du gjøre et åpent ul tag og deretter tonnevis av listeelementer og deretter lukke ul taggen. og at vilje lage en ikke-sorterte liste. Vi kommer til å se noen eksempler av HTML i en bit. Men før den tid, ønsker jeg å få til CSS. Og CSS står for Cascading Style Sheets. Og dette er veldig nært beslektet til HTML, men litt annerledes. Dette hjelper deg å formatere alt innhold at HTML-strukturer. Så i CSS, vi generelt ikke ønsker å style hver enkelt header eller hver enkelt bilde eller hver enkelt avsnitt. Vi ønsker å style noen elementer eller kanskje et bestemt element. Og måten vi style en bestemt elementet for å gi den en ID. Så dette er et attributt. Den har en nøkkel og en verdi. ID er nøkkelen. Logo er verdien. Jeg plukket logo tilfeldig. Og hvis du gi noe en ID, generelt, som bare bør gis til ett element. Og så, i stilarket, kan du stil det bestemte element, men du vil den skal se. Hvis du ønsker å style en rekke elementer, kanskje det er en viss klasse av overskrifter, bare noen av overskriftene. Kanskje det er en overskrift og et bilde og en avsnittet du ønsker alle å være sentrert. Deretter kan du gi disse gruppene av elementer alt en klasse. Og du kan gi klassen bestemte stiler. Så en ID og en klasse er to måter å bryte opp koden din, slik at du kan bidra til å være mer spesifikk i hva du stil. Det er tre måter å style. Den første er, med denne stilen attributt. Så du ser, er nøkkelen stil stil. Stilen verdi er faktisk en annen viktig verdi listen. I dette tilfellet, plukket jeg en nøkkel, text-align. Og jeg sa, center. Du spør kanskje deg selv på dette punkt, hvordan visste jeg om text-align. Hva gjør at selv gjøre? Det er et stort spørsmål å stille, og vi kommer til å få det i et sekund. Så det er en måte å style noe, bare gi den stilen attributtet. En annen måte å style noe er - dette er Akshar nevnt tidligere. Du kan bruke stil koder og sette det i hodet av HTML-dokumentet. Så du i utgangspunktet si, innholdet inni her er litt stil innhold. Og formatet for det er ting du ønsker å style og deretter, på innsiden av klammeparentes, nøkkelverdien par attributter som du ønsker å gi til den bestemte type element. Til slutt, og dette er mest vanlige måten. Og dette er måten vi gjøre det i p sett 7. Det er et eksternt stilark. Så du har en. Css-fil. Og på innsiden av det, ser du en masse ting som ser ut som dette, navnet av noen type av element eller en ID, eller en klasse, og deretter, på innsiden av krøllete bukseseler, en liste over viktige verdi-par. Selvfølgelig, hvis du oppretter en ekstern fil, du kommer til trenger å ta den - skarp inkluderer, som ville være C analogi - i HTML-filen. Så du må inkludere dette koden i HTML-filen. Dette blir navnet på filen og forutsatt at det er i den samme katalogen. OK. Det var mye. Og vi nå kommer til å puste og se på noen virkelige, levende nettsted og utforske dette mer. Men før vi gjør det, gjør noen har noen spørsmål? Så hvis du ønsker å gjøre dette sammen med meg, kan vi gå til apparatet. Og jeg valgte CS50 hjemmesiden. Du kan gjøre dette med en hvilken som helst nettside. Men hvorfor ikke vi starte med den CS50 hjemmeside? La oss oppdatere. Jeg faktisk anbefale deg å gjøre dette sammen med meg, fordi det vi kommer til å gjøre nå kommer til å være utrolig hendig for deg, ikke bare i P-Set 7, men i P-Set 8 også. Yeah. PUBLIKUM: Er det en måte å gjøre kommentarer i HTML, uten å bruke PHP? JASON Hirschhorn: Ja, kan du komme med kommentarer i HTML. PUBLIKUM: Hva er syntaksen? PUBLIKUM: utropstegn dash dash. PUBLIKUM: OK. JASON Hirschhorn: Ja. Det er syntaksen. Du kan legge inn kommentarer i HTML. Du kan legge inn kommentarer i PHP. Som du vil se, kommentere i HTML vil fortsatt dukke opp, når vi ser på HTML-kildekoden til et bestemt nettsted. Så dette cs50.net. Hvis du høyreklikker i de fleste moderne nettlesere på de fleste helst side, se deg siden kilden. Så la oss gjøre det på CS50. Og lo og se, vi se en gigantisk ting. CS50 faktisk ser ganske fin. Mange nettsteder vil ikke ser dette fint. Hvis du går til Googles hjemmeside og åpne den opp. Det vil ikke se dette fint. Men du merker det, på toppen - dette er litt lite. La oss gjøre dette større. OK. På toppen, DOCTYPE HTML, det er kjent. Så ser vi den åpne HTML-koden og hodet, akkurat her, alle av disse meta tags. Og du kan se denne og, ikke kommer til å gå inn på det nå. Men jeg er nesten positivt på at de ville være Facebook. Det er faktisk den Facebook. Jeg tror som står for åpen graf. Så husk, jeg var nevne det er Faceboook-spesifikke metadata du kan gi til en side. Det er det som er rett her. Så når du kobler denne siden på Facebook, bildet det kommer til å vise er dette bildet til høyre her. Og du faktisk se at det er Facebook, fordi det er Facebook-bildet. Men uansett, vi får til side. Så vi har noen metadatakoder her. Vi ser CS50 tittelen. Og igjen, er tittelen hva som går opp her i nettleserfane. Vi ser dette er knytte på, akkurat her, en ekstern Javascript-fil. Vi har ikke snakket om Java mye, men neste uke - og i hvert fall hvis du gjør en web-basert problem sett, du skal bruke Javascript. Dette er hvordan du kobler i eksterne Javascript-filer. Vi ser her, endelig, CSS stilark, dokumenterer at disse stiler av denne koden. La oss faktisk åpne det opp og ta en titt veldig raskt. Dette ser gal. Det er ingen måte jeg ville være stand til å lese gjennom. Så kan du faktisk skjønt, hvis du tar en titt, kan du liksom se at Det er - der vi går. Det ser ut som noe vi har sett før, bakgrunnsfarge, sette det lik noen rød-grønn-blå verdi. Dette ting liksom ikke skal synes at utenlandske, selv om, når presentert som dette, kan det være litt overveldende. Vi kommer ikke til å se på dette CSS-fil eller bruke mye tid på det, fordi det er, igjen, ganske vanskelig å lese. La oss gå tilbake til dette HTML-side for CS50. Og la oss bla ned til kroppen. Og inni ser vi dette div tag. Vi ser en overskrift her. Vi ser ankerkoden. Og denne listen element er gitt en bestemt klasse. Og vi ser at klassen gjentatt om og om igjen. Der er du Curtis. Det er kommentaren i HTML5. Og som du legger merke til, kan vi fortsatt se det, men det er ikke å dukke opp. Det er faktisk veldig interessant. Det ser ut som denne listen score element er kommentert ut. Hvis vi går til denne siden, igjen, er det fortsatt vises der, så interessant. Å, hvorfor, fordi det av dette neste linje. Hva annet kan vi se av interesse? Resten av dette er mer forvirrende, i håndteringen av denne høyre halvdel av nettside, som er en liten litt mer komplisert. Så dette er hva noen HTML kommer til å se ut. For meg selv, er dette en lite overveldende, og dette gjør det ikke hjelpe meg så mye. Men det er noe som gjør det, faktisk, hjelpe meg mye. Og det er det jeg bruker når jeg er prøver å finne ut hvordan noe ser ut slik den gjør, eller hvordan kan Jeg gjør endringer på nettstedet mitt. Og det er en utvikler verktøy som er innebygd i Chrome. Så hvis du går til dette tre barer rett her og gå ned til verktøy klikk på Utviklerverktøy, vil et lite vindu dukker opp nederst på siden. Og i særdeleshet, Chrome, siden det er fantastisk, vil formatere dette vinduet og ta HTML og at det ser mye hyggeligere for deg. Så nå er det faktisk noen sammen HTML som du kan utforske for å inspisere elementene på siden. Hvis vi ønsker å se på kroppen, det faktisk fremhever. Når du blar over en del av HTML, ned i dette vinduet, vil det markere den delen det er snakk om i det store vinduet. Så la meg igjen prøve og blåse dette opp litt. OK. Så la oss åpne kroppen. Og jeg rulle enn dette venstre div. Og du oppdager at det er fremhever denne venstre halvdel av skjermen. Så la oss klikke på at og utvide det. Innsiden av det, ser det ut som det er to divs. Det er denne første div. Jeg ser ikke at uthevet. Jeg vet ikke, men det ser ut som dette andre, venstre indre, er innholdet på venstre side av skjermen. Så er det dette som kalles header. Det ser ut som det er å fremheve den CS50 del. Hvis vi åpner det opp, ser vi at det er ikke noe mer enn header en. Det har gitt en ID, og ​​det er gitt teksten CS50. Så igjen, ser på det gjennom dette konsollen eller ved hjelp av utviklerverktøy ruten nederst på skjermen gjør utforsker denne nettsiden, forhåpentligvis, et mye mindre skremmende og mye mer tilgjengelig. Det gir oss også muligheten til å forstå at denne nettsiden, selv om det ser veldig pen og fin, er ikke så mye mer enn hva du kommer til å være gjør på Problem Set 7. Og dette er helt innenfor din evne til å skape. Hvis vi ønsker å - den andre kule ting om å bruke disse verktøyene er, hvis du høyreklikker på tittel, kan du redigere HTML. Så la oss kalle det Jason. Og nå vil du legge merke til har jeg endret HTML-koden på denne siden. Selvfølgelig, jeg har ikke endret det permanent. Hvis jeg oppdatere nettleseren min, så det ville gå tilbake til den opprinnelige HTML. Men noen ganger ønsker jeg å feilsøke koden min, og jeg ønsker ikke å se bare ha min gedit vindu og prøve og forstå hva som skjer. Jeg ønsker å se hva som vil skje levende. Så jeg skal redigere kode som dette og få det slik jeg vil den skal se. Og så skal jeg gjøre det endringer i koden min. Og jeg synes at det er mye enklere når du kan gjøre de tingene momentant, sånn. Si, igjen, ønsker vi å foreta en ny sjanse, fordi vi utforsker med HTML og CSS akkurat nå. Jeg kan redigere HTML akkurat nå. Og jeg kommer til å inkludere en kobling. Så jeg kommer til å endre CS50 hjem side, så det vil lenke til - la oss si - hjemmesiden min. Hva er navnet, hvis noen husker, eller hva er attributtet jeg ønsker å gi til et anker fane når jeg vil det å knytte et annet sted? PUBLIKUM: href? JASON Hirschhorn: href - Så nå, vil du se at det er en understreking under Jason. Det er fordi Chrome, som standard, gir ankere understreking. Du har sikkert sett det før når du har gått til en nettside. Ting som er koblinger er understreket og blått. Standard stilen for en kobling er å generelt understreke og legg den i blå. Hvis jeg ikke liker det, Jeg kan endre det. Og vi kommer til å endre det i et sekund. Men nå, også legge merke til at, hvis jeg hover enn dette, i nederst til venstre på skjermen, rett over ordet elementene er linken som jeg ga den. Så hvis jeg gjorde klikk på dette - og vi kan høyreklikk på dette, åpner en ny fane. Dette er faktisk ikke min hjemmeside. Det er bare navnet mitt. Der du går. Vi har nå slå den inn i en sammenheng. La oss utforske noen CSS også. Den vakre ting - og jeg kommer til å gjør dette til en litt mindre - om denne konsollen er, som gale CSS ark vi så før, som var virkelig vanskelig å analysere, er nå vakkert lagt ut for oss på venstre side av denne ruten. Så vi kan se. Og hvis vi utvider dette stiler kategorien, vi kan se alle de forskjellige stiler som er forbundet med, i dette tilfellet dette element, denne kobling element. Hvis vi gjør kategorien sammensatte stiler, som bare viser oss, ikke hvor alt kommer fra, men i det vesentlige alle av disse stiler som opererer på denne spesielle element akkurat nå. Og la oss si, vi ønsker å endre det litt. Så dette er alle stiler som er opererer på denne spesielle element. Si at vi ønsker å endre det, fordi vi ønsker å se hvordan noe ser ut. Og vi bare spiller rundt akkurat nå. Eller vi ønsker å teste noe ut, før skrive det i kode og presser det og gjøre det live. Vi kan gå til kategorien stiler. Og i den første boksen det sier, element.style. Og her inne, kan du sette inn, du kan legge til noe. Så jeg vil - la oss gå til min link og angi bakgrunnsfarge. Og det faktisk autofills det for deg, alle mulige egenskaper. Bakgrunnsfarge, og jeg ønsker å gjøre det blå. Blus er ikke et ord. Blue er et ord. Hadde jeg ser det kommer opp? Åh, det er fordi det er i href? OK. Så jeg ser ikke noen endring her. Og det er fordi, hvis vi markere kobling, vil du legge merke til at koblingen ikke faktisk å kontrollere egenskapene til dette spesielle element. Det er faktisk, hvis vi åpne linken, denne overskriften her det er kontrollere hvordan det ser ut. Så hvis jeg ønsker å gjøre bakgrunnen blå, jeg faktisk nødt til å endre bakgrunnsfarge på header element. Og nå ser vi at Bakgrunnen er blå. Så igjen, denne raskt kan gå gjennom dette materialet ganske raskt. Men dette er i det vesentlige hva du kommer til å gjøre. Det er ikke på oppgavesettet 7, men sikkert når du er koding på nettet. OK. Jeg ønsker å gjøre bakgrunnen blå. Selv om, i dette tilfellet blå ser ganske stygg. Jeg kan gå inn her, leke seg. Jeg ser at å endre den til blå fungerer ikke på en. Jeg må faktisk endre header element for å inkludere den blå bakgrunn. Og så, hvis så går jeg tilbake til min CSS fil, hvordan kan jeg faktisk sette dette Bakgrunnen skal være blå og gjøre denne endringen pinne? Fordi hvis vi legger merke til hvis jeg oppdaterer den side, er alle de endringene jeg har gjort borte. Så innså jeg, OK, min Bakgrunnen er blå. Jeg trenger å gå inn i den header1 element og endre bakgrunnsfargen til blått. Hvordan kan jeg faktisk gjøre denne endringen? Vel, husker at, hvis vi går inne av her, denne overskriften, den Tittelen har en ID. Og det er tittelen. Og så i vår CSS-fil, kan vi si, OK, ta noe med ID av tittel og gi det denne ekstra eiendom. Hvordan kan vi referere noe med ID av tittelen, noen ideer, eller hvem som helst vet hvordan vi referere IDer i vår CSS-fil? En hash, det er helt riktig. Og du fikk et snev av at akkurat her. Så et eller annet sted i denne CSS-fil, det er denne linjen med kode - # Igjen # venstre inner # header # tittelen. Og det er å gi det margin bunn, definere margin bunnen av denne bestemt element. Vel, hvis jeg ønsket å endre det, Jeg vil gå inn i denne CSS-fil. Og jeg kunne enten finne dette del av CSS-fil. Eller jeg kunne skrive min egen. Jeg kunne gjøre hash tittelen klammeparentes og deretter bakgrunnsfarge kolon blå semikolon og nært at klammeparentes. Og det ville endre bakgrunns Fargen på dette element til blått. Grunnen til at de gir deg så mange her er det, er det nødvendig i dette tilfellet, fordi tittelen er en unik ID. Men det du kan gjøre er reir ting. Så dette er å si, OK, gå til venstre. Det er svært liten. Jeg ber om unnskyldning for det. Men gå til ting med ID venstre. Innsiden av det, se etter ting med ID venstre indre. Innsiden av det blikket, se etter tingen med ID header. Innsiden av det, se etter ting ID tittel og endre ID-tittelen. Så dette er bare en måte hekkende ting. Noen mennesker liker reir det, fordi det gjør det litt klarere. Du vil se ned her også, ikke sant her, det er ingen hasj. Det er bare h1. Det er fordi h1 er gitt navnet på en generisk tag. Og det er noen CSS egenskaper assosiert med hver enkelt h1. Så hvis jeg fant en annen h1 på denne siden, Jeg vil også se at denne stilen var brukes til det også. Hvis jeg ønsket å bruke en stil til en klasse, hvordan kan jeg referere til en klasse eller snakk om en klasse i en CSS-fil? PUBLIKUM: Dot. JASON Hirschhorn: Det er med en prikk. Så la oss gå tilbake til denne siden før. Hvis jeg gjør hash ID. Det er å endre stilen av tingen med ID. Eller beklager, hvis jeg gjør hash logo, er at finne ting med ID av logo og gi det en bestemt CSS stil. Hvis jeg gjør noe topp., Er at å finne alt med klassen av toppen og endre sine stiler. Hvis jeg bare H1, som finner hver enkelt h1 og gir det uansett stil jeg ønsker å gi den. Hvis jeg gjør h1 plass og da. Toppen. Det vil gå finne alle H1S og deretter alle de med klassen av toppen og da bare endre disse stilene til hva jeg ønsker å gi den. Og igjen, kunne vi ha skrevet noe av dette på egen hånd. Men vi ville ikke ha fått så langt. Mye bedre, synes det å faktisk gå på en levende nettside og se hvordan de gjør det, og se på alle de fantastiske ting du kommer til å gjøre. La oss se på en mer nettsted før vi går videre. Og dette er en som du vil sannsynligvis bli kjent med. Dette er CS50 Finance. Så igjen, kan du faktisk gå inn og observere denne CSS-fil på din datamaskin, fordi du har lastet ned dette CSS-fil, hvis du lastet ned oppgavesettet. Vi kan gå til Verktøy og Utviklerverktøy. Og vi ser en mye enklere HTML layout. Vi har topp, midten og bunnen. Og igjen, noe du bør være kjent med, fordi du har sett gjennom distribusjon koden for denne ukens oppgavesettet. På toppen er, per koden et enkelt bilde som heter. Og det er kilden til bildet. Si at jeg er ferdig med alt av hva Jeg ønsket å for Problem Set 7. Og det fungerer på riktig måte, men Jeg vil endre hvordan den ser ut. Og jeg ønsker å endre bakgrunns på toppen av siden til, for eksempel blått. Hvis det var meg, ville jeg komme inn her og finne ut, OK hva ønsker jeg å endre. La oss se, div ID toppen, at utseende som toppen av siden. Så la oss gå dit. La oss prøve å endre bakgrunnsfarge. La oss gå gjøre Alice blå, fordi det er en bedre en. Og du vil legge merke til at - du sannsynligvis ikke kan se det. Men det er en lyseblå, langs CS50 logo. La oss endre den i stedet til rødt. Og du vil legge merke til nå har jeg nettopp endret bakgrunnsfargen til rødt. Så nå vil jeg gå inn i min CSS-fil og skriver # top krøllete paren akkurat her. Du kan se koden til høyre her, klammeparentes. Og så ville jeg legge til bakgrunnsmusikk farge, rød. Og så, det ville være en klammeparentes. Så det er hvordan jeg ville utforske og eksperimentere med formatering på CS50 Finans nettstedet. Jeg kunne gjøre det her og test det ut på min nettleser. Og så kunne jeg gå inn i min faktiske koden og gjøre de endringene som vil faktisk gå live og at folk faktisk se, hvis de skulle komme til min bestemte området. OK. Det var mye. Jeg ber om unnskyldning for å gå gjennom det så raskt. Er det noen som har noen spørsmål i det hele tatt om HTML eller CSS? PUBLIKUM: Kan du bare gå over hvordan du knyttet det som ble Jason, igjen? JASON Hirschhorn: Hva mener du koblet? PUBLIKUM: Du følger en link til en annen hjemmeside, ved hjelp av anker. JASON Hirschhorn: Så spør du, bare generelt, hvordan du gjør en link? PUBLIKUM: Yeah. JASON Hirschhorn: OK. Koden for å lage en link - PUBLIKUM: Nei, som i HTML. JASON Hirschhorn: Down her, mener du? Så hvis jeg ønsker å inkludere en link et sted, sier, er dette den HTML på min side akkurat her. Dette er HTML. Kanskje det er åpent i en fil, index.html. Jeg går i. La oss ta dette opphavsrett John Harvard link til noe. Så vi skal redigere alt dette som HTML. Alt du gjør er å inkludere en, så braketten tett brakett på begynner, og deretter brakett slash en nær braketten på slutten. Så nå har jeg tatt en ankerkoden. Og faktisk, hvis du klikker ut av dette, vil det nå formatere den redigere som HTML. Og si, vi vil koble det. Vi hadde du href-attributtet. Og vi sier - Og nå, som du legger merke til, opphavsrett John Harvard er blå. Og når jeg blar i løpet det, er det nå en lenke. Så du kan skrive denne koden. Du kan omgi ganske mye annet du ønsker i en ankerkode og slå den inn en link. PUBLIKUM: OK. Fikk det. JASON Hirschhorn: Og hvis jeg ikke vil ha det - selvfølgelig, noen ganger folk har en tendens til å tenke disse tingene som bare ser blå generelt og understreket er ikke den peneste måten å lage en link. Så hvis jeg kommer over her, ser du det, et sted i en CSS-fil, det er skrevet dette en og deretter to klammeparentes. Så la oss si at, for linker, jeg gjør ikke det ønsker dem til å bli blå, heller jeg vil fargen på en kobling til være denne fine magenta. La oss gi den fargen. La oss plukke magenta. Nå, alle koblinger på siden min har blir denne fine fargen magenta. Noen mennesker liker ikke fargene i det hele tatt. Noen mennesker liker ikke understrekinger. Du får velge. Med lenker, kan du style hvordan de se når du har besøkt dem. Som du vil legge merke til på mange sider, linker blir lilla på du besøker dem. Du kan endre den fargen også. Yeah. PUBLIKUM: Så du endre det for hver enkelt link. Men hvis du bare ønsket å gjøre denne koblingen selv, ville du bare gjøre i ID bunnen eller noe? JASON Hirschhorn: Så stort spørsmål. Som du lagt merke til her, jeg endret noen del av CSS som gjelder alt som er en A. Hvis jeg ønsket å bare gjøre at linken nederst, jeg ville gå til min CSS-fil og sannsynligvis gjøre akkurat som du sa, hash bunn plass en. Og det ville gi meg alt Som i bunnen. Eller jeg kunne, alternativt, gi det en unik ID og så bare gjøre hash link. Og som ville tillate meg å endre dette ut. Men bare doling ut ID-willy-Bulle er generelt en dårlig praksis, fordi de skal være unike. Og jo mer du har dem, det kan bli litt forvirrende. Yeah. PUBLIKUM: Kan du gi den samme ID til flere eiere? JASON Hirschhorn: Teknisk sett ja. Ingenting kommer til å stoppe deg, men du bør ikke du bør gi den en klasse. OK, noen andre spørsmål om HTML eller CSS? OK. La oss gå videre til PHP. Å, ja. PUBLIKUM: Hva er det med disse nettsteder som betyr at vi kan redigere dem før vi oppdatere. Men når vi oppdaterer den går tilbake tilbake til utgangs HTML? JASON Hirschhorn: Great spørsmålet - så når vi har lastet dette webside, er det HTML. Og det er Script. Dens PHP er utført for å gi oss det type nettsted vi se. Og det har skapt noen HTML, noen Javascript, og noen CSS. Og det er nå tilgjengelig av vår datamaskin. Og en kopi av disse filene er lagret lokalt på datamaskinen vår, for tiden. Så vi kan redigere det lokale kopien. Men selvfølgelig, vi er ikke redigerer kopien serveren. Og når vi oppdaterer siden, vi får en annen server kopi. Og så ser vi ting tilbake som de var. Hvis vi var i stand til, herfra, for å redigere offisielle nettside, vil vi ha en mye av problemer. PUBLIKUM: Ja, slik vi kan lese og skriver at kopien. JASON Hirschhorn: Høyre. Vi gjør bare lokale endringer her, men igjen, veldig nyttig for å utforske, ofte. Når jeg skriver mitt siste prosjekt, for eksempel, jeg ønsker å se hvordan noen nettstedet gjort noe look den måten de gjorde. Jeg vil gå inn og bruke denne ruten ned her, for å se på hva CSS de ga til det eller hvilken farge de plukket eller hvordan de fikk det slik at når du svevde over noe, listen kom ned i en fin gjennomgripende måte. Det er en fin måte å inspisere hva andre nettsteder gjør og låne fra dem. La oss gå videre til PHP. PHP står for, i en rekursiv forstand, PHP Hypertext Processor. Og PHP, hva det kommer til å gjøre er kjøre kode server side. Så vi kommer aldri til å se PHP-kode. Men den gjør det spille pent med HTML og ofte genererer mye av HTML-kode. Men som du blir kjent med problemet Sett 7, vil din PHP-kode utføre, generere noen HTML, og det er det brukeren vil ende opp med å se. PHP er utrolig lik C. Men det er et par forskjeller, og disse forskjellene er viktig å merke seg. En forskjell er at variabler i PHP er løst skrevet. Er det noen som har en følelse av hva det betyr? PUBLIKUM: Du trenger ikke å kaste det selv. Som ingen behov for å skrive i teksten. JASON Hirschhorn: Jeg ville ikke bruke den Ordet cast, men ja, ingen grunn til å erklære en form for en bestemt variabel. Hvordan i stedet har vi deklarerer en variabel? PUBLIKUM: Bruk et dollartegn. JASON Hirschhorn: Bruk et dollartegn. Så $ x er en variabel. $ 1 er en variabel. $ String er en variabel. De variabler, $ x kunne være et helt tall. Deretter, kan det være en streng. Deretter, kan det være et tegn. Det spiller egentlig ingen rolle. Dessuten er den kule ting om PHP, si, er $ x strengen ett. Og $ y er tegnet en. Du kan legge til $ x og $ y, og det vil gi deg to, hva du forventer. Så det er virksomhet i PHP. Fordi det er løst skrevet variabler, noen implisitt casting er gjort for deg og enkelte operasjoner. Du kan gjøre operasjoner på ting av forskjellige typer. Mens før, får du ofte en feil i C ordtak, dette er ikke den type som er ment å gå her. Bare ting av denne typen kan gå her. Du kommer ikke til å få denne type av feil, generelt, i PHP. Så det er en stor forskjell - hvordan vi håndterer variabler. Det andre store forskjellen er at PHP-koden er tolket. Wheres, er C-kode kompileres. Hva mener du? Vel, for C-kode du kjørte det gjennom en kompilator. Du generert en binærfil. Og du kjørte som binærfil. Du tok vare på alle feil før du genererte binærfil. Selvfølgelig kan det ha vært segmentering feil, når du kjørte binærfil. Men det er ikke som du glemte å inkludere definisjonen av printf, eller du ikke bruke en variabel og bare opprettet en sløsing variabel. Eller du ikke definere en funksjon prototype. Alt som skjedde før du kompilert. Det ga deg alle feil eller dårlig ting som det trodde kunne skje. Og så hadde du din 0 og En fil som du kjørte. PHP-koden virker ikke sånn. Du kommer til å skrive din PHP-kode. Så, du kommer til lagre det, formodentlig. Og i hvert fall i P-Set 7, du kommer å oppdatere nettleseren din, og du kommer til å se hva som skjedde. Du kommer til se resultatet av at PHP-kode. Du kan også se, på toppen på siden din, en feil. Fordi du hadde noen feil i PHP. Du kan fortsatt se resten av websiden ser fint. Men en del er galt, og det er en feil i dette stedet. Og det er fordi at en del av PHP-kode virker ikke. Faktisk, når du kjører, når du gå til noe sånt by.php. Det kommer til å gå gjennom din PHP filen linje for linje og kjøre den da og bare da. Det kommer ikke til å kompilere det på forhånd tid eller kompilere ett eksemplar og deretter gi at kompilert kopi til alle. Hver gang, det kommer til å gå gjennom linje for linje og utføre den. Så noen linjer kan fungere og utgangs noe riktig. Og andre linjer kan være brutt og utgang en feil i stedet. Så når debugging med PHP, har vi gitt du et par nyttige ting å hjelpe deg debug, som dump-funksjonen. Men generelt, du kommer å se disse feilene. Og det er hvordan du skal vet du gjorde noe galt. Men du bare kommer til å se feilen når du faktisk kjøre koden. Et annet viktig aspekt av PHP og webutvikling er ideen om å få versus innlegget. Kan noen forklare hva forskjellen mellom få og innlegget er? Nobody - Ja. PUBLIKUM: Betyr ikke en av dem la brukeren se dataene, og en av dem ikke? JASON Hirschhorn: Great. Ja, har du noe å tilføye? PUBLIKUM: Jeg tynn innlegget er en super-global variabel. JASON Hirschhorn: Så begge disse variablene er gitt til deg. Dette er bare variabler. Og du vet at de er variable, fordi akkurat her jeg bruker dollartegnet. Dette er variabler gitt til deg av PHP. Og når du flytter mellom websider, du ønsker å spare litt informasjon. Du har sannsynligvis ønsker å spare hvis brukeren er logget inn Det er ikke lagret i GET og POST. Som er lagret i noe annet, en annen variabel. Noen som vet hva variabel som er lagret i, eller hva variabel du bruker i P-Set 7, for å sørge for at brukeren er logget inn? $ _SESSION, Det er helt riktig, trolig viktig å være kjent med navnene på disse tingene du bruker ofte. Så du bruke økt variabel å spare informasjon fra side til side. Det er en super variabel. Den eksisterer på hver side, kanskje som en global variabel, hvis du ønsker å tenke om det sånn. Det er et par andre variabler som gjør det mulig å overføre informasjon fra side til side. Spesielt de som vi vil fokusere på er GET og POST variabler. I PHP ser de ut som $ _GET Og $ _POST. Og forskjellen, som Marcus pekte ut, mellom to av dem er at, Informasjonen i $ _GET er vises i nettadressen. Så hvis vi ser her nede, vi se en YouTube-link. Vi ser dette spørsmålstegn. Vi ser v = og deretter noen verdi. Tilbake til denne ideen om nøkkelverdi par, er v nøkkelen. Og her er verdien. Så hvis vi skulle gå til denne siden, eller koding på denne siden, ville vi ha en variabel kalt $ _GET. Hvis vi gikk til $ _GET open bracket "v" nær brakett, svært lik matrise notasjon, er dette en førsteamanuensis matrise fordi vi ikke bruker indekser. Brukte strenger som nøkler. Men veldig lignende idé. Hvis vi gikk vi ville få denne verdien. På denne siden vil vi være i stand å bruke denne verdien. Hvis vi faktisk ser, la oss gå til en YouTube-side. Hva video bør vi se? Dette er folk hobbit fans? PUBLIKUM: Ja. JASON Hirschhorn: Så jeg kopierer sin andel internettadressen og lime den i et nytt vindu. Og nå, hvis du ser opp her, vil du legge merke til det, nok en gang - Jeg kommer til å kopiere og lime dette inn gedit, så vi kan se det større. Du vil merke at det har denne spørsmålstegn. Spørsmålstegnet angir at alt etter dette kommer til å være lagret i GET-variabelen. Det har da v, er at den første nøkkel, og denne første verdi. Ampersand er spesiell. Ampersand sier, OK, vi ferdig med den første verdien. Vi er nå i ferd videre til en annen suse_register_auto.ycp. Her er nøkkelen kalt funksjonen, og verdien er youtu.be. Så hvis jeg var en koding denne siden og noen gikk til denne internettadressen og jeg hadde kanskje watch.php. Og jeg ble koding dette. Og jeg kunne bruke $ _GET variabel. Og jeg ville ha en v, og Jeg ville ha en funksjon. Og hvis jeg bruker v-tasten, jeg ville få denne verdien. Og hvis jeg gjorde $ _GET bracket "-funksjonen" nær brakett, ville jeg få denne verdien. Igjen, det gjør det ikke nødvendigvis gjelde - Selvfølgelig, YouTube-nøkler og verdier og få informasjon gjelder ikke Vårt problem ligger 7. Men det er visse ting som vi passere via GET i vår Problem Set 7. Og sikkert, når du går til en nettside eller er koding din egen side, den $ _GET Vil komme godt når koding. Hva er en grunn til å bruke $ _GET da, hvis det gir ikke noe privatliv? Du ser all denne informasjonen som blir overført. Det er alt som vises for brukeren. Men hva er en grunn til at du kanskje ønsker å spare noe i $ _GET, som motsetning til $ _POST? Hvorfor kan det være lurt å gjøre det? OK. Jeg spurte deg i Quiz 1. Hva er den pro på $ _GET? Hva er en pro? Yeah - PUBLIKUM: Det er enklere å dele informasjon. JASON Hirschhorn: Jeg tror det er flott. Det er lettere å dele informasjon. Det er lettere å bokmerke. Du kan bokmerke nå, YouTube.com / watch? V = noe og gå til den spesifikke video. Hvis YouTube alltid gjorde POST-forespørsler til forskjellige sider, hver YouTube URL ville være YouTube.com. Du kan ikke bokmerke en enkelt video. Fordi hvis du sier delt at koblingen med noen andre, gjør de ikke automatisk få ditt innlegg variabel. De er bare å få denne koblingen, og kobling er den samme for alle. Så det er en pro. Det gjør at du kan bokmerke denne informasjon eller dele denne informasjonen eller gjøre det litt mer brukervennlig. Selvfølgelig, det er ikke noe privatliv, så vi har dette innlegget variabel. Og etter informasjon er ikke vises i nettadressen. Det er ikke helt privat. Men det er marginalt mer privat. Og så får du se denne nettadressen her nede, cs50.net. Hvorvidt du er logget inn i nettside, det kommer til å ha samme URL, cs50.net. Tydeligvis, er noe annerledes, hvis du er logget inn på nettstedet. Du har, en, sannsynligvis inn din PIN-kode. Og det har bekreftet at med serveren. Og det er sannsynligvis spare annen informasjon. Men nettadressen ikke endres i det hele tatt. Og slik det er tilfelle, da noe sendes i posten. Nettadressen endres ikke. Dette POST informasjonen er ikke vises i nettadressen. Men noen stat har endret seg, og kanskje det er noe informasjon som er lagret i POST variabel. Unnskyld. før jeg går inn i SQL, noe spørsmål om PHP, i særdeleshet, spørsmål om ting vi ikke gå over at du har funnet eller noen syntaks eller logiske spørsmål om PHP? OK. Den endelige språket du vil være samspill med denne uken er det Structured Query Language, SQL, uttales oppfølgeren ofte. Det gjør det mulig å samhandle med database på en formalisert måte. Og det spiller veldig pent med PHP. Som du vil se i oppgave Set 7, vi har gitt deg en funksjon som kalles spørring. Og det tar en SQL-streng og utfører at søket på databasen. I år tidligere, var du ikke gitt denne funksjonen. Du måtte bruke PHP funksjoner for å gjøre spørringen på databasen og sjekk for feil og deretter få de resultatene. Og faktisk, det er ikke så vanskelig, fordi igjen, spiller det veldig pent med PHP. Og PHP gir deg en rekke funksjoner å samhandle med en SQL-database. Så ofte, to av disse gå sammen. Selvfølgelig kan du samhandle med SQL-database med alle rekke andre språk. Men PHP er en stor en for å velge. En database - vi vil gå over dette raskt, fordi dette er en buzz ord vi skal begynne å bruke ofte - er en samling av tabeller. Så vi kan tenke på det som en Excel-fil. En Excel-filen har flere faner på undersiden av skjermen. Hver fane vi nå kaller en tabell, der en tabell er en samling av rader. Og hva er en rad? Vel, er en rad at samme i Excel-filen. Som bare har visse verdier for hvert gitt felt eller hver gitt kolonne. Det er som en oppføring i tabellen. Det er en student, som har en ID, et spesifikke ID, og ​​et bestemt navn og en bestemt hus. Så en database er en samling av tabeller. Og tabeller selv er en antall rader eller poster. Det er også, i hvert bord, visse felt. Og som spesifiserer hva hver post er kommer til å ha, felt noen ganger kalt kolonner, men generelt kalles felt. I denne svært enkel tabell, har jeg tre felt, et ID-felt, et brukernavn felt, og en hash-feltet. Og jeg har tre rader. Akkurat nå er de tom. De sannsynligvis ikke ville være tom hvis dette var mitt egentlige database. Så hvis du har brukt Excel, lignende idé til hva du gjør i Excel, skjønt, åpenbart, nå vi skal være i stand til gjøre mye kraftigere ting på informasjon som er lagret i vår database. Du vil være å skape deg selv en database for Problem Set 7. Men du skal lage flere tabellene i databasen. Du skal lage en database eller et bord for brukerne. Du vil bli også lage en tabell for sikkert lager transaksjoner, for å holde styr på dem, fordi du må implementere en historie funksjonen. Begge disse tabellene vil ha ulike felt. For eksempel, i en brukerfeltet, kan sannsynligvis vil deres brukernavn og et ID og en hash av deres passord. I Stocks tabellen som holder styr på historie eller historien tabellen, du sannsynligvis ikke trenger brukernavnet og hash og ID. Du trenger sannsynligvis bare en av dem verdier som er unik, for å knytte den med en gitt bruker. Men så, vil du lagre andre ting som, hvilken tid ble transaksjonen gjort. Hva aksjen ble kjøpt eller solgt? Hvor mange aksjer av lager ble kjøpt eller solgt? Hva var den prisen som aksjen ble kjøpt eller solgt? Så igjen, du kommer til å være i samspill med databaser som er kommer til å ha flere bord. Hvert bord kommer til å ha sitt eget sett av felter. Imidlertid vil det sannsynligvis være et tilsvar felt i hver tabell, som knytter dem til hverandre. Vanligvis er dette et ID-felt. Fordi hvis hver bruker har en unik ID og du forbinder med hver at ID transaksjon som brukeren gjør eller alle som brukerens historie. Og du har brukerens ID. Du kan få informasjon fra begge bord. Du kan få sitt brukernavn, og du kan få alle sine transaksjoner. Eventuelle spørsmål om databaser, eller spesifikke spørsmål? Egentlig, la oss holde det. Vi skal være der i to sider. Så er det fire operasjoner på databaser som du skal bruke i Problemet ligger 7 og sannsynlig noen gang skal bruke. Det første du bør gjøre er å sette inn en ny rekord i en tabell eller en ny rad i en tabell. Dette er den generelle funksjon, den generisk form, for at SQL-spørring. INSERT INTO tabellen, uansett kolonner du ønsker å sette inn, og deretter verdiene som du kommer til å ønske å satt inn i disse kolonnene eller feltene. Hvis du har flere tabeller i en database eller flere databaser, dere må kanskje også angi databasen og den tabellen du vil å sette ting inn. Men veldig enkelt, hvis du ønsker å sette inn til noe, sier du, her er det felt jeg ønsker å sette inn. Og her er verdiene. I noen tabeller også, og denne brukerens Tabellen er et godt eksempel. Sannsynligvis i denne brukerens bord og sannsynligvis i din brukers bord i P-Set 7, det er ikke bare et brukernavn verdi. Det er ikke bare en pengeverdi, eller felt, heller. Det er også et ID-feltet. Jeg kommer ikke til å sette inn det ID-feltet. Det kommer til å bli gitt til meg automatisk, når en ny rekord er satt inn. Så er det noen felt du kan stille til å være automatisk. Kanskje du ønsker å gi hver bruker $ 10,000 kontanter utenfor balltre. Så jeg trenger ikke å sette inn en rekke av kontanter her. Alt jeg trenger å sette inn er brukernavnet. Og så, vil kontant feltet være forhåndsutfylt, og ID-feltet vil være forhåndsutfylt. Så ofte er vi ikke setter inn noe inn alle felt, fordi de andre feltene er forhåndsutfylt. Fordi det er hvordan vi sette opp denne tabellen. Den andre tingen du kommer til ønsker å gjøre er å slette en rekord. Slette noe er veldig enkel. Du gir tabellen der du vil å slette noe fra. Og du sier, OK, jeg vil slette den rekord som har et brukernavn av Milo. Eller jeg ønsker å slette alle poster som Har du ikke brukernavn i Milo eller som var en transaksjon fra bruker-ID nummer to. Eventuelle spørsmål om disse to typer søk? PUBLIKUM: [uhørbart]. JASON Hirschhorn: Ja. Så jeg kommer til å bruke rad og rekord hverandre og noen med kolonne og felt. Men én rad er en rekord. En kolonne er ett felt, kommer tilbake til denne tabell. OK. Den neste tingen du antakelig kommer til å gjøre er å få noen informasjon fra bordet. Det er en utvalgsspørring. Og igjen, hva tabellen jeg velge fra? Og hva kolonnen ønsker jeg å velge, eller hvilken verdi ønsker jeg å velge og fra hvilken rad? Så Select er en lite konkret. Jeg sier, OK, jeg vil ha denne tabellen. Og så vil jeg brukernavn kolonnen, og Jeg vil ha det fra raden med ID to. Det er en måte å gjøre en Velg. Eller jeg kan si, gi meg hver enkelt brukernavn. Eller jeg kan si, gi meg en hel rad fra denne tabellen, der brukernavnet er en. Så det finnes et par forskjellige måter å gjøre Velg spørringer, avhengig av hvordan mye informasjon du vil ha, Du kan alltid bare velge alt fra det spesifikke bord og deretter sløyfe gjennom den, plukke ut de tingene du ønsker. Men husk, hvis du velger en masse ting fra en tabell, og du har et virkelig stort bord, vil det ta litt tid, så best å bare velge ting som du kommer å ende opp med å bruke. Også med Select og med alle av disse andre SQL-kommandoer i tillegg, er jeg noe som gir deg bare-bones versjon. Men si, jeg velger brukere, og jeg ønsker å skrive dem ut alfabetisk, Jeg kunne velge alle brukere, og deretter sortere dem alfabetisk i koden min. Eller er det en måte å skrive på velg spørring, velger at ting i en alfabetisk mote, basert off av en bestemt kolonne, enten stigende eller synkende. Så husk at mye av det du ønsker å gjøre kan trolig gjøres i spørringen gjennom en ekstra attributt. Så se opp disse søkene på nettet eller de andre tingene du kan gjøre med disse spørsmål for å utvide dem. Til slutt, er det siste du ønsker å gjøre er ikke sett noe eller slette noe, men heller oppdatere noe. Og det er gjort med oppdateringen spørring, og igjen, hva tabellen. Og hva endringen ønsker jeg å gjøre? Og til hvilken rad eller posten gjøre Jeg ønsker å gjøre denne endringen? Eventuelle spørsmål om SQL? OK. Så vi har ca 15 minutter. Og dette er det siste lysbildet jeg har. Og forhåpentligvis er dette siste lysbildet en god naturlig overgang inn i oppgavesettet, fordi forståelse der vi ønsker å sette inn poster, slette dem, velger du dem, og oppdatere dem vil hjelpe oss forstå større logikk og strømme Problem Set 7. Så jeg vet alle svarene på disse spørsmålene. Jeg kommer ikke til å fortelle deg alle svarene. Men hvis noen andre ønsker å presentere et spørsmål til gruppen eller en svarer til en av disse spørsmål, kan vi bruke den som hopping av punkt til snakke om problemet sett. Eller hvis noen har en mer generell spørsmål av problemet sett, føler fritt til å be om at også. Og vi kan begynne der. Husk at du blir taus sårer alle. Yeah. PUBLIKUM: Så er den eneste måten å passere variabler til og fra forskjellige web sider, eller den mest praktiske måte, ved hjelp av POST eller GET? JASON Hirschhorn: Så ja, er at mest praktiske måten å si - når noen fyller ut et skjema - få informasjon på en annen nettside side, ved hjelp av GET-eller POST. På grunn av rammeverket vi bruker i dette problemet sett, vil du legge merke til det, mange ganger, vi gjengi en annen side. vi Eller vi gjengi en annen fil, ikke nødvendigvis en annen side. Så vi passere i en variabel. Og så, det gjør en HTML-side, ved hjelp informasjon fra den variabelen. Det er ikke teknisk passerer informasjon mellom forskjellige nettsider. Som passerer informasjon mellom forskjellige filer. Og så kan vi bruke noen variabel til å gjøre det. Men ja, hvis vi ønsket å passere informasjon fra en bestemt side til en annen side, GET og POST ville være måten å gjøre det. Eventuelle andre spørsmål om oppgavesettet? OK. La oss gå gjennom, da, en bestemt en del av problemet definert. Du kommer til å trenge til, på ett punkt, vise noen portefølje på skjermen. Hva gjør jeg mener når jeg sier portefølje, i sammenheng med dette problemet satt? PUBLIKUM: Det er som de aksjer som de har how, mange aksjer de eier, prisen, og hvor mye penger de har igjen. JASON Hirschhorn: Det høres flott ut. Så jeg ønsker å vise alle aksjene de eier for hver aksje selskapets aksjer og sannsynligvis hvor mye det er verdt, og deretter en egen variabel, hvor mye penger de eier. Så sier jeg ønsker å beskrive det. La oss begynne å snakke om hvordan jeg kunne gå om du gjør det, hva tabeller jeg er kommer til å trenge å måtte være i stand til å gjøre det. Yeah - PUBLIKUM: Vel brukere, og da antar jeg du kan lage en tabell kalt Aksjer eller noe sånt, som vil være hvor mange de har kjøpt. JASON Hirschhorn: OK. Så jeg kommer til å trenge en tabell kalt Brukere, som holder orden på brukernavn, formodentlig, sannsynligvis noen ID, sannsynligvis en persons passord. Hva er noe annet som du sa det er forbundet? Noen foruten Michael, hva er noe annet som er forbundet med hver bruker, unik for dem? PUBLIKUM: ID. JASON Hirschhorn: ID - hva er en annen ting som vi er sannsynligvis kommer til å ønske å vise på denne siden? PUBLIKUM: Deres navn. JASON Hirschhorn: Deres navn - hva er en annen ting relatert til dette spesielt problem satt? PUBLIKUM: Hva aksjer de eier - JASON Hirschhorn: Det kommer til å være mye av hva aksjer de eier. Hva er en spesifikk verdi skjønt, at de kommer til å ha assosiert med dem? Hvordan de kommer til å kjøpe og selge sine aksjer? PUBLIKUM: Cash. JASON Hirschhorn: De er kommer til å ha kontanter. Slik at hver bruker skal ha en verdi for kontanter. Og det kommer til å bli unik for hver bruker. Så i brukerens tabellen, gjør det fornuftig å sette i kontanter. Du kan selvfølgelig lage en annen tabell som har bruker-IDer og deres Verdien av kontanter. Men det gir ikke mening. Det er fornuftig å bare sette alt dette i én tabell. Så vi kommer til å ha en tabell med denne informasjonen. Og så, hva er den andre tabellen vi kommer til å ha? Du sa en Stocks tabellen. Hva skal vi sette i Aksjer-bordet? Hvem som helst, ideer - PUBLIKUM: Selskapet. JASON Hirschhorn: Vi skal å sette i navnet på selskap, så AAPL for Apple. Yeah. PUBLIKUM: Hvor mange aksjer og hvor mye de er verdt. JASON Hirschhorn: Hvor mange aksjer, hvor mye de er verdt - hva er noe annet vi trenger i det bordet? PUBLIKUM: En bruker-ID for å indeksere den. JASON Hirschhorn: En bruker-ID. Så i denne tabellen, vil vi sannsynligvis har - la oss si, hvis det er noen som eier tre aksjer, tre rader, hver med som bruker-ID eller som individuelle bruker ID, men et annet firmanavn, en forskjellig antall aksjer formodentlig, og en annen pris verdi for hver av disse aksjene. Igjen, hva jeg sier nå er ikke nødvendigvis gjennomføringen, fordi du innser at det er litt mer effektive måter å gjennomføre det. Men dette er et bra sted å starte. OK. Så de er de to tabellene vi har. Nå ønsker vi å vise denne siden. Hva er den første type spørring vi trenger å gjøre. På hver side, forutsatt at en bruker er logget inn, har vi deres bruker-ID. Så hva er den første typen spørring vi trenger å gjøre? Yeah. PUBLIKUM: Deres bruker-ID. JASON Hirschhorn: Vi har sin bruker-ID, når vi begynner å kode på begynnelsen av vår side. Så hva er den første type spørring vi trenger å gjøre, gitt en brukers ID? Vi gikk over de fire typene. Det er bare fire mulige svar. PUBLIKUM: Det er å velge en rekord. JASON Hirschhorn: A Select - vi ønsker å velge fra brukerens bordet for å få, la oss si, deres mengde kontanter. Og vi kan skrive ut hvor mye kontanter på toppen av skjermen. OK. Hva er neste type spørring vi ønsker å gjøre? Vi har noen andre ting vi trenger å vise. De lagres i en annen tabell. Så hvordan skal vi få det? PUBLIKUM: Du velger for dem. JASON Hirschhorn: En Select - igjen, det er bare fire alternativer. Velg sannsynligvis lyder som den rette. Så vi trenger å gjøre en annen utvalgsspørring, igjen ved hjelp av denne bruker-IDen. Og nå, ønsker vi å returnere ikke bare én rad, bu alle rader som oppfyller våre kriterier, der bruker-ID er lik en. Og så kan vi gå og la en løkke bare skrive ut alle dem ut på skjermen, kanskje skrive ut selskapet fra hver av de på skjermen. Flott, det høres ut som det er viser en portefølje, ikke mye mer komplisert enn det. OK, så bestemmer brukeren om at de har rikelig med penger til overs. Og de ønsker å kjøpe noen flere aksjer i et lager. La oss si, de som allerede eier dette selskapets aksjer også. Så de går til din buy-side. De innspill selskapets navn. Hva er spørringen, etter innspill Selskapets navn, som du trenger for å utføre neste? Yeah. PUBLIKUM: Update. JASON Hirschhorn: Update - og hva tabellen vil du oppdatere? PUBLIKUM: Deres tabell, basert på deres ID-nummer? JASON Hirschhorn: Så oppdaterer ikke brukerens tabellen - så oppdatere lagret tabell, hvor bruker-ID ikke bare kamper, men lager navn samsvarer også. Du får noen verdi. Og så, vil du ønsker å ta denne verdien og legger imidlertid mange aksjer de ønsker å kjøpe den. Så du ikke ønsker å blindt overskrive denne verdien. Men du kan faktisk ta det første verdsetter og bare oppdatere den. Du kan gjøre som et pluss er lik, snarere enn bare et likhets. Hva er noe selv - hvis vi er tenker om dette, og vi ønsker å være så robuste som mulig - vi bør gjøre før vi kjører at oppdateringsspørring? De ønsker å kjøpe fem år for Apple. Hver aksje i Apple er 200 dollar. PUBLIKUM: Vi bør sjekke penger først. JASON Hirschhorn: Vi bør sjekk penger først. Vi bør sørge for at de har nok penger. Hva slags spørring kan vi kjøre til sørge for at de har nok penger? PUBLIKUM: Another Velg. JASON Hirschhorn: A Select - vi velger basert på deres bruker-ID, å få sin verdi av kontanter. Gjør noen raske matematikk. Og hvis det går mønstre, de har nok kontanter. Da kan vi kjøre vårt oppdatering. Eller kanskje, hvis ikke, går vi da. Vi gir dem en advarsel. OK. Sier de ikke har et selskap. De kjøper et nytt selskap. De kjøper Microsoft. Hva slags spørsmål er det vi ønsker å gjøre, hvis de ønsker å kjøpe Microsoft? Og de ikke eier noe Microsoft. Ikke Manu, noen andre, noen foruten Marcus? Carlos - PUBLIKUM: En Select, for å være sikker de har nok penger. JASON Hirschhorn: Høres bra ut. PUBLIKUM: Og da du setter inn på [uhørbart]. JASON Hirschhorn: Akkurat, er vi kommer til å ønske å sette inn inn i lagret tabell. Og vi kommer til å ønske å sette inn. Vi kan sette inn sin bruker-ID, navn av selskapet, og hvor mange aksjer de ønsker å kjøpe. Hva er noen andre operasjoner som er sider eller funksjonaliteten du er nødt til å implementere i P-Set 7, at vi bør gå over? PUBLIKUM: Egentlig, jeg slags har et spørsmål om dette. Før du vise porteføljen, bør du sjekker Yahoo hjemmeside for å sørge for at aksjekursene har ikke forandret seg? JASON Hirschhorn: Det er lyder som en god idé. Så hva Marcus sier er, OK, lager Prisene er i stadig endring. I de aksjer som de eier bordet, vår tabell som kalles Stocks, kan vi lagre prisen på aksjen de kjøpte den på. Men det ser ikke ut som robust, fordi prisen på aksjen er stadig kommer til å endre. Så faktisk, har du sannsynligvis ikke trenger å redde prisen på aksjen. Men hver gang du viser deres portefølje, du oppdatere eller oppdatere prisen på aksjen. Og hvis du har - og du har allerede. Jeg vet at du har alle sett i oppgavesett tilbake allerede. Du har innsett at vi har skrevet noen kode for deg som vil tillate deg å få prisen på en aksje, gitt et selskaps navn. Så ja, sannsynligvis lyder som litt mer robust. Men at tabellen ikke nødvendigvis trenger å redde prisen på aksjen. OK. Hva er noen andre funksjonene du trenger for å implementere denne uken at vi kan snakke om? Jeg ønsker å snakke om dem. Hva har du lyst til å snakke om? Det er nok i denne spec. Jeg ville bare bla ned til bunnen av spec og spør meg det første ordet du ser som ikke gir mening. En annen funksjonalitet - la oss snakke om en. Vi begynner der. PUBLIKUM: Opptak historiene. JASON Hirschhorn: Recording historie, stor en. Så du er nødt til å holde oversikt av en historie av transaksjoner. Så du ønsker å holde styr på hver gang de kjøpe eller selge en aksje. Jeg kjøpte min lager. Vi sa bare, er det sannsynligvis fornuftig å inkludere en Select, for å få deres Mengden av kontanter og sjekk tilbake. Det er trolig smart deretter å inkludere en sette inn eller en oppdatering, avhengig av hvorvidt de eier det lager. Hvis vi ønsker også å holde styr på en historie, hvordan kan vi gjøre det? Betyr det gå i Stocks tabellen? PUBLIKUM: Nei. JASON Hirschhorn: Nei det sannsynligvis går i en annen tabell. Fordi si du kjøper 10 aksjer i Apple. Så du kjøper ytterligere 10 aksjer. Du vil taue egne poster. De er to separate transaksjoner. Så vi har en annen tabell, en historie bord. Så igjen, vi kjøper. Vi utfører en Select, deretter et innlegg eller en oppdatering. Hva gjør vi nå? Hva er det neste spørring vi utfører når vi kjøper noe? Vi ønsker å holde oversikt over historien. Yeah. PUBLIKUM: Du ønsker å holde oversikt mislykkede transaksjoner også. JASON Hirschhorn: Vel, før vi si hvilken type transaksjon, hva gjør vi ønsker å - Hvilken type spørring, Carlos, ville tillate oss å holde styr av ting generelt? Du har fire gjetninger. Hvilken tror du? PUBLIKUM: Oppdatering. JASON Hirschhorn: Ikke oppdater. Hva er din andre gjette? PUBLIKUM: Valg. JASON Hirschhorn: Hvis du ønsker å holde sporet av noe, har du sannsynligvis vil å skrive det ned et sted eller lagre den til senere. Så hvis ikke oppdatere, da - PUBLIKUM: Sett det. JASON Hirschhorn: Sett inn, der vi går. Ja, så du velge hvor mye av penger de har, høres flott ut. De har ikke nok kontanter. At transaksjonen er ikke til å fungere. Nei, du trenger ikke å holde styr på en transaksjon hvis det ikke fungerer. Eller du kan, hvis du vil gi dem en vanskelig tid. Men du trenger ikke å. Så, du setter inn eller oppdatering i deres Aksjer tabellen. Og nå har du den andre tabellen. Du har din historie bord eller hva du vil kalle det. Og i det bordet, du kommer å sette inn en ny rad. Det kommer sannsynligvis til å har brukerens ID. Det er trolig kommer til å ha navnet på lager. Det er trolig kommer til å ha en gang at de gjorde det. Og i dette tilfellet, vil du sannsynligvis ønsker å sette prisen. Fordi for en historie, gjør du ikke bryr seg hva dagens pris er. Du bryr deg hva prisen er når de kjøpte eller solgte noe. Så det høres ut som, for å gjennomføre kjøp fullt innebærer en rekke forskjellige SQL-spørringer, men ærlig talt, ikke at mye kode generelle. OK. Og som tar vare på historien. La oss si at vi ønsker å vise vår historie. Vi snakket om å vise vår portefølje. Hvordan ville vi vise vår historie? PUBLIKUM: Antagelig kronologisk. JASON Hirschhorn: Antagelig kronologisk - hva spørring tror du vi vil bruke? PUBLIKUM: En utvalgt. JASON Hirschhorn: En utvalgt - velger kanskje alle rader fra tabellen som samsvarer med bruker-ID og deretter vise dem kronologisk, høres bra ut. Trenger vi å skrive kode for å sortere gjennom den listen? PUBLIKUM: Nei, fordi du fortalte oss at det er en stigende og synkende ting. JASON Hirschhorn: Thing? PUBLIKUM: Yeah. JASON Hirschhorn: Yeah. OK, ikke slå i kode til meg, at sorterer manuelt gjennom dine spørsmål, å sortere dem. At koden er allerede gitt. Du kan skrive en utvalgsspørring som sorterer ting. Sortere dem på forhånd og deretter skrive dem ut. Det gjør så mye mer fornuftig å gjøre det på den måten, enn den andre veien. Ja. PUBLIKUM: Trenger vi å sortere dem på forhånd? Betyr det at du liksom dem i databasen? JASON Hirschhorn: Vinduet Velg spørring returnerer dem til deg sortert. Så gjør det, heller enn å bare ha dem tilbake til deg i en tilfeldig rekkefølge og deretter sortere dem selv. Yeah. PUBLIKUM: Er det en måte å holde det sorteres i databasen i seg selv, slik at du trenger ikke å sortere det hver gang du - PUBLIKUM: Kan du sette det sorterte? JASON Hirschhorn: Spørsmål - gjør det noe at ting er sortert i databasen? PUBLIKUM: Nei. JASON Hirschhorn: Vel, de er sortert. De er sortert kronologisk. Men la oss anta at ting er sortert kronologisk, fra topp til bunn. Vi har en Google-skjema. Når noen svarer på vår Google form, det bare blir satt i bunnen av tabellen. Spiller det noen rolle at ting er sorteres ikke kronologisk? PUBLIKUM: Hvis det ikke er kronologisk, du trenger ikke å sortere det hver gang du tar info ut. Men hvis det er allerede sortert, kan ikke du ikke å gjøre det ekstra funksjonskallet? JASON Hirschhorn: Så det er faktisk et godt poeng. For oss som programmerere, det kanskje ingen rolle. Og vi ønsker kanskje å finne en database som ikke sortere ting kronologisk. Eller sette opp vår database, så det holder ting sortert etter bruker-ID. Så på den måten, sier, har vi 1000 bruker-IDer. Eller Facebook, har vi millioner av bruker-IDer. Vi ønsker ikke vårt bord å bare være tilfeldig eller vår database for å være tilfeldig. Det ville være fint om alle bruker-IDer ble sortert. Så da kunne vi kjøre binære søk på vårt bord, og så bare finne den spesifikk del. Så ja, avhengig av - hvis vi skalert opp, vi ønsker kanskje å finne en database Som holdt ting sortert i en annen måte, slik at disse søkene ville ta kortere tid. Og vi trengte ikke å gå gjennom vår hele databasen i hver enkelt rad i en gitt tabell. Men det nivået vi jobber på, vi trenger ikke å bekymre deg for å holde ting ordnet. Vi kan anta at den tiden det tar at spørringen til å kjøre kommer til å være ubetydelig, gitt hva vi har med å gjøre. Men ja, god idé - som vi skalere opp, det kan være fornuftig å designe vår database i en bit av en annen måte. En siste database design ting jeg ønsker å nevne også, fordi du vil bli gradert, eller scoret heller, på utformingen av databasen. Vi snakket om dette. Cash er unik for hver bruker. Så du har en tabell kalt cash som har sin bruker-ID og deres mengde kontanter og deretter en tabell kalt brukere som har sin bruker ID og deres brukernavn. Disse tabellene kart på hver andre en-til-en. Det gjør trolig fornuftig for at de skal være en tabell. Så la oss anta at du har en bruker tabell som holder styr på brukernavn og kontanter. Du har nå en tabell som har den aksjer en person eier. Og en person kan eie mer enn én bestand. Så disse ikke kart på hverandre, en-til-en. Det gir ikke mening å ha en gigantisk tabell som har 30 poster som alt gjenta et brukernavn, som alle gjenta et passord, som alle gjenta en rekke av kontanter. Men hver har kanskje en annen lager navn eller en annen aksjekursen. Det gir ikke mening å ha at mange store poster. Vær smart om når du lager disse databaser, slik at du ikke gjør noe dumt sånn, gjenta mye unødvendig informasjon. OK. Vi har to minutter igjen. Folk utenfor er glade for å bli med oss eller sannsynligvis, formodentlig, starte sin egen klasse. Er det noen som har noen spørsmål før vi ender opp? OK, dette var faktisk en virvelvind gjennom alt. Jeg beklager at det måtte være så rask og at vi ikke kunne være så hands-on denne uken som jeg ville har likt å ha vært. Men hvis du har noen spørsmål om noe vi gikk over eller noe i dette oppgavesettet - Forutsatt at du har lest den og sette i en god tro innsats - gjerne send meg eller kontakte meg. Jeg er mer enn fornøyd med å arbeide gjennom koden din med deg eller svare på eventuelle spørsmålene du har. Husk at denne uken, mye tiden vil bli brukt til å lære den ny syntaks og prøver å forstå hvordan å skrive SQL-spørringer eller PHP funksjoner eller avtale med en MVC rammeverk. Mye av tiden denne uken trolig vil ikke være å prøve å finne ut av gal logikk at vi er ber deg om å gjøre. Mye av det vi bare gikk over er relativt ukomplisert. Så det betyr ikke vente til siste minutt. Men det betyr justere hvordan du gjør din jobbe deretter, for å være sikker du er forståelse og lære syntaks. Så du er ikke, plutselig, å vite akkurat hva du vil gjøre, men med ingen anelse om hvordan de skal akkurat skrive det. OK, jeg ser deg neste uke.