[Powered by Google Translate] [Tjedan 8, Nastavak]
[David J. Malan] [Sveučilište Harvard]
[Ovo je CS50.] [CS50.TV]
>> Ovo je CS50, tako da je ovo kraj tjedna 8 ovdje.
Mi, naravno, imao malo uragan ranije ovog tjedna,
pa sad to je stvarno samo ti i ja u ovom predavaonici,
ali danas ćemo nastaviti naš razgovor o PHP
i oko web programiranja općenito, a također smo uvesti ideju
baza podataka, posebno jedan zove MySQL, koji je vrlo popularan ovih dana,
velikim dijelom zbog njegove skalabilnosti, kao i zbog svoje biće besplatan i open source.
>> Ali prvo, pogledajte gdje smo stali zadnji put.
Sjetite se da smo bili u potrazi na nekoliko Frosh IMS primjera,
i to je bio strašan oblik koji sam došao do nekih 15 + godina
kako bi se studenti na kampusu registar za brucoš intramuralnog sportova
bez da zapravo putovati više preko dvorišta do Wigglessworthovoj
slajd fizički komad papira ispod neke Proctor vratima.
Umjesto toga smo se preselili sve online, ali za to trebamo iskoristiti
od nekoliko tehnologija, tako da se, trebamo HTML, Hypertext Markup Language,
što je opet to Označni jezik s kojim ste napravili web stranice strukturalno.
>> Koristeći malo CSS ovih dana, Cascading Style Sheets,
pri čemu ćemo koristiti stilizacija na web stranici pomoću malo drugačiju sintaksu,
dok HTML je sve o strukturi istih.
Također je potrebno uvesti jezik web programiranje.
U tom slučaju, mi ćemo koristiti PHP, i PHP će omogućiti nam
Da biste dinamički izlazni sadržaja, kao i to programske stvari poput
slanje e-pošte, kao što je to bio slučaj na umu smo ostavili prošli tjedan.
>> Sjetite se da je kod za to bio je u dva dijela.
Jedan od njih, imali smo froshims3.php,
i to je uglavnom za označavanje s HTML obliku unutar nje,
komadić CSS ovdje u stilu atribute
tako da je forma sama bi biti usredotočena na stranici, ali dalje od toga
imali smo neke reprezentativne obrasca ulaza, tekst polja, kućicu,
neke radio tipke, odaberite izbornik, a submit gumb.
A putem ovog obrasca, mi poslali na datoteku koja je navodno zove register3.php,
koji je i sam gledao malo nešto ovako.
Sada, većina koda u register3.php, podsjetimo, bio je sve o e-maila.
To je malo validacije u obliku koji je dostavljen kako bi bili sigurni
da su polja su zapravo pod uvjetom da su očekivali.
Tada smo nazvali neke PHP funkcije pomoću blago novu sintaksu,
iako je posudio od C.
>> Ova strelica operater omogućuje nam da se iskoristi nešto što se zove objektno-orijentirano programiranje.
Nećemo ulaziti u to u bilo kojem detaljno ovdje, ali znam za sada
to je način da funkcije povezane s objektima,
koji su posebna vrsta strukture, kao što smo vidjeli u C.
No, za sada, samo se na vjeri da je to ispravna sintaksa za korištenje
kada koristite knjižnicu ovako PHPMailer knjižnici.
I onda do kraja ove datoteke smo dinamički je generiran e-mail
koji je dobio poslao na moj račun jharvard@cs50.net
iz mog jharvard@cs50.net računa,
i mi obavijestio korisnika u skladu da su bili registrirani za ovaj sport.
To je ljepušan velik dio onoga stranica Frosh IM učinio prije svih tih godina
kad sam ga provodi, odobren, na drugom jeziku,
ali to pokazuje možda moć da imate
sada da možete izraziti sebe ne samo programski
na niskoj razini u jeziku poput C, ali na mnogo višoj razini
s tim vrlo stvarnim aplikacijama kao što su e-mail zapravo riješiti
neki pravi svjetski problemi.
>> Sada, naravno, iako sam koristiti ovu skriptu generirati neke
e-mail dinamički iz jharvard@cs50.net, što je doista račun
da imam pristup, nemojte biti vrlo oprezni poslati
mail samo od računa koji su zapravo sami,
da se stvari dobiti u malo tople vode u životu.
Sa taj je rekao, hajdemo sada prijelaz na rješavanju drugačiji problem uopce,
da od potpornih država.
Sada, što to zapravo znači?
HTTP, ovaj protokol hypertext transfer,
je zapravo državljanstva protokol, i što to znači da je
kada podići nešto poput Google.com, a zatim pritisnite enter
obično vaš preglednik ima nekakav vrti ikone koje zatim
Rezultati za neke web stranice se skinuti,
i onda da se malo ikona prestaje predenje, i da doista sugerira
da HTTP je završio nekakvu vezu s poslužiteljem i to je to.
HTTP je bez državljanstva, u smislu da se ne održi
uporni veza s poslužiteljem na isti način Skype radi
ili Gchat radi jer s HTTP
Pretpostavka je da nakon što ste je dohvatio web stranicu koja je to.
>> Sada, u stvarnosti ovih dana na stranicama poput Facebooka i Google Maps
i Twitter i kao da je puno više dinamika kojom
čak i nakon toga ikona prestaje predenje možete zapravo dobiti više ažuriranja
od poslužitelja, više tweets, više statusa ažuriranja na Facebooku i slično.
No, čak i da se tehnikom da ćemo razgovarati o u tjedan ili dva
poznat kao Ajax koristeći jezik zove JavaScripta,
ali na kraju dana, HTTP je uvijek apatrid.
Pa ipak, ako želite da se nekako sjetiti stvari o korisniku
čak i nakon što sam isključen iz vašeg poslužitelja
PHP čini vam priuštiti sredstva za to
jer, kao što smo vidjeli zadnji put, PHP ima niz superglobals,
i superglobal je, opet, posebna globalna varijabla
koji je predao na vas od strane web poslužitelja i PHP sama.
>> Ne morate učiniti ništa staviti vrijednosti u njoj,
a među superglobals smo vidjeli dosad su dobili i postavljati,
što je gdje polja obrasca su stavili automatski za vas,
kao i nekoliko drugih koje nismo vidjeli još.
Unutar $ _server su neke posebne varijable odnose na samom poslužitelju.
Što je IP adresa, što protokol, HTTP ili HTTPS ste koristili,
Što Zahtjev metodu ste koristili i slično, tako da je neke zanimljive,
sočni detalji o poslužitelju, te u stvari, korisnik u kao i tamo.
Tu je $ _cookie, što je, gdje su te stvari zove kolačići spremljeni.
Nećemo trošiti vrijeme na kolačića se danas,
ali znam za sada da kolačić je samo mali dio informacije
da web poslužitelj može posaditi na web-preglednik
i okrenuti RAM ili njegovi tvrdi disk računala
za pohranu informacija o korisniku, na primjer, svoje korisničko ime
tako da oni ne moraju ga upisati svaki put kad se prijavite ili neki
jedinstveni broj ili identifikator za tog korisnika
tako da ne morate ih gnjaviti s istim vrstama pitanja o
preferencije u budućnosti, ali većina od interesa
Trenutno je $ _SESSION.
>> Ovo superglobal, koji, kao i ostali, je uručio vas automatski PHP
kada pišete PHP-based web stranice
Možete pohraniti sve što želite, žice, integers,
plutajuće točke, vrijednosti, polja, objekti,
stvarno sve što želite, a to vam omogućuje da ga spremiti na takav način
da, čak i ako korisnik posjeti vas sada i onda
vrati minutu od sada ili pet minuta od sada, jer
oni uzeti svoje vrijeme prije nego što kliknete neku drugu vezu
PHP će osigurati da ono što ste stavili u toj sjednici superglobal
Minutu ili pet minuta prije će i dalje biti tamo kad se vraća korisnika.
A ispod haube to superglobal se provodi putem
te stvari se zove kolačiće, ali za sada, to je samo apstrakcija
pri čemu je vrsta programskog ekvivalent košarici.
Što god, programer, staviti u to
superglobal asocijativni niz će biti tamo neki broj minuta kasnije
dok ga ne izbrišete ili dok korisnik zatvara svoj preglednik uopce.
>> Idemo pogledati primjer kako ta stvar zapravo koristi.
U counter.php među današnjim komada koda
imamo sljedeću liniju.
Na početku ove datoteke imamo hrpu plavih komentarima, koji su neinteresantni za sada.
No, u skladu 13 imamo novu liniju,
session_start, te da zapravo radi upravo ono što kaže.
Ona počinje sjednice.
To vam omogućuje da koristite taj veliki superglobal $ _SESSION, a to je kao jednostavan kao taj.
Sada, ako smo nastavili gledati na liniji 16, pokušajmo shvatiti što ova web stranica će to učiniti.
Ako (isset ($ _SESSION ["brojač"]), a zatim ići naprijed
i trgovina u suprotnom varijable, mala brojač,
$ _SESSION ["Brojač"].
To čini se da je proglašenje lokalnu varijablu nazvanu brojač
unutar kojih je stavljajući kopiju god je unutar superglobal
zove sjednicu na lokaciji "pulta".
Inače, očito, ovaj mali lokalni varijabla brojač, inicijaliziran na 0..
>> Ali onda nekoliko redaka kasnije u 26 obavijesti da sjednici je kopija pulta,
njegov ključ, ima novu vrijednost dodijeljena, što je njegova trenutna vrijednost plus jedan.
Ukratko, ovu sliku čini se da je ažuriranje
brojač koji je pohranjen unutar sjednice superglobal
ga povećavanjem po jedan, ali je prvi zadržava kopiju prethodne vrijednosti
ga spremanje u lokalne varijable nazivaju $ brojač,
i onda ovdje ćemo vidjeti što dalje.
Ispada da je prilično puno samo HTML.
Na dnu ove stranice vidimo u skladu 37 koje sam posjetio ovu stranicu
brojač broj puta, tako da je prije par zanimljivih značajki ovdje.
Jedan od njih, to je jasno promjenjiva, ali to nije dovoljno da se samo stavi
$ Brojač u tijelu vašeg HTML jer naravno
ako je to samo tu među HTML PHP će pretpostaviti da je samo HTML.
Vi doslovno žele $ brojač koji će se ispisati na zaslonu.
>> No, umjesto toga pada u PHP modu
s ovom komadu sintakse mi može dinamički umetnuti vrijednost ovdje
vrlo slični u duhu onoga što smo radili zadnji put s
umetanja vrijednosti u nizovima.
U stvari, to je samo stenogram notacija za reći nešto ovako doslovno,
ispis ($ brojac) ili čak nešto poput printf (% s, counter),
ili čak, kao što ste vidjeli online ili u udžbenicima,
postoji funkcija u PHP zove jeka
koja čini istu stvar, a svi oni su samo više načina vjetru
govoreći <? =.
U tom jednom slučaju ne morate staviti
Riječ PHP nakon upitnika.
Ovo je stenogram notacija za, opet, ono što smo upravo vidjeli trenutak prije
koji je ponavljajući neke vrijednosti.
>> Idemo vidjeti što krajnji rezultat to zapravo jest.
Pusti me preko u našoj counter.php datoteku,
pa ćemo vidjeti da David jednostavno pogriješili igrajući s kodom tamo.
Idemo popraviti ono što je zeznuo,
i pogreške čini se da je tamo, otišao na liniji 37.
Prema vrhu ove stranice sam posjetio ovu stranicu 0 puta.
Pa, idemo naprijed sada, a na vrhu preglednika kliknite na
učitati ikonu, a ja kliknite reload,
i sada sam posjetio stranicu 1 put, 2, 3, 4, 5, 6, 7, 8.
I doista, ako ćemo gledati na izvoru ovoj stranici stvarni izvorni kod se mijenja,
i primijetiti potpuni izostanak bilo PHP-u, te da je zbog toga
PHP kod se ocjenjuje ili tumačiti strani poslužitelja,
pa to znači da je izlaz iz PHP skripte je ono što u konačnici je poslana pregledniku,
koja je u ovom slučaju je neki sirovi HTML i neki sirovi tekst.
Što se ovdje događa?
>> Pa, s relativno nekoliko linija koda sam u stanju pohraniti
uporno tijekom nekoliko sekundi, ili ako smo čekali dovoljno dugo,
minuta, čak i sati, neke vrijednosti na način da čini HTTP
Čini stateful kao da smo zadržali
ova veza na poslužitelj, a to je samo sjećanja na ono što sam to rekao zadnji put,
ali u stvarnosti postoji cijela hrpa složenosti događa ispod haube
uključujući kolačiće koje je omogućiti PHP da će mi dati ovu iluziju
ove košarici poput osobina.
Za sada, trivijalan primjer gdje smo samo spremanje cijeli broj,
ali da značajka će se vratiti biti od velike vrijednosti
kada smo počeli govoriti o složenijim projektima,
među njima problema postaviti sedam.
Ovo je vaš posljednji problem postaviti u CS50.
Znam, to je tako tužno, ali ono što ćete naći je da ćemo zaključiti
ovaj dio semestra strane zapravo prelazaka
iz konteksta C svakako kontekstu PHP
ali dok koristite neki od istih temelja
smo razgovarali o za neko vrijeme.
>> Cilj s pset 7 je provesti CS50 financija,
koji je svoju verziju Yahoo Finance ili Google Finance
ili čak Etrade.com čemu imate mogućnost da
pogledati cijene dionica za pojedine simbole, ali čak i više od toga
imate mogućnost da "kupi" i "prodati" dionice
kojima se trguje na različitim burzama jer kao ove početnu stranicu
ovdje sugerira, koji je stvarno u kojoj mjeri smo počeli
problem skup za vas, imate prijavu obrazac koji se traži za korisničko ime i lozinku.
Ona ima submit gumb, ali nakon toga, kao što smo na kraju ćemo vidjeti,
ne postoji ništa stvarno događa ispod haube jer još njega
Ostaje li provesti sposobnost da se registrirate novih korisnika,
Sposobnost za kupnju dionica, prodati dionice,
zapravo pogledati trenutne cijene dionica.
>> I doista, to će biti kao stvarnom svijetu što je više moguće, jer smo napravili
su malo koda koji će vam omogućiti s jednim funkciji
na upit Yahoo Finance, koji predivno čini dostupnim besplatne podatke
za gleda gore cijene dionica na temelju dionica simbol ili ticker simbol,
i vratiti trenutnu cijenu dionica na dan.
Podaci ste zapravo vidjeti u ovom konkretnom pset će biti
o kao stvarnom svijetu kao što mogu dobiti, tako da ste zapravo sučelja
sa stvarnim zalihama, u stvarnom svijetu cijenama,
pa ćemo vidjeti koliko novca možete napraviti možda
tijekom sljedećih nekoliko dana igranja sa svojim problemom setu.
>> No, neka prvi postaviti pozornicu za kako dizajnirati nešto što je sigurno složenija
od counter.php, koji je složeniji od bilo koje od Frosh IMS primjera do sada,
i ajmo pokušati uvesti nekoliko paradigme ovdje da nam dopustite
kako za pset 7, a možda i za svoj konačni projekt, ako to učinite nešto weba
da bi se kod dobro organiziran, kako bi se zdravo,
i da se korak prema suradnji, bilo u CS50 konačnog projekta
ili izvan ako i dalje programirati nešto u budućnosti.
Tu je ova opća dizajn paradigma
u informatici i razvoj softvera općenito
poznat kao MVC, model pogled kontroler,
i to je glup akronim koji opisuje vrlo lijep ideju,
koji je razdvajanje različitih aspekata programa,
posebno imajući posebnu logiku ili poslovnu logiku web stranice
tako da ništa što uključuje stvari kao što su
pozivom funkcije i upite baze podataka i kao
se događa nije među HTML
nego u zasebnim datotekama, i doista, bilo je to jedna datoteka
obično da ste pozvani kontroler
to je stvarno mozak iza operacije, a mi ćemo vidjeti primjer
to u samo trenutak.
>> Tu je model koji je programski kod
da ne pričaju svojim bazama podataka, koji govori da Yahoo financija i slično,
a zatim tu je V u MVC, pogledi,
sve stvari koje se odnose na estetiku, datoteke koje zapravo sadrže
HTML, možda vaš CSS i slično.
Ideja je ovdje, kao i ova slika sugerira, je da kontroler
je datoteka, kao što ćemo uskoro vidjeti i kao što posebno ćete vidjeti u pset 7,
da svijet govori da putem svojih web preglednicima.
To je datoteka koja dobiva posjetili na javnom internetu,
ali kontroler razgovara s potencijalno modelu,
koji je jedan ili više drugih slika koje sadrže kôd koji se odnose na podatke,
Kod odnose na baze podataka i sl., a onda govori kako
kontroler jednom ili više drugih datoteka poznat kao pregleda,
koji su estetika web stranici, predlošci vrsta,
koji bi mogli poduzeti neke podatke kao ulaz, ali na kraju dana
jedina logika unutar pogledom trebao biti renderiranje tim podacima,
Ponavljanje preko petlje i zapravo pljuvanje iz neke
HTML-based izvedba istih ili čak i nešto poput PDF-a.
>> Što je lijepo o MVC je da možete imati različite poglede
ovisno o vrsti uređaja, a temelji se na vrsti formatu da ste zapravo
žele prikazati korisniku.
Idemo pogledati nekoliko progresivno složenije i dobro dizajniran primjera
počevši prvo s verzijom 0 ovdje.
Pusti me naprijed i otvoriti u našem MVC imeniku danas
datoteka zove index.php u imeniku 0.
Obavijest ovo je super jednostavna i vrlo underwhelming web
to je vrsta verziji 0 od početne stranice za CS50,
i primijetiti kako imamo link na predavanja, imamo link na nastavni plan i program,
i ako sam slijedite link na predavanja obavijesti da URL
do vrha će se promijeniti za lectures.php.
Ako sam tada slijedite link do tjedna 1 najave da URL promjene week1.php.
Čini se da postoji prilično jednostavna hijerarhijska struktura ovdje.
>> Ajmo uzeti brzo pogledati ispod haube, na kako je to iznio,
i doista, ako gledam index.php to je prilično jednostavna.
U stvari, iako sam to nazvao PHP datoteka ne postoji stvarna programski kod.
Tu je komentar koji sam napisao ovdje u PHP samo tako korisnik ne završiti gledajući ga.
Naravno, kao i prije, sve što je između PHP oznake
dobiva tumačiti, čak i ako je to komentar, i interpretirati komentar
znači samo da ga bacaju na kraju dana, a ne zapravo
poslati ga na e, tako da je sve ovdje je samo estetika.
Ako sam otvoriti sličan lectures.php ovo je samo teško kodirana datoteka.
To se događa da se zove nešto. Php,
ali to je stvarno samo. html, i week1.php, week2.php
slično, samo su oznake, tako da je hrpa nedostataka ovog dizajna.
Jedan od njih, to je ogroman iznos od copy / paste.
Iako je jedina stvar koja se mijenja među tim datotekama je neuređen popis,
Li oznake, ja ipak imaju doc ​​tip, HTML, glava,
Naslov, blizu tijela, u neposrednoj blizini HTML i više
u svakoj pojedinoj datoteci, što znači da ako sam ikada želim da restrukturira
ova web stranica ili ga restylize moram otići i promijeniti
sve te datoteke ručno ili s nekim masivni pronaći i zamijeniti.
>> Idemo korak prema pametnije, više razmišljanja dizajna u izvedbi jedne ovdje
pri čemu kao i po me pročitao da smo uključeni, tako da možete igrati zajedno sa
to više ležerno kod kuće najave da imamo ovdje
sažetak datoteke u verziji 1 ove stranice,
i čini se da sam ga uzeti na sebe da faktor od
neki zajednički broj, header.php i footer.php.
Pa, neka je pogledati što je unutra je prvi od njih.
Header.php izgleda poznato,
ali primijetiti gdje to dobiti odsječen?
Odmah nakon liniji 19, tako da je sve što je bilo uobičajeno
iz datoteke index.php, lectures.php,
week1 i week2.php iz prethodnog primjera.
Ono što sam učinio je kopirati i rezati sve što je zajedničko svim tim datotekama,
staviti ga u zasebnu datoteku zaglavlja, a slično je u footer.php
sam primijeniti isti princip pri čemu su samo zanimljive linije
u footer.php su njih dvojica, u neposrednoj blizini i tijelo blizu HTML.
>> No, što to znači sada je da u novoj verziji
od index.php obavijesti kako je mnogo jednostavnije to može dobiti.
Istina, malo više zagonetan gleda, malo manje intuitivno
slijediti vrha do dna, ali Bože moj, sve to redundancije je sada otišao.
Tražimo koristeći PHP funkciju doslovno zove zahtijevaju do vrha,
koji jako podsjeća, podsjetimo, od Cs # include mehanizam.
Tražimo header.php na vrhu.
Tražimo footer.php na dnu, a jedina stvar koja je drugačija
ili posebno o ovoj datoteci je sadržaj koji je trebao biti jedinstven za njega.
Ako sam tada otići u, recimo, lectures.php, isti princip vrijedi.
Opet, neki komentari do vrha, ali onda sam zahtijevaju zaglavlje, podnožje zahtijevaju,
a između je samo sadržaj koji zapravo nije promijenilo.
A ako smo gledali u tjednu 1. i 2. tjedan ćemo vidjeti
da isti princip je primijenjen tamo.
Pa, nismo sasvim učinio tamo.
>> Idemo pogledati verziji 2, koji ima sličnu strukturu,
ali primijetiti sada sam upoznao nešto drugo.
U liniji 10 sam upoznao helpers.php,
koja očito sadrži pomoćne funkcije.
Pomagač funkcije je općenito relativno kratko funkcija
da pišete da vam pomoći u raznim mjestima,
pa da vidimo što je unutar helpers.php.
U ovom slučaju, to izgleda kao da ima dvije funkcije.
Podsjetimo od neki dan s našim kocke primjer
možete definirati svoje vlastite funkcije u PHP-u, i ono što sam učinio je sada imam
definirane funkcije zove donijeti podnožje i donijeti zaglavlje,
od kojih je prvi traje parametar zove podataka,
čija je zadana vrijednost je prazan niz, kako je predložio tamo,
i zapravo možemo napisati ovo još jezgrovito u najnovijoj verziji PHP
rekavši otvoreno četvornih nosač, zatvorena uglata zagrada.
To znači prazan niz veličine 0, ali svejedno polje.
>> To ekstrakt funkcija je malo poseban u tome
što to je to uzima kao argument je asocijativni niz
koji ima 0 ili više ključnih parova, a ako imate ključ foo
a vrijednost bar ekstrakta funkcije
stvara situaciju u kojoj sada, kao u liniji 11,
imate lokalnu varijablu pod nazivom $ foo čija je vrijednost bar.
A ako ste imali više ključeva i vrijednosti u podatkovnom polju,
Slično bi oni biti izvađen u lokalnoj djelokruga
ili naziv prostora, tako da footer.php i
Ista ideja ovdje dolje, tako da header.php
imaju pristup tim varijablama.
U stvari, neka mi otvoriti opet header.php
i skrenuti pozornost na što sada to izgleda u ovoj verziji.
>> Umjesto teško kodiranje CS50 kao naslov za svaku pojedinu stranicu
primijetiti dinamizam koji je sada moguće.
U skladu pet sam odjekuje naslov varijablu,
ali prvo sam prolazeći taj naslov varijablu u funkciji zove htmlspecialchars.
Glupo ime za funkciju, dok je, ali to stvarno čini ono što kaže.
To osigurava da su svi posebni znakovi
u nizu koji je bio donesen u ispravno pobjegao HTML.
To je zapravo način da se izbjegnu nešto zove cross site scripting napada
kojom netko može zlonamjerno ili slučajno
ubrizgati vlastitu HTML u vaše web stranice
lijepljenjem u nekom obliku, na primjer,
nešto što nije sasvim očekuje, posebno kod JavaScripta,
kao što ćemo govoriti o u tjedan ili dva na vrijeme.
>> Ovo je sada header.php, to je pogled
u smislu da vam omogućuje da vidite estetski sadržaj nekog skupa podataka.
No, točnije, to je predložak.
To je neka vrsta nacrta sada ono što želimo u zaglavlju svake stranice izgledati,
ali ima nekih dinamika u koje želimo naslov dinamički umetnute
na temelju naslova varijablu
koji je izvađen kad smo pozvani, opet,
Funkcija uzvratiti udarac glavom.
Sada, ako smo gledali na uzvratiti podnožje, tu je zapravo nije puno korištenje tog prava sada
jer u footer.php nema dinamizam god.
Tu bi moglo biti, ali u ovom trenutku to je teško kodirano popis dvije oznake,
ali ista ideja se odnosi, tako da zapravo sugerira zašto
nije mi gubiti vrijeme ima Render zaglavlje i podnožje Render funkciju?
Pusti me umjesto sada u verziji 3,
iu verziji 3 u pomagača odlučio sam da ga pojednostaviti još više.
>> Dopustite mi da imaju jedan Render funkciju.
Dopustite mi da su ga uzeti još jedan argument, ovaj put pod nazivom predložak,
što je značilo da se naziv predloška,
i onda ću spojite drskosti. php za te varijable vrijednosti,
i onda ako postoji foo.php, bar.php ili header.php i footer.php,
onda ću ići naprijed i izvući varijabilnih podataka
i onda zahtijevati da put.
Drugim riječima, koristiti to sada, ako sam otvoriti index.php
primijetiti da ja ne nazvati Render zaglavlje više.
Ja samo zovi donijeti, ali ja proći u citiranom vrijednosti zaglavlja
jasno dati do znanja što predložak sam zapravo želite učitati.
>> Onda ovdje primijetiti što radim.
Ja sam prolazi u dinamički ključ od naslova,
Vrijednost CS50, i to previše, kao što smo vidjeli prije,
mogao biti više jezgrovit u najnovijoj verziji PHP
gdje mogu zamijeniti polje funkciju sa uglatim zagradama,
što ja predlažem je čak i više čitati i sigurno
malo lakše pisati.
I naravno, s uzvratiti podnožja poziva na dnu,
mi ne smetaju prolazu u drugi argument uopće ne asocijativni niz,
jer nema ništa dinamičan unutar tog podnožje.
To je samo neki bliski oznake za HTML.
Dobro, mi smo poduzimanje koraka prema stvarno čišćenje stvari ovdje,
ali dopustite mi da se otvaraju dvije finalne primjere.
Ovo je jedna, broj 4, obavijest da sam napravio svjesnu odluku sada
unaprijediti na prethodni primjer, konačno koristeći neku hijerarhiju s mojim datotekama.
>> Imajte na umu da u ovom sažetku, u to me čitaju, ja sam uveo
uključuje imenik i predložaka imenik
čiji sadržaj će biti stvari koje želim uključiti
i predloške koje želim učiniti, respektivno.
Ovo je stvarno mi se analni i pokušava držati stvari uredan,
držati povezanih datoteka zajedno, ali krajnji rezultat
je da sada imamo nešto tidier postava, ali moramo se sjetiti sada
u, na primjer, index.php
kada tražimo datoteke helpers.php
moramo ga sada zahtijevaju preko uključuje / helpers.php
umjesto samo govoreći helpers.php jer sada je to zapravo u sub imeniku.
Sada, kao stranu, vidjet ćete u ovim primjerima i nekih drugih
funkcije poput zahtijevaju, zahtijevaju jednom.
Tu je zapravo funkcija sama zove uključiti, a svi oni imaju malo drugačije ponašanje.
Ovdje sam reći zahtijevaju nekada bi super jasno da želim samo one
pomagači uključeni u mom projektu jednom.
Ali, ako sam oprezan i ako ja zapravo razmišljam kroz moje logike ispravno
to bi trebalo biti dostatno previše samo reći zahtijevaju do vrha
tako dugo kao što sam ja slučajno ne zahtijevaju da istu datoteku negdje drugdje.
U stvari, to je nešto učinkovitiji način radiš stvari onda pomoću
zahtijevaju jednom, pa ću ga riš dolje samo zahtijevaju.
>> Ajmo uzeti jedan korak dalje.
Ovaj posljednji primjer sada, verzija 5, ima još čišći mapa.
Obavijest što sam učinio ovdje po mene pročitati u ovoj završnoj verziji
Sada je imam HTML imenik, koji sam imala sve ovo vrijeme,
ali unutar postoji sada je samo index.php, lectures.php,
week1.php i week2.php.
Uključuje katalog sada živi pored HTML direktorij,
tako da je na istoj razini kao polubrat, da se tako izrazim.
Dakle, ne predlošci mape.
Ključ takeaway ovdje sam upoznao malo više strukture,
ali ključna značajka je sada da samo datoteke
koji trebaju biti dostupni web, javno adresabilni
po URL na javnom internetu su u mom HTML direktorij.
>> U međuvremenu, ostale datoteke, helpers.php, footer.php,
header.php, koji su nedvojbeno možda i više osjetljiva,
možda pomagači zapravo ima neke korisnička imena i lozinke ili neke intelektualne
vlasništvo rudnika, djeluje mi stvarno ne želim da svijet vidi, čak i ako slučajno.
To je dobra praksa da držati izvan javne HTML imeniku
sve datoteke koje sebe ne moraju biti javni.
Sve što trebate učiniti u ovom slučaju kada se gleda na, primjerice,
HTML imenik u index.php datoteka,
primijetiti samo moramo biti malo oprezniji kada zahtijevaju
ili zahtijevati jednom ovu datoteku.
Moram prvo napraviti .. ići na nadređeni imenik,
onda ne / uključuje / helpers.php
zaroniti natrag dolje kako biste dobili datoteku da sam stalo.
>> Sva pitanja onda na MVC
ili ovaj relativno jednostavan inkarnacija tome?
I neka mi jasno da smo usredotočeni dosta na
V ovdje, stavovi i faktoring iz tih predložaka.
Nismo doista razlikovati m od C samo još.
U stvari, tu stvarno nema M ovdje, pa čak i naš C,
kontroler, nije stvarno radi sve što je mnogo, ali ćete dobiti mnogo više
upoznat s oba od tih dvaju pisama iz MVC,
odnosno, da ćete dobiti puno više upoznati s C
u MVC za problema set 7, tako da je više od toga na horizontu.
Pitanja?
Tu je zapravo nitko ovdje.
>> Ok, ajmo sada prijeći na drugi i završni temu za danas.
To je uvod u baze podataka.
Do ove točke smo imali nekoliko načina za pohranu podataka.
Koristili smo varijable.
Povratak u našem C datoteci, I / O raspravi smo počeli koristiti tekstualne datoteke
i pomoću datoteke kao fprintf, a onda smo čak počeli
govori o CSV datoteke malo, zarezom odvojene vrijednosti,
pa sve to nam je omogućilo da imaju podaci pohranjeni
bilo ne-stalno ili uporno.
No, čak i CSVs zapravo nisu pogodne za pretraživanje
i umetanja i brisanja.
To je zapravo samo glupa tekstualna datoteka odvojene zarezima
red po red, pa ako želite
traži da datoteka najbolje što možete učiniti je stvarno linearno pretraživanje.
Morate početi na vrhu datoteke, pročitajte cijelu stvar u,
i tražiti neke vrijednosti interesa.
Ako želite umetnuti u njega morate učiniti istu stvar,
Ponavljanje preko njega i umetanjem u određenom mjestu,
i zapravo, morate učiniti sve u potrazi logike sebe.
>> Vi ne možete učiniti pametan uzorak podudaranja na CSV datoteku, osim ako ste sami pisati kod.
Vi ne možete učiniti filtraciju CSV datoteku
osim ako se pisati kod.
Zar ne bi bilo lijepo ako netko stavio u svim naporima
da zapravo čine potrazi jednostavno i lako umetanje
i brisanje i ažuriranje i tako dalje?
To je upravo ono što je baza podataka.
SQL, strukturirani upitni jezik, još jedan jezik
da smo uvođenjem danas ovdje, ali ovo je previše je prilično pristupačna,
i ono što mi stvarno ide na to samo je iščupati iz njega neke od najmarkantnije
obilježja, tako da je za pset 7, a ako to ne učinite nešto weba,
Vaš konačni projekt, imate mogućnost da se izrazim
u smislu podataka upita.
Imate sposobnost da se pohraniti malo ili puno podataka
u mnogo strukturiran način koji će na kraju dana
učiniti vaš život lakšim jer sa SQL možete izraziti sebe
puno preciznije, mnogo više sustavno kako bi se
vratiti neki podskup podataka iz većeg korpusa podataka.
>> Možete misliti baze podataka, u ovom slučaju, SQL baza podataka, stvarno kao Excel
ili Brojevi gdje je tablica,
ili možda više proračunske tablice i proračunske tablice, naravno,
ima retke i stupce, te da je zbog toga
SQL baze podataka relacijska, relacijska u smislu
da pohraniti podatke u smislu ove tablice,
redaka i stupaca.
Oni su veći izvedbom nego nešto poput tablice,
a tablice je značilo da se koristi od strane čovjeka.
Baza podataka je značilo da se koristi programer
pisanja koda protiv njega, pa je inkarnacija baze podataka
će biti ili naredbenog retka.
>> Jedan od najpopularnijih relacijskim bazama vani je, opet, MySQL,
koja je predivno besplatno, vrlo visokih performansi, a to je ono što
Facebook koristi vrlo rano i donekle još i danas
pohraniti mnogo svojih podataka, a mi ćemo vidjeti u trenutku
da koriste relativno jednostavne naredbe
možemo odabrati podatke, umetanje podataka, ažuriranje podataka,
brisanje podataka i slično, ali srećom, tu je više user-friendly sučelje
nego samo tipkanje na crno, a bijelo redak ovdje.
Mi ćemo koristiti za pset 7 i izvan besplatan alat zove phpMyAdmin.
Ime je slučajna.
Alat se dogodi da se provodi u PHP-u,
ali to je temeljno nebitno.
Što je korisno o phpMyAdmin je da je web-based alat.
Mi smo ga unaprijed instaliran u uređaju za vas,
i uz to možete napraviti tablice u bazi podataka,
možete umetnuti podatke, brisati podatke, i općenito vidjeti
vaši podaci u prilično user-friendly okruženju.
Vaši korisnici neće koristiti phpMyAdmin.
>> To je zapravo samo administrativno ili programer je alat
s koje se vidi i guranje oko vaših podataka i shvatiti kako ga strukturirati,
puno poput tebe se može koristiti Excel ili brojeva,
ali to će biti odličan način vizualizacije što se događa ispod haube
tako da se možete usredotočiti na zanimljiv rješavanje problema, a ne toliko
na kompliciranih naredbi.
Idemo pogledati primjer podataka koji bi mogli biti pohranjeni tablični
u relacijsku bazu podataka.
Evo jedan takav primjer.
Sada, na žalost, phpMyAdmin pogriješilo na strani bacanja način previše riječi
i grafike na vas, ali ako brusiti u samo na
ID stupac, stupac korisničko ime i mljeveno meso stupac,
ovo je učinkovito tablice, ali to se događa da se isječak
od tablice unutrašnjosti uređaja
koristite datoteku koja smo vam pružiti u problemu set sedam.
>> Konkretno, mi vam dati sliku koja predstavlja
korisnikov stol, tako da tablica sadrži korisnicima s tri stupa,
od kojih je jedan jedinstveni ID počevši s 1 te se nakon toga porastao.
Drugi stup je korisničko ime, a one od vas koji je Hacker,
Haker izdanje za pset dva, možda prepoznati neke od ovih korisničkih imena najmanje.
Na desnoj strani su lozinke, ali oni nisu doslovni lozinke.
Oni Skosan tome, pa ispada
da spremanje lozinke u bazi podataka je stvarno loša ideja.
Vi ste svi vjerojatno pročitali u nekom trenutku neki website
ili neke tvrtke baza biti ugrožena, a zatim morate
promijeniti svoju lozinku, morate dobiti povrat na stvari
jer neki negativac zapravo provalio u obzir kao rezultat.
>> Spremanje lozinke u jasnom tekstu, nesigurna u bazi podataka
je potpuno glup, a ipak je to uvelike zabavno
tada čitati o nekim vrlo dobro poznate tvrtke
ponekad u medijima čije baze su ugrožena,
a taj dio nije smiješno, ali činjenica da su baze podataka sadrže nekodiran
lozinke je smiješno jer je doslovno s jedne linije koda
možete zaštititi od tog prijetnje, i to je ono što smo učinili ovdje.
Čak i za naše lažne malo CS50 financija verziji
mi smo kriptiranje lozinke samo za dobru mjeru, kao i činjenica da
sve od tih lozinki početi s $ 1 $ je samo konvencija.
To samo znači da su kriptirani ili stvarno raspršen,
koji je kao jednosmjernu šifriranja funkciji
pri čemu se ne može poništiti njegov učinak s nečim što se zove MD5.
>> Činjenica da je nakon 50 to znači da sol vrijednost
od 50 korištena je za izračunavanje sažetka svih tih lozinki, osim jedne.
Rudnik je, naravno, kao što možete vidjeti postoji, HA,
bio koristeći različite soli, tako da one od vas koji lagano dobio spotaknuo se
možda u Hacker 2, možda je to bio rezultat naše što se koristi
drukčiji hash od drugih jer je moja lozinka je zapravo ista
kao neke druge korisnika do tamo.
U stvari, ako ste čekali sve ove tjedana saznati
ono što ti lozinke ovdje su bili lozinke koje su osporenim
ispucati u Hacker izdanju problema setu 2, tako da nitko previše lukav.
U stvari, malan je bio isti kao i jharvard,
ali ako se vratimo su izgledali drugačije.
>> Fokusirajte se na jharvard u grimizne jer su slani drugačije.
Algoritam je uznemiren na način da su
hash vrijednost, kodiran vrijednost izgleda malo drugačije
jer ulazi bili malo drugačiji, ali zaporka ispod haube
je još uvijek u konačnici grimizno.
Sada, tko mari za to?
Pa, mi smo vam pružiti uzorka korisnika, uzorak korisničkih imena
i hashes njihovih lozinki, tako da zapravo imaju neke
kupci za CS50 financija kada ste prvi put sići na zemlju sa svojim kodom.
Morat ćete provesti više tablica unutar MySQL, unutar baze podataka.
Morat ćete stvoriti više proračunskih tablica, učinkovito, ali smo odlučili da vam ovo jedan
da biste dobili ste ga počeli, i vidjet ćete da je specifikacija Problem skup
provest će vas kroz proces uvoza ovu tablicu
i objašnjavajući što neke od karakteristika su,
i vidjet ćete da smo Vam pružiti koda
za obradu hashing ili šifriranje tih lozinki,
, tako da ne morate brinuti previše o tome što MD5 ili slično je zapravo sve o tome.
>> Dakle, SQL, strukturirani upitni jezik.
To je, jednostavno, jezik mi smo uskoro početi koristiti u pset 7
a možda i šire zatražiti podatke iz neke baze podataka.
Podaci se, opet, pohranjeni tablični u tim relacijskih tablica, stupaca i redaka,
ali koristeći neke relativno jednostavne sintakse poput brisanja,
umetanje, ažuriranje i odaberite možemo učiniti upravo to.
Možemo izbrisati iz baze podataka, umetanje,
ažurirati podatke, kao i odabir, koji se, dohvatiti podatke iz baze podataka.
Kako ćemo ići o događaj ovaj?
Pusti me naprijed u aparat.
Dopustite mi podići http://localhost,
koji, opet, je lokalna sam aparat.
To je njegova zadana nadimak.
I pusti me da / phpMyAdmin.
To se događa da se poseban URL koji uređaj unaprijed konfiguriran za razumjeti
da odmah me pita za korisničko ime i lozinku.
>> Kao i obično, ja ću upisati jharvard i grimizne,
ali shvatite da je administratorski račun na računalu.
To je samo slučajnost da je također jharvard registriran za CS50 financija.
Jharvard, grimizno, enter mi daje korisničko sučelje koje smo vidjeli
pogled na trenutak prije, a to je malo neodoljiv na prvom mjestu,
ali budite uvjereni, nikada si idući u morati kliknuti većina veza u ovom alatu.
Vi ćete završiti koristeći mali podskup da su super korisne,
prvi koji je baza ovdje.
Ako odem do bazama podataka, primijetiti da sam zatraži da stvoriti bazu podataka.
To je kao stvaranje nove Excel datoteku, učinkovito.
Ja ću ići naprijed i pozvati na predavanju, a ja sam samo ću ignorirati polju, uspoređivanje.
To ima veze s prikazom podataka u njoj,
i ja ću kliknuti stvoriti, a sada primjetiti kako sam pustio stvoriti
na lijevoj strani gdje se kaže nema baze podataka
Uskoro sam trebao vidjeti bazu podataka predavanje.
>> Ako ja sada kliknite na lijevoj strani, predavanje baze podataka,
Primijetit moji Kartice promijeniti malo.
Imam strukturu, SQL, izvoz, uvoz i neke druge stvari.
Struktura je prilično prazan.
Nema tablice nalaze u bazi podataka, kao što kaže ovdje,
pa neka je stvoriti tablicu, i idemo naprijed i stvoriti tablicu
sviđa studenata, a koliko stupaca ne želimo?
Ajmo zadržati ovaj jednostavan, a neka je rekord za svakog učenika
ID broj, ime i e-mail adresu.
>> Držat ćemo ga jednostavno kao da, tako tri kolone, ići.
Oblik koji vidite ovdje je sada malo neuredan i neodoljiv,
ali mi jednostavno moramo proći kroz njega red, tako da stvarno brzo dajmo
Prvi stupac u ovoj bazi podataka naziv ID za jedinstveni identifikator.
To će biti cijeli broj. Ja zapravo ne može ignorirati duljinu i vrijednosti.
Int će biti 32 bita bez obzira što upišete tamo, pa ajmo ostavite prazno.
Zadana vrijednost, mogao sam to učiniti null, kao što je definirano.
Ja ću ostaviti da sama. Nemojmo brinuti o zadanim vrijednostima.
Ajmo dođite ovamo na desno, atributa.
To je zanimljivo.
Idemo naprijed i pomalo proizvoljno kažu da iskaznice moraju biti nepotpisana.
Nemojmo gubiti nikakve negativne brojeve.
>> Idemo 0-4 milijarde, dati ili uzeti,
i onda nemojmo dirati bilo koji od tih polja samo još tamo,
ali onda neka mi upisati ime ovdje dolje,
i onda je drugi e-mail, tako da ulov je e-mail
i ime, očito se nisu cijeli brojevi, pa neka ih promijenili u neku drugu polju.
Ispada VARCHAR, promjenjiva dužina char,
je kao niz u SQL baze podataka
ali varijabla duljina, a vi zapravo imaju to reći unaprijed
Maksimalna duljina niza, pa ću nešto proizvoljno
po kongresnog tipa 255 znakova.
Ja potpuno mogao reći 32. Mogao bih reći 1000.
Vi vrsta morati odlučiti za sebe na temelju vaših demografije što je
The Longest učenika ime i otići s tog broja ili malo veći,
ali ono što je lijepo o varchar je to ne ide na otpad
255 bajtova na svaki učenik imenom.
Ako je David to neće koristiti samo cijelih 255 bajtova,
ali to je gornja granica, tako da ću ići s 255 samo po konvenciji,
ali možemo raspravljati da će biti neki niža vrijednost, a za e-mail adresu
samo da bude u skladu 255, ali opet, mogli bismo imati istu raspravu.
No, ja ću to učiniti jednu drugu stvar ovdje na desnoj strani.
>> Što je moćan o bazi podataka je da to može učiniti puno teškog dizanja
ili složen posao za vas.
Konkretno, ja stvarno ne briga što moj učenik je ID brojevi.
To je samo značilo da se jedinstveni identifikator u bazi podataka
pa imam 32-bitnu kratak prikaz tog studenta
tako da imam neki način jedinstveno ih identificira
da ne bi dvije Davids, na primjer, u klasi.
U stvari, ja ću provjeriti ovu AI okvir, auto prirast,
tako da je baza podataka, MySQL, figure out
Ono što svaki novoobjavljene studenta ID će biti.
Ja čak ne moraju brinuti o tome da je u mom kodu,
i ja također ću odabrati nešto ispod indeksa izbornika.
Indeks padajući ovdje je primarna, jedinstvena,
Indeks i cijeli tekst.
Vi možda možete pogoditi što par tih stvari su,
ali ispada u relacijskim bazama podataka
ti programer ili administrator baza podataka doći do preventivno
daju savjete na bazu podataka kako bi se ono stavke
u tablici su malo posebna.
>> Na primjer, u ovom slučaju ja ću reći da je ID
će biti primarni indeks, inače poznat kao primarni ključ.
Što to znači po definiciji je da ID odsada
će jedinstveno identificirati učenike u ovoj tablici.
Ne student će imati isti ID jer sam nameće ovo ograničenje ili ovaj indeks.
Štoviše, ono će to učiniti za mene je to će reći
MySQL da gradijent je posebna.
Brinem osobito o ID, pa ići naprijed i učiniti vaše fancy struktura podataka u magiju,
izgraditi neku vrstu stabla.
Obično je to nešto što se zove B-stablo, koje nismo pogledati tjedana,
ali to je druga takva struktura podataka slični u duhu s binarnim stablima
i pokušava da smo gledali, ali to će reći
bazi podataka ovo polje je tako važno da sam vjerojatno
želim biti u mogućnosti to traženje na njega, ići naprijed i graditi neki fancy
struktura podataka u memoriji kako bi ubrzali pretraživanja, tako da je idealno
oni su stalno vrijeme ili barem što bliže onome što je više moguće
tako da ne spadaju u linearno pretraživanje, koji se ne će biti
većina visokih performansi pristup.
Nasuprot tome, e-mail adresa je mogao biti primarni ključ.
>> U teoriji, svačija e-mail adresa je jedinstvena, ako ste dijeljenje nekih računa,
ali to općenito nije dobro koristiti nešto poput niza
kao primarni ključ, jer ako je njegova svrha u životu je jedinstveno identificirati
retke u tablici nema razloga za korištenje 255 bajtova maksimalno
jedinstveno identificirati nekoga ako možete dobiti daleko sa samo 4 bajta
ili 32-bitni int.
Općenito, primarni ključ treba biti kratak i jezgrovit
i idealno nešto kao cijeli broj ili veliki Int, koji se dogoditi da se 64 bita.
No, e-mail adresa mora biti jedinstvena, a jedan od značajki baze podataka previše
je provesti jedinstvenost za mene.
Odabirom unique ovdje uz poruku e-pošte, iako se e-mail
je pomicana isključili zaslon, govorim na bazi
ne vjeruj mi.
Ne dopustite da umetnuti u bazu podataka
isti e-mail adresu dva puta, čak i ako sam idiot i nisam
vrlo dobar s mojim oklijevanja i drugdje IFS i stvarne PHP koda
i ja slučajno pustiti korisnik registrirati postojeće e-mail adresu
Baza podataka je još jedna razina obrane za ispravnost
kako bi se osiguralo da je duplikat e-mail adresa ne završiti u tablici.
>> Sada, s druge strane, za ime koje vjerojatno ne želite da taj jedinstveni
jer onda nikada ne bi mogao biti 2 Davids ili dva Mike Smiths, na primjer,
u svojoj bazi podataka, tako da se samo ćemo ostaviti na miru.
Ja ću ići naprijed i kliknite spremiti u donjem desnom,
i sve izgleda dobro, ali primijetiti ovdje
to je dio koji za sada nećemo trošiti previše vremena na
jer je sintaksa malo složeniji, a mi nemamo za stvaranje tablice
sve to često, ali SQL sama je jezik,
sintaksa za koje je ovdje da sam istaknuo.
Što phpMyAdmin doista je to stvara web-based GUI za vas
s kojima možete uštedjeti vrijeme i ne moraju ručno upisati se
prilično dugo SQL upit tako.
>> Drugim riječima, ako ste htjeli ručno stvoriti ovu tablicu,
pri tom crne i bijele redak ili čak u phpMyAdmin
pomoću ovu drugu karticu, to SQL kartica gdje možete upisati bilo SQL upita
želite, iskreno, ovo bi trebalo mi je minutu
zapravo zapamtiti cijelu sintaksu, pa čak i onda ću vjerojatno imati
napravio neke greške u pisanju, tako da je ovo alat je koristan za stvari kao što je to, i to je također poučan.
Možete početi zaključiti što je sintaksa
samo lijepe boje kodiranje da phpMyAdmin je dodao
za naše vizualne udobnosti.
Ali sada hajdemo to učiniti umjesto.
Pusti me na kartici Umetanje u vrhu, i pusti me naprijed i umetnuti primjer
ID recimo-zapravo ne zanima.
To će auto prirasta. Ja ću pustiti baze nositi s ovim.
Ali ja ću biti David, i moj e-mail bi trebao biti malan@harvard.edu.
>> Idemo naprijed ovdje i staviti u Mike Smith kao još jedan.
Ja ću dati sebi prezime kao i,
a mi ćemo ga i biti smith@example.com,
i onda gdje trebam ići dalje?
Pa, to izgleda kao go je gumb miša, i voila.
Obavijest na vrhu dva reda umetnute.
To je stvarna SQL upit.
To je phpMyAdmin alat pogubljen za mene,
ali krajnji rezultat, obavijest, ako ja sada ići na traženih kartici
je vidjeti dva reda u ovoj tablici, jako podsjeća estetski
stola smo vidjeli ranije za naše korisnike iz pset 7,
od kojih je jedan David Malan, od kojih je jedan sada je Mike Smith.
Ali samo da bude jasno, ne trebam koristiti phpMyAdmin,
i doista, da ćeš uskoro biti pisanje koda za pset 7
koji automatizira proces dodavanja redaka, brisanje redaka, ažuriranje redaka i slično,
pa neka mi umjesto toga ići na SQL kartici ovdje
i tip u SELECT * FROM studenata gdje
e = "malan@harvard.edu."
>> Drugim riječima pretpostavimo da sada imate
neki HTML oblik, a korisnik upiše u svojoj e-mail adresu, među ostalim poljima,
, a cilj je sada u PHP na leđa kraj koda
zapravo gledati tog korisnika druge pojedinosti.
Koje je vaše puno ime? Koji je vaš ID broj?
Ti bi mogao napisati SQL upit ovako, odaberite * od studenata
gdje je e = "malan@harvard.edu."
A ako sam zatim ići, primijetiti da sam trebao, i doista mi je činiti, vratiti samo jedan redak.
Mike je izostavljen iz ovog seta rezultata, kao zbirka redaka
se općenito zove, jer on ne imati istu adresu kao i mene.
>> Sada, opet, ovdje pset sedam ćete koristiti phpMyAdmin kao administrativnog alata
i pedagoški alat za naučiti svoj put
oko svijeta SQL, ali na kraju dana
ti si idući u biti pisanje ove upite unutar stvarnog PHP kodu,
i tako ostati sinkroniziran na Zamyla je prohod posebice
gdje ćete dobiti obilazak distribucije koda za ovaj problem setu
gdje smo vam dati ne samo estetika za stranicu za prijavu
i lijepo seksi logotip koji kaže CS50 financije, ali mi smo također vam dati
hrpa funkcija koje će učiniti vaš život malo lakše.
Također smo pisani dio pset za vas,
prijava dio njega posebno, da vam dati osjećaj reprezentativnog dizajna
koji zapravo koristi kontroler, na primjer, index.php,
login.php i slično, a onda ćete vidjeti pset također ima predloške imenik
da ima sve svoje stavove, sve estetike.
I tako ukupni tijek rada u pset 7 će biti da
Vaši korisnici posjete kontroler putem URL-a u pregledniku.
To kontroler sadrži PHP kod koji ste zapisali, i unutar svoje PHP koda
Možda će neke linije SQL smješteno između navodnicima
i prošao u funkciji smo pisali pod nazivom upit
koji će vam pomoći da razgovaraju s bazom podataka bez korištenja nešto poput
upravni alat poput phpMyAdmin.
>> Vi ćete biti u mogućnosti pisati SQL izraza u PHP kodu
i vratiti PHP niz set rezultata,
od redaka koji zapravo odgovaraju taj upit.
A slično će vam biti u mogućnosti to učiniti umetke ili briše
ili ažuriranja ili slično, sintaksa za koji je prilično sličan,
i vidjet ćete iz nekih online referenci, od distribucije koda
i od pset se pakirati točno kako to ide o tome da radiš.
Shvatite konačno smo stvarno samo grebanje površine SQL
i MySQL, ali snaga je stvarno da vas oslobađa
usredotočiti na probleme želite riješiti, korištenje slučajevi želite provesti
bez brige sasvim jednako, barem u početku,
o tome gdje i kako za pohranu i pretraživanje baze podataka,
i to je doslovno gdje Facebook sama dobila početak
pomoću MySQL, a zatim koristite više MySQL poslužitelja i onda više MySQL poslužitelja
prije dugo dok oni tada morali stvarno početi razmišljati teško o tome kako
pohranu podataka, kako za pohranu stvari čak i učinkovitije,
pa iako ćemo uzeti zdravo za gotovo činjenicu da indekse i jedinstvene ograničenja
i tako dalje raditi samo tamo je vrlo zanimljiv razgovor
da to sve može na kraju dovesti do tako shvatiti da smo samo grebanje površine
od čega bi u konačnici moglo za vas ili vaše projekte postati vrlo malo velikih podataka.
>> Sa taj je rekao, ajmo završiti ovdje, a mi ćemo vas vidjeti sljedeći tjedan.
[CS50.TV]