[Powered by Google Translate] [Semèn 8, Kontinye]
[David J. Malan] [Inivèsite Harvard]
[Sa a se CS50.] [CS50.TV]
>> Sa a se CS50, kidonk sa a se nan fen Semèn 8 isit la.
Nou nan kou te gen yon ti jan nan yon siklòn bonè nan semèn sa,
Se konsa kounye a li se reyèlman jis m 'avè ou nan sa a sal konferans,
men jodi a nou kontinye konvèsasyon nou an sou PHP
ak sou pwogram wèb plis jeneralman, ak nou menm tou nou entwodui lide nan
nan baz done, patikilyèman yon rele miskl, ki se trè popilè jou sa yo,
nan gwo pati paske yo te évolutivité li yo kòm byen ke paske li yo ke yo te gratis epi yo louvri sous.
>> Men, an premye, yon gade nan ki kote nou te kite dènye tan.
Sonje byen, nou te gade nan plizyè egzanp yo IMS Frosh,
ak sa a te fòm nan efreyan ke mwen te vini ak kèk 15 ane + Anons sa pibliye depi
yo nan lòd yo gen elèv yo nan rejis kanpis pou elèv nevyèm ane espò nan estad fèmen
san aktyèlman gen yo charyo ankò atravè lakou a Wigglesworth
glise yon moso fizik nan papye anba pòt kèk Proctor an.
Olye de sa nou te bwote tout bagay sou entènèt, men fè sa nou bezwen fè pou sèvi
nan yon teknoloji kèk, se konsa yon sèl, nou bezwen HTML, ipèrtèks markeup lang,
ki ankò se lang sa a baliz ak kote ou fè paj wèb estriktirèl.
>> Lè l sèvi avèk yon ti jan nan CSS jou sa yo, kaskad dra style,
kote nou itilize stylizations nan paj wèb la lè l sèvi avèk yon sentaks yon ti kras diferan,
Lè nou konsidere ke HTML nan te sou tout estrikti a ladan l '.
Nou menm tou nou bezwen entwodui yon lang programmation entènèt.
Nan ka sa a, nou pral sèvi ak PHP, ak PHP ki pral pèmèt nou
dynamique kontni pwodiksyon osi byen ke fè bagay sa yo pwogramatik tankou
voye Imèl, tankou se te ka a sou nòt la nou te kite semèn pase a.
>> Sonje byen, kòd la pou sa a te nan 2 pati yo.
Youn nan, nou te gen froshims3.php,
ak sa a te lajman baliz ak yon fòm HTML andedan nan li,
yon ti jan ti la CSS moute isit la nan atribi yo style
fè sa ki te fòm nan tèt li dwe santre sou paj la, men pi lwen pase sa
nou te gen kèk entrain fòm reprezantan, yon jaden tèks, yon toulède kaz,
kèk radyo bouton, yon meni chwazi, ak yon bouton soumèt.
Ak atravè fòm sa a, nou soumèt nan yon dosye ki te aparamman te rele register3.php,
ki li menm te gade yon ti kras yon bagay tankou sa a.
Koulye a, pi fò nan kòd la nan register3.php, sonje, te sou tout imel.
Li te fè yon ti kras nan validation nan fòm la ki te soumèt asire ou ke
ki jaden yo te aktyèlman bay ki te espere.
Lè sa a, nou te rele kèk fonksyon PHP lè l sèvi avèk yon ti kras nouvo sentaks,
menm si li nan prete nan men C.
>> Sa a operatè flèch pèmèt nou fè pou sèvi ak yon bagay yo rele objè-oryante pwogramasyon.
Nou pa pral antre ki nan nenpòt detay isit la, men pou kounye a konnen
li nan yon fason pou gen fonksyon ki asosye ak objè,
ki se yon kalite espesyal nan estrikti, kòm nou te wè nan C.
Men, pou kounye a, jis pran sou lafwa ke sa a se sentaks ki kòrèk la yo sèvi ak
lè w ap itilize yon bibliyotèk tankou sa a bibliyotèk PHPMailer.
Lè sa a, nan fen sa a ranpli nou te dynamique pwodwi yon imèl
ke yo kouri voye nan kont jharvard@cs50.net mwen
nan kont jharvard@cs50.net m 'yo,
e nou enfòme itilizatè a kòmsadwa yo ke yo te anrejistre pou sa a espò.
Sa a se bèl anpil ki sa Frosh IMS sit a te fè tout moun sa yo ane de sa
lè mwen aplike li, yo akòde, nan yon lang diferan,
men li montre ou petèt pouvwa a ki di ou gen
kounye a ke ou ka eksprime tèt ou pa sèlman programatik
nan yon nivo ki ba nan yon lang tankou C men nan yon nivo pi wo
ak aplikasyon sa yo nan mond tankou imel anpil reyèl aktyèlman rezoud
kèk pwoblèm mond reyèl la.
>> Koulye a, nan kou, menm si mwen itilize sa a script jenere kèk
Imèl dynamique soti nan jharvard@cs50.net, ki se tout bon yon kont
ke mwen gen aksè nan, dwe byen atansyon voye
voye sèlman nan men kont ke yo aktyèlman pwòp ou a,
Si nou bagay sa yo fè ou jwenn nan yon ti jan nan dlo cho nan lavi a.
Avèk ki t'ap di:, kite la kounye a tranzisyon nan rezoud yon pwoblèm diferan tout ansanm,
sa yo ki an repwan eta yo.
Koulye a, ki sa sa a aktyèlman vle di?
HTTP, sa a ipèrtèks transfere pwotokòl,
se aktyèlman yon pwotokòl atach avèk okenn peyi, e ki sa sa a vle di se ke
lè ou rale moute yon bagay tankou Google.com ak Lè sa a, frape antre nan
anjeneral navigatè ou a gen kèk kalite bondi icon ki Lè sa a,
rezilta nan kèk paj wèb yo telechaje,
ak Lè sa a, ki icon ti kras sispann bondi, e ke tout bon sijere
ki HTTP te konplete kèk kalite koneksyon sou sèvè a ak sa a, se li.
HTTP se atach avèk okenn peyi nan sans ke li pa kenbe
yon koneksyon ki pèsistan nan sèvè a nan Skype nan fason menm fè sa ki
oswa Gchat fè paske avèk HTTP
sipozisyon a se ke yon fwa ou te pran yon paj entènèt sa a, se li.
>> Koulye a, an reyalite jou sa yo sou sit tankou Facebook ak Google Maps
ak Twitter ak renmen an gen nan dynamism yon anpil plis kote
menm apre ke icon sispann bondi ou ka an reyalite jwenn plis Ki dènye
soti nan sèvè a, tweets plis, pi plis nouvèl sou Facebook ak renmen an.
Men, menm ke se lè l sèvi avèk yon teknik ki nou pral pale sou nan yon semèn oswa de
ke yo rekonèt kòm Ajax lè l sèvi avèk yon lang yo rele JavaScript,
men nan fen jounen an, HTTP se toujou atach avèk okenn peyi.
Men, si ou vle yon jan kanmenm sonje bagay sa yo sou yon itilizatè
menm apre yo te dekonekte soti nan sèvè ou
PHP fè sa ki peye ou yon mwayen pou fè sa
paske, kòm nou te wè dènye fwa, PHP gen yon kantite superglobals,
ak yon supèrglobal se, ankò, yon varyab espesyal mondyal
ki nan lage nan ou pa sèvè wèb la ak pa PHP tèt li.
>> Ou pa gen bezwen fè anyen pou mete valè nan li,
, ak nan mitan superglobals sa yo nou te wè konsa byen lwen yo jwenn ak afiche,
ki se kote jaden fòm yo mete otomatikman pou ou,
kòm byen ke yon koup nan lòt moun ke nou pa te wè ankò.
Anndan de $ _server yo se kèk varyab espesyal ki gen rapò ak sèvè a tèt li.
Ki sa ki nan adrès la IP, ki sa ki pwotokòl, HTTP oswa t t 'ou itilize,
ki metòd demann ou te itilize ak renmen an, se konsa gen nan kèk enteresan,
detay juicy sou sèvè a, ak an reyalite, itilizatè a nan gen kòm byen.
Genyen nan $ _cookie, ki se kote tout bagay sa yo rele bonbon yo estoke.
Nou pa pral pase tan sou bonbon tèt yo jodi a,
men konnen pou kounye a ke yon bonbon se jis yon ti moso enfòmasyon
ke yon sèvè wèb ka plante sou yon navigatè entènèt
ak nan vire RAM li yo oswa difisil kondwi òdinatè li yo nan
nan magazen enfòmasyon sou yon itilizatè, pou egzanp, non itilizatè yo
yo pou ke yo pa bezwen tape li chak fwa yo ouvri sesyon an oswa kèk
inik nimewo oswa idantifyan pou ki itilizatè
pou ke ou pa bezwen enportune yo ak menm kalite kesyon sou
preferans nan tan kap vini an, men pi fò nan enterè
kounye a la se $ _session.
>> Sa a supèrglobal, ki, tankou lòt moun yo, se remèt bay ou otomatikman nan PHP
lè w ap ekri sou sit entènèt PHP ki baze sou
ka magazen anyen ou vle, strings, nonm antye yo,
pwen k ap flote, valè, ranje, objè,
reyèlman anyen ke ou vle, epi li pèmèt ou nan magazen li nan yon fason
ke menm si itilizatè a vizite ou kounye a epi Lè sa a,
vini tounen yon minit soti nan kounye a oswa 5 minit nan kounye a paske
yo pran tan yo anvan yo klike sou kèk lyen lòt
PHP pral asire ke tou sa ou mete nan ki supèrglobal sesyon
yon minit minit oswa 5 Anons sa pibliye depi ap toujou gen la lè la retounen itilizatè.
Ak anba kapo a sa a se supèrglobal aplike pa fason pou
bagay sa yo rele bonbon, men pou kounye a, li nan jis yon abstraction
kote li nan sòt de ekivalan a pwogramatik nan yon kabwa fè acha.
Kèlkeswa sa ou, pwogramè a, mete nan ki
supèrglobal etalaj asosyatif pral gen kèk nimewo nan minit pita
jiskaske ou efase li oswa jiskaske itilizatè a L Kite navigatè li oswa li tout ansanm.
>> Se pou nou pran yon gade nan yon egzanp sou kouman sa a se bagay aktyèlman itilize.
Nan counter.php nan mitan moso vyann bèt jodi a nan kòd
nou gen liy ki anba la a.
Nan kòmansman sa a ranpli nou gen yon pakèt moun sou kòmantè ble, ki fè yo entérésan pou kounye a.
Men, nan liy 13 nou gen yon liy nouvo,
session_start, ak ki aktyèlman fè egzakteman sa li di.
Li kòmanse sesyon yo.
Li pèmèt ou itilize ke gwo supèrglobal $ _session, epi li kòm senp tankou sa.
Koulye a, si nou kontinye fè yon gade nan liy 16, kite la eseye konnen sa ki paj sit entènèt sa a pral fè a.
Si (ise ($ _SESSION ["vann san preskripsyon"]) Lè sa a, ale pi devan
ak magazen nan varyab la vann san preskripsyon, san preskripsyon miniskil,
$ _SESSION ["Vann san preskripsyon"].
Sa a sanble ap deklare yon varyab lokal rele kontwa
andedan nan yo ki li nan mete yon kopi nan tou sa ki andedan nan supèrglobal la
rele sesyon nan kote "kontwa an."
Lòt Bagay, aparamman, sa a ti kras lokal kontwa varyab, se inisyalizèd a 0.
>> Men, Lè sa a, yon liy kèk pita nan 26 avi ke kopi sesyon an nan kontwa,
kle li yo, te gen yon affecte valè nouvo ki se valè li ye kounye a plis 1.
Nan ti bout tan, sa a ranpli sanble ap mete ajou
yon counter ki nan estoke andedan nan supèrglobal nan sesyon
pa incrementing li pa 1, men li premye konsève yon kopi valè a anvan
pa estoke l 'nan yon varyab lokal rele $ san preskripsyon,
ak Lè sa a, desann isit la kite a wè sa ki rete.
Li vire soti li nan bèl anpil jis HTML.
Nan fon an nan paj sa a nou wè nan liy 37 ke mwen te vizite sit sa a
kontwa kantite fwa, se konsa gen nan yon koup karakteristik enteresan isit la.
Youn nan, sa a se byen klè yon varyab, men li pa sifi jis mete
$ Kontwa nan kò a nan HTML ou paske nan kou
si li jis gen nan mitan PHP HTML ou a pral nan asime ke a, se jis HTML.
Ou literalman vle $ kontwa yo dwe enprime sou ekran an.
>> Men olye pa jete nan mòd PHP
ak sa a moso nan sentaks nou ka dynamique insert yon valè isit la
trè menm jan an nan lespri a sa nou te fè sa dènye tan ak
yo mete valè yo nan strings.
An reyalite, sa a se jis yon nòt steno pou li di yon bagay tankou sa a literalman,
ekri ak lèt ​​detache ($ kontwa) oswa menm yon bagay tankou printf (kontwa% s,),
oswa menm, jan ou ka wè sou entènèt oswa nan liv lekòl,
gen nan yon fonksyon nan PHP rele eko
ki fè sa ki menm bagay la, ak tout moun sa yo yo se jis ankò proliks fason
nan di <? =.
Nan ka sa a yon sèl ou pa bezwen mete
mo PHP a apre make la kesyon.
Sa a se notasyon steno pou li a, ankò, sa ki nou jis te wè yon ti moman Anons sa pibliye depi
ki se Eko kèk valè.
>> Ann wè sa ki rezilta a nan fen sa sa a aktyèlman se.
Kite m 'ale sou nan dosye counter.php nou an,
epi n ap wè ke David jis fè yon erè nan jwe ak kòd la a.
Ann al ranje tou sa l 'vise leve,
ak erè a sanble ap la, ale, sou liy 37.
Dapre tèt la nan paj sa a mwen te vizite sit sa a 0 fwa.
Oke, kite la ale pi devan kounye a, ak nan tèt la nan navigatè a klike sou la
Reload icon, epi mwen klike sou Reload,
e kounye a, mwen te vizite sit 1 tan an, 2, 3, 4, 5, 6, 7, 8.
Ak tout bon, si nou gade nan sous la nan paj sa a kòd la sous aktyèl ap chanje,
ak avi absans la konplè sou nenpòt PHP, ak sa a, se paske
Se PHP kòd evalye oswa entèprete bò sèvè,
Pou fè sa ki vle di ke pwodiksyon an nan script la PHP se sa ki finalman voye nan navigatè a,
ki nan ka sa a se kèk HTML anvan tout koreksyon epi kèk tèks anvan tout koreksyon.
Sa k ap pase sou isit la?
>> Oke, ak liy relativman kèk nan kòd mwen ka nan magazen
pèsistans sou kou nan plizyè segonn, oswa si nou tann lontan ase,
minit, menm valè èdtan, gen kèk valè nan yon fason ki fè HTTP
sanble stateful tankou si nou te double klas
koneksyon sa a nan sèvè a, epi li jis sonje sa mwen te di li dènye tan,
men nan reyalite gen nan yon pakèt antye nan konpleksite ale sou anba kapo a
ki enplike bonbon ki nan pèmèt PHP bay m 'sa a ilizyon
sa a Shopping Cart ki tankou karakteristik.
Pou kounye a, yon egzanp trivial kote n ap jis estoke yon nonb antye relatif,
men sa ki karakteristik yo va tounen yo dwe ki gen valè gwo
lè nou kòmanse pale osijè pwojè pi konplèks,
nan mitan yo pwoblèm mete 7.
Sa a se pwoblèm trè dènye fwa ou te mete nan CS50.
Mwen konnen, li nan tris konsa, men ki sa w ap jwenn se ke nou ap ale nan konkli
pati sa a nan semès la pa aktyèlman tranzisyon
soti nan kontèks la nan C sètènman nan kontèks la nan PHP
men pandan w ap itilize kèk bagay fondamantal sou trè menm
nou te pale sou pou kèk tan.
>> Objektif la ak pset 7 se aplike CS50 Finans,
ki se vèsyon pwòp ou nan Yahoo Finans oswa Google Finans
oswa menm Etrade.com annakò ou gen kapasite nan
gade moute pri stock pou bay senbòl, men menm plis pase sa
ou gen kapasite la nan "achte" ak "vann" aksyon
ke yo te fè kòmès sou echanj stock divès kalite paske kòm paj sa a lakay
isit la sijere, ki se reyèlman nan ki pwen nou te kòmanse
mete nan pwoblèm pou ou, ou gen yon fòm login ki nan mande pou yon non itilizatè ak modpas yon.
Li te gen yon bouton soumèt, men apre sa, jan nou pral evantyèlman wè la a,
pa gen anyen vrèman pral sou anba kapo a ankò paske li
rete pou ou pou w aplike kapasite nan enskri itilizatè nouvo,
kapasite nan achte aksyon, nan vann aksyon,
aktyèlman gade moute pri stock aktyèl.
>> Ak tout bon, sa a pral kòm mond reyèl ke posib paske nou te fè sa
gen ladan yo yon ti jan nan kòd ki pral pèmèt ou ki gen yon fonksyon sèl
sijè rechèch Yahoo Finans, ki bèl fè disponib done gratis
pou yo gade pri stock ki baze sou senbòl la stock oswa senbòl montr,
epi ou jwenn tounen pri a stock aktyèl nan jounen an.
Done yo w ap aktyèlman wè nan sa a pset patikilye pral
sou kòm vrè mond kòm li ka jwenn pou ke ou ap aktyèlman entèrfase
ak aksyon mond reyèl, pri lavi a,
ak nou pral wè konbyen lajan ou ka fè petèt
sou pwochen detwa jou yo nan jwe ak mete pwòp pwoblèm ou.
>> Men, nan kite l 'premye mete sèn lan pou ki jan yo desine yon bagay ki sètènman pi konplike
pase counter.php, sa se pi konplike pase nenpòt nan egzanp yo IMS Frosh konsa byen lwen,
epi kite nan eseye entwodui yon paradigmes kèk isit la ki pèmèt nou
ni pou pset 7 e petèt pou final pwojè ou a si ou fè yon bagay ki baze wèb
kenbe kòd ou a byen òganize, kenbe tèt ou lisid,
ak pran yon etap nan direksyon kolabore, si nan final pwojè CS50 nan
oswa pi lwen pase si ou kontinye pwogram yon bagay nan tan kap vini an.
Genyen nan sa a paradigm konsepsyon jeneral
nan syans òdinatè ak nan devlopman lojisyèl plis jeneralman
li te ye tankou mv, modèl View kontwolè,
ak sa a se yon akwonim enbesil ki dekri yon lide trè bèl,
ki se separasyon an nan diferan aspè nan yon pwogram,
espesifikman kenbe separe lojik la oswa lojik biznis la nan yon sit entènèt
pou ke anyen ki enplike nan bagay sa yo tankou
rele fonksyon ak rekèt baz done ak tankou nan
k ap pase pa nan mitan HTML ou
men pito nan dosye ki apa a, ak tout bon, gen nan sa a ranpli youn
tipikman ke ou te rele kontwolè a
sa ki nan vrèman sèvo yo ki dèyè operasyon an, epi nou pral wè yon egzanp
sa a nan jis moman yon.
>> Genyen nan yon modèl ki se pwogramasyon kòd
ki fè k ap pale ak baz done ou a, ki pale nan Yahoo Finans ak renmen an,
ak Lè sa a, gen nan V la nan mv, yo opinyon yo,
tout bagay la ki nan ki gen rapò ak estetik, dosye yo ki aktyèlman gen
HTML ou a, petèt CSS ou ak tankou la.
Lide a isit la, kòm foto sa a sijere, se ke kontwolè a
se dosye a, menm jan nou pral byento wè ak kòm w ap patikilyèman wè nan pset 7,
ki nan lemonn lan lap pale via navigatè wèb yo.
Sa a se dosye a ki vin vizite sou entènèt la piblik,
men kontwolè a lap pale potansyèlman modèl yon,
ki se youn oswa plis dosye lòt ki gen kòd ki an relasyon ak done,
kòd ki gen rapò ak baz done ak renmen an, ak Lè sa a, li lap pale
kontwolè a youn oswa plis dosye lòt li te ye tankou opinyon,
ki se estetik ki nan yon paj entènèt, modèl nan kalite,
ki ta ka pran kèk done kòm opinyon, men nan fen jou a,
lojik la sèlman andedan nan yon View yo ta dwe rann sa a nan done,
iteration sou yon riban ak aktyèlman voye krache deyò kèk
HTML ki baze sou pwononse ladan l 'oswa menm yon bagay tankou yon PDF.
>> Ki sa ki nan bèl sou mv se ke ou ka gen opinyon diferan
ki baze sou ki kalite aparèy, ki baze sou ki kalite fòma dosye ke ou aktyèlman
vle montre itilizatè a.
Se pou nou pran yon gade nan yon egzanp kèk progresivman pi konplèks ak byen fèt
pa kòmanse premye ak vèsyon 0 isit la.
Kite m 'ale pi devan epi louvri moute nan anyè mv nou yo jodi a
yon dosye rele index.php nan anyè 0.
Avi sa a se yon sit entènèt super senp ak anpil underwhelming
sa a, se sòt de vèsyon 0 nan yon paj dakèy pou CS50,
ak avi kouman nou gen yon ap mennen nan Konferans, nou gen yon ap mennen nan kursus,
ak si mwen swiv ap mennen nan avi Konferans ki URL la
moute tèt ki pral chanje a lectures.php.
Si m 'Lè sa a, swiv ap mennen nan avi Semèn 1 ki URL chanjman yo ki week1.php.
Gen sanble gen yon jistis senp estrikti yerarchize isit la.
>> Se pou nou pran yon gade rapid anba kapo a nan fason sa a se mete soti,
ak tout bon, si mwen gade nan index.php li nan trè senp.
An reyalite, menm si mwen rele sa a ranpli yon PHP gen nan pa gen kòd pwogram aktyèl.
Genyen nan yon kòmantè ke mwen te ekri isit la nan PHP jis pou itilizatè a pa fini wè li.
Natirèlman, tankou anvan, anyen ki nan an ant PHP tags
vin entèprete, menm si li nan yon kòmantè, ak ka esplike nou rèv yon kòmantè
vle di jis voye jete byen lwen nan fen jou a, epi yo pa aktyèlman
voye li nan navigatè a, se konsa tout bagay nan isit la se jis estetik.
Si m 'louvri moute menm lectures.php sa a twò se jis yon dosye difisil kode.
Sa rive yo dwe rele yon bagay. Php,
men li vrèman se jis. html, ak week1.php, week2.php
Menm jan an yo se jis baliz, se konsa gen nan yon pakèt moun sou lacunes sa a konsepsyon.
Youn nan, li nan yon kantite lajan gwo kopi / keratin.
Menm si bagay la sèlman ki nan chanje nan mitan fichye sa yo se lis la unordered,
Li etikèt yo, mwen Alòske gen doc kalite, HTML, tèt,
tit, fèmen kò, fèmen HTML ak plis ankò
nan chak dosye sèl, ki vle di ke si mwen janm vle restriktire
sa a web page oswa restylize li mwen gen yo ale nan epi chanje
tout bagay sa yo dosye manyèlman oswa avèk kèk masiv jwenn epi ranplase.
>> Kite a pran yon etap nan direksyon yon konsepsyon pi entelijan, pi lontan panse nan vèsyon 1 isit la
kote tankou pou chak li a mwen ke nou te enkli pou ke ou ka jwe ansanm ak
sa yo plis lantèman nan avi lakay nou genyen isit la
yon rezime de dosye yo nan vèsyon 1 nan sit sa a,
epi li sanble ke mwen te pran l 'sou tèt mwen faktè deyò
kèk kòd komen, header.php ak footer.php.
Oke, kite la pran yon gade nan ki sa ki andedan premye a nan tout sa yo.
Header.php sanble yo konnen yo,
men remake kote li jwenn koupe?
Dwa apre liy 19, alò se konsa yo tout bagay sa yo ki te komen
soti nan index.php a dosye, lectures.php,
week1 ak week2.php soti nan egzanp lan anvan yo.
Ki sa mwen te fè kopi ak tout bagay sa yo ki te koupe komen nan tout dosye sa yo,
mete l 'nan yon dosye header ki apa a, ak menm nan footer.php
t 'pou mwen aplike prensip la menm kote sèlman liy ki enteresan
nan footer.php yo se sa yo de, fèmen kò ak HTML fèmen.
>> Men, kisa sa vle di kounye a se ke nan vèsyon nan nouvo
nan index.php avi konbyen pi senp li ka jwenn.
Akòde, yon ti jan pi plis skre kap, yon ti kras mwens entwisyon
yo swiv anwo jouk anba, men se Bondye m 'yo, nan tout sa redondance se kounye a ale.
Nou mande lè l sèvi avèk yon fonksyon PHP literalman rele mande pou moute tèt,
ki se trè okoumansman, sonje, nan la C # enkli mekanis.
Nou mande header.php nan tèt la.
Nou mande footer.php nan pati anba a, ak bagay la sèlman ki se diferan
oswa espesyal konsènan sa a ranpli se kontni an ki nan te vle di yo dwe inik nan li.
Si m 'Lè sa a, ale nan, di, lectures.php, Menm prensip la aplike.
Yon fwa ankò, kèk kòmantè moute tèt, men Lè sa a, mwen mande pou header, mande pou footer,
ak nan ant li nan sèlman kontni a ki la aktyèlman chanje.
Men, si nou gade nan Semèn 1 ak Semèn 2 nou ta wè
sa ki te prensip la menm te aplike a.
Bon, nou pa ap byen fè a.
>> Se pou nou pran yon gade nan vèsyon 2, ki te gen yon estrikti ki similè yo,
men koulye a, mwen remake te entwodwi yon lòt bagay.
Nan liy 10 Mwen te entwodwi helpers.php,
ki aparamman gen fonksyon sekou.
Yon fonksyon lòt moun sanble se jeneralman yon fonksyon relativman kout
ke ou ekri ede ou soti nan divès kote,
e kite yo wè sa ki sa ki andedan nan helpers.php.
Nan ka sa a, li sanble li gen 2 fonksyon.
Sonje soti nan lòt jou a ak egzanp kib nou
ou ka defini fonksyon pwòp ou a nan PHP, ak sa m 'te fè kounye a se mwen te
defini fonksyon rele rann footer ak rann header,
premye a nan ki te pran yon paramèt rele done,
default ki gen valè se yon etalaj vid, kòm sijere la,
epi nou ka aktyèlman ekri sa a menm plis suksen nan vèsyon an dènye nan PHP
lè li di louvri bracket kare, fèmen kare bracket.
Sa vle di yon etalaj vid nan gwosè 0 men Alòske etalaj yon.
>> Sa a fonksyon ekstrè se yon ti kras espesyal nan ki
ki sa li fè se li pran kòm agiman li yo yon etalaj asosyatif
ki gen 0 oswa plis pè valè kle yo, ak si w gen yon kle nan foo
ak yon valè de bar fonksyon an ekstrè
kreye yon sitiyasyon nan ki kounye a, kòm nan liy 11,
ou gen yon varyab lokal rele $ foo ki gen valè se ba.
Men, si ou te gen plis kle ak valè nan etalaj done a,
Menm jan an yo ta dwe extrait nan sijè ki abòde lan lokal
oswa non espas pou ke footer.php ak
lide a menm desann isit la pou ke header.php
gen aksè a sa yo varyab.
An reyalite, kite m 'louvri moute ankò header.php
ak trase atansyon a kounye a sa li sanble nan vèsyon sa-a.
>> Olye de difisil kodaj CS50 kòm tit la pou chak paj yon sèl
remake dynamism lan ki nan posib kounye a.
Nan liy 5 Mwen Eko yon varyab tit,
men nan premye mwen pase varyab sa a tit nan yon fonksyon rele htmlspecialchars.
Yon non estipid pou yon fonksyon, depi lontan kòm li se, men li vrèman fè sa li di.
Sa asire ke nenpòt karaktè espesyal
nan fisèl la ki nan te pase nan yo byen chape HTML.
Sa a se aktyèlman yon fason pou evite yon bagay yo rele yon sit kwa écritures atak
kote yon moun kapab kare oswa aksidantèlman
enjekte HTML pwòp yo nan sit entènèt ou a
pa kole nan kèk fòm, pou egzanp,
yon bagay ke ou pa te byen tann, patikilyèman JavaScript kòd,
kòm n ap pale sou nan yon semèn oswa de tan an.
>> Sa a header.php kounye a, li nan yon View
nan sans ke li pèmèt ou wè estetik sa ki nan kèk seri done.
Men, plis espesyalman, li nan yon modèl.
Sa a se sòt de yon plan kounye a nan ki sa nou vle header a nan chak paj yo gade tankou,
, men tou genyen kèk dynamism nan ke nou vle tit la dwe dynamique eleman
ki baze sou varyab la tit
ki te extrait lè nou rele, ankò,
fonksyon an header rann.
Koulye a, si nou gade footer rann, gen nan aktyèlman pa anpil itilize nan ki kounye a
paske se nan footer.php gen nan pa gen dynamism tou.
Ta ka kapab genyen, men nan moman sa a li nan yon lis difisil kode nan 2 balises,
men lide a menm aplike, se konsa ke aktyèlman sijere poukisa
nou te gaspiye tan gen yon header rann ak yon rann fonksyon footer?
Kite m 'ale olye kounye a nan vèsyon 3,
ak nan vèsyon 3 nan moun k'ap ede mwen deside senplifye li menm plis.
>> Kite m 'gen yon sèl fonksyon rann.
Kite m 'genyen li pran yon lòt agiman, tan sa a yo rele modèl,
ki vle di ke yo dwe non an nan yon modèl,
ak Lè sa a, mwen pral anchene lògèy. php valè varyab sa a,
ak Lè sa a, si li egziste foo.php, bar.php oswa header.php ak footer.php,
Lè sa a, mwen pral ale pi devan epi ekstrè done yo varyab
ak Lè sa a, ki egzije pou chemen.
Nan lòt mo, yo sèvi ak sa a kounye a, si mwen louvri moute index.php
avi ke mwen pa rele header rann ankò.
Mwen te jis rele rann, men mwen pase nan yon valè te site nan header
fè klè ki modèl mwen aktyèlman vle chaje.
>> Lè sa a, plis pase isit la remake sa m ap fè a.
Mwen pase nan dynamique kle yon nan tit,
yon valè de CS50, ak sa a tou, kòm nou te wè anvan,
te kapab dwe fè pi plis somèr nan vèsyon an dènye nan PHP
kote mwen ka ranplase fonksyon an etalaj ak parantèz kare,
kote mwen pwopoze se menm plis ka konprann ak sètènman
yon ti kras pi fasil tape.
Ak nan kou, ak rann apèl la footer nan pati anba a,
nou pa anmède pase nan yon diskisyon dezyèm nan tout, pa gen okenn etalaj asosyatif,
paske gen nan pa gen anyen anndan dinamik nan ki footer.
Se jis kèk tags fèmen pou HTML.
Bon, nou ap pran mezi nan direksyon pou reyèlman netwaye bagay yo isit la,
Men, kite m louvri moute 2 egzanp final la.
Sa a yon sèl, nimewo 4, avi ke mwen te fè yon desizyon konsyans kounye a
amelyore sou egzanp lan anvan pa finalman lè l sèvi avèk kèk yerachi nan dosye m 'yo.
>> Remake nan sa a rezime, nan sa a li m ', mwen te prezante
yon gen ladan anyè ak yon anyè modèl
sa ki gen pwal gen bagay sa yo mwen vle gen ladan yo
ak modèl yo ke mwen vle rann, respektivman.
Sa a se vrèman m 'yo te nan dèyè ak ap eseye kenbe bagay sa yo pwòp,
kenbe dosye ki gen rapò ak ansanm, men rezilta nan fen
se ke nou kounye a gen yon konfigirasyon yon ti kras tidier, men nou gen sonje kounye a
nan, pou egzanp, index.php
lè nou mande pou helpers.php nan dosye
nou dwe kounye a mande pou li via gen ladan / helpers.php
olye ke sèlman li di helpers.php paske kounye a li la aktyèlman nan yon anyè sub.
Koulye a, kòm yon sou kote, ou pral wè nan egzanp sa yo ak kèk lòt moun
fonksyon tankou mande pou, mande pou yon fwa.
Genyen aktyèlman yon fonksyon pwòp tèt li rele enkli ladan yo, ak yo tout gen konpòtman yon ti kras diferan.
Men mwen di mande pou yon fwa yo fè super klè ke mwen sèlman vle sa yo
moun k'ap ede enkli nan pwojè mwen an yon fwa.
Men, si mwen atansyon epi si mwen aktyèlman panse atravè lojik mwen byen
li ta dwe sifi twò jis vle di mande pou moute tèt
toutotan mwen menm mwen pa aksidantèlman egzije pou ranpli menm yon lòt kote.
An reyalite, sa a se yon fason yon ti kras plis efikas nan fè bagay Lè sa a, lè l sèvi avèk
mande pou yon fwa, se konsa mwen pral pilonnen li desann nan jis mande pou.
>> Kite a pran yon etap pi lwen.
Egzanp sa a dènye, koulye a, vèsyon 5, gen yon yerachi folder menm cleaner.
Avi sa m 'te fè isit la pou chak li a m' nan vèsyon sa-a final
se kounye a mwen gen anyè HTML m 'yo, ki mwen te gen tout tan sa a,
Men, anndan an gen kounye a se sèlman index.php, lectures.php,
week1.php ak week2.php.
Gen ladan nan anyè kounye a ap viv ansanm ak nan anyè a HTML,
Se konsa nan nivo a menm jan ak yon frè ak sè, se konsa pale.
Se konsa, eske folder nan modèl.
Takeaway kle a isit la se mwen te entwodwi yon ti jan ti kras pi plis estrikti,
men karakteristik nan kle kounye a se ke se sèlman dosye yo
ki bezwen ale nan sit entènèt aksesib, piblikman adressable
pa yon URL sou entènèt la piblik yo nan anyè HTML m 'yo.
>> Pandan se tan, lòt dosye, helpers.php, footer.php,
header.php, ki joui petèt plis sansib,
petèt moun k'ap ede aktyèlman gen kèk non itilizatè yo ak modpas oswa kèk entelektyèl
pwopriyete m 'yo, fonksyon Mwen vrèman pa vle mond lan yo wè, menm si aksidantèlman.
Li nan bon pratik kenbe soti nan anyè piblik la HTML
nenpòt ki dosye ki pa bezwen tèt yo yo dwe piblik.
Tout sa ou dwe fè nan ka sa a lè gade, pou egzanp,
index.php dosye anyè a HTML a,
remake nou jis dwe fè yon ti kras pi plis atansyon lè w ap mande
oswa mande pou yon fwa sa a dosye.
Mwen bezwen premye fè .. pou yo ale nan anyè a paran,
Lè sa a, / gen ladan / helpers.php
plonje tounen desann nan jwenn dosye a ke mwen renmen anpil.
>> Nenpòt kesyon Lè sa a, sou mv
oswa sa a enkarnasyon relativman senp ladan l '?
Ak kite m 'fè klè ke nou konsantre byen yon ti jan sou la
V isit la, opinyon yo ak faktorizasyon a soti nan sa yo modèl.
Nou pa te vrèman distenge M soti nan C jis ankò.
An reyalite, yo gen vrèman yon pa gen okenn M isit la, e menm C nou an,
kontwolè, ki se pa sa vrèman fè tout sa ki anpil, men ou pral jwenn pi plis
ki abitye avèk tou de nan 2 sa yo lèt ki sòti nan mv,
ou pito, ou pral jwenn pi plis abitye avèk C a
nan mv pou ansanm pwoblèm 7, se konsa gen nan plis nan ki sou orizon an.
Kesyon?
Genyen aktyèlman pa gen yon isit la.
>> Oke, kite la kounye a deplase sou sijè sa a pou jodi a dezyèm ak final la.
Sa a se entwodiksyon an nan yon baz done.
Up jis pwen sa a nou te gen kèk fason nan done estoke.
Nou te itilize varyab.
Retounen nan C dosye nou an, mwen / O diskisyon nou te kòmanse lè l sèvi avèk fichye tèks
ak lè l sèvi avèk dosye tankou fprintf, ak Lè sa a, nou menm te kòmanse
ap pale de CSV depoze yon ti kras, vigil separe valè,
Se konsa tout moun sa yo pèmèt nou gen done ki estoke
swa ki pa pèsistans oswa pèsistans.
Men, menm CSVs yo se pa reyèlman propice chèche
ak inséré ak efase.
Li nan vrèman jis yon dosye tèks estipid separe pa vigil
ranje pa ranje nan ranje nan ranje, se konsa si ou vle
rechèch ki dosye pi bon an ou ka fè vrèman se rechèch lineyè.
Ou gen yo kòmanse nan tèt la nan dosye a, li tout bagay la nan,
epi gade pou kèk valè nan enterè yo.
Si ou vle insert nan li sa ou dwe fè menm bagay la,
iteration sou li ak inséré nan yon kote an patikilye,
ak an reyalite, sa ou dwe fè tout lojik nan chache tèt ou.
>> Ou pa ka fè entelijan modèl matche sou yon dosye CSV sof si ou tèt ou ekri kòd la.
Ou pa ka fè filtraj nan yon dosye CSV
sof si ou tèt ou ekri kòd la.
Pa ta bon pou li si yon lòt moun mete nan tout efò sa a
aktyèlman fè chache fasil epi ensèsyon fasil
ak sipresyon ak jour ak pou fè?
Sa a se ekzakteman ki sa yon baz done se.
SQL, byen estriktire lang sijè rechèch, se ankò yon lòt lang
ke nou ap entwodwi isit la jodi a, men sa a twò se jistis ki aksesib,
ak sa n ap reyèlman ale nan fè se jis rache soti nan li kèk nan essayant ki pi
karakteristik pou ke pou pset 7yèm, ak si ou fè yon bagay ki baze wèb,
pwojè final ou a, ou gen kapasite nan eksprime tèt ou
an tèm de queries done.
Ou gen kapasite a nan magazen yon ti kras oswa yon anpil nan done
nan yon fason pi plis estriktire ki pral nan fen jou a,
fè lavi ou pi fasil paske avèk SQL ou ka sakrifye tèt ou
pi plis jisteman, pi plis metodikman yo nan lòd yo
jwenn tounen kèk gwoup ki sot nan done ki sòti nan yon corpus pi gwo pati nan done.
>> Ou ka panse a yon baz done, nan ka sa a, ki se yon baz done SQL, reyèlman tankou Excel
oswa Numbers kote li nan yon calcul,
oswa petèt tableur miltip, ak yon calcul, nan kou,
gen ranje ak kolòn, ak sa a, se paske
Bazdone SQL yo se relasyon, relasyon nan sans
yo ke yo sere done an tèm de sa yo tab,
ranje ak kolòn.
Yo se pi wo pèfòmans pase yon bagay tankou yon calcul,
epi li se yon calcul vle di yo dwe itilize pa yon moun.
Se yon baz done vle di yo dwe itilize pa yon pwogramè
ekri kòd kont li, se konsa enkarnasyon a nan yon baz done
a pwal swa liy lòd.
>> Youn nan baz done yo ki pi popilè relasyon yo deyò se, ankò, miskl,
ki se bèl bagay gratis, trè wo pèfòmans, ak sa a se sa
Facebook te itilize trè byen bonè sou yo ak sou nan yon sèten mezi toujou jodi a
nan magazen yon anpil nan done li yo, epi nou pral wè nan yon moman
ki lè l sèvi avèk kòmandman relativman senp
nou ka chwazi done, done insert, update done,
efase done ak tankou an, men Erezman, gen nan yon pi plis user-zanmitay koòdone
pase jis tape nan yon èd memwa nwa ak blan isit la.
Nou pral itilize pou pset 7 ak pi lwen pase yon zouti gratis yo rele fpmyadmen.
Non an se fortwit.
Zouti nan k ap pase nan pou aplike nan PHP,
men sa a fondamantalman petinan.
Ki sa ki nan itil sou fpmyadmen se ke li nan yon sèvis piblik ki baze sou wèb.
Nou te pre-enstale l 'nan aparèy la pou ou,
epi ak sa ou kapab kreye tab nan yon baz done,
ou ka insert done, efase done, epi jeneralman wè
done ou a nan yon anviwònman san patipri user-zanmitay.
Itilizatè ou an pa pral sèvi ak fpmyadmen.
>> Sa a se vrèman jis yon zouti administratif oswa pwomotè a
ak ki wè ak pike alantou done ou yo ak konnen ki jan estrikti li,
anpil tankou ou tèt ou ta ka sèvi ak Excel oswa Numbers,
Men, li la pral fè yon bon fason nan vizualizan sa k ap pase sou anba kapo a
pou ke ou ka konsantre sou pwoblèm nan rezoud enteresan epi yo pa tèlman
sou kòmandman yo Esoteric.
Se pou nou pran yon gade nan yon egzanp sou done ki ta ka dwe estoke tabularly
nan yon baz done relasyon.
Isit la nan yon egzanp sa yo.
Koulye a, malerezman, fpmyadmen tronpe sou bò a nan voye fason twò anpil mo
ak grafik nan ou, men si ou ranfòse nan jis sou la
Kolòn ID, kolòn nan non itilizatè, ak kolòn nan regle,
sa a se efektivman yon calcul, men li k ap pase yon brib
nan yon andedan tablo nan aparèy la
lè l sèvi avèk yon dosye ke nou ofri ou ak nan ansanm pwoblèm 7.
>> An patikilye, nou ba ou yon dosye ki reprezante
tab yon itilizatè a, se konsa yon calcul ki gen itilizatè yo ak 3 kolòn,
youn nan ki se yon ID inik kòmanse nan 1 epi yo te enkremante apre sa.
Dezyèm kolòn nan se yon non itilizatè, ak moun nan nou ki te fè pirataj,
edisyon an pirataj pou pset 2, ta ka rekonèt kèk nan sa yo non itilizatè omwen.
Sou bò men dwat-ou se modpas, men yo pa modpas literal.
Yo ap achaj ladan l ', se konsa li vire soti
ki estoke modpas nan yon baz done se yon lide reyèlman move.
Ou te pwobableman li tout nan kèk pwen nan kèk sit entènèt
oswa pou yo baz done kèk konpayi a konpwomèt, ak Lè sa a, ou gen
chanje modpas ou, ou bezwen jwenn ranbousman sou bagay
paske gen kèk nèg move aktyèlman te kraze nan kont ou kòm yon rezilta.
>> Sere modpas nan tèks klè, kode nan yon baz done
se konplètman so, men li la anpil amizan
Lè sa a, li sou kèk konpayi trè byen li te ye
pafwa nan laprès la baz done ki gen yo konpwomèt,
ak pati sa a se pa komik, men lefèt ke baz done yo genyen kode
modpas se ridikil paske literalman ak yon sèl liy nan kòd
ou ka pwoteje tèt ou kont ke menas an patikilye, e ke se sa nou te fè isit la.
Menm pou fo nou ti kras vèsyon Finans CS50
n ap chifreman modpas sèlman pou mezi bon, ak lefèt ke
tout moun sa yo modpas kòmanse avèk $ 1 $ se jis yon konvansyon.
Ki jis vle di yo ap chiffres oswa reyèlman ache,
ki se tankou yon fonksyon chifreman yon sèl-fason
kote ou pa kapab ranvèse efè li yo ak yon bagay yo rele MD5.
>> Lefèt ke 50 se apre sa vle di ke yon sèl valè
nan 50 yo te itilize pou achin tout moun sa yo modpas eksepte pou youn.
M ', nan kou, kòm ou kapab wè a, HA,
te lè l sèvi avèk yon sèl diferan, se konsa moun nan nou ki te resevwa yon ti kras trebiche moute
petèt nan pirataj 2, ki ta ka yo te rezilta a nan te itilize li fin nou
yon regle diferan pase lòt moun yo paske modpas mwen se aktyèlman menm bagay la tou
tankou kèk itilizatè lòt moute a.
An reyalite, si ou ve yo te ap tann tout semèn sa yo yo chèche konnen
ki sa sa yo modpas yo te isit la yo te modpas sa yo ke ou yo te defye
krak nan edisyon an pirataj nan seri pwoblèm 2, pa gen anyen twò difisil.
An reyalite, nan ke Malan te menm bagay la tou kòm jharvard,
men si nou tounen yo te gade diferan.
>> Konsantre sou jharvard nan wouj paske yo te gou ankò menm jan.
Algorithm a te pèrturbasyon nan yon fason a ki
regle valè, valè a chiffres sanble yon ti kras diferan
paske yo te yon ti kras entrées diferan, men modpas la anba kapo a
te toujou finalman wouj.
Koulye a,, ki moun ki gen sousi pou sa a?
Oke, nou ap bay ou ak itilizatè yo echantiyon, non yo itilizatè echantiyon
ak achaj nan modpas yo pou ke ou gen aktyèlman kèk
kliyan pou CS50 Finans lè w ou fèk jwenn nan tè a ak kòd ou a.
Ou pral oblije aplike plis tab andedan nan miskl, andedan nan baz done a.
Ou pral oblije kreye plis tableur, efektivman, men nou deside ba ou yon sèl sa a
jwenn ou te kòmanse, epi ou ap wè ke spesifikasyon la ansanm pwoblèm
mache ou atravè tout pwosesis la nan enpòtasyon tablo sa a
epi tou li esplike ou kisa ki kèk nan karakteristik sa yo ye a,
ak ou pral wè tou ke nou ofri ou ak kòd la
okipe achin la oswa chifreman a nan sa yo modpas,
konsa ou pa bezwen enkyete twòp sou sa ki MD5 oswa tankou an se aktyèlman tout sou.
>> Se konsa, SQL, byen estriktire lang sijè rechèch.
Sa a se, byen tou senpleman, lang nan nou ap sou yo kòmanse lè l sèvi avèk nan pset 7
e petèt pi lwen pase pou mande pou done ki sòti nan kèk baz done.
Done a, ankò, ki estoke tabularly nan tab sa yo relasyon, kolòn, ak ranje,
men lè l sèvi avèk kèk sentaks relativman senp tankou efase,
insert, mete ajou epi chwazi nou ka fè egzakteman sa.
Nou ka efase soti nan baz done a, insert,
rafrechi done, osi byen ke chwazi, se sa ki, rekipere done ki sòti nan baz done a.
Ki jan nou ale sou fè sa a?
Kite m 'ale pi devan nan aparèy la.
Kite m 'rale moute http://localhost,
ki, ankò, se aparèy la lokal tèt li.
Sa a tinon default li yo.
Ak kite m 'ale nan / fpmyadmen.
Sa a k ap pase yo yon URL espesyal ki aparèy la se prekonfigure yo konprann
ki imedyatman envit m 'pou yon non itilizatè ak modpas.
>> Kòm dabitid, mwen pral tape jharvard ak wouj,
men mwen reyalize sa a, se kont la administratè sou òdinatè a.
Li nan jis yon konyensidans ki gen nan tou yon jharvard anrejistre pou CS50 Finans.
Jharvard, wouj, antre ki ban m 'koòdone nan itilizatè ki nou te wè
yon aperçu nan yon ti moman de sa, e li nan yon ti kras akablan nan premye,
men rès asire, ou pa janm ap ale nan gen klike sou pi fò nan lyen yo nan sa a zouti.
Ou pral fini lè l sèvi avèk yon sou ti ki se super itil,
premye a nan ki se baz done moute isit la.
Si m 'moute nan bazdone, avi ke m ap pouse yo kreye yon baz done.
Sa a se tankou kreye yon nouvo dosye Excel, efektivman.
Mwen pral ale pi devan epi rele sa konferans, ak mwen jis ale nan inyore jaden an a, konpilasyon.
Li te gen fè ak reprezantasyon nan done ladan l ',
ak mwen pral klike sou kreye, e kounye a, remake jan mwen kite ale nan kreye
ki sou bò gòch-men kote li di pa gen okenn baz done
M 'ta dwe byento wè baz done a konferans.
>> Si m 'koulye a klike sou nan bò gòch la-men, baz done a konferans,
remake onglè mwen chanje yon ti jan.
Mwen te gen estrikti, SQL, ekspòtasyon, enpòte ak kèk lòt bagay.
Estrikti se bèl anpil vid.
Pa gen tab yo te jwenn nan baz done, jan li di isit la,
kidonk kite a kreye yon tab, e kite yo ale pi devan epi kreye yon tab
renmen elèv yo, ak konbyen kolòn nou vle?
Se pou nou kenbe sa a ki senp, epi nan kite dosye pou chak elèv
yon ID nimewo, yon non, ak yon adrès imel.
>> Nou pwal kenbe li senp tankou sa yo, se konsa 3 kolòn, ale.
Fòm nan sa ou wè la a se kounye a yon ti jan sal ak boulvèsan,
men nou jis gen yo ale nan li ranje nan ranje, se konsa vrèman byen vit kite a bay
premye kolòn nan nan sa a baz done yon non nan ID pou idantifyan a inik.
Li pral yon nonb antye relatif. Mwen ka aktyèlman inyore longè ak valè.
Yon int a pwal 32 Bits pa gen pwoblèm sa ou tape nan la, kidonk kite a kite li vid.
Valè default, mwen te kapab fè li nil, jan yo defini.
Mwen pral kite ki pou kont li. Se pou pa nan enkyete sou valè default.
Se pou nou woulo liv sou isit la yo atribi yo dwat,.
Sa a se enteresan.
Se pou nou ale pi devan epi yon ti jan abitrèman di ke idantifikasyon yo dwe siye.
Se pou nou pa gaspiye nenpòt ki nimewo negatif.
>> Ann al 0 a 4 milya dola, bay oswa pran,
ak Lè sa a, kite a pa manyen nenpòt nan sa yo jaden yo jis ankò lòt bò a,
men Lè sa a, kite m 'tape nan non desann isit la,
ak Lè sa a, lòt la te email, pou trape an se imel
ak non, evidamman pa nonm antye relatif, kidonk kite a chanje sa yo nan yon jaden diferan.
Li vire soti varchar, varyab Char longè,
se tankou yon fisèl nan yon baz done SQL
men yon longè varyab, ak ou gen aktyèlman di l 'nan davans lan
maksimòm longè fil la, se konsa mwen pral parèt yon fason abitrèman
pa konvansyon kalite 255 karaktè.
Mwen te kapab totalman di 32. Mwen te kapab di 1,000.
Ou kalite bezwen deside pou tèt ou ki baze sou démographie ou ki sa ki
non elèv la pi long nan la epi ale ak nimewo sa a oswa yon ti kras pi gwo,
men sa ki nan bèl sou yon varchar se li pa ale nan gaspiye
255 bytes sou non chak elèv.
Si li nan DAVID li pa pwal itilize yon antye 255 bytes,
men sa a yon mare anwo, se konsa mwen pral ale ak 255 jis pa konvansyon,
men nou te ka deba ke yo dwe kèk valè ki pi ba, epi pou adrès imel
jis yo dwe konsistan 255, men ankò, nou te ka gen deba a menm.
Men, mwen pral fè yon lòt bagay sou isit la sou bò men dwat-ou.
>> Ki sa ki nan pwisan sou yon baz done se ke li ka fè yon anpil nan leve lou
oswa konplèks travay pou ou.
An patikilye, mwen reyèlman pa pran swen sa ki nimewo ID elèv mwen an yo ye.
Li nan jis te vle di yo dwe yon idantifyan inik nan yon baz done
Se konsa, mwen gen yon reprezantasyon somèr 32-ti jan nan ke elèv
pou ke mwen gen kèk fason pou inikman idantifye yo
Si nou gen 2 Davids, pou egzanp, nan yon klas.
An reyalite, mwen pral tcheke ti kare sa a lavil Ayi a, kantite oto,
pou ke baz done a, miskl, figire
ki sa ID chak elèv ki fèk antre nan a pwal.
Mwen pa menm gen nan swen sou ke nan kòd m 'yo,
ak mwen menm tou pral chwazi yon bagay anba meni an endèks.
Endèks la lage desann isit la te primè, inik,
endèks yo ak tèks la plen.
Ou ka petèt devine kisa yon koup nan bagay sa yo ye a,
men li vire soti nan baz done relasyon
ou pwogramè a oswa administratè a baz done jwenn preemptively
bay sijesyon baz done a tankou sa ki jaden
nan yon tablo yo se yon espesyal ti kras.
>> Pou egzanp, nan ka sa a mwen pral di ke ID
a pwal yon endèks prensipal, ki te rekonèt kòm yon kle prensipal.
Ki sa sa vle di pa definisyon se ke ID koulye
pral inikman idantifye elèv ki nan tablo sa a.
Pa gen elèv ap gen ID a menm paske mwen m 'enpoze sa a contrainte oswa endèks sa a.
Anplis, ki sa sa a ki pral fè pou mwen an, se li nan pral di
Miskl ki ID se espesyal.
Mwen pran swen patikilyèman sou ID, se konsa ale pi devan epi fè majik estrikti anpenpan done ou a,
bati kèk kalite pyebwa.
Tipikman yon bagay li a te rele B-pyebwa a, ki nou pa t 'gade nan semèn de sa,
men li la yon lòt estrikti done sa yo menm jan an nan lespri a pyebwa yo binè
epi eseye ke nou te gade, men li la pral di
baz done a jaden sa a se tèlman enpòtan ke mwen pwobableman
vle pou kapab chèche sou li, ale pi devan epi bati kèk anpenpan
done estrikti nan memwa nan akselere pwosesis fouy pou ke depreferans
yo ap konstan tan oswa omwen kòm fèmen ak sa yo ki posib kòm
pou li pa dekonsantre nan rechèch lineyè, ki pa a pwal
pi wo a fè apwòch.
Nan kontras, te kapab adrès imel yo te yon kle prensipal.
>> Nan teyori, adrès imel tout moun a se inik, sof si w ap pataje kèk kont,
men li la anjeneral yo pa bon yo sèvi ak yon bagay tankou yon fisèl
kòm yon kle prensipal paske si objektif li yo nan lavi se inikman idantifye
ranje nan tablo ou a gen nan pa gen rezon ki fè yo sèvi ak 255 bytes omaksimòm
inikman idantifye yon moun si ou kapab jwenn lwen ak jis 4 bytes
oswa yon int 32-bit.
An jeneral, yon kle prensipal yo ta dwe kout ak somèr
ak depreferans yon bagay tankou yon nonb antye relatif oswa yon int gwo, ki k ap pase yo 64 miyèt moso.
Men, yon adrès imel yo ta dwe inik, e youn nan karakteristik yo nan yon baz done twò
se ranfòse singularité pou mwen.
Si w chwazi inik isit la akote imel, menm si imèl tèt li
se defile nan ekran an, mwen di l baz done a
pa fè konfyans mwen.
pa kite m 'insert nan baz done a
adrès imel la menm de fwa, menm si m se yon moun sòt ak menm, mwen pa
trè bon ak ifs m 'ak ifs lòt moun, e aktyèl kòd PHP
epi mwen aksidantèlman kite itilizatè a enskri nan yon adrès imel ki egziste deja
baz done a se ankò yon lòt nivo de defans pou ekzaktitid
asire ke ke adrès imel kopi pa fini nan tablo a.
>> Koulye a, pa kontra, pou non ou pwobableman pa vle fè ki inik
paske lè sa a pa janm te kapab 2 Davids oswa 2 Mike machòkèt, pou egzanp,
nan baz done ou, se konsa ke yon sèl nou pral jis kite pou kont li.
Mwen pral ale pi devan epi klike sou sove sa ki a dwat anba,
ak tout bagay sanble bon, men remake moute isit la
sa a se yon pati ki pou kounye a nou pa pral pase tan twòp sou
paske sentaks la se yon konplèks ti kras, epi nou pa gen yo kreye tab
tout sa ki souvan, men SQL tèt li se yon lang,
sentaks an pou ki se dwa isit la ke mwen te make.
Ki sa ki fpmyadmen vrèman fè se li kreye yon grafik ki baze sou wèb pou ou
ak kote ou ka ekonomize tan ak pa bezwen manuelman tape soti
yon jistis long sijè rechèch SQL tankou sa.
>> Nan lòt mo, si ou te vle manyèlman kreye tablo sa a,
swa nan ki fpmyadmen nwa ak blan èd memwa oswa menm nan
lè l sèvi avèk sa a tab lòt, sa a tab SQL kote ou ka tape nan nenpòt queries SQL
ou vle, franchman, sa a ta yo te pran m 'yon minit
aktyèlman sonje sentaks la an antye, e menm si sa mwen pwobableman ta gen
te fè kèk tipo, kidonk sa a zouti se itil pou bagay sa yo tankou sa, epi li la tou édikatif.
Ou ka kòmanse dégager ki sa sentaks la se
jis pa koulè a ​​bèl kodaj ki fpmyadmen se ajoute
pou vizyèl konvenyans nou an.
Men, kounye a kite a fè sa pito.
Kite m 'ale nan tab la insert nan tèt, ak kite m' ale pi devan epi insert pou egzanp
yon ID nan la kite l 'di-aktyèlman mwen pa swen.
Li nan ale nan kantite oto. Mwen pral kite kontra a baz done ak sa.
Men, mwen va gen David, li imel mwen ta dwe malan@harvard.edu.
>> Ann al pi devan isit la epi mete nan Mike Smith kòm yon lòt.
Mwen pral ba tèt mwen yon non dènye kòm byen,
epi n ap gen pou l 'smith@example.com,
ak Lè sa a, kote m 'ale apre sa?
Oke, li sanble ale se bouton an klike sou, ak vwala.
Avi nan 2 ranje yo tèt eleman.
Sa a se aktyèl SQL sijè rechèch la.
Sa a se zouti nan fpmyadmen egzekite pou m ',
men rezilta nan fen, avi, si mwen kounye a ale nan tab la browse,
se gade 2 ranje nan tablo sa a, trè okoumansman estetik
nan tablo a nou te wè pi bonè pou itilizatè nou an soti nan pset 7,
youn nan moun se David Malan, youn nan ki moun kounye a se Mike Smith.
Men, jis yo dwe klè, mwen pa bezwen sèvi ak fpmyadmen,
ak tout bon, w ap ale nan byento ka ekri kòd pou pset 7
ki automatise pwosesis la nan ajoute ranje, efase ranje, mete ajou ranje ak renmen an,
Se konsa, kite m 'olye ale nan tab la SQL moute isit la
ak kalite nan * Chwazi nan men elèv ki kote
imel = "malan@harvard.edu."
>> Nan lòt mo sipoze kounye a ou gen
kèk fòm HTML, ak ki kalite itilizatè nan adrès imel yo, nan mitan jaden yo lòt,
ak objektif la kounye a se nan PHP sou kòd la fen tounen
aktyèlman gade moute lòt detay ki ki itilizatè a.
Ki sa ki tout non ou? Ki sa ki se nimewo ID ou a?
Ou kapab ekri yon sijè rechèch SQL tankou sa a, chwazi * nan men elèv
kote imel = "malan@harvard.edu."
Men, si mwen Lè sa a, klike sou ale a, remake ke mwen ta dwe, ak tout bon mwen menm, jwenn tounen sèlman yon sèl ranje.
Mike se omi sa a soti nan seri rezilta, kòm koleksyon an nan ranje
se jeneralman yo rele, paske li pa gen adrès imel la menm jan ak mwen.
>> Koulye a, ankò, isit la pou pset 7 ou pral itilize fpmyadmen kòm yon zouti administratif
ak yon zouti pedagojik yo aprann wout ou
atravè mond lan nan SQL, men nan fen jou a,
w ap ale nan dwe ekri sa yo queries andedan nan aktyèl kòd PHP,
epi konsa rete sou estasyon nan solisyon Zamyla a an patikilye
kote ou pral jwenn yon vwayaj nan kòd la distribisyon pou sa a seri pwoblèm
kote nou te ban nou pa sèlman estetik yo pou paj la login
ak te bèl logo la sexy ki di CS50 Finans, men nou menm tou nou ban nou
yon pakèt moun sou fonksyon ki pral fè lavi ou yon ti jan pi fasil.
Nou te ekri tou yon pati nan pset a pou ou,
pòsyon nan login ladan l 'nan an patikilye, ba ou yon sans de yon konsepsyon reprezantan
ki aktyèlman sèvi ak yon kontwolè, ki pou index.php egzanp,,
login.php ak renmen an, ak Lè sa a, ou pral wè pset la tou te gen yon anyè modèl
ki gen tout opinyon ou, nan tout estetik yo.
Se konsa, workflow la an jeneral nan pset 7 a pwal ki
itilizatè ou vizite yon kontwolè via yon URL nan yon navigatè.
Sa kontwolè gen kòd PHP ke ou te ekri, ak andedan nan PHP kòd ou a
ta ka gen kèk liy nan SQL pare solèy nan ant quotes doub
li pase nan yon fonksyon nou te ekri ki rele sijè rechèch
ki pral ede w pale ak baz done a san yo pa lè l sèvi avèk yon bagay tankou
yon zouti administratif tankou fpmyadmen.
>> Ou pral kapab ekri deklarasyon SQL an PHP kòd
ak jwenn tounen yon etalaj PHP nan mete nan rezilta,
nan ranje yo ki aktyèlman matche ak ki sijè rechèch.
Ak menm ou pral kapab fè mete anndan oswa supresyon
oswa mizajou oswa tankou an, sentaks an pou ki se jistis ki similè yo,
epi ou pral wè nan kèk referans sou entènèt, ki soti nan kòd la distribisyon
ak nan pset nan pake tèt li egzakteman ki jan yo ale sou fè sa.
Reyalize finalman nou ap vrèman jis grate sifas la nan SQL
ak nan miskl, men pouvwa a nan li vrèman se ke li libere ou
yo konsantre sou pwoblèm sa yo ou vle rezoud, ka yo itilize ou vle aplike
san yo pa gen enkyete byen kòm anpil, omwen bonè nan,
sou ki kote epi ki jan nan magazen ak rechèch baz done ou a,
ak sa a se byen literalman kote Facebook tèt li te resevwa kòmansman li yo
lè l sèvi avèk miskl ak Lè sa a, lè l sèvi avèk plis miskl serveurs ak Lè sa a, plis miskl serveurs
anvan lontan jiskaske yo Lè sa a, te gen nan reyèlman kòmanse panse difisil sou jan yo ka
magazen done, ki jan nan magazen bagay sa yo menm pi plis efikasite,
se konsa menm si nou pral pran pou yo akòde lefèt ke endèks ak kontrent inik
ak pou fè jis travay gen yon konvèsasyon trè enteresan
ke sa a tout ka evantyèlman mennen nan, se konsa reyalize ke nou jis ap grate sifas la
nan sa ki te ka evantyèlman pou ou oswa pou pwojè ou vin byen yon ti jan nan done gwo.
>> Avèk ki t'ap di:, kite la fini isit la, epi n ap wè ou an semèn pwochèn.
[CS50.TV]