[Powered by Google Translate] [Java 8, vazhdoi]
[David J. Malan] [Universiteti i Harvardit]
[Kjo është CS50.] [CS50.TV]
>> Kjo është CS50, kështu që kjo është fundi i javës 8 këtu.
Ne natyrisht kishte një grimë e një uragan më herët këtë javë,
në mënyrë të drejtë tani ajo është me të vërtetë vetëm ju dhe mua në këtë sallë leksion,
por sot ne vazhdojmë bisedën tonë në lidhje me PHP
dhe rreth programimit web në përgjithësi, dhe ne gjithashtu të futur idenë
e bazave të të dhënave, veçanërisht ai i quajtur MySQL, e cila është mjaft popullore këto ditë,
në pjesë të madhe për shkak të scalability e saj, si dhe për shkak të saj duke qenë burimi i lirë dhe të hapur.
>> Por së pari, një vështrim në ku ne u ndërpre për herë të fundit.
Kujtojnë se ne kemi qenë në kërkim në disa shembuj Frosh IMS,
dhe kjo ishte forma shëmtuar që kam ardhur me disa 15 vjet + pare
në mënyrë që të kenë studentët në regjistrin kampus për sport fillestar i brendshëm
të vërtetë pa pasur nevojë për të udhëtim nëpër oborr më të Wigglesworth
për rrëshqitje një copë letër fizike nën derën e disa Proctor së.
Në vend të kësaj kemi lëvizur çdo gjë në internet, por për ta bërë këtë ne kemi nevojë për të bërë përdorimin
e një teknologjive pak, kështu që një, kishim nevojë për HTML, HyperText Markup Language,
e cila përsëri është kjo gjuhë markup me të cilin ju e bëni web pages strukturore.
>> Duke përdorur një grimë e CSS këto ditë, Cascading Style Sheets,
ku ne përdorim stylizations e web faqe duke përdorur një sintaksë paksa të ndryshme,
ndërsa HTML ishte e gjitha në lidhje me strukturën e saj.
Ne gjithashtu duhet për të futur një gjuhë programimi web.
Në këtë rast, ne do të përdorim PHP, PHP dhe do të lejojë na
tek përmbajtja dinamike prodhimit si dhe të bëjë gjëra të programatike si
dërguar postë elektronike, siç ishte rasti në shënimin e lamë javën e kaluar.
>> Kujtojnë se kodi për këtë ishte në 2 pjesë.
Një, kemi pasur froshims3.php,
dhe kjo ishte kryesisht markup me një formë të HTML në brendësi të saj,
një grimcë e CSS deri këtu në atributet stil
kështu që forma e vetë do të përqëndruara në faqe, por përtej kësaj
kemi pasur disa inpute përfaqësuese formë, një fushë teksti, një checkbox,
disa radio butonat, zgjidhni një menu, dhe një buton submit.
Dhe nëpërmjet kësaj forme, ne paraqitur një skedar që është quajtur me sa duket register3.php,
e cila në vetvete dukej një diçka të vogël si kjo.
Tani, shumica e kodit në register3.php, kujtohet, ishte e gjitha në lidhje me email.
Ajo bëri një pak e vlefshmërisë së formën që është dorëzuar për të siguruar
se fushat janë dhënë në fakt që pritej.
Pastaj ne e quajti disa funksione PHP përdorur sintaksë pak më të ri,
edhe pse kjo është huazuar nga C.
>> Ky operator shigjetë na lejon për të bërë përdorimin e diçkaje që quhet object-oriented programimit.
Ne nuk do të shkojë në se në çdo hollësi këtu, por e di tani për tani
kjo është një mënyrë për të pasur funksione që lidhen me objekte,
të cilat janë një lloj i veçantë i strukturës, siç e pamë në C.
Por tani për tani, vetëm të marrë në besim se kjo është e saktë për të përdorur sintaksë
kur duke përdorur një bibliotekë si kjo bibliotekë PHPMailer.
Dhe pastaj deri në fund të këtij file kishim gjeneruar dinamike një email
që u dërgua në llogarinë time jharvard@cs50.net
nga llogaria ime jharvard@cs50.net,
dhe ne informoi përdorues në përputhje me rrethanat se ata kishin qenë të regjistruar për këtë sport.
Kjo është shumë e shumë atë vend IMs Frosh bëri të gjitha ato vite më parë
kur kam zbatuar atë, dhënë, në një gjuhë të ndryshme,
por kjo ju tregon ndoshta fuqinë që ju keni
tani që ju mund të shprehin veten, jo vetëm programatikisht
në një nivel të ulët në një gjuhë si C, por në një nivel shumë më të lartë
me këto aplikime shumë reale botërore si email në fakt zgjidhur
disa probleme të botës reale.
>> Tani, sigurisht, edhe pse unë përdorur këtë script për të gjeneruar disa
email dinamike nga jharvard@cs50.net, e cila është me të vërtetë një llogari
që unë të kenë qasje në, do të jetë mjaft i kujdesshëm për të dërguar
Dërgoja vetëm nga llogaritë që janë të vërtetë tuaj,
mos gjëra të merrni ju në një grimë e ujit të nxehtë në jetë.
Me tha se, tani le të tranzicionit për të zgjidhur një problem të ndryshme krejt,
se mbajtja e shteteve.
Tani, çfarë e bën këtë të vërtetë do të thotë?
HTTP, ky protokoll transferimi HyperText,
është në fakt një protokoll pa shtetësi, dhe çka kjo do të thotë është se
kur ju tërheq lart diçka si Google.com dhe pastaj goditi të hyjë
zakonisht shfletuesi juaj ka disa lloj ikonë tjerrje që pastaj
rezulton në disa web faqe duke u shkarkuar,
dhe pastaj se ikona pak ndalesa tjerrje, dhe se me të vërtetë sugjeron
HTTP që ka përfunduar një lloj lidhje me server dhe kjo është ajo.
HTTP është pa shtetësi në kuptimin që ajo nuk mban
një lidhje të vazhdueshme në server në të njëjtën mënyrë e bën Skype
ose Gchat bën, sepse me HTTP
supozimi është se një herë ju keni sjellë një web faqe që është ajo.
>> Tani, në realitet këto ditë në faqet si Facebook dhe Google Maps
dhe Twitter dhe si ka dinamizëm shumë më tepër ku
edhe pasi që ndalon ikona tjerrje ju në fakt mund të merrni përditësimet më shumë
nga serveri, tweets më shumë, më shumë updates statusit në Facebook dhe si.
Por edhe që është duke përdorur një teknikë që ne do të flasim në një javë ose dy
njohur si Ajax duke përdorur një gjuhë të quajtur JavaScript,
por në fund të ditës, HTTP është ende pa shtetësi.
Dhe akoma në qoftë se ju doni të mbani mend disi gjërat në lidhje me një përdorues
edhe pasi ata kanë shkyçur nga serveri juaj
PHP bën të përballojë ju një mjet për të bërë këtë
sepse, siç e pamë herën e fundit, PHP ka një numër të superglobals,
dhe një superglobal është, përsëri, një variabël të veçantë globale
që është dorëzuar për ju nga serveri web dhe nga PHP vetë.
>> Ju nuk keni të bëni asgjë për të vënë vlerat në të,
dhe në mesin e superglobals ne kemi parë deri më tani janë marrë dhe pas,
i cili është ku fusha formë janë vënë automatikisht për ju,
si dhe një çift të tjerëve që ne nuk kemi parë ende.
Brenda $ _server janë disa variabla të veçanta që lidhen me serverin vetë.
Çfarë është adresa IP, çfarë protokolli, HTTP HTTPS, ose keni përdorur,
çfarë metodë Kërkesa keni përdorur dhe si, kështu që ka disa interesante,
Detajet lëng rreth serverit, dhe në fakt, përdoruesit në atje si.
Ka $ _cookie, i cili është ku këto gjëra quhet cookies janë ruajtur.
Ne nuk do të kalojnë kohë në cookie veten sot,
por e di tani për tani që një cookie është vetëm një pjesë e vogël e informacionit
se një web server mund të bimëve në një shfletues web
dhe nga ana e saj RAM ose hard drive e kompjuterit të saj
për të ruajtur informacion në lidhje me një përdorues, për shembull, emrin e tyre të përdoruesit
në mënyrë që ata nuk duhet të shkruani atë në çdo kohë që ata Identifikohu ose disa
numër unik identifikues për atë apo përdoruesit
kështu që ju nuk duhet të ngacmojnë ata me të njëjtat lloje të pyetjeve rreth
preferencat në të ardhmen, por shumica e interesit
tani është $ _session.
>> Ky superglobal, i cili, ashtu si të tjerët, është dorëzuar për ju automatikisht nga PHP
kur ju jeni shkrim PHP-bazë faqet e internetit
mund të ruajë çdo gjë që ju dëshironi, vargjet, integers,
pikë lundrues, vlerat, vargjeve, objekte,
me të vërtetë çdo gjë që ju doni, dhe kjo ju lejon të ruani atë në një mënyrë të tillë
se edhe nëse përdoruesi viziton ju tani dhe pastaj
kthehet një minutë nga tani ose 5 minuta nga tani, sepse
ata e marrin kohën e tyre para se ta klikoni disa lidhje tjetër
PHP do të sigurojë që çdo gjë që ju vënë në këtë sesion superglobal
minuta apo 5 minuta më parë do të jenë ende atje kur kthimit përdorues.
Dhe nën kapuç kjo superglobal zbatohet me anë të
këto gjëra quhet cookies, por tani për tani, kjo është vetëm një abstraksion
ku kjo është lloj i ekuivalent programatik të një karrocë pazar.
Çfarëdo që ju, programues, që vënë në
array superglobal associative do të jetë atje disa minuta më vonë numri i
derisa ju të fshini apo derisa përdoruesi shpërblej shfletuesin tij ose të saj krejt.
>> Le të marrin një vështrim në një shembull se si kjo gjë është përdorur në të vërtetë.
Në mesin e counter.php copa sotme të kodit
ne kemi rreshtin e mëposhtëm.
Në fillim të këtij file ne kemi një bandë e komenteve blu, të cilat janë jointeresant për tani.
Por në linjë 13 ne kemi një linjë të re,
session_start, dhe që në fakt e bën pikërisht atë që ajo thotë.
Ajo fillon seanca.
Kjo ju mundëson që të përdorin atë madh superglobal _session $, dhe ajo është aq e thjeshtë sa që.
Tani, në qoftë se ne të vazhdojë të shikojmë në linjë 16, le të përpiqet të kuptoj se çfarë kjo web faqe do të bëjë.
If (isset ($ _SESSION ["kundër"]) pastaj të shkojnë përpara
dhe dyqan në variablin counter, kundër të vogla,
$ _SESSION ["Kundër"].
Kjo duket të jetë deklaruar një ndryshore të quajtur lokal counter
brenda e cila është e vënien e një kopje të çfarëdo është brenda i superglobal
Seanca quajtur në lokalitetin "kundër".
Tjetër, me sa duket, kjo pak counter lokale ndryshueshme, është nisur në 0.
>> Por pastaj disa rreshta më vonë në 26 njoftimin se kopja seancës i banak,
kryesore të saj, ka një vlerë të caktuar të re e cila është vlera e tij aktuale plus 1.
Me pak fjalë, kjo fotografi duket të jetë përditësimin
një kundër që është ruajtur në brendësi të seancës superglobal
by bën rritjen atë me 1, por ai së pari ruan një kopje të vlerës së mëparshme
me ruajtjen atë në një ndryshore të quajtur $ lokal kundër,
dhe pastaj këtu poshtë le të shohim se çfarë mbetet.
Ajo rezulton se është shumë e shumë të vetëm HTML.
Në fund të kësaj faqeje shohim në linjë 37 që unë kam vizituar këtë faqe
Numri counter herë, kështu që nuk ka karakteristika çift interesante këtu.
Një, kjo është në mënyrë të qartë një ndryshore, por kjo nuk do të mjaftojë vetëm për të vënë
$ Counter në trupin e HTML tuaj për shkak të kursit
në qoftë se ajo është vetëm atje në mes HTML PHP tuaj do të supozojmë se është vetëm HTML.
Ju fjalë për fjalë dëshironi $ në kundërshtim me të shtypen në ekran.
>> Por në vend duke rënë në mënyrë PHP
me këtë pjesë të sintaksës ne mund të futur një vlerë dinamike këtu
shumë e ngjashme në frymë me atë që ne e bëmë herën e fundit me
futur vlerat në vargjet.
Në fakt, kjo është vetëm një simbol stenografi për të thënë diçka si kjo fjalë për fjalë,
print ($ counter) ose edhe diçka si (% s, counter) printf,
apo edhe, si ju mund të keni parë në internet apo në tekstet,
ka një funksion të quajtur në PHP echo
e cila e bën të njëjtën gjë, dhe të gjitha ato janë mënyra vetëm gjatë lodhshëm
për të thënë <? =.
Në këtë rast një që ju nuk keni nevojë për të vënë
PHP fjala pas pikëpyetje.
Kjo është simbol stenografi për të, përsëri, ajo që ne pamë vetëm një moment më parë
e cila është duke i bërë jehonë disa vlera.
>> Le të shohim se çfarë rezultati përfundimtar i kësaj të vërtetë është.
Më lejoni të shkoj në counter.php dosjen tonë,
dhe ne do të shohim se Davidi sapo bërë një gabim duke luajtur me kodin atje.
Le të shkojë çdo gjë që ai fix dehur,
dhe gabimi duket të jetë atje, shkuar, on line 37.
Sipas krye të kësaj faqeje kam vizituar këtë faqe 0 herë.
E pra, le të shkojnë përpara tani, dhe në krye të shfletuesit klikoni mbi
ringarkoni ikonë, dhe unë klikoni rifreskoni,
dhe tani kam vizitoi 1 kohë faqe, 2, 3, 4, 5, 6, 7, 8.
Dhe me të vërtetë, nëse ne shikojmë në burim të kësaj faqeje kodi aktual burimi po ndryshon,
dhe njoftim mungesën e plotë të çdo PHP, dhe kjo është për shkak se
Kodi PHP është vlerësuar apo interpretuar anën e serverit,
dhe kështu që do të thotë se prodhimi i shkrimit PHP është ajo që është dërguar në fund të shfletuesit,
e cila në këtë rast është një HTML papërpunuara dhe disa tekst të papërpunuara.
Çfarë po ndodh këtu?
>> E pra, me vija të kodit relativisht pak unë jam në gjendje për të ruajtur
vazhdimisht gjatë rrjedhës së disa sekonda, ose në qoftë se ne e pritur kohë të mjaftueshme,
minuta, orë, madje edhe disa vlera në një mënyrë që e bën HTTP
stateful duket sikur ne kemi mbajtur
kjo lidhje në server, dhe kjo është vetëm duke kujtuar atë që kam thënë atë për herë të fundit,
por në realitet ka një bandë e tërë e kompleksitetit ndodh nën kapuç
duke përfshirë biskota që është mundësuar PHP për të dhënë mua këtë iluzion
i këtij karrocat-si funksion.
Tani për tani, një shembull i vogël ku ne jemi vetëm ruajtjen e një numër të plotë,
por që tipar do të kthehet të jetë me vlerë të madhe
kur ne fillojmë të flasim në lidhje me projektet më komplekse,
mes tyre problemi vendosur 7.
Ky është problemi juaj e fundit shumë e vendosur në CS50.
Unë e di, kjo është aq e trishtuar, por ajo që ju do të gjeni është se ne jemi duke shkuar për të përfunduar
kjo pjesë e semestrit me të vërtetë në tranzicion
nga konteksti i C sigurisht në kontekstin e PHP
por duke përdorur disa nga bazat shumë të njëjtat
ne kemi biseduar rreth për disa kohë.
>> Qëllimi me pset 7 është për të zbatuar CS50 Financave,
i cili është versioni juaj i Yahoo Financave ose Google Financave
apo edhe Etrade.com ku ju keni mundësinë për të
shikoni çmimet e aksioneve për simbole të caktuara, por edhe më shumë se kaq
ju keni mundësinë për të "blerë" dhe "shesin" rezervat
që janë të tregtohen në bursat e ndryshme për shkak se si kësaj faqe në shtëpi
këtu sugjeron, e cila është me të vërtetë shkalla në të cilën ne kemi filluar
Vendosur problem për ju, ju keni një formë login që është duke kërkuar për një emër përdoruesi dhe një fjalëkalim.
Ajo ka një buton të paraqesë, por më pas, si ne do të shohim përfundimisht,
nuk ka asgjë të vërtetë ndodh nën kapuç ende, sepse ajo
mbetet për ju për të zbatuar aftësinë për të regjistruar përdoruesit e rinj,
aftësia për të blerë aksione, për të shitur aksione,
që në fakt shikoni çmimet aktuale të aksioneve.
>> Dhe në të vërtetë, kjo do të jetë aq botën reale të jetë e mundur, sepse ne e bëmë
përfshijë një grimë e kodit që do t'ju lejojë me një funksion të vetme
tek query Yahoo Financave, i cili mrekullisht i bën të dhënat në dispozicion falas
për të shikuar deri çmimet e aksioneve në bazë të aksioneve ose simbol simbol Tiker,
dhe ju merrni mbrapa çmimin aktual të aksioneve të ditës.
Të dhënat që ju jeni në të vërtetë duke parë në këtë pset të veçantë do të jetë
për sa botës reale si ajo mund të merrni në mënyrë që ju jeni në të vërtetë interfacing
me aksione reale botërore, çmimet e pasurive botërore,
dhe ne do të shohim se sa para ju mund të bëni ndoshta
gjatë disa ditëve të ardhshme të luajtur me grup tuaj problemit.
>> Por le të parë të vendosur bazat për mënyrën se si për të hartuar diçka që është sigurisht më e komplikuar
se counter.php, që është më e komplikuar se çdo të shembujve IMS Frosh deri tani,
dhe le të përpiqemi për të futur një paradigmat disa këtu që të na lejojë
si për pset 7 dhe ndoshta për projektin tuaj përfundimtar, nëse ju bëni diçka të bazuar web
për të mbajtur kodin tuaj të organizuar mirë, për të mbajtur veten arsyeshëm,
dhe për të marrë një hap drejt bashkëpunon, qoftë në projektin përfundimtar CS50 së
ose përtej nëse ju vazhdoni të programit diçka në të ardhmen.
Nuk është kjo paradigmë e përgjithshme dizajn
në shkenca kompjuterike dhe në zhvillimin e softuerit në përgjithësi
njohur si modeli MVC, kontrollues, pamje
dhe kjo është një akronim i trashë që përshkruan një ide shumë të bukur,
e cila është ndarja e aspekteve të ndryshme të programit,
veçanërisht duke mbajtur logjikën e veçantë apo logjikën e biznesit të një faqe interneti
në mënyrë që çdo gjë që përfshin gjëra të tilla si
thirrje funksionet dhe querying bazave të të dhënave dhe si
ndodh nuk është në mesin tuaj HTML
por në fotografi të veçanta, dhe në të vërtetë, nuk është kjo një skedar
zakonisht që ju kanë bërë thirrje kontrollues
kjo është me të vërtetë truri pas operacionit, dhe ne do të shohim një shembull
kjo vetëm në një moment.
>> Ka një model i cili është programimin kodin
që bën të flasin për bazat e të dhënave tuaja, që flet për Yahoo Financave dhe si,
dhe pastaj nuk ka V në MVC, pikëpamjet,
të gjitha stuff që është e lidhur me estetikë, fotografi që në fakt përmbajnë
HTML tuaj, ndoshta CSS tuaj dhe si.
Ideja këtu, pasi kete foto sugjeron, është se kontrollues
është file, si ne së shpejti do të shihni dhe si ju do të shihni në veçanti pset 7,
se bota flet me anë të shfletuesit të tyre të internetit.
Kjo është skedari që merr vizituar në internet publik,
por kontrollues flet për një model potencialisht,
cila është një ose më shumë fotografi të tjera që përmbajnë kodin e lidhur tek dhëna,
Kodi lidhur me bazat e të dhënave dhe si, dhe pastaj ajo flet për
kontrollues një ose më shumë fotografi të tjera të njohura si pamje,
cilat janë estetikë e një faqe web templates, në terezi,
që mund të marrë disa të dhëna si input, por në fund të ditës
logjika vetëm brenda një pikëpamje duhet të jetë pasqyrim i të dhënave që,
iterating mbi një lak dhe në fakt pështyrë nga disa
HTML-bazë interpretim të tij apo edhe diçka si një PDF.
>> Çfarë është e bukur për MVC është se ju mund të ketë pikëpamje të ndryshme
bazuar në llojin e pajisjes, duke u bazuar në llojin e format file që ju të vërtetë
duan të tregojnë të përdoruesit.
Le të marrin një vështrim në disa shembuj gjithnjë e më komplekse dhe të dizajnuara mirë
duke filluar së pari me versionin 0 këtu.
Më lejoni të shkojnë përpara dhe të hapur deri në MVC directory tonë sot
një file të quajtur index.php në directory 0.
Njoftim kjo është një website super e thjeshtë dhe shumë underwhelming
kjo është lloj i versionit të një 0 për faqen CS50,
dhe njoftim se si ne kemi një lidhje për Lectures, ne kemi një lidhje me planin mësimor,
dhe në qoftë se unë ndiqni lidhjen për të ligjëratave njoftim se URL
deri lartë do të ndryshojë për të lectures.php.
Nëse unë atëherë ndiqni lidhjen për 1 Week njoftim se ndryshimet URL në week1.php.
Nuk duket të jetë një strukturë mjaft e thjeshtë hierarkik këtu.
>> Le të marrin një vështrim të shpejtë nën kapuç se si kjo është hedhur jashtë,
dhe në të vërtetë, në qoftë se unë shoh index.php kjo është shumë e thjeshtë.
Në fakt, edhe pse unë e quajti këtë një skedar PHP nuk ka kodin aktual programimit.
Ka një koment që kam shkruar këtu në PHP vetëm kështu përdoruesi nuk përfundojnë duke parë atë.
Natyrisht, si më parë, çdo gjë që është në mes tags PHP
merr interpretuar, edhe në qoftë se kjo është një koment, dhe për të interpretuar një koment
do të thotë vetëm për të hedhur atë larg në fund të ditës dhe në të vërtetë nuk
dërgoni atë në shfletuesin, kështu që çdo gjë këtu është vetëm estetikë.
Nëse unë i hapur deri të ngjashme lectures.php kjo shumë është vetëm një file të vështirë koduar.
Kjo ndodh të quhet diçka. Php,
por kjo është me të vërtetë vetëm. html, dhe week1.php, week2.php
ngjashme janë vetëm Markup, kështu që nuk ka një bandë e mangësitë e këtij projektimit.
Një, kjo është një sasi të madhe të kopje / paste.
Edhe pse e vetmja gjë që ndryshon është në mesin e këtyre dosjeve është lista e parenditur,
tags li, unë megjithatë kanë lloj DOC, HTML, kreu,
Titulli, trupi ngushtë, të ngushtë HTML dhe më shumë
në çdo skedë të vetme, që do të thotë se në qoftë se unë ndonjëherë të dëshironi të ristrukturuar
kjo web faqe apo restylize atë që unë duhet të shkoj në dhe për të ndryshuar
të gjitha këto fotografi me dorë ose me disa masive të gjeni dhe të zëvendësojë.
>> Le të marrin një hap drejt një dizajn të zgjuar, më të menduar në versionin e 1 këtu
ku si për të lexuar mua se ne kemi përfshirë në mënyrë që ju mund të luajë së bashku me
këto më nge në njoftim shtëpi që ne kemi këtu
një përmbledhje e dosjeve në version 1 të kësaj faqeje,
dhe duket se unë kam marrë atë me veten për të faktor jashtë
Kodi disa zakonshme, header.php dhe footer.php.
E pra, le të marrin një vështrim në atë që është brenda i pari nga ata.
Header.php duket e njohur,
por vini re, ku e bën atë të marrë të prerë?
Menjëherë pas linjës 19, kështu që kjo është çdo gjë që ishte e zakonshme
nga index.php Fotografi, lectures.php,
week1 dhe week2.php nga shembullin e mëparshëm.
Ajo që unë nuk ishte kopje e prerë dhe gjithçka që ishte e përbashkët për të gjitha ato fotografi,
vënë atë në një skedar të veçantë header, dhe në mënyrë të ngjashme në footer.php
nuk kam zbatuar të njëjtin parim të cilin të vetmet linja interesante
në footer.php janë këto dy, trupi i afërt dhe HTML ngushtë.
>> Por çfarë do të thotë kjo që tani është në versionin e ri
e njoftimit index.php sa të thjeshta mund të merrni.
Dhënë, pak më shumë në kërkim të fshehtë, një më pak intuitiv
lartë për të ndjekur deri në fund, por Perëndia im, të gjithë atë tepricë është zhdukur tani.
Ne të kërkojë përdorimin e një funksion PHP quajtur fjalë të kërkojë deri të lartë,
e cila është shumë e kujton, kujtoj, e të C # include mekanizëm.
Ne të kërkojë header.php në krye.
Ne të kërkojë footer.php në fund, dhe e vetmja gjë që është e ndryshme
ose të veçantë në lidhje me këtë skedë është përmbajtje e cila është menduar të jetë unik për të.
Nëse unë atëherë shkoni në, të themi, lectures.php, njëjti parim vlen.
Përsëri, disa komente up krye, por pastaj kam kërkojnë header, footer kërkojnë,
dhe në mes është vetëm përmbajtje që ka ndryshuar në të vërtetë.
Dhe në qoftë se kemi shikuar në Java 1 Java 2 dhe ne do të shohim
se i njëjti parim ishte zbatuar atje.
E pra, ne nuk jeni bërë mjaft atje.
>> Le të marrin një vështrim në versionin 2, i cili ka një strukturë të ngjashme,
por vëreni tani unë kam futur diçka tjetër.
10 Në përputhje kam futur helpers.php,
që me sa duket përmban funksione ndihmëtar.
Një funksion ndihmës në përgjithësi është një funksion relativisht të shkurtër
që ju të shkruani për t'ju ndihmuar jashtë në vende të ndryshme,
dhe le të shohim se çfarë është brenda helpers.php.
Në këtë rast, ajo duket si ajo ka 2 funksione.
Kujtojnë nga dita tjetër me shembullin tonë kubike
ju mund të përcaktojë funksionet tuaja në PHP, dhe atë që unë kam bërë tani është që unë kam
Funksionet e përcaktuara quajtur bëjnë futboll dhe bëjnë header,
e parë e cila merr një parametër të quajtur të dhënave,
të cilit vlera e parazgjedhur është një rrjet bosh, siç sugjerohet atje,
dhe ne fakt mund të shkruaj këtë edhe më shumë shkurtimisht në versionin e fundit të PHP
duke thënë hapur kllapa katrore, mbyllet kllapa katrore.
Kjo do të thotë një rrjet bosh të madhësisë 0 por megjithatë një koleksion.
>> Ky funksion ekstrakt është pak e veçantë në atë që
atë që nuk është ajo e merr si argument të saj një grup shoqerues
që ka 0 ose më shumë palë kyçe vlerë, dhe në qoftë se ju keni një çelës të foo
dhe një vlerë e bar funksionit ekstrakt
krijon një situatë në të cilën tani, si e linjës 11,
ju keni një ndryshore të quajtur $ foo lokale vlera e të cilave është bar.
Dhe në qoftë se keni pasur më shumë çelësat dhe vlerat në grup të të dhënave,
ngjashme ata do të nxirren në fushën e lokale
Emri ose hapësirë ​​në mënyrë që footer.php dhe
njëjtën ide këtu poshtë në mënyrë që header.php
të kenë qasje në këto variablave.
Në fakt, më lejoni të hapur përsëri header.php
dhe të tërheqë vëmendjen për atë që tani duket si në këtë version.
>> Sesa e vështirë coding CS50 si titull për çdo faqe të vetme
njoftim dinamizmin që është e mundur tani.
Në përputhje 5 Unë jam i bërë jehonë një ndryshore titullin,
por së pari unë jam duke kaluar atë ndryshore titullin për një funksion të quajtur htmlspecialchars.
Një emër trashë për një funksion, të gjatë ashtu siç është, por me të vërtetë e bën atë që thotë.
Ai siguron se çdo karaktere speciale
në vargun që është miratuar në po iku siç HTML.
Kjo është në fakt një mënyrë për të shmangur diçka të quajtur një kryq faqe scripting sulm
ku dikush mund të maliciously ose aksidentalisht
injektuar HTML e tyre në faqen tuaj te internetit
nga pasting në një formë, për shembull,
diçka që ju nuk ishin mjaft të pritur, në veçanti kodi JavaScript,
si ne do të flasim në një javë ose dy kohë së.
>> Kjo header.php tani, kjo është një pikëpamje
në kuptimin që ajo ju lejon të shikoni përmbajtjen e aesthetically disa të dhënave.
Por më konkretisht, kjo është një template.
Kjo është lloj i një projekt tani e asaj që ne duam header e çdo faqe të duken si,
por ka disa dinamizmi në atë që ne duam titullin për t'u futur dinamike
bazuar në variablin titullin
që është nxjerrë, kur kemi quajtur, përsëri,
header Render funksion.
Tani, në qoftë se ne shikuar në futboll Render, ka të vërtetë nuk është shumë e përdorin atë të drejtë tani
sepse në footer.php nuk ka dinamizmin whatsoever.
Nuk mund të jetë, por në këtë moment kjo është një listë e vështirë koduar nga 2 tags,
por ideja njëjta gjë vlen, kështu që në fakt sugjeron pse
nuk kemi humbim kohë ka një header bëjnë dhe një funksion Render futboll?
Më lejoni të shkoj në vend tani në versionin 3,
dhe në versionin 3 në ndihmësve kam vendosur për të lehtësuar atë edhe më shumë.
>> Më lejoni të ketë një funksion të bëjnë.
Më lejoni të ketë atë të marrë një tjetër argument, këtë herë quajtur template,
cila është e menduar te jetë Emri i një kallëp,
dhe pastaj unë do të lidh me mendjemadhësi. php për vlerën që variabël së,
dhe pastaj, nëse ajo ekziston, foo.php bar.php apo header.php dhe footer.php,
atëherë unë jam duke shkuar për të shkuar përpara dhe nxjerrjen e të dhënave ndryshueshme
dhe pastaj të kërkojnë atë rrugë.
Me fjalë të tjera, për të përdorur këtë tani, nëse unë i hapur deri index.php
vëreni se unë nuk e quajnë header bëjnë më.
Unë vetëm thirrje bëjë, por unë të kalojë në një vlerë prej cituar header
për ta bërë të qartë që unë template të vërtetë duan të ngarkesës.
>> Pastaj gjatë këtu njoftim se çfarë unë jam duke bërë.
Unë jam duke kaluar në një dinamike kyç të titullit,
një vlerë e CS50, dhe kjo shumë, siç e pamë më parë,
mund të bëhen ngjeshur më shumë në versionin e fundit të PHP
ku unë mund të zëvendësojë funksionin grup me kllapa katrore,
Unë propozoj që është edhe më i lexueshëm dhe sigurisht
pak më e lehtë për të tipit.
Dhe sigurisht, me thirrjen bëjnë futboll në pjesën e poshtme,
ne nuk e mërzit duke kaluar në një argument të dytë në të gjitha, asnjë grup shoqerues,
sepse nuk ka asgjë brenda dinamik i asaj futboll.
Kjo është vetëm disa tags ngushtë për HTML.
Mirë, ne jemi duke marrë hapa në drejtim të vërtetë pastrimin gjërat deri këtu,
por më lejoni të hapur deri 2 shembuj përfundimtare.
Ky i fundit, numri 4, njoftim që unë kam bërë një vendim të ndërgjegjshëm tani
për të përmirësuar mbi shembullin e mëparshëm duke përdorur disa në fund të hierarkisë dosjet e mia.
>> Vini re se në këtë përmbledhje, në këtë lexoni me mua, unë kam futur
një direktori dhe përfshin një directory templates
Përmbajtja e të cilëve do të jenë gjërat që unë dua që të përfshijë
dhe templates që unë dua të bëjë, respektivisht.
Kjo është me të vërtetë mua është anal dhe duke u përpjekur për të mbajtur gjërat e pastra,
mbajnë fotografi të lidhura së bashku, por rezultati përfundimtar
është se ne tani kemi një organizim pak tidier, por ne duhet të kujtojmë tani
në, për shembull, index.php
kur kërkojnë helpers.php fotografisë
ne kemi tani kërkojnë atë nëpërmjet përfshin / helpers.php
në vend se vetëm duke thënë helpers.php sepse tani ajo është në të vërtetë në një directory sub.
Tani, si një mënjanë, ju do të shihni në këto shembuj dhe disa të tjerë
funksionon si kërkojnë, kërkojnë një herë.
Nuk është në fakt një funksion të quajtur vetvete përfshijnë, dhe ata të gjithë kanë sjellje paksa ndryshe.
Këtu unë them të kërkojë një herë për të bërë super të qartë se unë vetëm dua ata
ndihmësit të përfshira në projektin tim një herë.
Por në qoftë se unë jam i kujdesshëm dhe në qoftë se unë jam në të vërtetë duke menduar me logjikën time e duhur
ajo duhet të mjaftojë vetëm për të thënë shumë kërkojë deri krye
për aq kohë sa unë vetë nuk aksidentalisht të kërkojë që skedarin njëjtë diku tjetër.
Në fakt, kjo është një mënyrë pak më të efektshme për të bërë gjëra pastaj duke përdorur
të kërkojë një herë, kështu që unë do të shkurtojë atë poshtë për të vetëm të kërkojë.
>> Le të marrin një hap më tej.
Ky shembull i fundit tani, versioni 5, ka një hierarki edhe më të pastër dosje.
Njoftim se çfarë kam bërë këtu për të lexuar më në këtë version final
është tani kam dosjen time HTML, të cilën unë kam pasur gjithë këtë kohë,
por brenda atje tani është vetëm index.php, lectures.php,
week1.php dhe week2.php.
The përfshin directory tani jeton së bashku me të directory HTML,
kështu në të njëjtin nivel si një vëlla, në mënyrë që të flasin.
Kështu ka dosje templates.
The takeaway kryesore këtu është që unë kam prezantuar struktura pak më shumë,
por tipar kryesor tani është se vetëm fotografi
që duhet të jenë të qasshme web, publikisht addressable
nga një URL në internet publike janë në directory time HTML.
>> Fotografi Ndërkohë, të tjera, helpers.php, footer.php,
header.php, që janë ndoshta ndoshta më të ndjeshme,
ndoshta ndihmëtarë fakt ka disa emra të përdoruesve dhe fjalëkalimet ose disa intelektuale
pronë e imja, funksionon Unë vërtetë nuk duan të shohin botën, edhe në qoftë se rastësisht.
Është praktikë e mirë për të mbajtur jashtë directory publik HTML
ndonjë fotografi që nuk kanë nevojë të jenë të veten publike.
Të gjithë ju duhet të bëni në këtë rast, kur në kërkim në, për shembull,
fotografi index.php directory HTML-së,
njoftim ne vetëm duhet të jetë pak më të kujdesshëm kur kërkojnë
ose të kërkojë një herë këtë skedar.
Unë kam nevojë për të parë të bërë .. për të shkuar në directory prind,
atëherë / përfshinë / helpers.php
të zhyten përsëri poshtë për të marrë fotografi që më intereson.
>> Ndonjë pyetje atëherë në MVC
ose kjo mishërimi relativisht e thjeshtë e tij?
Dhe më lejoni të bëj të qartë se ne jemi fokusuar mjaft në
V këtu, pikëpamjet dhe factoring nga këto templates.
Ne nuk kemi me të vërtetë dallohet nga M C vetëm ende.
Në fakt, nuk është me të vërtetë nuk ka M këtu, dhe madje edhe C tonë,
kontrollues, nuk është me të vërtetë duke bërë të gjithë se shumë, por ju do të merrni më shumë
njohur me të dy këto 2 letra nga MVC,
ose më mirë, ju do të merrni më shumë të njohur me C
në MVC për të vendosur problemit 7, kështu që nuk ka më shumë se në horizont.
Pyetje?
Nuk ka në fakt asnjë njeri këtu.
>> Mirë, le të dalim në temën e dytë dhe të fundit për sot.
Kjo është futja e një bazë të dhënash.
Deri në këtë pikë, ne kemi pasur disa mënyra të të dhënave ruajtjen.
Ne kemi përdorur variablave.
Kthehu në dosjen C tonë, I / O diskutim kemi filluar duke përdorur fotografi tekst
dhe duke përdorur fotografi si fprintf, dhe pastaj ne edhe filloi
duke folur në lidhje CSV fotografi pak, vlerat, të ndara me presje
kështu që të gjitha këto na lejohet që të ketë të dhëna të ruajtura
ose jo-këmbëngulje ose vazhdimisht.
Por edhe CSVs nuk janë me të vërtetë të favorshme për kërkim
dhe futur dhe fshirjes.
Kjo është me të vërtetë vetëm një skedar teksti të trashë të ndara me presje
rresht me rresht me rresht me rresht, kështu që nëse ju doni të
kërkoni që dosja të mira që ju mund të bëni me të vërtetë është kërkimi lineare.
Ju duhet të fillojë në krye të dosjes, lexoni të gjithë gjë në,
dhe të kërkoni për disa vlera të interesit.
Nëse ju doni të futur në atë që ju duhet të bëni të njëjtën gjë,
iterating mbi të dhe futur në një vend të caktuar,
dhe në fakt, ju duhet të bëni të gjitha të logjikës kërkim veten.
>> Ju nuk mund të bëjmë model zgjuar përputhen në një skedar CSV nëse ju vetë shkruani kodin.
Ju nuk mund të bëjë filtrimit të një file CSV
nëse ju vetë shkruani kodin.
Nuk do të jetë mirë në qoftë se dikush tjetër vënë në të gjitha përpjekjet e
të bëjë në fakt kërkim të lehtë dhe futje të lehtë
dhe fshirjen dhe përditësimin e kështu me radhë?
Kjo është pikërisht ajo që është një bazë të dhënash.
SQL, strukturuar Query Language, është ende një gjuhë tjetër
se ne jemi futur sot këtu, por kjo shumë është mjaft e arritshme,
dhe ajo që ne jemi me të vërtetë do të bëni është që vetëm shkul nga ajo disa prej më të spikatur
Karakteristikat kështu që për pset 7, dhe nëse ju bëni diçka web bazuar,
projekti juaj i fundit, ju keni mundësinë për të shprehur veten
në aspektin e të dhënave pyetje.
Ju keni mundësinë për të ruajtur një pak apo shumë të dhëna
në një mënyrë shumë më të strukturuar që do të në fund të ditës
bërë jetën tuaj më të lehtë, sepse me SQL ju mund të shprehin veten
më saktësisht, më shumë metodike në mënyrë që të
kthehet disa mesin e të dhënave nga një korpusi më të gjerë të të dhënave.
>> Ju mund të mendoj për një bazë të dhënash, në këtë rast, një bazë të dhënash SQL, me të vërtetë si Excel
Numrat apo ku është një spreadsheet,
ose ndoshta spreadsheets të shumta, dhe një spreadsheet, natyrisht,
ka rreshtave dhe kolonave, dhe kjo është për shkak se
Bazat e të dhënave SQL janë relacionale, relacionale në kuptimin
që ata të ruajtur të dhënat në drejtim të këtyre tabelave,
rreshtave dhe kolonave.
Ata janë më të larta se sa kryerjen diçka si një spreadsheet,
dhe një spreadsheet është menduar të jetë përdorur nga një njeri.
Një databazë është menduar për t'u përdorur nga një programues
shkruar kodin kundër tij, kështu që mishërimi i një baze të dhënash
do të jetë ose command line.
>> Një prej bazave të të dhënave relacionale më të njohura atje është, përsëri, MySQL,
e cila është mrekullisht e lirë, funksionuese shumë të larta, dhe kjo është ajo që
Facebook përdoret shumë herët dhe në një farë mase edhe sot
për të ruajtur një shumë të të dhënave të saj, dhe ne do të shohim në një moment
se duke përdorur komandat relativisht të thjeshta
ne mund të zgjidhni të dhënat, të dhënat, të dhënat insert update,
fshirë të dhënat dhe si, por fatmirësisht, ka një shumë user-friendly interface
se vetëm shtypni në një prompt zezë dhe të bardhë këtu.
Ne do të përdorim për pset 7 dhe përtej një mjet të lirë të quajtur phpMyAdmin.
Emri është rastësi.
Mjet ndodh që do të zbatohen në PHP,
por kjo është krejtësisht e parëndësishme.
Çfarë është e dobishme në lidhje me phpMyAdmin është se kjo është një web-bazuar shërbimeve.
Ne kemi para-instaluar atë në aplikim për ju,
dhe me atë që ju mund të krijoni tabela në një bazë të dhënash,
ju mund të futni të dhënat, të fshirë të dhënat, dhe në përgjithësi shoh
dhënat tuaja në një mënyrë të drejtë mjedis user-friendly.
Përdoruesit e juaj nuk do të përdorin phpMyAdmin.
>> Kjo është me të vërtetë vetëm një mjet administrativ ose zhvilluesi së
me të cilën për të parë dhe thes rreth të dhënave tuaja dhe të kuptoj se si për të strukturojnë atë,
shumë si ju mund të përdorni Excel veten apo numra,
por ajo do të jetë një mënyrë e madhe e visualizing çfarë po ndodh nën kapuç
kështu që ju mund të përqëndrohen në zgjidhjen e problemit interesante dhe jo aq shumë
në komandat misterioze.
Le të marrin një vështrim në një shembull të të dhënave që mund të ruhen tabularly
në një bazë të dhënash relacionale.
Këtu është një shembull i tillë.
Tani, për fat të keq, phpMyAdmin gabuar në anën e rrugës hedhur shumë shumë fjalë
dhe grafika në ju, por në qoftë se ju grihë në vetëm në
Kolonë ID, Emri përdorues kolonë, dhe kolona hash,
kjo është në mënyrë efektive një spreadsheet, por kjo ndodh të jetë një copë
brenda një tryezë të pajisjes
duke përdorur një skedar që ne t'ju ofrojë në grup problemeve 7.
>> Në veçanti, ne do t'ju japë një skedar që përfaqëson
Tabela e një përdorues, kështu që një spreadsheet përmban përdoruesit me 3 kolona,
një nga të cilat është një ID unike duke filluar në 1 dhe duke u incremented pas kësaj.
Kolona e dytë është një emër përdoruesi, dhe ata prej jush që bënë Hacker,
Edicioni Hacker për pset 2, mund të njohin disa prej këtyre emrave përdorues të paktën.
Në anën e djathtë janë fjalëkalimet, por ata nuk janë fjalëkalimet literale.
Ata janë hashes e tij, kështu që rezulton
që ruajtjen fjalëkalimet në një bazë të dhënash është një ide me të vërtetë e keqe.
Ju keni lexuar të gjitha ndoshta në një pikë të disa internetit
ose bazës së të dhënave disa kompanisë duke kompromentuar, dhe pastaj ju duhet të
ndryshoni fjalëkalimin tuaj, ju duhet të merrni rimbursimet në gjëra
sepse disa djalë i keq të vërtetë shpërtheu në llogarinë tuaj, si rezultat i kësaj.
>> Ruajtjen fjalëkalime në tekst të qartë, unencrypted në një bazë të dhënash
është plotësisht si gomar, dhe ende është shumë zbavitës
pastaj për të lexuar në lidhje me disa kompani të njohur shumë mirë
ndonjëherë në shtypin e bazave të të dhënave të cilëve janë të komprometuar,
dhe se një pjesë nuk është qesharake, por fakti se bazat e të dhënave përmban unencrypted
Fjalëkalimet është qesharake, sepse fjalë për fjalë me një linjë të kodit
ju mund të mbrojë kundër këtij kërcënimi të veçantë, dhe kjo është ajo që kemi bërë këtu.
Edhe për tonë të vogël të rreme versionin CS50 Financave
ne jemi encrypting passwords vetëm për masë të mirë, dhe fakti që
të gjitha këto fjalëkalime filloni me $ 1 $ është vetëm një konventë.
Kjo thjesht do të thotë se ata janë të koduar apo sheshuar të vërtetë,
e cila është si një funksion një mënyrë encryption
ku ju nuk mund të ndryshojë efektet e saj me diçka të quajtur MD5.
>> Fakti që 50 është pas që do të thotë se një vlerë kripë
nga 50 është përdorur për hashing të gjitha këto fjalëkalime përjashtim për një.
Minave, natyrisht, si ju mund të shihni atje, HA,
ishte përdorur një kripë të ndryshme, kështu që ata që u morën pak deri
ndoshta në Hacker 2, që mund të ketë qenë rezultat i përdorur duke tonë
një hash të ndryshme se të tjerët, sepse fjalëkalimi im është në fakt i njëjtë
si disa përdorues tjetër deri atje.
Në fakt, në qoftë se ju keni qenë duke pritur gjithë këto javë për të gjetur
çfarë ato fjalëkalimet janë këtu ishin fjalëkalimet që ju u sfiduan
për të goditur në edicionin e vendosur problemit Hacker 2, kështu që asnjë shumë të ndërlikuar.
Në fakt, e Malan ishte e njëjtë si jharvard,
por në qoftë se ne do të shkojmë përsëri ata dukeshin ndryshe.
>> Fokusimi në jharvard në purpur, sepse ata ishin të kripet ndryshe.
Algorithm u trazuar në një mënyrë që
hash vlera, vlera e koduar duket pak më ndryshe
sepse inputeve ishin pak më të ndryshme, por fjalëkalimi nën kapuç
ishte ende përfundimisht kuq.
Tani, i cili kujdeset për këtë?
E pra, ne jemi të siguruar ju me përdoruesit mostër, emrat përdorues mostër
dhe hashes e fjalëkalimeve të tyre në mënyrë që ju të vërtetë kanë disa
konsumatorët për CS50 Financave, kur ju së pari të merrni off terren me kodin tuaj.
Ju do të duhet të zbatojnë tavolinat më shumë në brendësi të MySQL, brenda bazës së të dhënave.
Ju do të keni për të krijuar më shumë spreadsheets, në mënyrë efektive, por ne kemi vendosur të ju jap këtë një
për të marrë ju keni filluar, dhe ju do të shihni se problemi set specifikimet
ju ecën përmes procesit të importimit këtë tabelë
dhe gjithashtu duke shpjeguar se çfarë disa nga karakteristikat janë,
dhe ju do të shihni se ne ju japin me kodin
për të trajtuar hashing ose encryption e këtyre fjalëkalimeve,
kështu që ju nuk duhet të shqetësohen shumë për atë MD5 apo si është në të vërtetë të gjithë rreth.
>> Pra, SQL, gjuha strukturuar query.
Kjo është, thjesht, gjuha ne jemi gati për të filluar duke përdorur në pset 7
dhe ndoshta përtej të kërkojë të dhënat nga disa të dhënave.
Të dhënave është, përsëri, të ruhet tabularly në këto tabela, kolona, ​​relacionale dhe rreshtave,
por duke përdorur një sintaksë si relativisht e thjeshtë fshini,
insert, update dhe zgjidhni mund të bëjmë pikërisht këtë.
Ne mund të fshini nga regjistri, insert,
përditësimin e të dhënave, si dhe zgjidhni, që është, rifitoj të dhënave nga baza e të dhënave.
Si mund të shkojë për të bërë këtë?
Më lejoni të shkojnë përpara në aplikim.
Më lejoni të tërheq lart http://localhost,
cila, përsëri, është aplikim lokal vetë.
Kjo është Mbyll saj default.
Dhe më lejoni të shkoj në / phpMyAdmin.
Kjo ndodh të jetë një URL të veçantë që pajisja është konfiguruar për të kuptuar
që menjëherë bën mua për një emër përdoruesi dhe fjalëkalim.
>> Si zakonisht, unë jam duke shkuar për të tipit jharvard dhe purpur,
por të kuptojë se është llogaria administratori në kompjuter.
Është vetëm një rastësi që ka edhe një jharvard regjistruar për CS50 Financave.
Jharvard, crimson, shkruani jep ndërfaqen e përdoruesit që pamë
një paraqitje e shkurtër e një moment më parë, dhe kjo është pak e madhe në fillim,
por pjesa tjetër e siguroi, ju nuk jeni do të duhet të klikoni shumicën e lidhjeve në këtë mjet.
Ju do të përfundojë duke përdorur një mesin e vogël që janë super të dobishme,
parë e cila është të dhënave deri këtu.
Nëse unë shkoj deri në bazat e të dhënave, vëreni se unë jam nxitet për të krijuar një bazë të dhënash.
Kjo është si duke krijuar një skedë të re Excel, në mënyrë efektive.
Unë jam duke shkuar për të shkuar përpara dhe e quajnë këtë leksion, dhe unë jam vetëm do të injorojë këtë fushë atje, krahasimin.
Ajo ka të bëjë me përfaqësimin e të dhënave aty,
dhe unë jam duke shkuar për të klikoni krijuar, dhe tani vini re si unë le të shkojë e të krijojë
në anën e majtë, ku ai thotë se ka bazë të dhënash
Unë duhet të shohim së shpejti bazën e të dhënave leksion.
>> Nëse unë tani klikoni në anën e majtë, i bazës së të dhënave leksion,
vëreni tabs mi ndryshojë pak.
Unë kam marrë, strukturën e importit SQL, eksportit, dhe disa gjëra tjera.
Struktura është shumë e shumë bosh.
Nuk ka tavolina të gjenden në bazën e të dhënave, siç thuhet këtu,
kështu që le të krijojë një tabelë, dhe le të shkojnë përpara dhe për të krijuar një tabelë
si studentë, dhe sa shtylla duam?
Le të mbajmë këtë thjeshtë, dhe le rekord për çdo nxënës
një numër ID, një emër dhe një adresë e-mail.
>> Ne do të mbani atë të thjeshtë si kjo, kështu që kolona 3, shkoni.
Forma që ju shihni këtu është tani një pak çrregullt dhe e madhe,
por ne vetëm duhet të kalojnë nëpër atë rresht me rresht, kështu që me të vërtetë shpejt, le të japë
kolona e parë në këtë bazë të dhënash një emër të identitetit për identifikues unik.
Ajo do të jetë një numër të plotë. Unë në fakt mund të injorojë gjatësi dhe vlerat.
Një int do të jetë 32 bit pa marrë parasysh atë që ju shkruani në atje, kështu që le të lënë bosh.
Vlera e parazgjedhur, unë mund të bëjë atë null, siç është përcaktuar.
Unë jam duke shkuar për të lënë atë vetëm. Le të mos shqetësohen për vlerat default.
Le të lëvizni gjatë këtu në të djathtë, atributeve.
Kjo është interesante.
Le të shkojnë përpara dhe disi arbitrare thonë se ID duhet të jetë i panënshkruar.
Le të mos e mbeturinave asnjë numrat negative.
>> Le të shkojë 0-4000000000, të japë ose të marrë,
dhe pastaj le të mos prek ndonjë nga këto fusha vetëm ende atje,
por pastaj më lejoni të shkruani emrin këtu poshtë,
dhe pastaj tjetra ishte mail, kështu që është kapur mail
dhe emri, natyrisht që nuk integers, kështu që le të ndryshojë këto të një fushë të ndryshme.
Kjo rezulton nga VARCHAR, char ndryshueshme gjatësi,
është si një varg në një bazë të dhënash SQL
por një gjatësi variabile, dhe ju të vërtetë duhet të them atë që më parë të
Gjatësia maksimale e vargut, kështu që unë jam duke shkuar për disi arbitrare
sipas llojit të konventës 255 karaktere.
Unë mund të them plotësisht 32. Unë mund të them 1,000.
Ju lloj të duhet të vendosë për veten tuaj bazuar në demografinë tuaja Çfarë është
emri i studentit të gjatë dhe të shkoni me atë numër ose pak më të madhe,
por ajo që është e bukur për një VARCHAR është se nuk do të humbin
255 bytes mbi emrin e çdo studenti.
Nëse kjo është DAVID se nuk do të përdorin një tërësi 255 bytes,
por kjo është një e sipërme detyruar, kështu që unë do të shkoj me 255 vetëm nga Konventa,
por ne mund të debatojë që të jetë një vlerë më të ulët, dhe për adresë
vetëm të jenë në përputhje 255, por përsëri, ne mund të kemi debat të njëjtë.
Por unë jam duke shkuar për të bërë një gjë tjetër mbi këtu në anën e djathtë.
>> Çfarë është e fuqishme në lidhje me një bazë të dhënash është se ajo mund të bëjë një shumë të pesha të rënda
ose punë komplekse për ju.
Në veçanti, unë me të vërtetë nuk më intereson se çfarë numrat studentit tim ID janë.
Është menduar vetëm për të të jetë një identifikues unik në një bazë të dhënash
kështu që unë kam një përfaqësim të 32-bit të shkurtër të asaj studentit
kështu që unë kam disa mënyra unike të identifikimit të tyre
mos të ketë 2 Davids, për shembull, në një klasë.
Në fakt, unë jam duke shkuar për të kontrolluar këtë kuti AI, rritja auto,
në mënyrë që baza e të dhënave, MySQL, shifrat nga
atë që çdo student ID futur sapo është do të jetë.
Unë as nuk keni për t'u kujdesur për atë në kodin tim,
dhe unë jam gjithashtu do të zgjedhin diçka nën menu tregues.
Indeksi drop down këtu ka primare, unike,
Indeksi dhe teksti i plotë.
Ju ndoshta mund të me mend se çfarë disa nga këto gjëra janë,
por kjo rezulton në bazat e të dhënave relacionale
ju programues bazës së të dhënave ose administratori merrni për preemptively
jap lë të kuptohet se në bazën e të dhënave si për atë që fushat
në një tryezë të veçantë janë pak.
>> Për shembull, në këtë rast unë jam duke shkuar për të thonë se ID
do të jetë një indeks primar, i njohur ndryshe si një kyç primar.
Çfarë kjo do të thotë sipas definicionit është që tani e tutje ID
do të identifikojë studentët unike në këtë tryezë.
Asnjë student nuk do të kenë të njëjtën ID sepse unë jam imponuar këtë pengesë ose ky indeks.
Për më tepër, çka kjo do të bëjë për mua është ajo do të tregojë
MySQL që është i veçantë ID.
I intereson veçanërisht në lidhje me ID, kështu që të shkojnë përpara dhe të bëjë magjinë strukturës dashuroj tuaj të të dhënave,
të ndërtuar një lloj pemë.
Zakonisht kjo është diçka e quajtur B-pemë, të cilat ne nuk shikojmë javë më parë,
por kjo është një tjetër strukturë të tillë të dhënave të ngjashme në frymë të pemëve binare
dhe përpiqet që kemi shikuar në, por kjo do të thotë
në bazën e të dhënave kjo fushë është aq e rëndësishme që unë ndoshta
duan të jenë në gjendje për të kërkuar për atë, të shkojnë përpara dhe për të ndërtuar disa dashuroj
Struktura dhënat në memorie të përshpejtojë kërkimet në mënyrë që në mënyrë ideale
ata janë kohë të vazhdueshme ose të paktën sa më afër që të jetë e mundur
kështu që ajo nuk bie në kërkim linear, e cila nuk do të jetë
më të lartë kryerjen qasje.
Nga ana tjetër, adresë e-mail mund të ketë qenë një kyç primar.
>> Në teori, adresa email të gjithëve është unik, nëse ju jeni për ndarjen e disa llogari,
por kjo nuk është përgjithësisht e mirë për të përdorur diçka si një varg
si një kyç primar sepse nëse qëllimi i tij në jetë është që të identifikojnë unike
rreshtave në tryezën tuaj nuk ka asnjë arsye për të përdorur maksimalisht 255 bytes
në mënyrë unike të identifikuar dikë në qoftë se ju mund të merrni larg me vetëm 4 bytes
apo 32-bit int.
Në përgjithësi, një kyç primar duhet të jetë i shkurtër dhe i ngjeshur
dhe ideale diçka si një numër të plotë apo një int madh, i cili ndodh të jetë 64 bit.
Por një adresë e-mail duhet të jetë unik, dhe një nga tiparet e një bazë të dhënash shumë
është për të zbatuar unike për mua.
Duke zgjedhur këtu unike tjetër për email, edhe pse vetë email
po scrolled off ekran, unë jam duke thënë se të bazës së të dhënave
nuk besoni mua.
Mos lejoni futur në bazën e të dhënave
njëjtën adresë email-herë, edhe në qoftë se unë jam një idiot dhe nuk jam
shumë të mira me VJ mi dhe IFS tjetër dhe kodin aktual PHP
dhe unë aksidentalisht le përdoruesit regjistrohen me një adresë email-ekzistuese
baza e të dhënave është një tjetër niveli i mbrojtjes për korrektësinë
për të siguruar që kjo adresë kopjuar email nuk do të përfundojë deri në tryezë.
>> Tani, nga ana tjetër, për emrin që ju ndoshta nuk dëshironi të bëni që unik
sepse atëherë kurrë nuk mund të jetë 2 Davids ose 2 Smiths Mike, për shembull,
në bazën e të dhënave tuaja, në mënyrë që një ne do të lënë vetëm vetëm.
Unë jam duke shkuar për të shkuar përpara dhe klikoni shpëtuar në fund të drejtën,
dhe çdo gjë duket e mirë, por vini re deri këtu
kjo është një pjesë që tani për tani ne nuk do të shpenzojnë shumë kohë në
sepse sintaksa është një kompleks pak, dhe ne nuk kemi për të krijuar tabela
të gjithë që shpesh, por SQL në vetvete është një gjuhë,
sintaksa për të cilën është e drejtë këtu që unë kam theksuar.
Çfarë phpMyAdmin vërtetë nuk është ajo krijon një GUI web-based për ju
me të cilat ju mund të kurseni kohë dhe nuk kanë në dorë të tipit jashtë
një pyetje mjaft e gjatë SQL si kjo.
>> Me fjalë të tjera, në qoftë se ju të kërkuar për të krijuar këtë tryezë me dorë,
ose në atë phpMyAdmin zezë dhe të bardhë të shpejtë, ose edhe në
duke përdorur këtë skedë tjetër, ky tab SQL ku ju mund të shtypni në çdo pyetje SQL
ju dëshironi, sinqerisht, kjo do të marrë më një minutë
që në fakt mend sintaksë të tërë, dhe madje edhe atëherë unë ndoshta do të ketë
bërë disa gabime shkrimi, kështu që ky mjet është i dobishëm për gjëra si kjo, dhe kjo është gjithashtu e dobishme.
Ju mund të filloni të konkludoj se çfarë Sintaksa është
vetëm me ngjyrë të bukur coding se phpMyAdmin është shtuar
për lehtësi tonë vizuale.
Por tani le ta bëjmë këtë vend.
Më lejoni të shkoj në tab futur në krye, dhe më lejoni të shkoj përpara dhe të futur për shembull
një ID të le të themi, në fakt unë nuk e kujdesit.
Ajo do të auto ardhura. Unë jam duke shkuar për të le të merren me këtë database.
Por unë do të jetë David, dhe email tim duhet të jetë malan@harvard.edu.
>> Le të shkojnë përpara dhe të vënë këtu në Mike Smith si një tjetër.
Unë do të jap vetes një emër fundit, si edhe,
dhe ne do të kemi atë të jetë smith@example.com,
dhe pastaj ku do shkoj e ardhshme?
E pra, kjo duket si go është butonin për të klikoni, dhe voila.
Vini re në 2 rreshtave lartë futur.
Kjo është aktuale query SQL.
Kjo është mjet i phpMyAdmin ekzekutuar për mua,
por rezultati përfundimtar, njoftim, nëse unë tani të shkojnë në tab shfletoni,
është për të parë 2 rreshtave në këtë tabelë, shumë të kujton aesthetically
të tabelës pamë më herët për përdoruesit tanë nga pset 7,
njëri prej të cilëve është David Malan, njëri prej të cilëve tani është Mike Smith.
Por vetëm të jetë i qartë, unë nuk kam nevojë për të përdorur phpMyAdmin,
dhe në të vërtetë, ju jeni do të jetë së shpejti shkruar kodin për pset 7
që automatizojnë procesin e shtimit të rreshtave, fshirjes rreshtave, përditësimin rreshtave dhe të ngjashme,
kështu që le mua në vend të shkojnë në tab SQL deri këtu
dhe lloji në * zgjidhni nga ku studentët
email = "malan@harvard.edu."
>> Me fjalë të tjera mendoj se tani ju keni
disa forma HTML, dhe lloje përdorues në adresës së tyre elektronike, në mesin e fusha të tjera,
dhe tani qëllimi është në PHP në kodin fund mbrapa
që në fakt kërkoni detaje të tjera që përdoruesit.
Cili është emri juaj i plote? Cili është numri juaj ID?
Ju mund të shkruani një pyetje SQL si kjo, zgjidhni * nga studentët
ku mail = "malan@harvard.edu."
Dhe në qoftë se unë pastaj kliko të shkojnë, vëreni se unë duhet, dhe në të vërtetë unë, kthehet vetëm një rresht.
Mike është hequr nga ky grup rezultat, si mbledhjen e rreshtave
quhet në përgjithësi, sepse ai nuk ka të njëjtën adresë email si mua.
>> Tani, përsëri, këtu për pset 7 ju do të përdorni phpMyAdmin si një mjet administrativ
dhe një mjet pedagogjik për të mësuar në rrugën tuaj
rreth botën e SQL, por në fund të ditës
ju do të jeni të shkruar këto pyetje brenda kodit aktual PHP,
dhe kështu stay tuned në walkthrough Zamyla në veçanti
ku ju do të merrni një turne të Kodit të Shpërndarjes për këtë grup të problemit
ku ne kemi dhënë juve jo vetëm për estetikë faqja e identifikimit
dhe logo e bukur sexy që thotë CS50 Financave, por ne kemi dhënë edhe ju
një bandë e funksioneve që do të bëjë jetën tuaj pak më e lehtë.
Ne kemi shkruar edhe pjesë të pset për ju,
pjesa login e saj në veçanti, që të ju jap një ndjenjë të një dizajn përfaqësuese
që në fakt përdor një kontrollues, për shembull, index.php,
login.php dhe si, dhe pastaj ju do të shihni pset gjithashtu ka nje liste templates
që ka të gjitha mendimet tuaja, të gjitha estetikë.
Dhe kështu workflow e përgjithshme në pset 7 do të jetë që
përdoruesit tuaj vizitoni një kontrollues me anë të një URL në një shfletues.
Kjo kontrollues përmban kodin PHP që ju ka shkruajtur, dhe brenda kodin tuaj PHP
mund të jetë disa linja të SQL mbivendosur në mes thonjëza dyshe
dhe kaloi në një funksion të quajtur kemi shkruar query
që do t'ju ndihmojë ju të flisni me bazën e të dhënave pa përdorur diçka si
një mjet administrative si phpMyAdmin.
>> Ju do të jenë në gjendje të shkruajnë deklarata SQL në PHP kodin
dhe për të marrë përsëri një grup të caktuar PHP rezultat,
i rreshtave që në fakt përputhet me atë pyetje.
Dhe në mënyrë të ngjashme do të jetë në gjendje të bëjë fut ose fshin
ose përditësime ose të ngjashme, sintaksë, për të cilat është mjaft e ngjashme,
dhe ju do të shihni disa nga referencat online, nga kodi shpërndarjes
dhe nga pset dal vetë saktësisht se si të shkojë për të bërë këtë.
Kuptojnë përfundimisht ne jemi me të vërtetë vetëm kruarje sipërfaqen e SQL
dhe MySQL, por fuqia e tij me të vërtetë është se ajo ju çliron
të përqëndrohet në problemet që ju doni të zgjidhur, rastet e përdorimit të doni për të zbatuar
pa pasur nevojë të shqetësuar mjaft sa më shumë, të paktën në fillim,
se ku dhe si për të ruajtur dhe të kërkoni bazën e të dhënave tuaja,
dhe kjo është mjaft fjalë për fjalë, ku vetë Facebook mori fillimin e tij
duke përdorur MySQL dhe pastaj duke përdorur më shumë servers MySQL dhe pastaj më shumë servers MySQL
para se të gjatë derisa ata pastaj kishin me të vërtetë e vështirë për të filluar të menduarit rreth asaj se si për të
Të dhënat dyqan, si për të ruajtur gjërat edhe më efikase,
Pra, edhe pse ne do të marrë për të dhënë faktin se indekset dhe kufizimet unik
dhe kështu me radhë vetëm punë ka një bisedë shumë interesante
se kjo mund të çojë përfundimisht në të gjitha, kështu kuptojnë se ne jemi vetëm kruarje sipërfaqe
të asaj që përfundimisht mund të për ju apo projektet tuaja të bëhet mjaft e të dhënave të mëdha.
>> Me tha se, le të përfundojë këtu, dhe ne do të shohim se javën e ardhshme.
[CS50.TV]