>> SAM LEVATICH: Velkommen til seksjon for denne uken.
Jeg er ikke Andi.
Andi har blitt syk denne dagen, og jeg har liksom kalt i siste øyeblikk
å overta.
Det er influensasesongen, så sørg for at du holder seg rusfri, vaske hendene,
og spise sunt slik at du også, er ikke sengeliggende.
>> Men uten videre larm, la oss komme i gang.
I dag skal vi snakke om PHP litt bit-- hvordan
PHP er relatert til HTML, hvor det vedrører CSS, og noen av web
ting du gjorde på den siste oppgaven.
Vi kommer til å snakke litt om SQL
og hvordan du kan jobbe med databaser, som er en ganske viktig del av P
satt 8-- P satt 7.
P satt 7.
>> Og så skal vi snakke litt litt om hvordan view kontrollere fungerer
og hvorfor det er en filosofi bak noen moderne nettsider og annerledes design.
Ganske mye mye typer apps og programmer du kan sende
bruker denne modellen view controller rammeverk,
at du skal bruke i P satt 7, så jeg skal
snakke litt om hvorfor det er blitt
populært, hvorfor det er viktig og hyggelig.
Og så skal jeg endelig gå videre til noen tips om å takle P satt 7.
Og hvis vi har tid igjen på slutten,
vi kan faktisk gjøre noen jobbe med det sammen.
>> Så, PHP.
Faktisk har du kanskje lagt merke til dette-- du egentlig ikke trenger å dykke inn it--
men P satt seks hadde noen PHP kode som var på gang.
Og fordi PHP er et C-lignende språk, PHP, i motsetning til HTML og CSS,
er et programmeringsspråk, mens HTML og CSS er statiske.
De er kodespråk som omhandler med stil og visuell layout.
PHP er the real deal.
>> PHP har løkker, det har conditions-- alle at ting som er gøy om C.
Den har et par ting som er litt litt bedre enn C, som vi vil se,
men jeg tror den enkleste måten å snakke om PHP er bare å dykke i.
Så jeg kommer til å gå rett inn i IDE på dette punktet.
Det første vi skal å gjøre er å se egentlig
en liten bit på noen av PHP-kode som var i P satt seks.
Så måten vi gjør at-- før, slik at vi fikk kjøre
serveren for apparatet var at vi måtte type--
enten bruke implementeringen eller personalet implementering
av server.c ved å gå inn i katalogen og kjører server.c med enten ingen
arguments-- så bare kalle det på lokale verten, som er det du sannsynligvis
gjorde det meste av tid-- og deretter fôre det
en directory-- med som å bruke som sin rot
hvor nettsiden ville være drevet, i utgangspunktet.
>> Denne uken for P satt 7, som stor som vår kode for server.c
er, det er folk som allerede har skrevet disse fine tingene over på CS50
som har en liten bit mer funksjonalitet,
en server program som er i stand for å håndtere en litt mer
av de vanskelighetene som vi vil se i både P satt 7 og P satt åtte.
Og måten at du starter opp Serveren er ved bare å skrive, "apache50."
>> Og før du gjør noe, du vil være sikker
at Apache 50 er ikke allerede kjører som det er
på min maskin, som jeg gjorde for å teste den.
Og du gjør det ved å ringe apache50.
Stoppe, og du vil se at det hindrer webserveren, hvis du kan se det
på bunnen av terminalen vinduet.
Og da bare for å starte, vi er kommer til å kalle "apache50 starte."
Og så skal vi å mate den en katalog.
>> Nå, fordi vi ønsker å se på noen av P satt 6-kode
at vi hadde gjennomført, jeg faktisk kopiert litt av P
satt seks kode inn i min egen mappe, som du kan se til venstre der.
Det kalles "SeCtIoN8" med store bokstaver
fordi jeg er så spent å bli live-streamet i dag.
>> Så hvis vi kjører dette, bør det alt fungerer ganske effektivt.
Den sier, OK, er vår side nå tilgjengelig på adressen til IDE,
utgangspunktet, som er hva du brukte akkurat som det var i P satt 7-- P satt seks.
Alle mine indekser er én indeksen i dag.
Så vi kan gå til den adresse, hvis du vil huske,
bare ved å klikke på denne lille -knappen øverst til høyre.
>> Og du vil huske denne koden, som skjedde da du gikk inn hello.php.
Og hva koden er utformet for å gjør er når du har skrevet inn et navn
her-- hvis du sier Sam fordi det er min name--
og jeg klikker si hei, når vi gikk til neste side,
det navnet skulle bli vist.
Det vil si, "Hei, Sam" eller "Hei," det navnet du
legger i det, selv om vi gikk til en helt ny nettside.
>> Og dette er den typen ting at PHP kan gjøre for deg.
PHP er i stand til å overføre data mellom to nettsider.
Dette er en helt annen side.
Du vil se tittelen er "hallo" her.
Faktisk har de samme tittel, men jeg
lover de er forskjellige web sider hvis vi ser på kilden.
Og du kan passere data som er inn i dette tekstfeltet
du sender det til neste side som blir kalt opp,
og deretter at data er i stand til å være der i sin nåværende form.
>> Nå har vi ennå ikke har implementert dette selv, noe som
er det vi kommer til å gjøre akkurat nå for å liksom få en smak for hvordan PHP fungerer,
men nøkkelen ideen er at PHP-- du kan liksom tenke på det som en funksjon.
Noe som PHP kan la deg vet er at det kan ta parametere
at du innspill til en HTML-side gjennom bruk av PHP og former,
og det kan passere dem som parametere til neste side at det lastes opp.
>> I dette tilfellet, vi laste opp dette side med "Si hei" -knappen.
Men for nå, jeg faktisk slettet noe av den koden
i hello.php som ble kjørt som faktisk var å vise "hallo,
verden "eller" hallo, Sam "eller "Hei," hva var bare inngang.
Så for akkurat nå, vi er kommer til å gjøre det, i utgangspunktet.
Vi kommer til å gjenskape den og også legge litt mer funksjonalitet,
gjøre litt mer med det, se hva PHP er virkelig i stand til.
>> Så først, la oss snakke om denne filen, hello.php.
Så hvis vi zoomer inn en Litt bit-- og nå er jeg
liksom prøve å bla alle måten around-- der vi går.
Du vil se det heter hello.php, men syntaksen til det
ser ut som en HTML-fil.
Dette er fordi faktiske PHP i denne filen
er alle fast mellom disse spørsmålstegn-caret blokker.
Alt rett her anses PHP-kode.
>> Og du vil legge merke til at når jeg gjorde en kommentar,
vil du se det velkjente to skråstreker.
Og hvis du husker, i HTML, hvis jeg skriver en kommentar,
det ser noe nærmere dette, noe som er en kommentar i HTML.
Så egentlig alt mellom disse to vinkelparenteser
Nå er PHP-kode, som er reflektert i det faktum
at denne lille kommentaren symbol blir forvandlet til en kommentar.
>> Så hver gang du skriver PHP-kode, selv Hvis det er ingen HTML kode utenfor den,
det er alltid kommer til å være omsluttet av disse vinkelparenteser
med spørsmålstegn.
Du kan liksom tenke på it-- hvordan alle av koden som kjørte i dine C-programmer
var vedlagt i en int main, ugyldig klammeparentes, end krøllete brace uttalelse.
Og du vil se klammeparentes i PHP, også, men dette er liksom
som den viktigste metoden for PHP.
>> Så nå, hvordan kan vi gjøre noe i PHP?
Nå er PHP et programmerings språk som er veldig C-aktig,
men den opererer på nettet.
Så en ting som du immediately-- én
av de første tingene du virkelig gjorde med C ble du skrevet ting ut, ikke sant?
Så i C vi gjorde det med en printf funksjon.
Vi ga det en streng, sannsynligvis med en ny linje,
og da vi avsluttet det med et semikolon.
>> Så den måten at vi kommer til å gjøre det i PHP-- fordi det er ikke helt printf.
Det er en liten bit av forskjellig syntaks.
Måten vi skrive ting ut i PHP er vi sier, "echo Hei"
eller "echo" noen ord.
Og som har den virkning av å gjøre printf med en streng, "hallo".
Og det legger den nye linjen til den.
>> Så la oss nå gjøre sure-- Jeg skal zoome ut igjen litt bit--
La oss sørge for at at koden fungerer
fordi det kan meget godt være en feil i denne koden
at vi blir nødt til å takle.
Slik at serveren kjører allerede.
Så hvis vi rulle tilbake ned til bunnen, yup, er serveren fortsatt kjører.
Så hvis vi bare trykk på denne litt rett her--
welcome-- vi bør get-- stor.
>> Vi fortsatt har den familiar "Si hei" dialog,
men når jeg skriver inn "hei," vi får se at teksten "hei" var faktisk
skrives ut, som er nøyaktig som vi forventet fordi ekko i PHP
er akkurat som en printf uttalelse.
Så tilbake til koden, hvordan i P satt seks gjorde fordelingen koden du er gitt
gjøre det slik at PHP ville utgang ting som du
skrevet i på forrige skjermen?
>> Og for å liksom undersøke hvorfor det skjer, er vi
kommer til å gå inn i index.html, som er den opprinnelige filen, filen
dukker opp på denne skjermen med "Si hei" -knappen.
Du legger merke til at det er alle de klassiske tingene
vi har kommet til å forvente fra HTML slik som disse tingene, disse kodene vedlagt
i vinkelparenteser, som PHP men uten spørsmålstegn,
noe som indikerer en spesiell ting til HTML.
Vi har tittel, som er "hei."
Og du vil merke at vi så, tittelen er "hallo" i begge tilfeller.
La oss endre dette å "si" bare slik at vi
kan skille oss selv hvor vi er.
>> Men vi har fått en kropp.
Og så interessant bit, bit som dukker opp i HTML,
er denne formen element.
Og så har vi fått en form.
Og dette er nøkkelen.
Dette er hvordan vi jobber med PHP.
Handlingen parameter av skjemaet sier at hello.php
er det vi kommer til å sende verdiene i dette skjemaet til.
Det er der vi kjører parametrene, så å si.
>> Du vil merke en annen ting her er at metoden er "bli".
Det er to primære metoder som vil
være å bruke PHP for å overføre data mellom websites-- nettsider,
rather-- i dette oppdraget.
Og disse metodene er "få" og "post".
Det er noen subtile Forskjellene mellom get og post
at vi vil få into-- vi vil "komme" inn, hvis du vil.
>> Men for alle praktiske og formål, får og post
er begge bare måter som du sende parametre
med litt ulike henrettelser.
For nå kommer vi til å bruke få fordi få var det som ble brukt opprinnelig
i PHP-filen fra P satt seks.
Og faktisk, hvis vi går inn og se før vi har redigert noe annet,
Jeg kommer til å si hei to-- hva heter du?
>> PUBLIKUM: Elliot.
SAM LEVATICH: Åh, gosh.
Jeg vet ikke hvordan å stave det.
Kan du stave det for meg?
PUBLIKUM: E-L-L-I-O-T.
>> SAM LEVATICH: I-O-T?
>> PUBLIKUM: Yeah.
>> SAM LEVATICH: Perfect.
OK.
Jeg antar at jeg visste hvordan å stave det.
Beklager for det.
Men hvis vi sier "Si hei," det er ikke det er ikke til å dukke opp på skjermen
ennå fordi vi endret koden litt.
Men hvis vi gjør "Si hei" - OK, så "hallo" er her.
Men hvis vi tar en nærmere se på nettadressen selv,
vi vil se at det ender med hello.php? name = Elliot.
>> Så dette er en måte å kommunisere til neste nettside
parametrene som vi har passert.
Vi sa name = Elliot.
Og det er til syvende og sist hvordan P satt 6 vist den variabelen som vi passerte i
gjennom skjemaet.
Og dette er noe som er særegen for en GET forespørsel.
En get forespørsel gjør parametrene kjent i nettadressen til nettstedet.
>> Og du vil huske, også, i P satt seks som du
måtte skrive en funksjon som jobbet med det faktum
at denne søkestrengen kunne eksistere etter en fil.
Det kan være et spørsmålstegn etterfulgt ved utgangspunktet vilkårlig antall tegn.
Og det er akkurat det som skjer her.
Og grunnen til at du måtte analysere det i implementeringen av server.c i P
satt seks er slik at du kan fortelle PHP-kode som navnet = Elliot.
Du trengte å være i stand til å analysere det ut av URL
slik at PHP aktuelle filen visste hva det var å gjøre med.
>> Så forhåpentligvis dette gir motivasjon til å server.c
nå som vi går videre utsiden av C i PHP.
Så la oss faktisk fokusere på å få tilgang til ting gått gjennom en get forespørsel nå
På dette punktet.
Jeg kommer til å spare dette.
Vi gjorde ikke endre noe.
Det ser ut som vi har fått et inntastingsfelt.
>> Vi sette noen egenskaper, som vi kan gjøre en HTML.
Dette er enkle ting.
Vi trenger ikke disse.
Men vi har fått autofullføring av, som i utgangspunktet says-- du vet,
når du skriver ting inn i nettet, noen ganger
den prøver å fylle det inn for deg.
Så det er en fin ting.
Vi ønsker å slå den av til dette formålet.
Det var en CS50 beslutning.
Så vi kan slette det hvis vi ønsket.
>> Autofokus bare stikker markøren i form helt i begynnelsen.
Igjen, ikke så viktig.
>> Men name = "navn" - det er litt vanskelig fordi det er navn og navn.
Men vi kunne har endret dette til noe annet.
Og faktisk, det er hva vi skal gjøre akkurat nå.
Vi vil si "person", som er liksom som navn
hvis en person er definert av deres navn.
>> Så la oss lukke denne, åpne opp vår hjemmeside
siden serveren vår er fremdeles i gang Apache 50, og vi vil si, hei, her
Elliot igjen.
Hvorfor ikke?
Hallo.
Og hvis vi går opp her, vi får se så i stedet for navn = Elliot,
det står person = Elliot.
Og det er et direkte resultat av det faktum at vi nettopp endret name = "person."
>> Så i en inngang element et HTML-skjema, navnefeltet
er identifikatoren for den parameter som blir vedtatt.
Det er som om du oppretter en funksjon "legge" som tok i to heltall
og du sa int en og int b.
Det ville være navn en, og hvis du ville ha en annen form, som
vi kan gjøre bare ved å kopiere og lime, så vi ville ha navn b.
>> Så nå skal vi ha to parametre som blir ført gjennom
komme til neste website-- neste nettside, hello.php.
Og vi kan faktisk se det igjen hvis vi ønsker.
Dette er den enkleste måten å håndtere nettkoden i IDE, i utgangspunktet.
Du starter opp serveren, få det kjører, og deretter hver gang du
gjøre noen endringer, bare lukke at filen bare for å være trygg.
Ved å trykke på tilbake-knappen er litt vanskelig
fordi det kan laste en tidligere versjon, ikke den mest oppdaterte en.
>> Og så kan du bare klikke deg knappen igjen, pop rett opp-- oh,
og nå er det to former.
Og så hvis vi skriver en ting i hver one-- "jason Hirshhorn," for instance--
vi si hei.
Vi ser opp på våre parametere.
Det ser ut som vi har fått, som forventet, a = jason og b = Hirshhorn,
som representerer de to parametrene at vi passerte til denne funksjonen.
>> Så nå kan vi faktisk komme til implementere den funksjonaliteten som vi
hadde i P satt seks.
Så akkurat nå er vi bare ekko hei.
Og det er ikke veldig nyttig.
Vi ønsker å ekko noen variable som ble sendt til oss.
Og vi vet navnet på denne variabelen.
Vi har en, og vi har b.
Slik at vi kunne velge å ekko ett.
>> Men hvordan få tilgang vi det?
Vel, det er visse globale variabler i PHP.
Og jeg kommer til å skrive dem i kommentarene her.
De to viktigste er get og legge for vårt formål akkurat nå.
Dette er de arrays eller, Teknisk, ordbøker
hvor våre variabler som vi er passerer til neste nettside levende.
Og vi skal snart se hvordan du bruker dem.
>> Et annet kort notat om PHP-kode og noen spesifikk av it i C,
å erklære en variabel eller å bruke variable
du først måtte erklære dem.
Og hva du måtte gjøre når du erklærte dem var si int en eller røye b.
Du måtte erklære hvilke typer disse variabler før du har opprettet dem.
PHP-- du ikke trenger å gjøre noe av det.
PHP spør ikke om den type variabel.
Og måten du skape en variable-- heller
enn si int, røye, string-- som er virkelig char *, som vi know--
snarere enn å gjøre alle det, fordi alt
er av samme type, typeless, kan vi bare
bruke én karakter, som er dollartegn.
Og du vil se det allerede dukker opp, små autofullfør ting.
Og det er å si at _GET og _POST er to alternativer som jeg har tilgjengelig
til meg.
Noen av disse andre tingene er andre globale variabler i PHP
at du skal bruke over løpet av P satt 7.
For nå skal vi fokusere på få og innlegg.
Men dette er et nyttig Det som IDE gjør
der en gang du har skrevet i at dollartegn,
det vil begynne å fylle i globale variabler eller variabler du allerede har definert.
>> Så hvis du ønsket å definere en variabel kalt "streng"
du kunne bare sette den lik "hei."
Og det er i utgangspunktet så enkelt som det.
Og så kan vi gjøre noe sånt som "echo $ string."
IDE bør kaste noen feil hvis jeg gjør noe galt,
så forhåpentligvis jeg gjør alt rett.
Men bugs alltid oppstår.
>> En annen lur ting om PHP er at det ikke er utarbeidet.
Så med C-programmer, ville du gjøre den daglige rutinen of-- utgangspunktet,
du ville gjøre endringer til koden din, vil du lagre det,
og så ville du gjøre det, hvor make var
trinnet som kalles kompilatoren, clang, gjøre koden, denne teksten
fil, i en kjørbar.
PHP er C-aktig, men det er utført på sparket av nettleseren din.
Så det er ingen måte å vite.
>> Gjør ville kaste dem nyttige feil, ikke sant?
Det ville være som, du erklærte ikke denne variabelen
før du prøvde å bruke den.
Du gjorde alt dette dårlig stuff-- segfault, segfault, all den slags moro ganger
som fulgte med make.
PHP er et tveegget sverd fordi du ikke vil få disse feilene,
men det betyr også at du ikke vil vite egentlig hva som er galt med programmet
hvis du bare kjøre den og den fungerer ikke.
Men debugger skal peke ut noen forhåpentligvis nyttige småting
syntaktisk at du kan fikse.
>> Så nå hvis vi går over to-- si, la oss lukke det.
Gjenåpne.
Og vi er tilbake til her.
Så vi har en variabel og en variabel b.
Og disse vil ikke slutt saken.
Vi kaller dem h og g uten noen spesiell grunn.
>> Og vi sier hei.
Nå ser det ut som vår string "Hei" er faktisk utskrift.
Vi skapte en variabel kalt "streng", sette den lik "hei."
Legg merke til at vi ikke har å gjøre malloc eller gjøre et tegn array.
>> I PHP, fordi variabler er typeless, en streng
er den samme som for en char alle praktiske formål.
Dette kan være "hei."
Dette kan være akkurat den karakteren k.
Dette kan være et tall 1.
Og det bryr seg ikke.
PHP ikke bryr seg om hvilken type variabel.
Eller, det gjør det vare.
Det bryr seg når du prøver og gjøre ting med det,
men det bryr seg ikke i erklæringen trinnet.
>> Og akkurat som du kan i C, kan du erklære strenger på stakken som dette
om å si "stack" er en liten litt av en potensiell misvisende når
vi snakker om PHP.
Men vi trenger ikke å bekymre deg for det.
Så vi fikk vår string "Hei," og vi ekko streng.
Så nå har vi diskutert variabler.
Så nå må vi snakke om get og legge og utføre den endelige ting som er
nødvendig for å virkelig få dette opp igjen til funksjonaliteten av P satt 6.
Så akkurat nå er vi ekko strengen, men vi
har disse variablene får og post.
Og fordi vi bruker metoden får, det
synes naturlig at vår variabel som vi er interessert i, både a og b,
vil bli plassert i matrisen eller ordbok, teknisk får.
>> Så hvis vi setter opp blir som dette med groups-- jeg trykket angi
og det liker ikke it-- men her har vi får.
Og så får allerede eksisterer.
Så vi kan allerede nå begynne å få tilgang noen av elementene i Get.
Hvis vi får denne syntaksen for arrays i PHP er veldig C-aktig.
Vi har våre to hakeparenteser.
>> Så hvis vi sier får i en vanlig array, kan vi få tilgang til
zeroth indeksen, den første indeksen.
PHP er null indeksen.
Vi kunne si null, en, two-- ting som dette.
Og jeg har sagt at få er teknisk sett en ordbok.
Så hva PHP gjør under panseret, som er litt bedre enn C,
er det allerede gir deg noen ordbok funksjonalitet, som
er egentlig hash tabeller, eller prøver å, visstnok.
Eller, teknisk sett kan være en prøve så godt.
Men PHP gjennomfører en hash table, som danner en effektiv ordbok.
>> Og så vi vet navnet av våre variable, ikke sant?
Det blir vedtatt i søkestrengen av PHP.
Vi har a = b = h og g og der b er navnene på variablene.
Så den måten at vi kan få tilgang til verdi som svarer til den tast
i vår ordbok er bare ved å si _GET_GET ["a"].
>> Så nå har vi _GET ["a"].
Og hvis vi bare erstatte inne vår ekko, hvis vi ekko _GET_GET ["a"] -
og vi får se om det debugger kaster eventuelle feil om dette--
vi vil lagre det og lukke ut dette.
Åpne den opp.
Så vi bare gjør en rett nå, så b bør ikke saken.
"henne" og "ham" - "hum". "henne" og "hum".
Høres bra ut.
>> Og det skrives ut "henne", som er gal.
Men det er akkurat det som foregikk i P satt seks.
Innerst inne, hva P satt 6 var doing-- echo hello,
name-- hvor det hadde en variabelnavn og det bare
ber deg om å skrive inn det litt av teksten.
Det var også noen tilleggskode der
det inkludert hvis uttalelser, som vi kan gjøre akkurat nå.
>> Vi kan si at hvis det finnes, som er en funksjonalitet innen PHP,
_GET Med understrek, "navn" - som er utgangspunktet si,
"hvis navn er blitt fylt i" fordi vi kunne bare ha klikket på knappen
å sende inn skjemaet uten å skrive noe inn det feltet.
Og vi vikle at i vår vennlige klammeparentes.
Vi kan ha et annet utsagn.
Og det er alt innen PHP vinkel brakett, spørsmålstegn, vinkelbeslag,
hvis du vil.
>> Og nå får vi se om dette fungerer.
Jeg fortsetter å vente på det å feilsøke og crap ut på meg, i utgangspunktet,
men det har ennå ikke.
Kanskje det vil nå fordi jeg snakket om.
Jepp.
Det gjorde det, faktisk.
Så, er det ingenting å dukke opp.
Det er på grunn av noe galt som jeg skrev i PHP-koden.
Og jeg nevnte debugging er vanskelig fordi i PHP, vi
ikke kompilere det på forhånd og kompilatoren ble ikke liker,
her er hvor feilene er.
>> Men det vi kan gjøre er-- gjøre folk husker
hvordan å se på ulike nettverk forespørsler som PHP-- eller at nettsteder
sende?
[? Malin?] Gjorde dette i foredrag en gang eller to.
Husker du hvor vi går for å finne de ulike gjeld og 200 OKS,
alle disse kodene som blir sendt gjennom HTTP fra nettside til nettside?
Er det noen som husker hvor vi går for å gjøre det?
>> PUBLIKUM: Page Source.
SAM LEVATICH: Side kilde.
Nettopp.
Hvis du går til siden Source-- perfekt.
Så Page Source trekker opp inspektøren.
>> Og jeg bruker Safari.
Mange av dere vil sannsynligvis være bruker Chrome eller Firefox.
Men så lenge du er i enhver moderne browser--
og føler seg fri til å følge sammen hvis du vil.
Du kan skrive opp denne koden eller bare se inne i P sett 6
katalog for noen lignende ting.
hello.php er hva vi er jobber for tiden med etterligning.
>> Så det er en rekke kategorier.
Vi kan se på alle ressursene.
Vi kan se kildekoden.
Så ser ut som det gjorde ikke komme forbi kroppen til slutt.
Det funnet en feil i PHP, og det stoppet lasting av hele nettsiden.
Vi har ikke engang en slutt tag for HTML eller noe.
>> Og hvis vi ser på nettet, kan vi se at vi blir sendt en forespørsel.
Dette er domenet.
Dette er adressen.
Det er et dokument.
Vi bruker GET-metoden.
>> Og det er rødt.
Eller, det ble rødt når jeg ble ikke velger det.
Hvordan velge bort jeg det?
Vel, det var rødt.
La meg oppdatere.
Det er det.
Nå er det rødt.
>> Så det er rødt, som betyr det mislyktes, noe som er dårlig.
Så la oss undersøke hvorfor det gjorde mislykkes.
Så alt at Page Source kan utgangspunktet fortelle deg er din greie
fungerte ikke, som vi allerede kan se.
Så ideelt sett ville det være et mer nyttig verktøy.
Og er det noen nettleserutvidelser som tillater deg å feilsøke PHP,
men vi kommer ikke til å være å skrive massevis av PHP,
så det er nok bare beste å se gjennom koden din
nøye og bare sørge for at det er ikke å gjøre noe annet.
>> Så la oss se om formatet på denne hvis setningen er der problemet ligger.
Jeg ønsker å laste det opp igjen her.
Hei, hei.
Så det er et problem der.
>> Så for riktig syntaks av PHP, er PHP kommer
å være C-aktig i at du får se sløyfer.
Du får se om uttalelser.
Du vil se alle disse vennene at du har blitt kjent
med løpet av denne CS50 semester.
Men den beste måten å finne ut hvordan du gjøre noe i PHP er å google det
eller for å se på noen eksempler på PHP-kode fordi du vet funksjonaliteten.
>> Du vet hva du kan gjøre med programmet.
Du kan sløyfe.
Du kan sløyfe så mange ganger du vil.
Du kan sløyfe i alt slags forskjellige måter.
Du kan lage funksjoner.
Du kan opprette funksjoner som ringe andre funksjoner, funksjoner
som kaller seg.
Og har du navnene på disse begrepene.
Du har rekursjon, løkker, hvis, andre kontrollstrømmer.
Og slik Google er din beste venn.
Selv sier, "PHP hvis statement "og det vil
være tonnevis av innlegg med svar til andre mennesker
som har hatt lignende spørsmål til deg, som bare starte opp med PHP
og er nysgjerrig på en syntaks ting.
>> Fordi vi har luksusen av å være i stand til å se på koden i P sett 6,
vi faktisk dra den opp og se at OK, her er noe interessant.
Så dette er hva det faktisk så ut i P satt seks.
Så hvis vi går gjennom dette, Vi kan se at vi har
fikk flere av disse små PHP-lignende spørsmålstegn biter.
>> Og det er ikke klammeparentes.
Det er kolon.
Og det er krøllete bukseseler i PHP, men dette
er et format og en måte å gjøre PHP som fungerer godt med HTML
fordi som du ser, vi lukker off disse PHP bits-- den andens
og ifs og alle at-- og deretter vi intersper HTML inni dem
mens de fortsatt følger kontrollflyt satt ut av PHP.
>> Så jeg skal bare rask spasertur gjennom denne
fordi det er mye av det samme konsepter som vi gjorde før.
Vi har fått hvis ikke tom, parentes, _GET_GET ["navn"].
Dette er alle de samme tingene.
Vi bruker den _GET ordbok som PHP sender på forespørsel av former,
fordi det er parametrene av virkning, og fremgangsmåten er å få.
Og da ender det.
Kolon er et signifier å bare gjøre dette hvis hvis setningen evalueres til sann.
Det er som en klammeparentes.
Og faktisk, det er en klammeparentes i andre språk som Python,
som kan oppstå hvis du bare gjøre det for det endelige prosjektet.
>> Og så denne linjen, hallo.
Så har vi denne rare ting.
Vi har fått flere konsoller.
Det er ingen HTTP det-- eller PHP, beklager.
Men det er et likhetstegn.
Og så har vi en funksjon, htmlspecialchars (_GEThtmlspecialchars (_GET ["navn"]).
Dette er liksom som en mer avansert versjon av ekko.
Som vi hadde ekko som en måte for å skrive ut ting i PHP.
Dette er en funksjon som er definert i PHP som
vil omhandle litt mer ekkel tegn og byte-verdier
at du kunne passere den.
Det er alltid tryggest å bruke denne.
Men ekko vil gjøre jobben bare fint hvis vi ikke er
arbeider med noe som er for stygg.
>> Og slik at dette har samme Effekten av utgangspunktet,
denne ting i mellom spørsmålet merkene er evaluert av PHP.
htmlspecialchars returnerer en fin HTML trykt verdien av _GET_GET ["navn"], dvs.
hva vi skrev i form.
Og så vil det si hei, komma plass, og deretter det.
At hele greia mellom vinkelbrak
vil bli erstattet av hva htmlspecialchars legger ut.
Så det er i utgangspunktet like til det vi holder på med.
Og vi har et annet utsagn som er hello world, som er fornuftig.
Så nå la oss gå tilbake til vår kode og se exactly-- oh.
I nevnte eksisterer, som ikke er en ting som vi ønsket å gjøre.
Vi ønsket å si ikke tom.
>> Og så dette bør jobbe litt litt bedre, ikke tom _GET_GET ["navn"].
Og at klammeparentes kamper som curly brace.
Vi har fått våre klammeparentes her.
echo hei _GET ["navn"].
La oss se om dette fungerer litt bedre.
Vi er fortsatt kjører serveren vår.
Hei Jason.
Og det fungerte denne gangen.
Og så det er et bevis at du kan faktisk
bruke klammeparentes som du kjenner og elsker i PHP-koden i HTML.
PHP-koden gitt til du i PSet 6-- PSet 6--
gir en annen måte å gjøre det samme.
>> Så nå har vi makt.
Vi har funksjonalitet for å implementere PHP-kode som vi så i PSet 6
av oss selv, i utgangspunktet.
Før jeg går videre, hva er noen av de spørsmål som du har på dette punktet?
Ja [uhørbart].
>> PUBLIKUM: Så i den versjonen i pset6, når du kjører den, det er en plass.
Og jeg kan se hvor plassen er etter komma. [Uhørbart] start
den åpne braketten.
Hvordan innlemme du gjøre plass i måten du skrev dine egne koder?
>> SPEAKER: Det er et godt spørsmål.
Og så la oss finne det ut.
Så det er et veldig godt spørsmål og en som jeg ikke vurdere.
Men la oss gjøre det sammen.
>> Så først av alt, hva Jeg gjør med ekko
er når vi bare ekko hallo, utganger det hei.
Hvis vi ekko nå dette komme på et eget linjen, la oss undersøke hva som skjer.
Så vi klikker på denne.
Vi fortsetter å si, hei Jason.
Så igjen, har vi ikke denne plassen.
>> Og det er fordi, i PHP, når vi har ekko,
uansett hvor mange spaces-- nope, ikke V--
uansett hvor mange plasser vi satt i her-- hvis vi nå laste det opp igjen,
hei Jason.
Ja, se, alle de mellomrom fikk spist opp.
Og det er noe som ekkoet funksjonen gjør.
>> Så for å ta vare på at plassen er og dette
en av grunnene hvorfor du ikke bruker ekko
og du bruker htmlspecialchars stedet.
Jeg er nysgjerrig på hva ville skje hvis vi gjorde dette
hvor vi vedlagt en plass i en streng.
Jeg er ærlig talt ikke sikker på hva vil skje når jeg gjør dette.
>> Så det er en vei.
Det er en måte å ta vare på den.
Hvis du vikler opp plass i en streng, så plassen
vil bli sendt ut pent av ekko.
Den sikreste tingen å gjøre er å gjøre htmlspecialchars.
Det er alltid den sikkert kort.
Men nå har vi en måte å gjøre den med ekko hvis det er nødvendig.
Og på en lignende måte, kan vi ekko nye linjer, alle slags
av ting du er kjent gjør i PHP.
>> Noen andre, hva er noe mer spørsmål som andre folk har
på dette punktet om PHP?
Hvis folk viste litt sent, Jeg er glad for å bo etter en liten bit
og snakke om noen av begynnelsen.
Og det er også alt livestreamed, og arkivert, som er gal.
>> Uansett, så nå la oss gjøre noen mer avanserte ting med PHP.
Og en av de tidligste tingene du ble introdusert for i C var for sløyfer.
Og PHP har en kraftigere for sløyfe kalt foreach loop.
Og det ser ut som dette-- for hver tomt som tomme, klammeparentes, gjør ting.
Så dette er egentlig en forkortelse.
>> Se, for loop som en syntaktisk konstruksjon
ble utviklet i C og i forsamlingen språk og ting liker.
Utviklet i C, nettopp, som en forkortelse for mange av de typer sløyfer
at folk ville se.
Som når du skrev en loop, der var ofte en initialiseringstrinn
henrettet helt i begynnelsen, en tilstand hvor sløyfen ville stop--
og det er den funksjonen det er bare på en stund loop,
eller som en stund har nøyaktig bare at feature-- og deretter
en incrementation skritt på slutten.
Og så du vil ofte finne deg selv skrive kode som følgende.
Jeg kommer til å slette noen av dette.
>> Men hvis vi gjentar gjennom tegn i en matrise,
for eksempel, som vi har fikk en rekke tegn.
Beklager å bringe tilbake C. Jeg vet, du trodde du var ferdig.
Men det er bare for det formål av å lære PHP, jeg lover.
Så hvis du fikk en char str av lengde 8, og la oss
si det står Hellooo med en etterfølgende null.
Stor, så det er vår streng.
>> Og så hadde vi en for loop.
Vi har int i lik 0.
Og vi ønsker å gå ut når str av lik jeg ikke er lik null,
fordi vi avslutter når det er lik null.
Og så gjør vi i ++ på hver punkt i for loop.
Gjør noe med str av i.
>> Så grunnleggende formelen var, vi hadde denne matrisen som vi
ønsket å behandle som egne elementer.
Men hva vi måtte gjøre, er vi måtte utgangspunktet opprette en egen heltall
variabelen som var telle opp hver Da vi gikk gjennom løkken.
Og så ville vi måtte deretter ringe strstr [i] når det vi egentlig ønsket å gjøre
er bare gå karakter for tegn, ikke sant?
Vi ønsker ikke å øke en heltall og deretter bruke denne heltall
for å få tilgang til hver karakter individuelt.
Vi ønsker virkelig tegn for tegn.
>> Og så for hver intelligent beregner at for oss.
Hvis vi har en matrise, som vi kan erklære i PHP
som just-- hvis vi har en variabel kalt, la oss kalle det array.
Mirakler av ikke å skrive, er det akkurat som alle andre variable.
Det er bare en matrise.
Og vi har en liten [uhørbart] som en, 2, 3, bare en slags initialisert array.
Det er OK, det liker ikke min foreach.
>> Men hvis vi foreach-- faktisk Jeg skrev det litt feil.
Det er to måter å gjøre en foreach loop.
Det er i syntaks og som syntaks.
Og vi kommer til å gjøre i syntaks første, ikke så.
Det er min feil.
>> Så foreach num i array, ekko num.
Og PHP er roping på meg for noen grunn.
Det å finne en uventet i på noe,
som er litt av en plage.
Men vi vil finne ut hvorfor det er i et øyeblikk.
Så ikke sånn.
La oss prøve å bruke den som.
Den foretrekker den som syntaksen er virker.
Så la oss gjøre foreach matrise som num.
>> Så en liten forklaring av hva som skjedde
er den som syntaksen saying-- godt først, la oss se på hva dette skrives ut.
Så åpner vi opp vår IDE.
Vi går her.
Vi sier: Hei Jason.
Og det gjorde 123, som var innholdet av tabellen at vi skapte opp toppen.
>> Så dykke inn i denne foreach loop, vi har en variabel kalt matrise
som er en matrise av tre tall.
Og så gjør vi foreach matrise som num, ekko num.
Og det er mer intuitiv enn en for lop.
Vi sier, behandle hver av ting i rekken som num,
Jeg vil at du skal gi meg num.
Og det er akkurat det det gjør.
>> PHP beregner at når du sier foreach array,
og du arbeider med en rekke, hva du kommer til å ønske å iterere over
er karakterene i denne matrisen, er ints i denne matrisen,
er elementene i den oppstillingen.
Og det er slik at du kan lagre disse variablene som num,
og så bare utgang num med en gang i stedet for å si:
Jeg har en variabel som heter jeg, og da vil jeg utgang strstr [i].
>> Og slik som tillater oss å gjøre kule ting.
Som i utgangspunktet vi ikke trenger å lage disse variablene som jeg er og gjøre alt
dette incrementation ting på slutten.
PHP tar seg av alt dette for deg.
>> Så nå la oss snakke om foreach som det gjelder vår _GET ordbok.
Så vi vil kommentere dette ut raskt.
Så vi har vår _GET array.
Vi har denne variabelen.
Og det har noen ting i den.
>> Akkurat nå har vi bare én variabel som sendes til det, som er navnet.
Men hvis vi på Enter, nå vi kan ha to variabler.
Vi kan ha navn og alder, for eksempel, hvis vi ønsker å få alder og også
navnet på en person, pussig nok.
>> Så nå _GET kommer til å bli en ordbok med to elementer,
med to sentrale verdiparene.
Og den første key-- jeg kommer til å skrive dette opp på bordet også.
Vi har vår ordbok er _GET.
Beklager, det er er litt vanskelig å se.
Men inni vår ordbok vi har navn, som kommer til å være noe
at vi er gitt.
Og vi vil ha alder, som også er kommer til å være noe som vi er gitt.
Og dette er helheten av vår ordbok.
>> Så det har to elementer i den.
Og så fordi foreach sløyfer er smarte, vi
kanskje tror, ​​og riktig tenker kanskje at foreach
kan iterere gjennom denne ordbok, skrive ut
verdiene gitt ved navn og alder.
>> Så la oss faktisk gjøre nettopp det.
La oss bygge en foreach loop.
Og vi kommer til å gjøre for _GET as.
Og vi kommer til å gjøre følgende.
Så la oss se hva som skjer når vi taster bare ord, og deretter si ekko ord.
Vi kommer også til å ekko en ny linje bare for å gjøre det litt klarere,
hva er det som skjer.
>> Så la oss se.
Det er ikke å gi meg noen feil.
Og vi vil lukke denne.
På vår hjemmeside, du kommer til å gjøre mye av det i løpet av pset7.
Så vi sier mitt navn er Sam.
Min alder er 45.
Det er ikke.
Men det skrives ut, som forventet, Sam 45.
>> Og så vil du legge merke til at hva foreach løkke did-- her,
la oss gå tilbake til det, så det er opp på board-- får vi _GET som ord.
Og det var fire ting i _GET.
Men det bare skrives ut to ting.
foreach, å være sin intelligens selv, antok at det vi egentlig ønsket
var verdiene, ikke nøkler.
>> Men det er en måte at vi kunne skrive ut nøklene også, hvis vi ville.
Hvis vi ønsket å også vite hva disse variablene ble kalt,
det er en måte at vi kan få tilgang til dette også.
Og måten å liksom gjøre det, så vi kan si, kan virkelig
dele den opp i sentrale verdiparene.
Så la oss se hva som skjer nå.
>> Så vi har nøkkelen.
Vi har verdi.
Vi har en annen ny linjen for lesbarhet.
Og la oss se hva som skjer når vi gjør dette nå.
Jeg vet ikke hvor gammel Jason er.
Jasons 15.
Så vi har navn Jason, 15 år.
Så var vi i stand til å få tilgang til nøkkel og verdi par av denne ordboken
bare ved å si som viktige punkter til verdi.
Og det er en foreach syntaktisk sukker bit som gjør
deg tilgang til ting i ordlisten.
>> Så forhåpentligvis denne typen streker kraften i foreach loop.
Du kan ganske mye kast noe som synes iterable,
som noe som har flere elementer som en matrise,
som en dictionary-- de er to viktigste tingene du skal jobbe med
både i livet og i PSet 7.
Så du kan kaste at ting på det, og det vil finne ut
hva du vil gjøre med det.
Det vil si, OK, jeg kommer til å få disse tingene fra de data som
ble sendt til meg.
Og det er noe som du er kommer til å bruke mye i PSet 7.
>> Jeg kommer til å bla fort ned bare for å se hvor jeg er på.
Har folk har spørsmål på dette punktet?
Spørsmål i det hele tatt?
Ja?
>> PUBLIKUM: Så med nøkkelen og verdi, du kan kalle det noe annet
og det vil fortsatt fungere?
SPEAKER: Oops.
Wow, jeg helt slettet hele linjen.
Flott arbeid.
Så en, en.
Nøkkel og verdien er bare en konvensjon.
Det er nyttig.
Du vil få noen design poeng, kanskje noen stil poeng
for å gjøre det fordi det virkelig formidler intensjonen.
Men vi sier et og yarp.
>> PUBLIKUM: Du trenger ikke å endre noe i HTML-filen
for å reflektere det?
SPEAKER: Ikke i det hele tatt.
PUBLIKUM: Og det bare vet at på grunn av den tilsvarer større than--
SPEAKER: Ja.
PUBLIKUM: --that indikator på at that's--
SPEAKER: Ja.
Det er en foreach syntaks, men ja.
>> PUBLIKUM: Det er ikke typer.
Så hva om du ønsket alder å bare være et tall?
Er det en måte å gjøre det?
>> SPEAKER: Det finnes måter å kontrollere om variabler i samsvar med visse typer.
Så PHP spør litt mer fra deg fordi det ikke er noen typer i.
Noen måter den ber mindre.
På noen måter spør det mer.
Fordi hvis du har bare noe i en variabel,
du aner ikke hvilken type det er.
Men hvis du er smart om variablene at du tilordner typer til og sørge for at
som fungerer bare return-- deg Vil funksjoner til kun retur
en type verdi så at du kan i utgangspunktet
forvente at variabelen du får tilbake fra en funksjon vil være av typen
at du tror det vil være, i utgangspunktet.
>> Men det er noen metoder som du kan sjekke.
Jeg kan ikke huske dem på toppen av hodet mitt.
Jeg venter på det å bli blått.
isint?
isstr?
Det finnes metoder innebygd i PHP som kan
sjekk den type variabler for deg.
Men hvis du tilordne variabler smart, bør du ikke
må gjøre det for mye i PSet 7.
Men disse metodene finnes.
Og det er noe som er i språket i seg selv.
Og jeg husker ikke nøyaktig syntaks.
Vi kunne selv slå det opp.
Men tiden er kjernen.
har Har noen andre har flere spørsmål?
Ja.
>> PUBLIKUM: Jeg har bare en mer.
Så du nevnte GET-metoden, men du nevner ikke POST-metoden.
Vi kommer tilbake til det?
>> SPEAKER: Ja, vil vi komme tilbake til det.
Det er akkurat det jeg var ute på min telefon, som nå sovnet,
men jeg finner den.
Bare pass på at vi treffer alle PHP notater.
Jepp, det er ingen debugging versjon.
Ja, vi har noen flere ting som vi ønsker å gjøre nå på dette punktet.
>> Så snakker om POST, som du nevnte,
den eneste forskjellen mellom GET og POST er
som husker da vi så på denne nettadressen, og vi så, oh,
navn tilsvarer en og alder er lik yarp har rett i nettadressen der for oss.
POST er litt mer hemmelighets med sin passering av informasjon.
>> Så hvis du ikke vil at en bruker kjent, for eksempel, du
ikke ønsket brukernavn og passord på personen
logget inn for å bli vist i URL-adressen, som er en fornuftig ting
å ikke ha i nettadressen, fordi noen kan se det.
Hvis de knytter noen til en side, du ønsker ikke deres URL pusset der,
fordi det ville tillate folk å logge inn bare med lime av en URL i stedet
for faktisk å fylle ut et skjema.
POST er litt mer hemmelighetsfull.
>> Og det eneste som vi må endre
er denne metoden, endringen fra å komme til innlegget.
Og så inne i HTTP, i stedet for tilgang rekken _GET,
vi kommer til å få tilgang rekken _POST.
>> Og vi vil legge merke til at dersom vi åpner dette opp igjen,
Jason langsomt avtar i alder.
navn Jason, alder 14.
De samme tingene spretter opp.
Men vi går til nettadressen og disse variablene er ikke der.
>> Og måten POST passes-- så husk
hvordan å se på kilden til en side.
Vi går til nettverket.
Vi oppdatere.
Og dette er en annen ting som POST vil gi deg advarsler om.
Du har kanskje sett en boks, en tekst box som dette i nettleseren din.
Er du sikker på at du vil å sende en form igjen?
POST er hva som er å sende disse skjemaene.
>> Fordi utgangspunktet hvis du har sendt din kredittkortinformasjon til noen,
som ikke kommer til å dukke opp i nettadressen.
Det kommer til å bli en POST-forespørsel.
Så når du oppdaterer siden, det er den sender det innlegget forespørsel.
Så nå er vi ønsker å sende danner igjen fordi det ikke kommer
å skape noen dupliserte kjøp.
>> Og vi vil legge merke til at her nede, metoden vi bruker er POST.
Og det gjorde faktisk overføre bytes.
Det overførte 401 av dem.
Programmet er ganske liten.
Men det er intet som vi kan se verdiene som blir vedtatt.
Nettsidene selv kan se, men vi som brukere ikke er i stand til å se,
med mindre du er en hacker.
Hvis du er en god hacker, kan du se.
>> Hvis du vet det grunnleggende format av HTML,
verdiene vil gjøre seg kjent på sidene.
Du vil være i stand til å se.
Verdiene vil være der, de er bare litt mindre opplagt for deg
å få tilgang til, i utgangspunktet.
>> Har vi noe mer spørsmål om GET, POST
before-- hva vi skal gjøre videre er faktisk ser på noen av koden
at du gir i PSet 7, snakke om hvordan den bruker noen av disse begrepene,
og snakke om ting som du skal
til å gjøre litt i PSet 7.
Flere spørsmål før det?
Flere spørsmål dere har?
Flott.
>> Greit, la oss se litt på PSet 7,
ingen tvil om hva du er alle mest begeistret for.
Jeg mener, dette er noe som David går gjennom en liten bit.
Men vi vil ha tre kataloger på topp, samt en konfigurasjonsfil.
Det er for databaser, som vi vil snakke om i omtrent fem minutter.
Inkluderer du aldri trenger å se i denne katalogen
hvis du ikke vil, men det er fint å vet det er alle slags hjelpere.
Hjelpere er like nyttige funksjoner.
Og så har vi config, som setter noen ting opp.
>> Det er noen funksjoner som CS50 har skrevet at er i hjelper og config.
Og noen av PHP som allerede kommer ut i filer
vil gjøre mye av de mer sort av stumpe etappe arbeidet for deg.
Som hvis vi går inn i offentlig login.php, som er det
dukker opp til høyre når du går inn PSet 7.
Vi vil se at det er Dette krever uttalelse.
Og det liksom som en skarp inkluderer hashtag
inkluderer hvis du er av en nyere generasjon.
Men dette utgangspunktet sier at jeg trenger tilgang
til alle funksjoner i config.php.
Og du kan ha et behov for alle slags andre ting.
>> config krever faktisk hjelpere.
Så når du trenger config, du også
inkludert eller krever hjelpere i tillegg.
Slik som gir deg tilgang til alle kule funksjoner som vi kommer til å bruke,
Ting som gjengi.
Jeg faktisk kommer til å lette dette ned litt.
Så funksjonen da er vi kommer til å gå gjennom
like før vi går videre til SQL litt bit er login.php funksjon, bare
fordi den bruker noen av temaene at vi bare snakket om i PHP.
>> Du ser det første er hvis $ _SERVER.
Dette er en annen global variabel som du kommer til å være med å gjøre.
Det er som _GET og _POST, men hva Serveren inneholder dette kan la deg
vite om forespørselen metode var en GET eller POST.
Som tidligere hva vi gjorde er bare i vår kode som vi skrev,
vi var bare å endre det å være få og POST avhengig av hva HTML har.
Men det er sider som kan være nås med begge typer henvendelser.
Og du vil kanskje gjøre forskjellige ting avhengig
av typen anmodning akkurat som innlogging gjør.
>> Så du kan sjekke at forespørselen metoden gjennom tilgang til nøkler,
gjennom å bruke en nøkkel og få verdien av noe i ordlisten
_SERVER.
Så det er en annen global variable som _GET og _POST.
>> Hvis det er GET, vi ønsker å gjengi innloggingsskjemaet.
Render er en funksjon som i utgangspunktet bare setter opp den aktuelle HTML
og sender den enkelte parametere.
Denne tittelen er en parameter som er brukes i visning, merkelig nok,
tittelen på siden i spørsmålet, tingen her oppe,
si eller hallo i vår forrige eksempel.
Nå har vi en annen ting.
Annet hvis det er POST, vi gjøre noen andre ting.
Vi bruker den tomme metoden.
Det er ikke eksisterer, den er tom.
Og vi så før, PHP har en god del av bygget
i metoder som David will-- hvis det er metoder som er nyttige for deg,
de vil bli varslet til deg i går gjennom at David
gir i begynnelsen oversikt, og også Zamyla er nyttige biter.
Hun er tilbake alle.
Vi kan alle glede seg.
beklager er et treffende navn funksjon at bare utgangspunktet skrives ut
noen feilmeldinger, fordi CS50 er veldig høflig.
>> Og nå dette, dette er en vanskelige biten fordi dette
er der vi spørre databasen.
Nå har vi ikke snakket om databaser.
Og vi kommer til i neste fem minutter eller så, maksimum.
Men dette er en funksjon at CS50 har skrevet
for å få en tabell i utgangspunktet fra en database at vi arbeider med i PSet 7.
Jeg er veldig dårlig med min null indeksering dag.
Men ja, det er syv.
>> Så spør det kommer til å returnere en matrise, er i utgangspunktet den nøkkelskjegget.
Og fordi disse tingene ikke har skrive, så rekker er en matrise av arrays.
Fordi når vi tenker på et bord, hva vi skal gjøre
er, som du lærte i psets som spillet på 15, uansett
hvor du måtte bruke en double array, vi i utgangspunktet
har rekke andre arrays gjør en tabell.
Og du har rader og kolonner.
Og så kan du få tilgang til dem som [0] [1], får du [0] [1].
Grunnleggende ting som det.
>> Så hva vi gjør her i denne funksjonen
vi ber databasen hvis brukeren som er
prøver å logge inn, vil det være sendes gjennom POST-metoden.
Vi får se vi får brukernavn fra _POST.
De vil har sendt, brukeren eller du vil sende en verdi
gjennom en form gjennom POST fordi det er brukernavn og passord ting.
Vi sjekker inn brukernavn å se, er dette i tabellen?
Fordi hvis en bruker logger i, da deres brukernavn
bør lagres i tabellen over brukere som eksisterer for dette nettstedet.
Så i utgangspunktet hvis Brukeren er i databasen,
spørring kommer til å returnere denne raden, som er en matrise.
>> Men den vanskelige delen er at hvis selv om den doble matrise er bare av en rad,
selv om det er en en rad array-- som du har fått basically--
hvis du har en størrelse ett array som holder en annen array,
du egentlig gjøre med én kolonne.
Men det er fortsatt behandlet som en dobbel array.
>> Og det er her det kan noen ganger få vanskelig, fordi vi har fått rader her.
Vår variabelen er rader.
Og så skal vi lage en ny variabel kalt rad
og sette den lik den første raden av rader.
Og du vil merke at kommentaren sier det er den første og eneste rad.
>> Så dette er vanskelig del der nå funksjoner
kan returnere arrays meget lett.
Det er ikke mallocs.
Du vil ikke se mallocs.
Så du vil ikke se SEG feil.
Men funksjoner vil fortsatt være bestått rundt arrays og data i grupper.
Og du må være forsiktig med hva akkurat dine funksjoner vil returnere.
Og selv om det er en kolonne som dette, må du sjekke
er fortsatt kommer til å returnere en dobbel array.
Så for å tilgang som column-- eller du kan tenke på alt dette som invertert
siden vi snakker om rader.
Men for å få tilgang til én rad, du kan ikke bare si rader.
Selv om det er én rad, må du trenger rowsrows [0] for å liksom eliminere denne
ytre bit av tabellen og har bare din én rad.
>> Gjøre noen andre ting.
Det er en funksjon kalt password_verify
som verifiserer passordet som ble postet.
Og så ser vi en annen global variabel her, _SESSION.
I utgangspunktet session id er hvordan du holde styr
av om noen er logget på eller ikke.
Så akkurat nå med login.php, vi logger en bruker i.
Så det vi ønsker å gjøre er vi ønsker å si økten id er lik rad
id, som bare er fornuftig fordi hver rad vil ha en annen id
antall som en del av bordet.
Vi får inn SQL i en sekund, slik at hvis noe av denne
virker litt som blah, så alt vil bli ryddet opp.
Men vi kommer til å sette id lik den riktige tingen, logger brukeren i.
Beklager hvis noe går galt.
Og det er innlogginger formål i livet som professor Malan ville si.
>> Så det var login.php.
Og mye av PHP koden du skriver i PSet 7, vil de være litt.
Ikke glem å chmod til de riktige tillatelsene.
Det vil være litt om at det i begynnelsen av spesifikasjonen.
>> Men PHP som du er skriving kommer til å være
gjøre ting som ligner på dette.
Du kommer til å være tilgang til noen ting som
er gitt til deg i globale variabler i PHP som
har å gjøre med den nåværende innlogget bruker, om det
har vært forespørsler sendes til denne side, forskjellige ting som det.
Og det vil også være potensielt itera gjennom rader av denne tingen.
>> I en annen funksjon, spørring starter opp igjen denne doble array.
Og hvis det er flere enn én rader i det,
Hvis det are-- ja, hvis der er mer enn én rader i det,
så vil det være en tabell.
Og du vil kanskje reagere gjennom radene av denne matrisen ved hjelp
foreach loop som vi beskrev.
>> Så hvis du gjør foreach på en dobbel array, hva vil word-- her,
Jeg skal faktisk skrive det.
Jeg skal skrive det raskt her.
>> Hvis vi har en foreach rader som rad, hva er den type rad?
Er det noen som vet?
Du har det?
Så rekker er en dobbel array.
Så hva er foreach kommer til å antyde at vi ønsker fra denne doble utvalg
hvis vi gjentar over det?
Vi kan i utgangspunktet anta at det kommer til å være enten elementer,
eller rader eller kolonner, i utgangspunktet.
Og så rader og kolonner vi kan behandle som det samme.
>> I utgangspunktet hva foreach løkke kommer å gjøre er det kommer til å returnere rader.
rad kommer til å være av typen p, mens radene er en dobbel array.
Så hvis du gir foreach en dobbel array, er det
ikke kommer til å reagere mer enn ett nivå.
Som er utgangspunktet for å si om det er åtte celler i denne table-- 1,2,
3 4, 5, 6, 7, 8-- den foreach løkke er ikke
kommer til å gå gjennom hver av disse cellene.
Hva foreach løkke vil gjøre ble det vil gå gjennom denne rad,
gi deg hele denne raden.
Og så skal det gå gjennom den raden.
>> Så det bare gjentar ett nivå dypt.
Hvis du legger til en nestet foreach loop, så du
kan behandle hver rad returnert fra rader, gjør du foreach rad som element,
la oss si.
Og så kan du ekko elementet.
Så det er en kort liten oppfriskning på hvordan
du kanskje bruker foreach looper i sammenheng med søket.
>> Er det noe du lurer på PHP?
Noe som helst før vi gå videre til å snakke om SQL
og moro av databasen?
Føles godt?
Føles godt.
Greit.
>> La oss gå videre tilbake til PowerPoint, som du sannsynligvis glipp av.
SQL, yay.
Folk som er i min seksjon typisk vil vite at varenumrene til akronymer
er alltid bare de første ordene Jeg tenker på den kampen som
algorithm-- at akronym.
Det er ikke en algoritme.
>> Så SQL er en database.
Det er et språk som arbeider med databaser.
Og alle databaser er er bord, i det minste på den måten
at SQL representerer dem.
>> En annen måte å tenke på databaser er databaser er et sett med nøkler og verdier
i utgangspunktet.
Du kan tenke på en database som en ordbok og også som en tabell.
I utgangspunktet er det en måte å knytte forskjellige data med andre data,
ofte gjennom rader og kolonner.
Og det er slik det er SQL fungerer best.
>> Så dette er et eksempel på et bord.
Jeg har et par eksempler på mennesker i avsnittet mitt, som
Jeg hadde ikke tid til å endre.
Men vi har fått ting som ID, navn, supermakt, og hjemby.
Jeg vet ikke hvor alle er fra i min del,
så jeg skal bare anta alle er fra New York
Byen fordi jeg har en høy statistisk sannsynlighet for å være riktig.
>> SQL vil automatisk ta omsorg av ID-kolonnen for deg.
Hvis du setter inn en ny rad inn i en SQL database,
det vil øke som ID-nummer og bare
utgangspunktet stikke ut fem navn, supermakt, hjemby, hvem
på enden av den tabellen.
Så ID er en kolonne du vil aldri trenger å bekymre seg for.
Men, som i tilfellet av login.php, når vi
var å få økt-ID fra et bord og bare bruker-ID,
ID er en måte å identifisere et element av en database.
>> Så hvis vi hadde to Sams, som begge som underviste CS50, og begge som
var fra Milwaukee, de ville fortsatt har forskjellige ID-numre
og dermed være tydelig i sammenheng med tabellen.
Så dette er hva SQL er å håndtere med, arbeider med i bakenden.
>> Nå er det disse fire kommandoer at du må jobbe med SQL.
Og jeg kastet dem opp på ett lysbilde.
Men vi kommer til å gå gjennom dem alle individuelt.
>> Den første kommandoen er UPDATE, som gjør hva man kunne forvente.
Fortell at du har noen data i tabellen som er gått ut på dato.
Som hvis du holder styr på folks navn
og aldre, hvis noen er alder øker, deretter
du kommer til å ønske å gå inn og oppdatere bare at personens alder.
For et eksempel som fungerer med vår første table--
ikke bry deg om å skrive alle Disse kommandoene på samme tid.
Men hvis du har fått oppdateringen ned, som vil være bra for denne delen,
fordi vi kommer til å gå tilbake til bordet.
>> Så hvis vi går tilbake til bordet, la oss si noe som skjedde
var at det var et jordskjelv eller en feil linje som deles direkte
gjennom New York City.
Og vi ønsket å oppdatere alle som bodde i New York City.
De måtte flytte til Pennsylvania.
Det er ikke en hjemby.
De måtte flytte til New Haven.
Det vi går.
Slik at alle i New York flytter til New Haven.
>> Og så det er noe som er redigering av tre rader i denne tabellen.
Men i SQL, kan du gjøre at i bare en uttalelse.
Så vi går tilbake for å oppdatere.
La meg raskt slette dette brettet igjen.
Når vi snakker om oppdatering, det er
noen deler av syntaks som er nøkkelen.
Vel, alt av syntaksen nøkkelen.
Men ting i grønt er valgfritt.
Den hvite er nødvendig, som forhåndsdefinerte navn.
Og den lyseblå er ting som varierer avhengig av bordet.
Så det er hva som skjer med fargevalget her, der oppe.
>> Så hvis vi ønsker å oppdatere bare de radene av folk som bor i New York,
så hva vi skulle gjøre hvis vi sa UPDATE?
Så tabellen er der vi legger navnet på vår bord.
La oss bare si navnet av bordet vårt er bordet en.
Så vi ønsker å oppdatere tabellen én.
Og vi ønsker å set-- hva gjør vi ønsker å stille?
Vel, vi ønsker å si, så column-- PHP behandler rader som unike identifikatorer.
Og så kolonnene er de ulike feltene
av disse elementer i databasen.
>> Slik at det første element av databasen har et navn av Sam, supermakt av CS50,
og en hjemby Milwaukee.
Så hvis vi nevnte sett, la oss se på parametrene igjen at settet tar.
Vi har kolonne lik verdi.
Så vi ønsker å si noe column-- som husker
er en field-- vi ønsker å se en feltet lik noe nytt.
>> Så hvis vi bare sa oppdatering tabell 1, setter navn lik Elliot.
Få noen folk fra ny seksjon med på dette.
Men hvis vi bare gjorde oppdatering tabell 1 sette navn lik Elliot, hva ville
tabellen ser ut etter det?
Folk har noen ide?
Yeah.
>> PUBLIKUM: Alt i at rad skulle bli Elliot.
SPEAKER: Alt i hvilken rad?
PUBLIKUM: I den første raden.
SPEAKER: I den første raden?
Hvorfor den første raden?
Jeg mener ikke å hakke på deg.
>> PUBLIKUM: Kanskje alt i hele bordet?
SPEAKER: Alt i hele tabellen, ja.
Og det er helt riktig because-- jeg var bare å hjelpe deg ut litt
det-- fordi vi utelatt tilleggs WHERE klausulen.
Hvis du ikke har WHERE klausul, hva denne kommandoen vil gjøre
er det vil fungere med alle enkelt rad i tabellen.
Alles navn vil blir Elliott, i utgangspunktet,
som Elliot er veldig fornøyd med.
Eller Yanni, en av de to.
Men alles navn vil endre seg.
>> Så måten vi bruker WHERE clause-- og dette gjelder for alle de Wheres
det er i hver av disse forskjellige ting.
Så vil du legge merke til at SET har kolonne lik verdi.
Og det gjør HVOR.
Men disse er forskjellige typer utsagn.
Så kolonnen lik verdi i SET er i oppdrag.
Som vi sier vi vil ha å sette navn lik Elliot.
Men i WHERE klausuler, disse er likestilling uttalelser.
Så la oss si at vi bare ønsket å endre personens navn til Elliot
hvis deres navn var Ryan, la oss si.
>> Så når vi sier
>> WHERE navn lik Ryan, som ville lykkes eneste endringen
den name-- det ville bare endre navnet feltet i rader
hvor navnefeltet er lik Ryan.
Så hvis vi hadde flere folk heter Ryan, alle navnene deres
ville endre til Elliot.
>> Dette ligner eksempelet av hvis en feil linje deler
New York City, og alle må flytte til New Haven, måten vi kan
gjøre det i en uttalelse er UPDATE Tabell1 SET hjemby = New Haven
hvor hjemby lik New York City.
Dette er kraften i UPDATE-setningen.
Vi kan velge hvilket som helst antall rader gjennom sanne påstander
om feltene i disse radene.
Vi kan ikke si UPDATE table1 sett name = Elliot WHERE rad = 1,
bortsett fra at vi kan hvis vi sier ID = 1.
>> Så vi kommer til å være arbeide med likestilling
felt, likestilling mellom kolonner.
Men ved hjelp av ID-feltet er en måte å velge individuelle rader spesifikt,
fordi ID-feltet er et unikt identifikator i en SQL database.
Så som å oppdatere rad én, tilsvarer ID 1.
Oppdatering rad to, bare endre det ID-nummeret.
Men kraften i HVOR uttalelsen er at vi
kan oppdatere ting basert på hva deres gjeldende verdiene for visse ting er.
Ja Elliot?
>> PUBLIKUM: Og hva om du vil to-- igjen, dette er et annet spørsmål.
Men mitt første spørsmål var: hvor skjer dette?
Hvor skal jeg oppdatere denne?
Er dette i et PHP-koden?
>> SPEAKER: Hvor du oppdaterer, ja.
Vi kommer til å snakke på hvor all denne
skjer liksom når vi går gjennom alle kommandoer.
Men det du trenger å vet for nå er i utgangspunktet
at SQL database eksisterer som noe
å få tilgang til spørringen funksjon, som CS50 definerer.
Så hvis du bruker spørringen funksjon, du kan få tilgang til denne tabellen.
>> Så du skal sende disse kommandoer til tabellen i PHP-filer
gjennom spørrefunksjonen.
Du kan også leke deg med bordet ditt direkte.
Og det er den beste måten å teste disse slags kommandoer.
Og vi vil gå gjennom nøyaktig hvordan å gjøre det med bare en liten bit.
>> Så det er UPDATE kommando.
Og resten av kommandoene kommer til å være liksom like,
jobber med lignende ting.
INSERT INTO er trolig den mest forskjellig fra UPDATE.
Jeg kommer til å la det opp der for bare litt og arbeid over her.
Så INSERT INTO, vil du se at bordet er fremdeles det samme.
Du ønsker å sette inn.
Kapitalisering, SQL er små bokstaver.
Så du trenger ikke å kapitalisere disse tingene.
Ved kongress, ordene i hvitt føres.
Men jeg har også fargekodet dem.
Den eneste grunnen til at du kapital de når du skriver dem
er bare for å understreke at de er konstanter.
Og så kan du heller se på kapitalisering eller det faktum
at jeg har farget dem annerledes.
>> Så vi har fått INSERT INTO, la oss gjøre Tabell1 igjen.
Dette er alt på én linje.
Jeg bare skille det fra de ulike uttalelser.
Så ikke bekymre deg om det faktum at Tabell1 gjort det på den andre linjen.
>> Så vi ønsker å sette inn INTO Tabell1 noen verdier.
Og du vil merke den valgfrie bit, som jeg får til i et sekund.
Så vi har fått VERDIER.
>> Så la oss si at vi ønsker å legge til Andi til bordet vårt, fordi vi savner Andi.
Andi er syk.
Så la oss legge Andi til bordet vårt.
Husk at ID-nummer oppdateres automatisk.
Så de eneste feltene vi trenger å bekymre deg for
er navn, supermakt, og hjemby.
>> Og så den måten at vi gjør det, ser på vår syntaks, er vi har
bare fikk en parentes, med komma adskilte verdier, som hver for seg
er en verdi.
Så hvis vi ønsket å sette Andi inn i vårt tabellen, er alt vi trenger å gjøre rett Andi.
Hva er Andi supermakt, folk i Andi-delen?
Hun liker fly, eller liker hastighet, eller noe.
Hva gjør vi allerede har der oppe?
Vi har CS50, fly, hurtighet og styrke.
>> PUBLIKUM: Tidsreiser.
>> SPEAKER: Tidsreiser, fantastisk.
Så vi har fått Andi, tid reise, og hennes hjemby.
Det er et veldig godt spørsmål.
New York, med mindre noen vet.
Alle er fra New York er den lærdom å ta unna i dag.
>> Så dette utsagnet ville setter inn, som en femte rad,
med supermakt tidsreiser og en hjemby New York City.
Men valgfritt felt er i utgangspunktet en vei
å spesifisere nøyaktig hvilke kolonner du ønsker å sette ting i.
>> Måten vi gjør det nå, Andi, tidsreiser, New York
kommer i den rekkefølgen av vår table-- navn, supermakt, hjembyen.
Og hvis du ønsket å gjøre noe annet enn det,
som sier at du ikke visste noens supermakt,
som hvor jeg ikke visste Andis supermakt i begynnelsen.
Så alt jeg visste var hennes navngi og hennes hjemby.
Det jeg kan gjøre er jeg kunne do-- jeg skal slette denne raske.
>> Jeg vil bare oppdatere kolonnene.
Og det er her den valgfrie kolonneliste kommer inn i bildet.
Jeg bare ønsker å oppdatere navn og hjemby.
Og så vil jeg si VERDIER.
Jeg skal gjøre Andi og New York City.
>> Hvis jeg hadde utelatt listen over kolonner og bare gjort disse to tingene,
hvor ville New York har gått?
Hvilken kolonne ville New York Byen har blitt plassert i?
Folk har noen ide?
Supermakt, akkurat.
>> Så dette vil bare gå i orden.
Og når den når enden av listen, vil det bare stoppe å fylle ting i.
Og de verdiene som det vil holde i alle kolonnene vil bare være NULL.
Så fordi vi spesifisert navn og hjemby,
vi kommer til å ha ID 5, nevne Andi, supermakt NULL.
Så supermakt er en initialisert verdi.
Du vil ikke nødvendigvis få samme Valgrind feil hvis du prøver
og få tilgang til den.
Alt vil bli pent nullet ut, fordi NULL er en verdi i SQL.
Det er en konstant.
Og så hjemby blir New York City.
Så det er INSERT kommandoen INTO.
Før vi går, er det to flere kommandoer.
Har folk har spørsmål om UPDATE, om INSERT INTO, om SQL
generelt før vi flytter på vår endelige bits?
Folk føler seg bra, flott.
Elsker det.
Så la oss snakke om SELECT.
Går grøft UPDATE over her.
>> Og SELECT kommer til å være svært like.
Målet med SELECT, VELG hensikt i livet
er å gi deg en haug med kolonner som tilfredsstiller visse vilkår.
Og når jeg sier tilfreds visse vilkår,
hjernen din makt umiddelbart gå tilbake til at WHERE klausulen
som kom opp i UPDATE.
Og at klausulen er akkurat der i SELECT.
>> Hvis vi ikke setter WHERE klausulen og vi sier SELECT navn,
hometown-- stavet det litt wrong-- navn, hjemby Fra Tabell1.
Hvis vi bare si det, hva VELG kommer til å gi oss er det er
kommer til å gi oss en double-- et bord, heller.
En dobbel matrise hvis vi er tenker på i PHP sanser.
Men det er bare kommer til å gi oss en dobbel rekke på to columns-- navn,
og hjemby.
Og det vil ignorere ID.
Og det vil ignorere supermakt.
Og det vil bare gi oss hver enkelt rad av tabellen.
Så hvis vi bare satt inn Andi, vil vi ha Andi.
Og vi vil ha den opprinnelige fire.
Hvis de har blitt oppdatert, vil det bli reflektert, et cetera, et cetera.
>> Så dette er fordi vi fikk ikke bruke WHERE klausulen.
Men vi kan bruke det på nøyaktig samme måte som vi har brukt det i oppdateringen.
Hvis vi bare vil ha et bord av navnene og superkrefter av mennesker lever
i New York, kan vi utføre en uttalelse som SELECT navn, superpower--
Jeg bare kommer til å forlate at-- FRA Tabell1 WHERE hjemby = New York City.
>> Så dette går for å vise at du kan får helt forskjellige kolonner,
og deretter sette kolonner som du ikke selv får tilbake i WHERE-leddet.
Vi ønsker ikke selv den hjemby alle.
Men vi vil at navnet og supermakt av mennesker
hvis hjemby er New York City.
Så det er noe vi kan gjøre med WHERE
klausulen er at vi kan håndtere kolonner at vi ikke nødvendigvis ønsker tilbake.
På samme måte i UPDATE, kan vi avtale med kolonner som gjør at vi ikke nødvendigvis
vil oppdatere.
Vi kan oppdatere byen alle som har navn er Sam, for eksempel.
Vi kan oppdatere byen alle som har nummer ID er 2.
Så bare oppdatere by på den andre raden
hvor vi ikke trenger å forholde seg til nødvendig vanlig spørsmål.
>> Og slett er, som du hadde forvente, DELETE FROM Tabell1.
Og så har vi en annen WHERE-leddet.
Så vi kan si WHERE ID = 1.
Slett den første raden.
Og DELETE vil alltid slette en rad, eller det vil slette noen antall rader.
DELETE FROM tabell WHERE hjemby = New York by
vil slette alle i New York City.
Det er hvis det var en plutselig tragisk pesten
og du bare ønsket å fjerne alle fra bordet som
levde i en viss by som ble rammet av pesten.
Må de hvile i fred.
>> Dette er de fire SQL-kommandoer at du må bruke.
Du trenger ikke engang kan bruke dem alle.
Men disse er de fire at CS50 forventer du
å være komfortabel med å gå inn både quiz 1 og også pset7 og pset8.
>> Det er bare det at bordet igjen.
I denne, har Roy supermakt blitt oppdatert til laserstråler som
er et eksempel jeg bruker ikke.
Jeg vet ikke hvilken som Roy foretrekker, men styrke.
Roy har en supermakt på styrke.
Katherine ikke gjøre det i dag.
Det er uheldig.
Men hun har super fart.
>> Vel det var PHP.
Før vi snakker om MVC, gjør noen som har spørsmål om PHP?
Nå SQL, eller PHP hvis du plutselig har komme opp med et spørsmål om PHP?
Flott.
Greit, er vi alle satt da.
>> Så snakker litt om Model View kontrollere,
la oss gå tilbake til noen av ting i pset7.
Så hva modellen visning kontrolleren er-- jeg er ikke
kommer til å spare mine endringer for å logge inn fordi jeg helt slaktet den.
Men i utgangspunktet har vi to separate ting skjer.
Vi har en offentlig katalog som inneholder
koden som kommer til å bli henrettet og nettsidene som vil bli besøkt.
Og vi har også denne utsikten katalogen.
Og utsikten inneholder maler.
>> Dette er hva funksjonen render-- vi så gjengi
funksjon i en haug av PHP-kode at CS50 har allerede skrevet for deg,
som tar i visse parametre.
Hva denne koden gjør er det kommer til oversikter,
som er sett med like forhåndsskrevet HTML-kode,
og det er å sette inn verdier inn enkelte steder.
Dette er hvordan man når gå inn CS50 Finance,
samme header er på hver side.
Det samme bunnteksten på hver side.
Dette er fordi den måten at gjengi verk er det vil
automatisk oppdatering i at header og seer som du finner i utsikt.
>> Vi kan faktisk gå inn i mål og se, det er en HTML-fil med et hode.
Det har noen stilark.
Du trenger ikke å se på CSS for pset7 hvis du ikke vil.
Men du kan endre dem hvis du vil, gjøre
din Finance ser litt annerledes.
>> Det fikk noen PHP i overskriften litt for å se
hvis det er en annen tittel det bør settes i denne spissen.
Men bare noen andre scripts, og lenker, og andre ting.
Hode slutter, kroppen begynner, og oops, vi har denne rare lille enden bit.
Og det er en div, akkurat som en formløs slags element
som har en idé om midten.
>> Og så når vi ser bunntekst, Vi har i enden av en div.
Vi har en bunn, som er hvor bunntekst er.
Slutt på div, slutten av kroppen, slutten av HTML.
>> Så hva gjør er gjør er å gjengi er liksom
av patching opp header, en annerledes PHP-fil som
vil inneholde de faktiske tingene som du vil vise, som tabellen over aksjer
hvis du kjøper eller selger aksjer.
Og så vil det legge i bunnteksten.
Og modellen visning kontrolleren Tanken er at vi
ønsker å skille hvordan ting ser fra koden.
Det er vi ønsker å skille frontend og backend, der frontend er
ting som brukeren ser, hyggelig visuals-- HTML, CSS, ting som det,
bilder, et cetera.
Og backend er PHP.
Dette er koden du skriver.
Det er der den koden som er gjør selve driften.
Dette er når du legger til et lager i tabellen,
når du kjøper og salg, det er backend.
>> Og vi kan, som du så, inkludert PHP direkte i HTML.
Så hva vi kunne ha gjort for dette oppdraget er nettopp hadde
en HTML-fil for hver side, som innlogging.
Og så på den siden, bare hadde en stor blokk med PHP-kode,
inkludert alle koden som at siden spesifikt trenger.
Og så kunne vi ha gjort det for porteføljen.
Vi kunne ha gjort alle kjøp og salg innenfor de enkelte sidene.
>> Men fordi vi er rende separat fra hvor
vi skriver backend kode, kan vi lett
endre hvordan ting ser uten endring hver enkelt fil.
Vi gjør ting som å bare legge en ny div til bunnen
of-- Hei Jeg endret bunnteksten.
Du kan bare gjøre sånt.
Men også, kan du endre hele visuell layout
uten å påvirke hva som er går i backend.
Og du kan endre Hele backend og fortsatt
har det ser ut akkurat som det gjorde før.
Dette
>> Er ideen om modellen visning kontrolleren.
Og det er faktisk en pålagt paradigme i noen av de programmeringsspråk
kan det være lurt å bruke for endelig prosjekter.
Hvis du gjør iOS utvikling, de har utsikt,
som er det du ser på iPhone, og deretter backend som som en egen greie.
>> Du kan tenke litt.
Det er mye av binærfiler i informatikk, som er morsomt,
fordi alt er i binær.
Jeg hadde ikke tenkt det.
Det var et ordspill utilsiktet.
Ja, ordspill ikke ment.
>> Men som .h filer og .c filer, det er mye skille ting som vi
kanskje ikke trenger.
Så vi kan bare redigere h filer, eller noen kan bare se en .h fil og vet
nøyaktig de funksjoner som er i .c fil uten nødvendigvis å vite
gjennomføringen.
Denne ideen om separasjonskomponenter som er avhengige av hverandre
men kan liksom få tilgang til hverandre gjennom ulike kanaler, bestått
variabler, bare inkluderer uttalelser, ting
sånn, dette prinsippet bidrar til å skape applikasjoner
som kan være lettere redigert av flere personer,
kan lettere endres eller modifisert på en stor skala,
og er enklere å feilsøke på mange måter.
>> Veldig rask, har jeg noen tips for pset7,
som jeg skal gjøre full skjerm så du ikke bare se på the-- tips tips tippee.
Det er ikke så mange tips.
>> Men jeg nevnte PHP er vanskelig å feilsøke.
Dobbel og trippel sjekke det.
Hvis koden er bare ikke dukke opp på siden,
det er nok en PHP-feil, beklager.
>> Du trenger aldri å se på CSS hvis du ikke vil.
Men når du er ferdig, kan det være en fin liten morsom ting å bare gå i
og rote med CSS parametere.
CSS og HTML er et eksempel på en modell view controller stil ting også, ikke sant?
Du kunne ha stil tags innsiden av HTML-elementer.
Men hvis du liksom outsourcing dem til CSS,
de er enklere å redigere, og lek rundt med, og ha det gøy med.
>> Unn CS50 helper fungerer som svarte bokser.
Du trenger ikke å vite nøyaktig hva Pussing gjør,
men stoler på det å alltid gjøre det rette ting, avhengig av hva du passerer den,
ting som dette.
Og jeg vil anbefale se Davids gjennomgang,
gå gjennom alle ting, ikke bare de todos,
men du virkelig kan behandle disse som svarte bokser.
Ikke gå inn i disse funksjoner leter etter feil.
>> Og velkommen tilbake av vår overherre Zamyla.
Flott.
>> Er det noen endelige spørsmål før vi liksom sprette for dagen?
Er jeg fortsatt lever?
Flott.
Hei Livestream mennesker.
Flott.
Er det lenger spørsmål?
Nei?
>> Og så tror jeg vi er godt å gå for i dag.
Jeg vil holde rundt litt etterpå hvis folk hadde spørsmål
de var redd for å spørre på strømmen.
Men ellers, ha en god dag.