>> [MUSIC SPILLE]
ALLISON Buchholtz-AU: All right, alle, velkommen tilbake til seksjonen.
Forhåpentligvis dere alle hadde en flott Halloween helg, eller Halloweekend,
som jeg liker å si, all uthvilt og restituert.
Og heldigvis er det ikke er snø lenger.
Det er faktisk sol ute.
Jeg var virkelig glad for det.
Ikke klar til å dra ut mine vinterstøvler.
Forhåpentligvis gikk pset6 ganske godt.
>> Hvis du er lei av C, er jeg fornøyd å si at du er ferdig med C for nå.
Vi har fullt overført i web-programmering,
så du skal jobbe i HTML, PHP, kanskje litt av Javascript.
Jeg vet ikke hva neste ukes PSet er, så jeg kan ikke garantere
hva neste PSet vil være, men denne ukens PSet
er CS50 Finance, som er utgangspunktet implementere slags web-side
som lar deg kjøpe og selge lager, og holde styr på dem.
Og det er ganske kult, fordi alle av det er dynamisk generert.
Du kan ha ulike brukere som hver har sin egen informasjon,
og du kommer til å være implementere alt dette.
Det tar en stund.
Jeg tror definitivt dette er lettere enn C psets, men det tar lengre tid.
Du lærer et nytt språk, PHP, noe som er svært lik C,
men selvfølgelig kommer til å kreve du kan slå opp syntaks og forstå
hvordan du kan konvertere mellom språkene.
>> Men jeg tror ikke det er noe super konseptuelt hardt om dette PSet.
Det er bare å lære nytt språk og får
gjennom alle disse små stykker.
Hvis dere har lest gjennom spec, det er ganske lang.
Jeg tror dette er som 21 sider, hvis jeg husker riktig.
Det er en lang spec.
Så hvis du ikke har lest it-- 22.
32.
>> Wow.
Så var jeg av med 50% der.
Så, 32 sider.
Så det er lenge.
Det er mange brikker, men ingen av bitene bør være så ille.
Det er bare mye.
Så definitivt komme i gang tidlig hvis det er mulig, i henhold til vanlig,
men jeg tror det skal føles litt finere enn spesielt psets som
gjenopprette og endre størrelse som er bare svært vanskelig å vikle hodet rundt.
>> Så med det, kommer vi til å dykke i.
Jeg har ikke din agenda skyv i dag, men vi er
kommer til å bli snakket om PHP.
Jeg skal gi deg en slags lynkurs på noen ting
som du kanskje ønsker å vite om PHP.
Ulike syntaks ting, ting å se opp for.
Vi kommer til å snakke litt om SQL.
Bare veldig enkle ting der, og da også MVC
er Model View Controller, som Slik kan din PSet er satt opp,
så det å forstå hvordan det arbeidene vil være super nyttig.
OK.
Så PHP.
Dere skulle ha gjort noe veldig, veldig enkel
med PHP, som er Dette bunn ting her,
der du har sendt inn noen form på toppen her som hadde noen navn som du
inngang, og det vil si at hei, Ben, eller hallo, Allison, og det ville dukke opp.
Så dette er faktisk hva det bør har så ut fra din PSet,
i tilfelle dere ville vite eller ikke helt finne ut av det.
>> Men vi har disse spørsmålstegn her som tyder på at dette er PHP.
De pakker det, og deretter htmlspecialcharge, husk, er rettferdig,
sørg for at du er trygg fra noen gale injeksjon angrep
eller hvis noen forsøker å sette gale ondsinnede tegn
inn i navnefeltet, det gjør det ikke liker opp din server eller whatnot.
>> Og så hvis vi legger merke til, denne HTML formen hadde en fremgangsmåte for $ _GET, som,
hvis vi husker våre superglobals fra PHP, $ _GET, $ _POST,
vi kommer inn de i en liten bit.
Men vi vet at vi har noen navn her som svarer til navnet
at vi leverte.
Så dette er bare typen som veldig enkel PHP HTML samarbeid
at dere hadde fra PSet seks.
>> Men det gjør egentlig ikke besvare hva PHP.
Selvsagt er det et språk, men vi har ikke egentlig
snakket om det i denne delen, så det er litt mer
om hva PHP egentlig er.
Så PHP er bare PHP Hypertext Preprocessor.
>> Det er faktisk ansett et programmeringsspråk
fordi den har logikk, mens hvis Vi husker snakker om HTML,
vi kalte det et kodespråk versus et programmeringsspråk fordi HTML
er strengt modifisere hvordan ting ser på siden.
Det er bare å modifisere om noe er fet,
eller om det er en form, element, eller noe sånt.
Det har ikke noen logikk.
Det har ikke sløyfer eller forhold.
Du kan ikke feil sjekke ting.
Du ville heller vise ting på en bestemt måte, eller spørre om ting
fra brukeren.
Det var det.
>> Så med PHP, er det faktisk ikke tillate oss å gjøre alle disse mer logiske ting,
som validerer input eller manipulere det på noen måte.
Vi kan kombinere det med HTML, som vi bare så i den siste PSet og akkurat nå,
og det tillater oss å lage disse dynamiske websider.
Så hvis dere noensinne-- Jeg vet ikke om du var som meg, men i ungdomsskolen
de hadde oss ta denne IT klasse der vi skapte bare HTML-nettsider,
og de var statiske og klikke seg rundt til andre ting, men de har aldri endret seg.
>> Med dynamiske seg, det vi kan gjøre er, i likhet med CS50 Finans,
du kommer til å ha forskjellige brukere.
Avhengig av disse brukernes preferanser, og hva de kjøper
eller hva de selger for sine aksjer,
du kommer til å vise forskjellige ting.
Så hvis det er noen identifisere kjennetegn
for brukeren ved hjelp av dette web side, kan vi dynamisk
bestemmer hva som skal vises for dem.
Det er ikke det samme for hver enkelt person, som om vi hadde bare HTML,
siden vil være det samme for hver enkelt person som besøkte.
PHP tillater oss å tilpasse sidene.
>> Og da kan vi enten sette dem i den samme filen, som, som i tilfellet
før her, så vi at vi har HTML alle her
og så har vi denne lille bit av PHP.
Vi kan gjøre sånn, eller med CS50 Finans,
hvis dere har sett på files-- og vi bør ha tid
å gå gjennom et par av dem sammen ved enden av den section-- vi
kan se hvordan du kan faktisk holde dem atskilt,
som faktisk er en bedre ting å gjøre.
>> So.
Lynkurs.
Alle de raske enkle ting du trenger å vite for PHP.
Erklærte variabler.
At blått er litt irriterende, men forhåpentligvis dere kan se det.
Hvis ikke, vil jeg skrive det på kritt bord.
De erklærte variabler.
En ting å vite er at, i motsetning til C, PHP er løst eller dynamisk skrevet,
noe som betyr at du ikke trenger å fortelle en variabel hvilken type det er.
Du kan bare rett og slett si noe variabel er lik hva du vil ha det til,
og det vil bestemme den type den variabelen under kjøring for deg.
>> Som du ser, kan dette skape noen svært interessante ting.
Men for de fleste formål, du trenger ikke å spesifisere type.
Du kan, og du kan skrive kaste ting som du normalt
ville ikke se om du ønsker å tvinge det til å være en bestemt type,
men du trenger ikke å.
Det kommer ikke til å kjefte på deg hvis du bare erklære en variabel
og ikke angir en type for det.
>> Så i tilfelle du ikke kan lese dette-- Jeg vet det ikke er den beste.
Jeg trodde det ville dukke opp better-- den måten du initialisere en variabel er bare
med et dollartegn, hva du vil at det skal bli kalt,
og deretter hva du tilordne den.
Så i dette tilfellet, er dette noen $ var = 3.
Så hvis vi noen gang bruke $ var et sted, vil det bare
være det samme som å sette 3 der.
OK?
>> Så, noen variabel, bare dollartegn, uansett
du ønsker å ringe til variabel, og hva du vil den skal like.
Litt kjøligere.
Mindre å skrive for initialisering en variabel, ikke sant?
Betyr det fornuftig for alle?
Bare rask syntaks forskjell mellom C og PHP.
>> Arrays er mye kulere i PHP.
Vi kan gi dem nøklene.
Så måten å tenke på det er at, hvis vi noen gang
ønsket å få tilgang til en element i en matrise,
vi trengte å vite indeks over det, ikke sant?
Så vi vet at med C, vi kunne få tilgang til det første elementet
ved å gjøre matrise brakett null, eller hvis vi vil det første elementet, array brakett
en.
Og hvis vi ønsket noe der inne, kanskje vi bare
nødt til å iterere gjennom, med mindre vi faktisk visste indeksen.
>> En ting som er virkelig kult med PHP arrays
er at de er hva vi kaller assosiativ.
Så vi kan assosiere noen nøkkel til en viss verdi,
og vi blir faktisk kommer to-- Jeg vil vise deg
hvordan vi kan bruke dette i et sekund.
Men i utgangspunktet, hvis du noen gang ønsker å initialisere en matrise sånn,
du har noen $ array.
>> Så på samme måte, det er bare noen variabel som vi skaper.
Dette kan kalles uansett hva du ville.
Dette kan være $ eksempel.
Bare en annen variabel.
Hva gjør det en matrise er brakett syntaks som vi har her.
Akkurat som vanlig C. Og vi har noen nøkkel til noen verdi.
Så pinne 1 går til verdi1, NØKKEL2 to går til verdi2.
Disse parene er adskilt med en komma, akkurat som vanlige arrays.
>> Men.
Stor en.
Keys er valgfrie.
Du trenger ikke å bruke dem.
Og hvis du ikke gjør det, så er det bare normalt.
Spørsmål?
Eller, oh.
>> PUBLIKUM: Vel, om retten.
Hvor er minnet kommer fra?
Det kan også være det samme som å [Uhørbart] og fra bunken?
Er det også å bruke PHP?
Som når vi knytter dem?
>> ALLISON Buchholtz-AU: Med PHP, Vi pleier
å bekymre seg for hvor vår minnet kommer fra.
Vi trenger ikke bruke mye tid på å snakke om det,
så det er egentlig ikke noe du trenger å bekymre seg for.
Så tastene er valgfritt.
På samme måte, hvis du ikke gjør det ønsker å gjøre dette forbundet,
du bare vil ha en normal matrise der matrise null er det første elementet
og rekke en er den andre element, kan du gjøre det akkurat
som du ville i C. Du har noen variable som kommer til å være din array,
og det tilsvarer disse beslagene her.
Ja.
>> PUBLIKUM: Betyr det har samme punkt til notasjon.
Som, jeg kan gjøre som en rekke ++, og som peker til den andre.
>> ALLISON Buchholtz-AU: Du kan do-- Vel, kan du ha litt iterator, i,
at du kan gjøre i ++ og gjøre en matrise av I på samme måte.
Men det er det.
Så, som i dette tilfellet rekke en ville tilsvare 20.
Samme slags indeksering notasjon.
Dette er i utgangspunktet bare en implisitt ting her, hvor det står null, null til 10,
til 1 til 20, 2 til 30.
Det er bare implisitte nøkler for det.
Hvilke endringer med PHP er at du nå har makt
å overføre disse nøklene til gjøre hva du vil.
>> Så en ting er her.
Så jeg har bare noen eksempler her at jeg skrev opp for dere
fordi jeg føler meg som eksempler alltid bidra mer enn bare det abstrakte.
Så, i dette tilfellet her, vi har noen assosiativ array
det er mitt fornavn, mitt etternavn, og jeg
er sammen, som er bare for alle formål her
kommer til å skrive ut til utgangen her.
>> Og den sier, OK.
Skriv ut verdien som tilsvarer matrise på nøkkelen Allison.
Og jeg kan også sende dere all denne koden etter klasse.
Så, når vi kjører dette, hva gjør du tror kommer til å skje?
Hva kommer til å skrive ut?
PUBLIKUM: Ditt etternavn.
ALLISON Buchholtz-AU: Mitt etternavn.
Det gjør.
Akkurat her.
Skrive ut.
Så hvis vi skulle endre på dette, og vi skulle legge til noen andre til vår list--
Så la oss si vi har Emma her, og vi forbinder din siste name--
La oss se om jeg stave denne retten.
>> PUBLIKUM: Yeah.
>> ALLISON Buchholtz-AU: Ja.
>> PUBLIKUM: God jobb.
>> ALLISON Buchholtz-AU: Lovely.
Så nå hvis vi har dette her og Vi ønsket å finne ditt etternavn,
du har det der.
Så du kan bare tenke på det som å erstatte denne nøkkelen her.
Du bare erstatte indeksen.
Så det kan du bare søke gjennom en matrise mye enklere.
Du trenger ikke å vite indeksen.
Så lenge denne tasten som du leter etter eksisterer et sted i tabellen,
PHP vil finne det, og det vil returnere verdien knyttet til den.
Så det gir deg mye mer makt med dine arrays.
Ja.
>> PUBLIKUM: Hvis du har to tastene samme, vil det gi deg en feil?
ALLISON Buchholtz-AU: Det burde gi deg en feil, ja.
Betyr det gjøre litt mer fornuftig for dere?
Og på samme måte, har vi en rekke her som ikke har noen av tastene.
Også dette er en syntaks som du kanskje ønsker
å være klar over, fordi du vil nødt til å bruke dette i din PSet.
>> Når du gjør en ekko, har du disse sitatene,
og når du henviser til en del av en matrise,
du må ha disse klammeparentes rundt dem.
Det er litt irriterende, men du må bare gjøre det.
Så bare noe å huske på.
Hvis du kjører inn i feil av, Jeg vet at dette finnes i mitt utvalg
men det er å kaste feil på meg, prøve å sette tannregulering rundt det
og det skal fungere.
>> Så i dette tilfellet er her, er dette en normal C matrise som vi er vant til.
Har tre, fem og seks, og vi bare ønsker å skrive ut det første elementet,
så dette bør skrive ut tre.
Og det gjorde jeg kjøre alle disse, så forhåpentligvis ingenting forandret.
Vi ser nederst her, den skriver bare ut tre.
Cool.
Det fornuftig for alle?
Assosiative arrays.
Mye kulere enn vanlige arrays.
>> Dette er why-- Visste David vise deg PHP-implementeringen av pset6
under forelesning i det hele tatt?
OK.
Så, skal jeg vise deg.
Jeg vet ikke den av t--
>> PUBLIKUM: Han gjorde i forrige uke.
>> ALLISON Buchholtz-AU: Var det i forrige uke?
>> PUBLIKUM: Yeah.
>> ALLISON Buchholtz-AU: Yeah.
Så stave kan gjøres i like seks linjer med PHP, og en del av kraften i det
dette er assosiativ array der du kan bare laste hvert ord i,
og du har det lik sant eller usant.
Og så du kan si, oh.
Returnere ordbok på noen ord, og hvis det er det, vil det returnere true.
Ellers vil det ikke finne det, og det vil return false.
Så snilt av en kul liten ting.
>> OK.
Så de er assosiative arrays.
De er ganske kult.
Jeg liker dem.
Og selvsagt dette-- Ah.
OK.
Nå er det å jobbe.
Kanskje.
OK.
En annen ting.
Så, med likestilling, bare en kul ting å huske på.
Med PHP, fordi det er dynamisk skrevet,
typen kan endres avhengig av når du kjører den, hvordan du kjører den.
Jeg har faktisk noen kule eksempler som jeg skal vise dere.
>> Men == sjekker bare for likestilling etter typen sjonglering.
Så hvis du har noe som er lignende karakter 1 og nummer 1,
PHP vil fortelle deg at disse er like fordi det
kan sjonglere typer av to av dem før det er like,
som kanskje for ditt tilfelle er fine.
>> Hvis du trenger for å se om de er samme slags verdi, og den samme type,
du vil at denne ===.
Og jeg tror ikke du har noen tilfelle hvor du trenger å bruke det
i PSet, men for mange dere som vil gå på å gjøre web-sider
for den endelige prosjekter og ting, er det en god ting å vite at == og ===
er forskjellige, og det er en god skille å forstå.
>> OK.
So.
Foreach løkker.
De er en måte å iterere gjennom en matrise.
Så, akkurat som arrays ble så mye kjøligere i PHP,
din måte å iterere gjennom en matrise, tror jeg,
blir også mye kulere og mye kraftigere.
Så i stedet for å måtte lage noen for jeg er lik 0, og hva,
og deretter oppdatere at Jeg som du går gjennom,
vi har denne awesome foreach loop.
>> Så her er standarden generelt Strukturen av disse to.
Slik at du enten har foreach noen matrise som verdien du ønsker å iterere as.
Så dette er navnet på tabellen variabelen som du vil referere til,
og dette er hva du vil å kalle det i sløyfen.
OK?
Så dette tilsvarer hvert element i matrisen,
og du bruker denne verdien innen denne sløyfen.
>> Jeg har et eksempel.
Jeg vet eksempler er så mye bedre.
Og så dette er hvis det er ingen nøkler, så dette er som
hvis vi bare har ett hvor tastene er de vanlige indeksene for din array.
Eller dette er også i det tilfelle når du har ikke bruk for nøklene.
Hvis du ikke bryr deg om nøklene og du bare
ønsker å iterere gjennom med verdiene for hver av de i hvilken rekkefølge,
det er fint.
>> Du kan bruke strukturen.
Ellers, hvis det er nøkler, vår $ Verdi bare endrer til $ nøkkelverdien.
Så det bare endres til en nøkkelverdi par.
Og så kan vi henvise til $ nøkkelen og $ verdi innenfor vår loop.
OK?
So.
Eksempel.
Gjør det bedre.
OK.
>> Så vi har denne ene her, som vi har noen
are-- Du kan også lage en matrise som dette
ved å ha noen variable lik til array med parenteser,
eller du kan bare gjøre brakett.
Du bør gjøre braketten, men Dette er en annen måte å gjøre det på.
Så her har vi noen utvalg av tre elementer av en, to og tre,
og vi har vår foreach.
>> Legg merke til dette svarer til den matrise som vi itera over,
og dette er hva vi kaller hver ting i vårt utvalg.
Og alt dette gjør er at det er kommer til å skrive ut hver verdi.
Så hvis vi kjører den, vi ser at vi har verdi en, verdien to, verdi tre.
>> Og på samme måte som vanligvis arrays trenger å være av en type,
arrays trenger ikke å all være av samme type her.
Så nå har vi noen int.
Vi har to strenger.
Så dine arrays kan får mye kraftigere
og kanskje litt litt Messier, avhengig
på den måten du ønsker å se på det.
Så vi kan endre dette til hva vi ønsker.
Vi bruker verdi.
Det er bare standard ting vi bruker.
Men, bare viktig å vite at vi kan kaller dette som teller hvis vi ønsket.
Og så lenge de samsvarer, åpenbart alle er glade.
Hvis du noen gang ønsker å kjøre en PHP kjøre noe sånt som denne kommandoen
linjen du vet dette her, du bare gjør PHP,
og deretter hva filen du vil kjøre.
>> Så hvis du ønsker å rote rundt med PHP, og mer logikk
og du egentlig ikke trenger å se ut som i en nettleser,
du kan bare kjøre den i kommandolinjen sånn
og ekko vil skrive ut ut hva du liker.
OK.
Den andre måten som vi har er som dette.
Så dette er en sak der kanskje du vil å bruke både nøkkelen og verdi,
Jeg vet dette er liksom super contrived eksempler
men jeg håper de gjør det litt klarere.
Så her har vi noen matrise igjen, men denne gangen
i stedet for bare å ha du vet det er ingen nøkkel.
Vi har taster for hver av disse.
Så en skal bli en, vil b tilsvare til to, og c vil tilsvare tre.
Og i dette tilfellet, hvis vi skriver det på denne måten,
Vi har tilgang til både nøkkelen og verdien for hver av disse.
>> Så når vi kjøre dette, vi får hver av dem.
Så det skrives ut våre nøkler og tilsvarende verdier.
En annen kul ting er at, og jeg vet sa at dette ikke har nøkler,
men det er alltid implisitt har en nøkkel fordi hvis du ikke delegere
en nøkkel, selvfølgelig, din tastene er bare dine indekser
eller indekser slik at vi kunne alltid også gjøre dette.
Som dette.
Jeg vil skrive ut.
Så i dette tilfellet, hvis du legger merke til, vi har våre implisitte nøkler
på null, ett og to her.
>> Og på samme måte med denne, du kan alltid bare si r som verdi,
og du bare har tilgang til verdien.
Du bryr deg ikke om din nøkler, selv om din har taster,
hvis du ikke bryr deg om dem, trenger du ikke nødvendigvis
trenger å sette dem i foreach loop.
Betyr det er fornuftig for alle?
>> PUBLIKUM: Kan du bare ringe nøklene, også?
ALLISON Buchholtz-AU: Ja du kan helt gjøre det også.
Egentlig venter.
Hold på.
ville it No.
Hvis du vil ha nøkkelen, deretter du trenger å gjøre nøkkelen til verdi.
PUBLIKUM: Legg verdi.
ALLISON Buchholtz-AU: Yeah.
Og du bare aldri bruke verdien er tatt.
>> PUBLIKUM: OK.
ALLISON Buchholtz-AU: Hvis du bare sette en ting der inne,
det kommer til å anta at du er snakker om verdi, ikke nøkkelen.
Stort spørsmål.
OK.
Cool.
Egentlig holde på.
La meg se hva jeg har.
Så før vi kommer inn i innlegget og få, jeg vil bare vise dere en liten bit
om hvordan det er dynamisk skrevet, noe som er litt kult.
Jeg har alle disse.
Jeg har som fire eksempler her oppe, og jeg vil sende deg all denne koden
etter klasse.
>> Så her har vi litt variabel a.
Det er bare en pluss en, ikke sant?
Og vi kommer til å skrive ut hva det er lik, og da har vi noen type.
Og noen som har noen gjetninger om hvilken type det kommer til å bli?
>> PUBLIKUM: En int.
>> ALLISON Buchholtz-AU: Ja, det er en int.
Så det legger bare dem sammen.
Det er en int.
All good.
Så dette neste, har vi hva ligne strenger.
Når vi kjører dette, synes det, oh.
Du faktisk prøver å bare legge ting.
Du fikk bare forvirret.
Så jeg bare kommer til å fikse det for deg.
Du mente int.
Jeg vet du mente int.
>> Så dette er en av måtene du kan se, har PHP en tanke på egen hånd.
Selv om vi eksplisitt sagt, se, disse som er strenger.
Jeg mener strengen en.
Men den sier, oh, men du prøver å legge dem,
så du må bety det er et heltall.
Bare stole på meg på dette.
Så det sier det er et heltall, og det legger dem ut som normalt.
Så litt kult hvis du skal å få lat med dine ting,
eller du ønsker å legge til noe.
>> En flott ting er at hvis du tenker tilbake til pset2,
noe som var bruker inputted, ikke sant, at vi tror
er en røye eller en streng i begynnelsen.
Nå vi ikke har eksplisitt si, oh, gjør dette til en int.
PHP ville bare være som, oh yeah.
Jeg vet at du mente en int.
Silly deg.
Du mente ikke en streng.
>> Så i dette tilfellet, nå at vi har dette, hva
tror dere det kommer til å gjøre her?
Vi har en streng og en int nå.
>> PUBLIKUM: Det er fortsatt en int.
>> ALLISON Buchholtz-AU: Det er fortsatt en int.
Og grunnen er-- jeg ville sette flere eksempler, men dette er gøy.
Grunnen til at det gjør det er fordi det er som du prøver å legge til ting.
Så hvis du prøver å legge til ting, kommer jeg til å anta,
rimelig, har du noe rimelig at du kan legge til.
Jeg kommer bare til å gjøre det en int, og vi bare kommer til å legge det, som vanlig.
Og deretter på samme måte, I tror dere skjønner poenget.
Vi har også denne her, som er bare tegn, og det gjør det samme.
Det er som, du dum bruker.
du vet at du vil ha en int.
>> PUBLIKUM: Hvis vi setter et brev, vil det gjør [uhørbart] verdi eller ikke?
ALLISON Buchholtz-AU: Oh, det er et godt spørsmål.
La oss se.
Nope, er fortsatt en int.
Så det er litt gal.
Dette er bare slags vise deg PHP kan noen ganger oppfører seg i irrational-- Ikke
helt irrasjonelt, men det kan oppføre seg på måter som du ikke egentlig forventer.
Så, når du er i tvil, sjekk hvilke typer ting.
Denne funksjonen getType kan være super nyttig.
>> Vanligvis hvis du gjør noe med plusses eller noen matematiske operatorer,
det kommer til å anta noe fornuftig er bare en int.
Så har du røye en, eller en strengen 1, eller de faktiske int 1,
det kommer til å anta at.
Hvis du ønsker å typecast noe, du helt kan.
Du kan gjøre noe sånt doble her, tror jeg.
Og i så fall, det kommer til å si, oh.
Jeg skal gjøre dette en dobbel fordi du eksplisitt sa det er en dobbel.
Du kan alltid eksplisitt lage PHP gjøre noe, men.
>> PUBLIKUM: Vent, hvorfor er et pluss 1 er det?
>> ALLISON Buchholtz-AU: Oh.
There.
Det var bare et ekko.
Det var min feil.
Så kan du eksplisitt fortelle det til lage noe av en viss type,
men mesteparten av tiden, kommer det til å dynamisk bestemme at under kjøring.
Så det kommer til å holde det gående gjennom og det kommer til å være som, OK.
Hva gjør mest sans for at dette skal bli?
Skulle det faktisk være en streng?
Skal det være en int?
Skal det være en flåte?
Skal det være en dobbel?
Og det vil avgjøre det for deg.
>> Du kan tvinge den til å gjøre hva du vil, men--
>> PUBLIKUM: Betyr det gjør det tregere?
ALLISON Buchholtz-AU: Vel, Jeg mener, er C svært effektiv.
Jeg tror det er definitivt tregere fordi den har til prosessen som det kommer.
C, jeg er nesten sikker på er raskere.
Men selvsagt er det en mange kule ting i her
at vi ikke trenger å bekymre seg for.
Så, hvis vi søker gjennom en matrise, vi
trenger ikke å faktisk lage noen søk gjennom rekke.
Vi kan bare be om nøkkelen og PHP vil ta vare på den.
>> Cool.
Awesome.
Ser ut som slutten av mine eksempler.
Dere kommer aldri å glemme det nå.
Du kommer til å være som, oh, er PHP bare sånn mor som er som nei, nei, nei.
Jeg vet hva du mener.
Jeg vet hva du vil.
OK.
Så dette er forhåpentligvis nyttig for din PSet, i hvert fall i begynnelsen,
fordi du er alt om å håndtere med skjemaer og ting fra brukeren.
>> Så det er to måter som vi pass rundt info med PHP og HTML
når vi passerer mellom de to tingene.
Så vi har $ _GET, som er passert gjennom URL, og vi har $ _POST,
som føres i meldingen kroppen, og så vi anser det skjult.
Men én ting å forstå er at ingen av disse er ansett som sikker.
>> Hvis du har noen som er avskjære meldingene går
frem og tilbake mellom deg og server, kan de likevel få disse dataene.
De må bare se litt hardere.
Det er egentlig ikke at-- det er bare skjult fra nettadressen.
Det er fortsatt i meldingsteksten, skjønt, så hvis de har tilgang til det,
det er egentlig bare like--
>> Det er som forskjellen mellom noe
blir skrevet på utsiden av en konvolutt og noe vesen
skrevet på et stykke papir inni.
Det er ikke så vanskelig å åpne konvolutten og få stykke papir inni.
Riktignok vil det være mye lettere bare lese utsiden.
Men det er hvordan du kan slags tenker på disse.
Ingen av disse er virkelig vurdert sikker.
OK?
>> Gitt, ikke egentlig rolle for din PSet
fordi du ikke arbeider med forretningshemmeligheter,
men det er vanligvis en ting som vi virkelig
liker å understreke fordi folk tror, ​​oh, vel, det er skjult.
Det må være super sikker.
Nei.
Det er ikke sikker.
Det er bare litt mindre usikker, antar jeg.
Eller usikkert.
>> Slik at vi faktisk har et eksempel.
Som du vet, jeg elsker lærer mer med eksempler.
Jeg føler at dette hjelper bedre.
Så har vi noen enkle skjema her som faktisk, hvis dere noen gang
forvirret om PHP, dette er virkelig liten,
men php.net er faktisk virkelig god dokumentasjon.
Jeg liker det.
Jeg brukte den til å forberede seg på dette delen, så jeg kan veterinæren det for deg.
>> Dette er et eksempel fra dem om hvordan $ _POST og $ _GET arbeid.
Den eneste forskjellen mellom to av disse,
foruten hvor informasjonen er vises, enten det er i URL
eller i kroppen, er også hva metoden er.
Så i skjemaet for HTML-- Dette er en veldig enkel HTML-skjema.
Kan noen fortelle meg hva det gjør?
PUBLIKUM: Be om navn og alder.
ALLISON Buchholtz-AU: Nettopp.
Så vi har noen form handlinger.
Som lar oss få vite at det er noen handle skjemaet.
Og hva kommer til å skje er, når vi treffer Send inn,
det kommer til å ringe action.php, som er hva dette er,
og det kommer til å kalle det med en fremgangsmåte for $ _POST.
Så i dette tilfellet din informasjon er skjult.
og det er bare ditt navn, noen inngangstype kalt navn, noen alder,
input type = "text" som vi også kaller alder.
Og så hvis vi treffer Send inn, Send inn vil kalle action.php.
>> Så når vi faktisk traff Send inn, vi vet at det har lagt ut, per se,
og vi vil faktisk se dette i oppgavesettet som forhåpentligvis vil vi
kommer til å gå gjennom en liten bit.
Og alt det gjør her er POST er noen superglobal variabel
som vi snakket om under foredraget.
Og hvordan du kan tenke på $ _POST er at det er bare en assosiativ array.
OK?
Så dette er noen nøkkel, dette er noen viktige, og hva
brukerundersøkelser blir en verdi for hver av dem.
OK?
>> Så hvis vi skulle skrive hva denne tabellen faktisk så ut rett etter at vi
sendt inn skjemaet, ville vi har, dette er vår $ _POST,
og noen matrise der vi har noen navn.
La oss bare si at vi skal gjøre mitt navn, og så har vi noen alder, 21.
Woo.
Så dette er alt $ _POST er. $ _POST er bare en assosiativ array, OK?
>> Den sier bare, OK.
Hva er de tingene vi har bedt om fra brukeren?
Hva er variabler at vi kjører rundt
at vi har bedt om i dette skjemaet?
Og hva er de verdier knyttet til det?
Så i dette tilfellet, hvis jeg sendte den med et navn på alliert og en alder av 21,
dette er hva $ _POST ser ut.
OK?
Og dette er hva dette PHP-filen har tilgang til.
All right?
>> Så i dette tilfellet, er dette akkurat som får noen andre ting fra vår array.
I stedet for en indeks i vårt array, har vi noen nøkkel.
Så dette kommer til å gi meg verdien på nøkkelnavn.
Så dette kommer til å være alliert, og dette her kommer til å gi meg
verdien på $ _POST der Nøkkelen er alder, som vil være 21.
Du kommer til å være gjør dette ganske mye.
Ja, fra hvilken del?
>> PUBLIKUM: Da du var peker mot bunndelen.
ALLISON Buchholtz-AU: Denne nederste delen?
OK.
Så du forstår at dette er vår HTML form, og vi har noen metode $ _POST,
som teller.
Dette kan også være $ _GET, men for dette formål
vi bare kommer til å si at det er $ _POST.
Når vi sender inn dette skjemaet, er dette del av en PHP-fil som heter.
Så dette PHP-filen er nå kommer til å utføre gitt informasjon fra vår HTML
form.
>> Så hva det gjør er, når vi treffer Send på vår HTML-skjema,
det passerer du dette superglobal, som er bare en assosiativ array.
Det er denne.
Det er akkurat som passerer som til filen.
Og hva den sier er, OK, her er $ _POST.
Det er din assosiativ array.
Gjøre med det hva du vil.
Og vi sier, OK.
Gi meg verdien på navn, og gi meg verdien på alder.
>> Så dette er bare nøkler, og dette er vår array.
Betyr det fornuftig?
>> PUBLIKUM: Mhmm.
ALLISON Buchholtz-AU: Awesome.
PUBLIKUM: Hvis du må sende inn den skjemaet betyr det bare skrive over dataene?
ALLISON Buchholtz-AU: Yeah.
Mhmm?
>> PUBLIKUM: Hvorfor har dere å presisere at det er en int?
>> ALLISON Buchholtz-AU: I dette tilfellet, brukeren er bare å tvinge den til å være en int.
>> PUBLIKUM: OK.
ALLISON Buchholtz-AU: Jeg vet ikke hvis du faktisk trenger det,
men for sine formål, bestemte de seg at de ønsket å være en int.
De er bare typecasting det.
Kanskje de bruker det som noe annet senere.
Dette er bare ett tekstutdrag.
Ja?
>> PUBLIKUM: Hva om de skrev 12, T-V-E-L-V-E, for alder?
ALLISON Buchholtz-AU: Hvis de prøvde å skrive det som en int?
PUBLIKUM: Yeah.
ALLISON Buchholtz-AU: I glemmer hva som gjør.
Jeg tror det kan prøve å konvertere det første tegnet til en int,
eller ta verdien og konvertere det, men jeg glemmer nøyaktig hva det.
Være en morsom ting å skrive et program og prøve.
Gjør et par linjer.
OK, slik at dette er en av de viktigste ting som du kommer til å gjøre.
Jeg skal forhåpentligvis gå gjennom et par av filer
fra PSet med dere.
Det ser ut som vi kommer til å har tid, slik at vi kan gjøre det.
>> Men du kommer til å være gjør en masse ting
som dette, hvor du passerer ting fra et HTML-skjema
inn i denne PHP form som vil da utføre noen sett med instruksjoner
på data som ble levert.
Det er bokstavelig talt kjerne av din PSet.
Yeah.
>> PUBLIKUM: Den type = "submit", som gjør en knapp på HTML-skjema.
Er det måten å ringe den knappen noe?
Så du ville være som name = "submit"?
Eller er den knappen bare skal være tømme akkurat nå, fordi du bare
ga det en type, ikke et navn.
>> ALLISON Buchholtz-AU: Jeg tror det er bare kommer til å være tom akkurat nå.
Vi kan definitivt se på PSet, fordi vi vil definitivt
være å se på registrere type ting.
Men ja, kan du definitivt spesifisere teksten du vil ha på knappen.
OK, så SQL.
>> Når du kjøpe og selge aksjer, du trenger for å holde styr på dem.
Så måten vi kommer til å gjøre det på er med SQL, som er bare en database.
Tenk på det som en tabell der du holder all denne informasjonen
om dine forskjellige brukere.
Og dere er faktisk kommer til å lage en av disse.
Det er ganske kult.
>> Og det er bare fire viktigste tingene at du trenger å vite for denne PSet,
og de er oppdatert, slik at du utgangspunktet oppdatere dataene.
Det forutsetter at det allerede er der.
Hvis den ikke er der, kommer det til å treffe deg med en feil,
så kanskje du vil sjekke.
Og du vil oppdatere on-- jeg bør faktisk-jeg har tid,
Jeg skal skrive et par av disse.
Jeg vil faktisk gi dere en par prøven, fulle SQL-kommandoer,
fordi disse er bare hoved seg, men du kan bli med dem sammen.
Så jeg skal gjøre det, og jeg skal sende det ut til deg med disse merknadene.
>> Så hvis du ønsker å oppdatere noe, trenger å fortelle den hva du oppdaterer
og hvor du oppdaterer den.
Så en typisk SQL kommando ville være oppdatering ID der noe er lik noe.
Eller som oppdatering adresse hvor ID er lik 3,
og dette vil oppdatere adressefeltet av bruker som har en ID på tre.
OK?
>> Så hvis du går til SQL og W3Schools, De har awesome eksempler.
Faktisk kan jeg trekke noen opp i en liten bit.
Og deretter sette inn, du er bare setter visse verdier der.
Så hvis du prøver å lage noen nye oppføring, slik at du oppretter en ny bruker,
du kunne gjøre innsatsen i hva databasen heter,
og du ville ha alle disse verdiene.
>> Da har du velger, velge verdier for å se.
Så hvis du prøver å sjekke for å se om en bruker eksisterer eller er du
prøver å hente spesifikke informasjon om en bruker
du kommer til å bruke velger.
Og deretter slette, tror jeg, er ganske enkel der.
Du bare slette noe fra bordet.
Og faktisk, la meg faktisk trekke opp noen eksempler for dere.
Å se, det er min 61-siden.
>> Så hvis vi går til W3Schools, forhåpentligvis er det opp igjen.
Ja, elsker det.
Vi går til SQL.
Så, dette er noe her.
Så dette er en veldig enkel SELECT.
Man, jeg elsker denne funksjonen.
Så kan du ha SELECT enkelte felt fra kunder.
I dette tilfellet refererer til kundene online database som du bruker,
så uansett hva tabellen kalles, og stjerners betyr bare velge alt.
Gi meg hver eneste en.
>> Så, jeg vil bare gi dere en par eksempler på hvor dette er.
Så vi har SELECT, UPDATE.
Så her er litt av den generelle syntaksen.
Så OPPDATERE, uansett Tabellnavnet er, og deretter SET
er der du faktisk kommer å være hvilke data du bytter.
Så dette kan be-- Let meg gjøre et eksempel her.
Så dette kommer til å be--
>> OK.
Så jeg laget en liten database for oss.
Vi kommer til å ha noen ID, noen år, og noen navngitt.
Så ID en kommer til å være året '15, og vi bare kommer til å gjøre det meg.
Hvem ønsker å være den nest person i vårt bord?
Noen.
Jeg bare kommer til å velge Emma fordi navnet ditt raskt.
Emma, ​​hvilket år er du?
>> PUBLIKUM: Hvilket år?
>> ALLISON Buchholtz-AU: Yeah.
>> PUBLIKUM: '16.
ALLISON Buchholtz-AU: '16.
Du bare kommer til å være mitt marsvin for i dag.
OK, så vi har disse to menneskene.
Egentlig, la meg gjøre dette.
La oss si at jeg hørte henne galt, og jeg faktisk sa hun er et år yngre.
Hun er '17.
Det vi ønsker å gjøre her, hvis vi ønsket å oppdatere Emmas år
å være korrekt å bruke det, hva vi ville gjøre er at vi vil si UPDATE data over her.
>> Og dette kan alle være på en linje, men siden jeg er komprimert for plass her,
Jeg kommer til å skrive her.
Og vi ønsker å sette.
Så dette er tabellen vi oppdaterer.
SET kommer til å være hva kolonne eller hvilke data som vi faktisk endring.
Det vi endrer er året, så vi kommer til å si SET år = 16,
og deretter HVOR forteller oss hvilken bruker eller hva rad er vi faktisk å oppdatere denne.
>> Så hvor?
Vi har to alternativer her.
Hva er de to?
Disse er unike, ikke sant?
Så navnene våre er unike og vår ID er unik,
så hva er de to alternativene for hvor vi kunne gjøre dette?
Jeg skal gi deg en.
Vi kunne gjøre WHERE ID = 2, eller vi kunne gjøre hva
hvis vi skal av dette paradigmet her.
>> PUBLIKUM: [uhørlig].
ALLISON Buchholtz-AU: Nettopp.
Så kunne vi også gjøre name = Emma.
Og en av disse ville fungere.
Og vi kjørte dette, ville det være som, OK.
Vi kommer til å endre det.
Du er faktisk 16, så nå er du til høyre igjen.
OK, slik at dette ville bli super nyttig i din PSet
der kanskje noen bestemte å kjøpe 100 aksjer i Apple,
og da de var like, bare tuller.
Jeg vil bare ha 90 aksjer.
Og så de selger 10 av dem, slik at du må oppdatere mengden av aksjer
at de har.
Så, oppdatering aksjer, oppdatere tabellen.
>> OK.
Så det er ett eksempel der.
Det er oppdateringen syntaks.
SLETT.
Oh.
Sett inn er vårt andre.
Så dette er en her veldig like.
Vi kunne bare si, i denne saken la oss legge til noen.
Vi kan legge til Ben denne gangen.
Vi INSERT INTO, og vi ønsker navnet på vårt bord.
I dette tilfelle er det data.
>> Og da har vi bare vil, du kommer til sier VERDIER, og hva du skal gjøre
er du faktisk trenger for å være sikker at du har noe for hver rad
som du ønsker.
Du bare sette dem i rekkefølge.
Så i dette tilfellet, ville vi si tre.
Du er 18, ikke sant Ben?
>> PUBLIKUM: 19.
ALLISON Buchholtz-AU: 19?
PUBLIKUM: 19.
ALLISON Buchholtz-AU: Din årets '19?
Du oppgraderer i '18, ikke sant?
PUBLIKUM: Oh.
ALLISON Buchholtz-AU: Graduation år.
PUBLIKUM: OK.
ALLISON Buchholtz-AU: Jeg var som, er du
allerede planlegger å ta et friår her?
Så, '18, har vi Ben.
Så i dette tilfelle, ville det gå gjennom, det ville opprette en ny oppføring her.
Cool.
Ikke så ille, ikke sant?
Mye av dette kommer til å være syntaks for dere.
Konsepter bør komme, forhåpentligvis, relativt lett.
Syntaksen er den eneste som kan være litt vanskelig.
>> Og da er vår siste er DELETE, og som du legger merke til,
Jeg anbefaler denne nettsiden.
Det er flott.
Det er massevis av ting.
Derfor, på samme måte som vi hadde noen UPDATE, DELETE er veldig lik.
I stedet har vi Slett fra data.
Så i dette tilfellet vår siste jeg skal skrive ned her.
La oss si at vi ønsket å slette meg.
Jeg kan ikke skrive i dag.
SLETT fra uansett tabellen vi er i, data.
Og det er faktisk tre måter vi kunne velge å slette meg.
>> Kan dere fortelle meg hva de tre måter er, hvordan du kan slette meg?
ID er lik 1, hvor ID er lik 1.
Vi kunne gjøre der året lik 15, eller der Navnet tilsvarer Allison.
selvfølgelig, det er bare tre forskjellige måter,
fordi disse er alle unike.
Vanligvis i tabellen, og spesielt i din PSet,
du kommer til å sette en av disse kolonnene for å være unike.
>> Det er trolig kommer til å være noen unike ID nummer, fordi hvis du have-- faktisk,
det kan faktisk la deg ha to.
Jeg kan ikke huske om det vil la du har to av samme ting.
>> PUBLIKUM: Så det ville endre sin atferd.
>> ALLISON Buchholtz-AU: Det ville.
Det vil føre til atferd som er uventet, at du ikke kan egentlig forutse.
Så du vil definitivt ha en kolonne i databasen som vil være unikt,
og det er vanligvis kan du angi det slik at det er som en unik ID,
og det vil bare oppdatere hver gang du setter inn i tabellen.
Hver gang du oppretter en ny rad, vil det automatisk
øke og gi det litt unik ID.
Så hint for din PSet.
OK.
Så det er SQL.
>> Så nå skal vi snakke om den aller siste ting, noe som stemmer overens
faktisk ganske godt med PSet, om det ville gå fremover.
Så MVC, modell view controller.
Dette er egentlig bare en måte å holde ting organisert.
På samme måte med C ber vi dere å lage funksjoner og separate ting
ut, er dette bare en måte å skille ut koden når du gjør webutvikling.
>> Så det gjør ting mye mer elegant og forenklet,
og dette er faktisk den måten at PSet er faktisk
satt opp, så om du liker det eller ikke, du kommer til å lære det,
selv om du ikke tror du lærer det.
Og en ting er, det kan du også gjøre mye mer som en brukersamarbeid.
>> Så da jeg tok CS50, gjorde jeg en webside for mitt siste prosjekt,
og jeg var som, vil jeg håndtere databasen ting.
Jeg skal gjøre bakenden ting, og min romkamerat som jeg tok med seg
var veldig fancy.
Hun gjør scenografi, og hun ønsket å gjøre det hele pen.
Så jeg er liksom, OK.
Du kan ta vare på alle foran slutten ting.
>> Og ting er, som vi får se veldig snart,
at modellen visning kontrolleren lar deg helt skille at koden slik
at jeg kan jobbe på implementere våre sider,
og manipulere informasjon i våre databaser,
og hun kunne bare gjøre ting pen, og vi var begge veldig fornøyd,
fordi vi fikk gjøre hva vi begge ønsket, og vi
trengte ikke å forholde seg til den andre.
>> Så vi hang ut sammen.
Vi liker å henge ut.
Jeg bare ikke ønsker å forholde seg til all CSS og HTML ting.
Jeg var like, gjør du det pen.
Jeg skal forholde seg til databasen.
Så vi har dette virkelig kjølig, flott lite bord.
Jeg elsker tabeller.
Og i utgangspunktet, den modellen du kan tenker på er bare databasen.
>> Jeg var modell person for prosjektet mitt.
Det handler om lagring av informasjon og organisere dataene.
Så det er det vi liker å kalle bakenden.
Så dere skal håndtere SQL-databasen og datafiler.
Det er din modell.
>> Ditt syn, som du kanskje tenker, hva slags er fornuftig,
er hva brukeren faktisk ser.
Det er brukergrensesnittet.
Det er den fronten vendt komponent.
Så det er hva min romkamerat fikk jobbe med hele tiden.
Hun var super fornøyd.
Så det er all HTML, og det er veldig lite PHP.
>> Hvis du bare snakker om hva som blir vist til brukeren,
vi snakker om hypertekst.
Vi snakker om hvordan det ser ut.
Vi snakker ikke om logikk, eller betingelser, eller whatnot.
Alle som blir håndtert av kontrolleren, OK?
Så som håndterer brukeren ber om og får informasjonen.
>> Så en ting du bør vite om din PSet er at i dine synspunkter,
noe som faktisk er visning av informasjon
bør aldri være å gjøre samtaler til din modell.
Alt dette blir håndtert i kontrolleren.
Kontrolleren er en formidler mellom disse to.
Det vil spørre modellen for visse typer informasjon.
Det kan iterere over at informasjon, finne ut
hva du faktisk trenger fra det, hva du skal gjøre med det,
og da vil det gå på akkurat den informasjonen du
trenger til visning for deg å skrive den ut ut eller vise det til brukeren, OK?
>> Fordi vi se utsikten som hva som vender mot brukeren,
så det vil være mye enklere for dem å finne ut,
oh, hvis du gjør noen kaller til din modell
og du ber for alle brukere som starter med bokstaven A,
og du gjør det i ditt syn, noen som kan se din nettside
potensielt kan få tilgang til det.
>> Du trenger ikke nødvendigvis ønsker det.
Du ønsker ikke at folk skal se mer inn i databasen enn hva
de bør se.
Bare sine spesifikke preferanser.
Så kontrolleren håndterer alt dette.
Så alle dine Php filer som vi får se du kan vurdere dine kontroller filer.
Og det er der du er virkelig kommer til å være
ber om ting fra databasen, og itera eller manipulere
det som nødvendig før passerer den på å bli sett.
>> Det er en veldig kul PSet, etter min mening.
Jeg tror det er litt mer som øyeblikkelig tilfredsstillelse,
fordi du implementere en mange små små ting,
og hver ting skal fungere på egen hånd.
Ikke liker, gjør alt og deretter se om det fungerer.
Som med programvare hvor du er som jeg er
egentlig håper dette er rett, fordi hvis det ikke er det,
det er mange av plasserer det kunne være galt.
>> OK.
Bare pass på at jeg sa alt jeg trengte å si om MVC.
Yeah.
Cool.
>> Så i CS50 Finance, har vi vår modell, som jeg sa nettopp her.
Det kommer til å bli MySQL og phpMyAdmin.
Jeg kan definitivt trekke dem opp slik dere får en sjanse til å se på det.
Som jeg sa tidligere, det er din SQL database fungerer som din modell,
og du kan sende det vi kaller spørringer, som er bare disse slags ting.
Disse kalles en spørring.
Dette er en spørring, der du bare spør databasen for noe,
eller du endrer din database på en eller annen måte.
Det er alt det er.
Og du gjør det med funksjonene vi har gitt deg her.
>> Du kan også manipulere dem for hånd via phpMyAdmin,
som vi kan definitivt ta en titt på.
Jeg skal lage en prøve database med dere.
OK.
Så, controller.
Så i dette tilfellet, hvis du varsel, er dette alt PHP.
Legg merke til at er slags din viktigste av kontrolleren
er at det skal være stort sett PHP.
Hvis du har HTML i kontrolleren, ikke helt sikker på hva som skjer der.
På samme måte som jeg sa, hvis du klarer å [uhørbart] med HTML,
Jeg er ekte interessert.
>> Så det vi har her er du har noen spørsmål.
Spørring er en funksjon som vi bygget for dere.
Det er som en wrapper for å gjøre spørringer til databasen litt enklere.
Hvis du ikke har det, syntaksen for faktisk snakke med din SQL database
ville være annerledes, så vi bare levere det for dere.
Vi liker å gjøre livet enkelt.
>> Så i dette tilfellet, kan dere fortelle meg hva denne linjen gjør?
SELECT * fra noen bord.
PUBLIKUM: Velg alt fra denne tabellen.
ALLISON Buchholtz-AU: Nettopp.
Så det er å si, gi meg alt fra denne tabellen.
Og det er å lagre den i noen variable resultat.
Og dette sier, hvis resultatet er ikke lik til false, så vi gjør hver enkelt av dette.
Så hvis det er ingenting her, hvis din tabellens tomt eller det bare ikke finnes,
det kommer til å returnere falsk.
Så i dette tilfellet, vi bare gjør sikker på at noe var faktisk
returneres til oss.
>> Og så her har vi vår store foreach løkke
at vi itera over vår resultat, og vi kaller det ro,
og vi sier gjengi denne malen hvor dataene er dette resultatet.
OK?
Så det er bare å behandle raden av resultatet.
Ellers roper det.
Så, er dette et eksempel av kontrolleren.
Som du ser, er dette bare sted-- Ja, beklager?
>> PUBLIKUM: Hvorfor er det en tegnet før rad?
>> ALLISON Buchholtz-AU: En tegnet før rad.
Vi er bare itera.
Det er også en adresse of--
>> PUBLIKUM: Så det er som C henvisning.
>> ALLISON Buchholtz-AU: Det er å sørge for at du faktisk er
endre den opprinnelige og ikke en kopi.
Det er på samme måte med C der vi passerer ved referanse her, bare
for å være sikker.
>> PUBLIKUM: Er det ikke == i stedet for å ikke = i PHP?
>> ALLISON Buchholtz-AU: Det er ikke ==.
>> PUBLIKUM: Fordi lik i C er just--
>> ALLISON Buchholtz-AU: Det er bare ikke =.
Ja, nei.
Det er ikke ==.
Fordi == i PHP sjekker for likhet med veksling, gitt,
men ekstra kvalitet.
Så, det er ikke == i PHP.
Det er en av den lille syntaks forskjeller.
Yeah.
Så vi bare itera gjennom hver rad,
og gjengi, hvis dere lese gjennom din spec,
er bare noen annen funksjon som er faktisk kommer til å behandle all HTML
og vise den i din nettleser for deg.
>> OK.
Så, vi liker å tenke på dine kontrollerne som hva håndterer forretningslogikk.
Som du ser her, dette er hvor vi er tar våre data fra bordet,
vi behandler det på noen måte, og da vi passerer den av.
Når vi gjør gjengi noen mal, noen mal er vårt syn,
og vi passerer den bare dataene at det bør få.
Ikke alle data.
Bare de data som vi ønsker det å få.
OK?
I utgangspunktet dataene etter behandling.
>> Så dette er utsikten, dette er summen mal som vi har,
og alt dette gjør er, kan du har litt PHP i ditt syn.
Det er ikke som et nei PHP i sikte.
Du bør bare ha svært minimal PHP i sikte,
og du bør aldri være spørring i ditt syn.
Du bør aldri snakke til databasen i ditt syn.
Det er den store forskjellen.
>> Så hva er det som skjer her er at vi har PHP som er itera gjennom rad.
Slik at i dette tilfellet, siden vi itera gjennom hver rad
og gjengivelse noe, dette var sannsynligvis som en todimensjonal matrise
hvor vi har noen rad som er, i seg selv, en matrise,
fordi vi itera gjennom det igjen.
Og vi er bare å skrive ut navnet rad, og deretter avslutte den.
>> Du bør ikke trenger dette i foreach.
Jeg har aldri sett det før faktisk.
Jeg bare gjøre foreach.
OK, så det er utsikten.
La oss se om vi kan gå gjennom en liten bit av din PSet.
Vi har 15 minutter, så jeg er sikker på at du Gutta ønsker at mer enn bare
slutter tidlig.
La meg se om jeg kan ta dette opp.
>> Så jeg vet ikke hvor mange av dere har lastet det ned og whatnot ennå,
men vi har brukernavn her, og vi har noen passord.
Og dessverre, ikke sant Nå databasen er tom,
slik at vi faktisk trenger å opprette en database.
Vel, det er merkelig.
Forventet ikke det.
Tekniske feil.
Tekniske problemer.
Vi har noen pset7.
Cool.
>> Så, en ting du kan gjøre er, med en query-- Jeg skal lage en tabell.
Så dette kommer til å være users-- hva du kan gjøre her er, hvis vi har some--
Egentlig nå?
OK.
Tydeligvis jeg ikke gjør så varmt.
Oh.
Jeg vet hvorfor.
Fordi jeg aldri opprettet mine faktiske tabeller.
Så når du først begynner med en database, du åpenbart
må bestemme hva som er den ting jeg trenger å ha her inne?
>> Så hvis vi bare gå av våre data tabell her,
vi hadde noen ID, som kan bare holde en int.
Og hvis vi ser over her, det er en kul ting at-- Så indeksen.
Hvis du gjør det primære, vil det gjøre det ting som tabellen er organisert av,
og det vil også gjøre den unik.
Så i dette tilfellet, vil vi gjøre det primære, og jeg kommer til å gjøre dette navnet,
så får vi bare gjøre det en varchar av som 26 bokstaver, fordi hvorfor ikke?
>> Og så kan du gå til Lagre, og deretter Hvis du ser, har vi noen brukere her.
Så hvis vi ønsket å gjøre en sette inn, vi kunne gjøre det
denne måten, eller hvis du ønsket praksis med queries-- Oh boy.
Jeg har ikke brukt dette i evig.
Jeg tar dette tilbake.
>> Du kan redigere dette på egen hånd enten bare ved å manuelt sette inn informasjon
med noe sånt, du kan endre noen av disse
hvis du ønsket å make-- Hvis du ønsker å plutselig kvitte seg med navn, kan du slippe,
du kan gjøre alle disse tingene.
Hvis du trenger å noensinne manuelt endre tabellen,
Jeg foreslår at du gjør det i phpMyAdmin versus prøver
å finne ut av SQL spørsmål generelt.
Når du først starter din PSet, du er nødt til å jobbe i her,
så bli vant til det.
Og så når du faktisk ønsker å sette ting inn i din table--
Jeg lurer virkelig på hvor det er, fordi there's-- Her er det.
Det var det jeg ønsket.
Så hvis du går til SQL, kunne du faktisk ser, som vi ser her,
vi har SQL-spørringer.
>> Så hvis vi ønsket å velge noe eller hvis vi ønsket å sette inn noe,
vi kan gjøre innsatsen i brukerne, ikke sant?
Jeg tror du trenger backslash.
En ting å vite er, hvis du noen gang bruke dette,
du må bruke disse tilbake apostrofer, som er typisk,
hvis du er på en Mac, rett ovenfor kategorien.
Så en god ting å vite.
>> Du kan sette inn brukere, og vi har våre verdier, ikke sant?
Så vi har verdier, og våre verdier i dette tilfellet ville bare være,
vi har bare en ID så vi kunne gjøre en hvis vi ønsket.
Det er rart.
OK.
Så det er akkurat som en kortfattet liten ting med SQL,
men det kan være mer nyttig å faktisk se på noen av filene her.
>> Så gå til nedlastinger.
Oh, ikke-nedlastinger.
Så, bare en rask gjennomgang av hva som er i hver av disse mappene.
Det inkluderer, vi må bare ting at konfigurere nettleseren,
vi har disse konstanter, og vi har disse funksjoner.
Hvis du er interessert i noen av dem, Jeg anbefaler å se på funksjoner.
En av dem som er super nyttig, faktisk er dette en her, dump.
>> Så hvis du bruker denne, det vil faktisk bare
skrive ut uansett variabel at du liker det til.
Så hvis du har problemer med å finne ut hva denne tabellen ser ut,
eller hva disse dataene faktisk, hvordan den er formatert,
dette er en flott ting å bruke.
Spesielt når du har en brukeren med flere lager,
dette kommer til å være noe flott å bruke.
Fordi det kan være formatted--
>> Jeg vet i hvert fall for meg når jeg gjorde Dette PSet, ble det formatert på en måte
at jeg ikke helt forventer.
Så jeg prøvde å iterere over det og prøver å manipulere den,
men jeg gjorde egentlig ikke forstå hva jeg gjorde.
Så hvis du bare dumpe det, vil det skrive det ut til leseren,
og du kan se nøyaktig hvordan den er formatert.
Det vil vanligvis skrive det ut som et matrise med sine nøkler og dens verdier.
Så det kan hjelpe der.
Det kan også bidra til å gjøre sikker på at du faktisk
gripe tak i data som du trodde du var.
Så hvis du var som, mitt bord definitivt sier det er en bruker med denne ID,
men når du går til dumpe variabel, er det ikke det,
du vet tydeligvis det er der en feil kommer til å bli.
Dette er en av de beste verktøyene for debugging, etter min mening.
Og så er det en par andre ting her,
men for det meste, det er det jeg ønsker å trekke oppmerksomheten din til,
fordi det er veldig nyttig.
>> Offentlig, hva vi har her er, dette er alle våre CSS ting.
Så CSS, skrifttyper, våre bilder, whatnot.
Dette er alle ting som du trenger ikke å endre.
Kan dere tenke på om dette har ting som CSS i skriftene,
ville dette være en modell, eller en visning, eller en kontroller?
PUBLIKUM: [uhørbart]
ALLISON Buchholtz-AU: Det ville være mer av en visning, ikke sant?
Dette håndterer alt ting, hvordan ting ser ut.
Så hvis vi åpner dette her, ser vi at alt som skjer her
er vi gjengi noe.
OK?
Så dette vil veldig mye kvalifisere som en visning for dette.
Så dette er bare å ta noen, det ringer noen portfolio.php
som vi har, og det er forbikjøring i tittel og portefølje.
Og det er bare å gjengi det.
Faktisk, jeg tar det tilbake.
Dette er en kontroller, fordi gjengi, huske, gjør utsikten.
Så portfolio.php i denne tilfellet ville være ditt syn.
Sorry, folkens.
Portfolio.php kommer til å være ditt syn, og dette ville bare
være kontrolleren for det.
Og hvis vi tar en titt på denne siste her, maler,
maler er alle dine synspunkter her.
Så hvis vi ser, selvsagt Vi ser mye av HTML her.
>> Så dette er bare viser deg hva påloggingssiden skal se ut.
Du merker vi har noen danne grupper, har send.
Her er hvordan du bestemmer deg for hva vises på det.
Du har noen knapp type = "submit", og da har du det du vil den
som skal vises i knappen.
Så det er slik du ville gjøre det vise seg som det du ønsker.
>> Og vi ser her har vi noen brukernavn, noen passord,
og når vi faktisk traff Send inn, det kommer til å være noen innlegg,
og det kommer til å legge til hva?
Hva er kontrolleren for dette synet?
Når vi treffer Send inn, hva som kommer til å bli kalt?
Vet vi?
Det er rett her, så login.php.
Noe dere er kommer til å implementere.
>> Så du kan alltid fortelle hva som kommer til å være
kalt etter at du treffer Send etter denne første linje her.
Hva skjemaet handlingen er.
Når dette skjemaet er sendt, hvilke tiltak tar vi?
Vi kaller login.php, og vi kaller det med denne metoden
av post, som har den skjult informasjon.
OK?
Så dette er ditt syn, og så åpenbart hvis vi gikk til login.php-- Har vi det
ennå?
Yeah.
>> Så som vi ser her, dette har mye mer logikk.
Det er all vår PHP her.
Vi prøver å se om det var $ _GET, hvis det var $ _POST, validering ting,
spørring, alt dette ting.
Så de er bare tre forskjellige ting her.
du trenger ikke å forandre på ting.
Du vil være å skape ting i malen, muligens,
men så langt som HTML eller styling av noe av dette går,
du kan la den være som vanlig eller så intrikat som du ønsker.
>> Noen mennesker får virkelig inn i det og gjøre noen ganske imponerende nettsteder.
Du trenger ikke å gjøre det.
Hvis du har tid, er det en veldig kul ting.
Du kan rote rundt med CSS og HTML og får en mye bedre følelse for det,
men ikke føler seg presset til.
Det er nok for deg å gjøre på bakenden med implementering logge inn,
og registrere, og alle disse tingene.
>> Så forhåpentligvis som hjelper litt.
gjør dere har noen spørsmål om noe vi har gått over,
eventuelle andre ressurser?
Jeg vil definitivt sende alle mitt eksempel PHP-koden til dere,
og da gjerne ta bilder eller whatnot av dette.
Også det er online.
Du kan alltid bare se på nytt.
Så hvis det er det, alle bra?
Ja.
>> PUBLIKUM: Jeg vil bare ha å bekrefte, når vi er
gjør velger i SQL, den stjerners betyr alt, ikke sant?
ALLISON Buchholtz-AU: Ja.
PUBLIKUM: Og så hvis du har ikke stjernen,
hvis du vil at det skal ta fra en bestemt rad, så du bare sette navnet of--
ALLISON Buchholtz-AU: Navnet på rad
og hva du vil du vil verdien av.
>> PUBLIKUM: Og så datoen.
ALLISON Buchholtz-AU: Uansett du leter etter, ja.
På samme måte, hvis du gjør DELETE * fra noen tabell, vil den slette alt.
Så, * er bare en vill kort for alt.
>> PUBLIKUM: OK.
>> ALLISON Buchholtz-AU: Cool.
Awesome.
Vel, har en stor mandag, folkens.
Jeg ser deg neste uke.
Lykke til på din PSet.