[Powered by Google Translate] [Pwoblèm solisyon Fikse 7] [Zamyla Chan] [Inivèsite Harvard] [Sa a se CS50] [CS50.TV] Alo tout moun, epi byenveni nan solisyon 7, CS50 Finans. Koulye a, nou ap ofisyèlman fè ak tout psets yo ki nan CS50, e nou jis kite avèk yon sèl plis ki se ale nan yon aplikasyon plezi nan yon sit entènèt kote itilizatè yo ka konekte nan CS50 Finans ak achte ak vann aksyon. Jodi a, nou pral gen yon zouti kèk a jete nou yo. Nou ap pral pale sou otorizasyon. Chak fwa ou gen yon katab entènèt, w ap ale nan vle yo ki pèmèt itilizatè egzekite dosye sèten men tou jis li sa lòt, se konsa nou pral gade nan otorizasyon ak kouman ou ka mete sa yo. Lè sa a, nou pral gade nan PHP, HTML, ak kòd SQL. Premyèman, otorizasyon. Lè w ap nan tèminal la nan yon anyè sèten, Lè sa a, ki sa ou vle fè se ou vle kouri yo lòd, ki chmod. Sa ki swiv li se swa lèt oswa nimewo ki koresponn a sa ou vle fondamantalman mond lan yo wè, ou tèt ou yo wè, elatriye Pou egzanp, chak fwa ou gen yon katab, Lè sa a, ou vle ke folder yo dwe ègzèkutabl ke tout moun ki wè l ', Se konsa, sa ou ta fè se ou ta ka kouri chmod nan lòd yon + x ak Lè sa a, non an nan folder ou a. Lè ou gen yon dosye tankou CSS dosye oswa dosye imaj - tankou JPEGs ak Bitmap, bagay sa yo tankou sa, oswa nenpòt kòd JavaScript - ou vle ke yo dwe lizib pa tout moun, se konsa Lè sa a, ki sa ou fè se ou ka sèvi ak mask la - ki se yon asterisk - fondamantalman endike nan dosye a CSS - tout bagay nan ki folder -  Mwen pral di ke sa k ap pase yo dwe lizib ke tout moun. Yo avèk otorizasyon, lè nou sèvi ak lèt ​​yo, nou ka tou itilize nimewo olye. Se konsa, ou wè ke finalman lè ou vle yon bagay yo dwe ègzèkutabl - ki nan reprezante pa kantite 1 - yon bagay yo dwe lizib se nimewo a 4 ak Lè sa a, - écritures se nimewo 2 - e konsa esansyèlman lè ou vle yon konbinezon de sa yo, lè sa a ou ajoute yo. Si ou vle yon bagay yo dwe lizib, écritures, ak ègzèkutabl, Lè sa a, ou ta ajoute jiska 4, 2, ak 1 ak ki ta ba ou 7, Lè sa a, chak fwa ou gen yon katab ou vle ke yo dwe ègzèkutabl ke tout moun - kòm byen ke ka konprann ak écritures - Lè sa a, ou fè a ke 7, 1, 1. Ki ta ka 7 pou ou, Lè sa a, 1 pou lòt moun yo. Lè ou gen espèk a, li pral aktyèlman presize ki dosye ak ki dosye bezwen yo dwe chmod-ed espesyalman. Pou egzanp, lè ou gen dosye - sa yo se 7-1-1 - lè ou gen imaj, oswa HTML, CSS, JavaScript, Lè sa a, sa yo pwal gen 6, 0, 4 - oswa 6, 4, 4 - ak Lè sa a, dosye PHP pwal gen 6, 0, 0. Lide a dèyè ke se ke itilizatè yo pa ta dwe wè aktyèlman kòd PHP ou a, men jis kapab wè pwodiksyon an. Gwo! Paralize nan PHP. Tou senpleman, nenpòt lè ou vle yon dosye PHP, sifiks nan dosye se. Php. Ou kapab tou melanje HTML ak kòd PHP. Si w gen yon dosye HTML, pou egzanp, Lè sa a, ou ka fèmen l 'ak ang gòch la, kesyon mak, php - mete kòd php ou - ak Lè sa a, fèmen ki ak yon lòt mak kesyon ak yon ang dwat. Varyab nan PHP se yon anpil pi fasil fè fas ak pase varyab nan C. Nenpòt varyab jis kòmanse ak yon siy dola nan devan l ', li yo ap chetif tape. Sa vle di ke ou pa bezwen enkyete sou anviwònman yon bagay egal a yon kòd oswa yon nonb antye relatif. Ou ka jis senpleman di, sa a se non mwen nan varyab la ak Lè sa a, sa a se valè li yo, Se konsa, li pral fè pi fasil fè fas ak la. Yon lòt bagay se ke PHP pèmèt ou itilize ranje asosyatif. Ou ka jis senpleman defini yon etalaj tankou ou ta nan C lè li di, dola siyen pou non an nan ou etalaj-egal, ak Lè sa a, nan parantèz kare gen bazikman jis lis la nan valè nan tout eleman ki nan etalaj la. Men, nan PHP sa ki ou ka tou fè se presize fondamantalman an - li nan kalite tankou yon fonksyon regle. Ou ka presize endèks la - ki sa w ap ale nan rele li - ak Lè sa a, ki koresponn a yon valè. Si ou aktyèlman pase nan yon, 1 = b = 2, c = 3, Lè sa a, etalaj ou nan endèks yon ka ba ou 1. Sa a pset ap chofe ou leve ak kèk PHP nan yon seksyon nan kesyon, ak Lè sa a, nou plonje nan CS50 Finans. Nou gen yon koup la - nou gen kèk fonctionnalités, fondamantalman, aplike nan sit entènèt sa a. Nou vle yo ki pèmèt itilizatè enskri nan sit entènèt nou an ki gen yon non itilizatè ak modpas yon. Nou vle pèmèt yo gade moute yon quote, ak Lè sa a, nou ta enprime soti non an nan ki quote kòm byen ke pri aktyèl la ke li nan nan. Nou vle pèmèt yo wè yon pòtfolyo ki gen tout de aksyon yo ke yo te achte konsa byen lwen. Nou menm tou nou vle pèmèt yo achte aksyon kòm byen ke vann yo. Lè sa a, finalman, nou vle pèmèt yo wè istwa a nan tout tranzaksyon nan yo ke yo te fè fè yo. Lè sa a, finalman, apre ou te aplike nan tout sa, Lè sa a, w ap lib yo aplike yon sèl siplemantè karakteristik. Nou pral antre nan sa yo. Moun sa yo ki sa yo kapab swa pèmèt itilizatè yo jwenn èd siplemantè lajan kach pa depoze siplemantè lajan kach, oswa ou ta ka pèmèt yo chanje modpas yo, oswa yon bagay tankou sa, imèl yo yon resi lè yo achte oswa vann yon machandiz. Genyen nan yon lis limite nan karakteristik ke ou ta ka aplike tèt ou, pou ki nan yon sèl ki sot pase a la. Depi sa a se yon sit entènèt, ou nèg yo te genyen tou yon anpil nan libète Customize li. Nou fè bay kèk kòd CSS, men w ap definitivman lib yo ajistè li, fè li gade joli, men siyalen li se yon fonctionnalités debaz kidonk toujou gade nan espèk a sou sa ou aktyèlman bezwen gen ladan la. Apre espèk a, nou ap pral lè l sèvi avèk aparèy la kòm tou yon sèvè. Li nan pwal yo dwe hosting sit entènèt nou an pou nou, sou sèvè lokal li yo. Si ou swiv enstriksyon sa yo ak ouvriers pset kòd la 7 distribisyon nan folder vityèl lame ou lame / lokal yo,  Lè sa a, ou ka jis vizite http://localhost/ nan Google Chrome nan aparèy la, ak Lè sa a, ou ta rive jwenn kòd la nan kote ou te ekri pset 7. Pset 7 vini ak yon pakèt moun sou kòd distribisyon, ak èspere ke we've - atravè tout sou psets yo anvan sa a - abitye nou lekti atravè kòd distribisyon, konprann kisa fonksyon yo deja bay, epi kouman nou ta ka kapab sèvi ak sa yo ak fonksyon yo lòt ke nou ap pral mete ann aplikasyon. Nan ka sa a, nou gen 3 dosye. Nou gen yon katab HTML, yon gen ladan folder, ak yon folder modèl. Ki sa nou ap pral fè ak sa-a pset se kalite separe panse a - pwogramasyon panse a - nan kòd la PHP ak aspè nan aktyèl vizyèl. Nou pral gen yon sèl PHP dosye ki fè tout nan panse a, li antre nan baz done a, simagri soti bagay sa yo, gen si deklarasyon - bagay sa yo tankou sa - ak Lè sa a, ki pral pase done nan dosye modèl nou an - oswa dosye template.php. Ki sa ki ki pral fè se li enfòmasyon yo ak Lè sa a, li pral enprime li. Nou ka trete modèl kòm "bèbè" nan ke nou pa vle reyèlman yo ap fè yon anpil nan travay nan kalkil bagay sa yo. Nou vle contrôleur nou fè sa. Yon ti kras sou sa - kite a pran yon gade nan kèk nan kòd la distribisyon. Isit la nou gen dosye index.html nou an, epi li nan bèl vid. Esansyèlman ki sa li fè - li di, byen, mwen pral mande pou dosye a configuration.php. Nou pa wè ke dwa la, men li la fondamantalman rele dosye a configuration.php, e pou fè pwomenad sa. Apre li fè sa ki, li te ale nan rann dosye a. Prezantasyon se yon fonksyon, se konsa chak fwa nou ap nan yon kontwolè, nou pral rele rann, nou pral bay li dosye a ak Lè sa a, done sa yo ke nou ap pase nan, konsa ke li ap rele nan portfolio.php-kalite-a pas nan ki done pou ke pòtfolyo ka fè fas ak sa. Epi, koulye a, isit la, nou gen fòm login.php nou an.  Sa a se kontwolè a ki fondamantalman pran swen de koneksyon an pous Isit la, li tcheke si yo te yon fòm soumèt nan sa a ranpli ak kontra avèk validation soumèt la. Nou pral gade nan sa a fonksyon padone. Lè nou vle enprime soti yon mesaj erè a, nou itilize eskize ak ki pral redireksyon itilizatè a nan yon paj espesifik ki pral enprime soti mesaj la erè espesifik ke nou endike. Kontinye sou, li pral sijè rechèch baz done a - we'll jwenn nan plis nan ki pita. Lè sa a, ou wè sa a desann isit la si yon fòm pa te soumèt, lè sa a li rann yon fòm. Sa vle di ke li ale nan login_form.php, kidonk kite pou yo gade nan sa. Login.php se aktyèlman kote nou wè tranzaksyon an HTML ak aspè nan aktyèl vizyèl. Isit la nou gen yon tag opinyon pou non an itilizatè, yon antre pou modpas la, kòm byen ke yon bouton soumèt. Sa a se aktyèlman kote aspè nan vizyèl ak fòm nan HTML yo pral fèt. Isit la, li di ke li nan ale nan dwe soumèt pa yon metòd sèten, ki rele post. Nou pral jwenn nan diferans ki genyen ant metòd - afiche kont jwenn, gen nan yon bagay yo rele tou mete - nou pral jwenn nan sa yo metòd pita, men pou enterè a nan sa a pset, Mwen ta trè ankouraje w sèvi ak post. Nou konnen ke fondamantalman yon fwa yo fin soumèt fòm sa a - soti nan login_form.php-- Lè sa a, li pral ale nan aksyon an - login.php-- fondamantalman pase nan tout paramèt sa yo soti nan fòm sa yo nan login.php. Rezilta yo soti nan ki fòm yo genyen nan sa a etalaj post asosyatif. Endèks yo nan eleman yo diferan nan etalaj la apre yo se egzakteman sa ou presize isit la. Ou di ke non an nan sa a D 'se non itilizatè. Non an nan yon sèl sa a se modpas. Menm jan an, ou wè non itilizatè a kòm endèks la nan etalaj la asosyatif la. Si nou ale nan folder nan gen ladan, nou gen sa a ranpli fonksyon ki a pwal trè itil. Tout moun sa yo fonksyon yo nan faz egzekisyon pou ou. Ou pa bezwen espesyalman aplike nenpòt nan sa yo tèt ou, men yo pwal santi yo byen itil. Nou te prezante eskiz, ki jan mwen te di anvan, yo pral fondamantalman enprime soti yon mesaj erè pou ou sou yon paj espesifik - apology.php. Lè sa a, nou gen pil fatra, se konsa si ou jis rele pil fatra ak Lè sa a, pase nan varyab la, Lè sa a, li ap mennen ou nan yon paj ki pral montre varyab sa a pou ou. Lè sa a, nou te SOTI, ki pral fondamantalman fini sesyon yon itilizatè sèten an. Passage a pwal itil. Depi nou ap fè fas ak quotes ak aksyon, nou pral kapab - epi li esansyèlman tan reyèl. Nou bezwen konnen ki sa ki valè sa yo stock se, konsa nou gen fonksyon an Passage ki kontra ak dokiman Yahoo a nan aksyon. Yon fwa ou gade moute yon senbòl sèten nan yon estòk, li pral tounen vin jwenn nou senbòl bousye a kòm byen ke non a ak pri aktyèl la nan ke stock. Sa a se fonksyon an Passage. Lè sa a, nou ap fè fas ak miskl, pou nou ap pral vle egzekite queries sèten sou baz done SQL nou an. Nou gen sijè rechèch nan kontra - a kalite kèk abstrè nan ki deyò. Nou ap pral pase nan fisèl an antye nan sijè rechèch SQL nou yo - ak tout nan varyab yo ki ale nan li - epi ki sa sa a fè se aktyèlman egzekite sa pou nou. Olye pou yo gen yo ekri tout bagay sa yo soti chak fwa ke ou vle sijè rechèch - lè yo resevwa tout rezilta yo soti nan ki sijè rechèch - Lè sa a, ou ka jis rele fonksyon an sijè rechèch, epi li pral retounen nan ou - depann sou sa ki w ap itilize pou rechèch ou an - pwobableman yon ranje sou tout rezilta yo ki matche ak sijè rechèch la oswa menm jan an. Plis sou sa pita si. Finalman, nou gen redireksyon ki, kòm non an sijere, redireksyon ou nan yon paj diferan. Lè sa a, nou gen rann, ki nou ap pral rele yon koup de fwa. Lè w ap nan yon kontwolè, ou rele rann nan paj la modèl ak Lè sa a, pase nan valè yo ki modèl la pral Lè sa a, fè fas ak. Moun sa yo ki valè yo se pwobableman pwal yo dwe ki gen rapò ak kalite a nan pwodiksyon ke ou vle yo dwe montre nan paj modèl ou yo. Oke. Moun sa yo se fonksyon yo, epi gen yon anpil plis sa a kòd distribisyon. Mwen ankouraje w ale nan sa a ak eksplore li tèt ou. Epitou, espèk a pwal pwobableman mache ou atravè kèk lòt eleman nan kòd la distribisyon. Isit la se yon rezime de fonksyon yo te jwenn nan functions.php. Oke. Travay la premye se yo ki pèmèt itilizatè enskri sou sit entènèt la. Kounye a, gen yon fòm login sou sit entènèt la, epi ou yo bay ak yon itilizatè kèk ak modpas. Ou ka itilize sa yo usernames epi louvri sesyon an, men ou vle pèmèt moun yo fè usernames pwòp epi ajoute tèt yo sou sit entènèt la. Layout a pou rejistrasyon an se trè sanblab yo fòm nan login, eksepte non itilizatè a se pa pre-egziste ki, ak itilizatè a tou bezwen bay yon nouvo modpas, ak Lè sa a, tipikman nou gen yon konfimasyon modpas. Yon fwa entrain yo itilizatè tout enfòmasyon sa a, nou vle ajoute yo nan baz done nou an nan itilizatè. Nou pwal gen yon baz done - yon baz done SQL - ke nou ap ale nan referans. Nan ki baz done, n ap gen yon tab ak tout itilizatè yo ki gen non itilizatè yo, modpas yo, epi tou li ki kantite lajan kach yo genyen. Nan Rejis, nou vle pèmèt yo antre nan enfòmasyon sa a. Nou vle montre ke fòm. Nou vle asire w ke modpas yo - yo ke yo te antre nan yon sèl, ak Lè sa a, tou sa modpas yo matche ak lè yo antre nan li de fwa. Apre yo tout nan ki se fè - asepte ke moun erè yo tcheke - Lè sa a, nou vle ajoute sa yo itilizatè yo baz done nou an. Finalman, yon fwa ou te anrejistre, li la bèl pratik si ou pa bezwen ouvri sesyon an ankò yon fwa ou te anrejistre, pou nou ap ale nan ouvri sesyon yo nan sou sit entènèt la yo si yo te anrejistre nan avèk siksè. Travay la premye se yo montre fòm nan, e sa se aktyèlman pral fè - pwosesis sa a tout antye enskripsyon yo pral modelize trè byen apre login eksepte olye pou yo login.php ou ka gen register.php. Olye pou yo login_form.php-ki-se modèl la - ou pral gen enskri fòm. Ou ap vle ajoute yon sèl plis jaden - yon jaden konfimasyon modpas - olye pou yo jis non itilizatè a yon sèl ak modpas la youn. Next, nou vle tcheke si modpas yo matche ak oswa ou se vid. Nou gen kontwolè a - register.php-ki se ale nan pran swen nan fè sa yo chèk yo. Lè yo bay yon fòm soumèt via metòd la pòs, Lè sa a, tout moun sa yo varyab yo ap genyen nan etalaj la pòs. Ou vle asire w ke valè a etalaj pòs nan modpas endèks matche ak eleman nan konfimasyon. Ou vle asire w ke yo menm yo pa vid, , epi ou vle asire w ke yo ap menm bagay la. Youn nan bagay ki bon sou PHP se ke nou pa bezwen sèvi ak fil konpare ankò. Nou ka sèvi ak operatè a egal-egal  a tcheke si strings yo egal youn ak lòt. Pou manyen erè, ou pral vle prezante eskiz. Li padon, ou tou senpleman rele fonksyon an  ak Lè sa a, endike yon di ki kalite mesaj ke ou vle soti. Ou Lè sa a, vle ajoute itilizatè a baz done a. Up jouk koulye a, tout sa nou te toujou ap fè se jis fè fas lokalman ak rezilta yo nan fòm nan. Koulye a, nou aktyèlman vle ajoute yo nan baz done nou an. Pou sa, nou premye vle asire w ke non itilizatè a se pa vid. Konprann ke sou yon sit entènèt, ou pa ka gen plizyè itilizatè ak non itilizatè a menm, konsa ou pral vle asire ke lè ou insert yon bagay nan baz done ou - insert yon itilizatè nouvo - Lè sa a, ou pa jwenn yon kolizyon ant yon non itilizatè pre-egziste ki ak non itilizatè a ki yon itilizatè ap eseye soumèt. Pou sa, yon fwa ou siyen yon sijè rechèch - yo mete yon itilizatè sèten ak modpas yo ak yon kantite lajan inisyal la nan lajan kach - yon fwa ou rele ki sijè rechèch, Lè sa a, miskl pral aktyèlman retounen fo si li echwe. Estrikti a nan itilizatè a se sa yo ki non itilizatè a se yon valè inik, se konsa ou pa ka gen plis pase yon. Lè ou eseye epi antre yon ranje nouvo ak yon non itilizatè ki deja egziste, ki nan ale nan retounen fo - tankou yon fo Boolean-valè. Yon bagay difisil isit la se ke ou pral vle tcheke si rezilta a se rezilta nan rechèch ou an. Si li echwe, Lè sa a, ou pral vle tcheke avèk operatè a trip-egal. Sa se aktyèlman ale nan tcheke si gen yon echèk oswa ou pa, Lè nou konsidere ke, nan jis senp yon egal-egal, li ta vre si ranje a te vid. Rezilta a nan yon echèk si gen yon kolizyon ant usernames se valè aktyèl la fo. Men ki jan ou ta insert nan yon baz done. Isit la se sijè rechèch ki ou ta kouri estrikteman nan SQL. Youn nan bagay se ke ou ka aktyèlman ale nan sit entènèt la ki jere baz done SQL ou ak jwe otou gen pa k ap antre nan manyèlman swa valè oswa ranje. Li pral Sòti sa a, sortie SQL se. Ou kapab tou kouri kòmandman SQL nan baz done ou  ak Lè sa a, wè sa ki sentaks la ta ka, ak Lè sa a, tradui ki nan fonksyon an sijè rechèch ke nou genyen nan pset 7, ki a pwal trè menm jan ak queries sa yo ke ou aktyèlman kouri. Si mwen te vle insert yon ranje nouvo nan tablo itilizatè m 'yo, Lè sa a, mwen ta presize insert nan itilizatè yo, ki se non an nan tab mwen. Lè sa a, mwen ta presize non yo kolòn. Apre sa, mwen ta bay valè yo ansanm ak modpas mwen. Modpas nan tablo itilizatè nou yo pa yo estoke kòm jis fisèl la. Yo yo estoke kòm vèsyon an chiffres, konsa ou pral vle kouri kripte nan fonksyon sou modpas aktyèl la, ak ki pral ba ou kalite ki kòrèk la nan depo pou etalaj la itilizatè. Kouri sa a pral insert yon ranje nouvo nan tablo itilizatè ou an. Fè fas ak fonksyon an sijè rechèch, anvan nan C nou itilize siy ki pousan kòm yon kontneur. Menm jan tou, konsèp la menm nan yon kontneur aplike isit la. Avèk rechèch, ou presize rechèch la tout antye, eksepte nenpòt lè w ap fè fas ak varyab kòm opinyon ou a nan rechèch la, Lè sa a, olye pou yo aktyèlman mete yo andedan - renmen lè nou te gen deklarasyon printf nan C. Nou ta mete fisèl la ak Lè sa a, gen yon kontneur la, ak Lè sa a, apre chak vigil, di ki ki varyab nou te genyen. Isit la, nou ap ale nan sèvi ak siy nan mak kesyon kòm kontneur nou ak Lè sa a, pase nan chak varyab, respektivman nan lòd, pou placeholders yo - kote sa yo varyab ta dwe ale. Se konsa, isit la, ta make nan kesyon premye dwe ranplase pa non itilizatè aktyèl la Lè sa a, make nan kesyon dezyèm nan modpas la. Lè sa a, finalman, yon fwa ou te anrejistre yo e li te ajoute yo nan baz done a, Lè sa a, ou vle ouvri sesyon yo nan sit entènèt la. Nou gen kalite yon super-mondyal sesyon varyab rele. Sesyon pran yon id sèten, e ke id koresponn ak itilizatè a ki nan kounye a louvri sesyon pous Ki sa ki ou pral vle fè se jwenn sa id itilizatè yo se ak Lè sa a, mete sa id sesyon kòm id ki itilizatè patikilye a. Yon fonksyon ki ou pral vle itilize isit la se yon lòd SQL ki pral rekipere dènye nimewo ki antre a id soti nan tab ou. Lè sa a, ranje pral rele - it'll rele id a - it'll asiyen yon non ak kantite ke li tounen lakay la. Li ap rele ke id. Koulye a, nou te fin enskri, epi nou ka deplase sou site. Quote pèmèt yon itilizatè D 'non an nan yon estòk sèten, ak Lè sa a, li pral retounen kalite ki te la yo stock. Ki sa ki ou pral vle fè isit la se gen yon kontwolè ak kèk modèl. Nan ka sa a, nou pwal gen yon kontwolè ki se pral fè tout panse a pou nou. Li k ap pase yo gade jiska senbòl la ak Lè sa a, pase nan valè modèl yo ki pral enprime soti. Nou pwal gen 2 modèl isit la. Nou pwal gen 1 modèl ki bay fòm nan nan ki itilizatè yo pral D 'non an nan stock la - non an nan pataje a. Lè sa a, n ap tou ale nan vle another modèl ki montre valè sa yo. Ou ka gade nan login pou yon egzanp sou kouman ou ta gen yon fòm ki asepte opinyon, eksepte nan la a, nou sèlman vle 1 jaden. Nou pa vle yon non itilizatè ak yon modpas jaden. Nou jis vle 1 jaden tèks ki pèmèt itilizatè a D 'non an nan yon estòk sèten. Lè sa a, ou vle voye ke done - yon fwa ou te leve je l 'ki stock - quote_form.php. Passage ap retounen senbòl la nan yon estòk, non an, ak pri a. Moun sa yo ki ap genyen nan yon etalaj asosyatif. Gade anlè fonksyon an Passage andedan functions.php la pou plis enfòmasyon sou ki kalite retounen nan moun ki. Gwo! Se konsa, Lè sa a, finalman, ou pral vle montre enfòmasyon an stock. Ou pral vle pwobableman montre - you'll vle gen aksè a sa yo varyab. Yon fwa ou gen pri a nan yon varyab - kòm byen ke non ak senbòl la - Lè sa a, ou pral vle montre sa yo ki nan paj modèl ou yo. Te kapab paj sa a modèl ka rele show_quote.php oswa yon bagay. Paj quote.php ou a ta fè quote montre ak Lè sa a, pase nan tout valè sa yo. Lè sa a, nan paj php ou a, ou aktyèlman enprime soti valè sa yo aspè nan HTML nan paj la. Ou jis sèvi avèk fonksyon an ekri ak lèt ​​detache epi yo pase nan pri an. Gen 2 fason - ou ka swa anchene l 'ak operatè a dot, oswa itilize yon kontneur. Itilizatè yo evantyèlman yo pral achte ak vann aksyon. Nou vle pèmèt yo kèk fason yo wè tout aksyon yo ke yo genyen kounye a. Nou pral rele ke pòtfolyo yo. Pòtfolyo ta, prezimableman pou chak itilizatè, genyen yon pakèt moun sou ranje lis ki kalite pati nan yo ke yo gen ak Lè sa a, ki jan anpil nan moun ki yo genyen. Tab ki egziste deja nou an - kounye a nou gen yon tab itilizatè nan baz done nou an. Ki gen non itilizatè yon itilizatè a kòm byen ke modpas yo ak konbyen lajan kach yo genyen. Genyen nan okenn fason reyèl nan estoke tout aksyon yo nan sa. Li pa tankou nou ka insert kolòn nouvo pou chak stock. Ki ta ka yon ranje trè, trè long paske nou gen yon kantite enfini de kalite aksyon yo ke yo te ka genyen. Se konsa, olye sa nou pral fè se nan baz done a menm, n ap gen yon tab itilizatè yo, men Lè sa a, nou pral gen tou yon tab pòtfolyo. Ap Tablo ki pòtfolyo dwe definitivman lye nan tab la itilizatè yo, men olye estrikti nan tablo pòtfolyo ap gen enfòmasyon an aksyon, konbyen aksyon nan ki stock itilizatè a gen, kòm byen ke an patikilye nimewo id yon itilizatè a. Ou gen tab la itilizatè yo ki te gen yon id kòm byen ke non itilizatè a, regle la - ki se modpas la, modpas la chiffres - ak Lè sa a, kantite a lajan kach yo genyen. Ta nimewo a id dwe lye nan nimewo a id soti nan dosye a. Pòtfolyo sa a ta ka jis gen senbòl la nan stock a kòm byen ke aksyon yo - ki kantite aksyon nan ki stock ki itilizatè a te genyen an. Nan ki tab pòtfolyo ou ta gen basically tout aksyon posede pa tout nan itilizatè yo sou sit ou. Pita nan, ou presize sèlman pataje yon itilizatè sèten a - sèlman pòtfolyo yo - ou ta rekipere valè ki nan tablo pòtfolyo ou a sa yo ki nimewo a id a espesifik a ki itilizatè. Lè ou montre dosye a, ou pral vle rapòte chak nan aksyon yo ki nan dosye yon itilizatè a. Ou pral vle yo rapòte kantite aksyon ak valè aktyèl la nan sa yo aksyon. Sa valè aktyèl nan sa yo aksyon se pa sa ki estoke nan tab la pòtfolyo paske men sa k ap pase yo dwe mete ajou - nan minimòm - chak jou pa Yahoo. Pou jwenn enfòmasyon sa a, ou pa kapab referans ki soti nan sijè rechèch SQL ou a. Ki sa ki fonksyon bay mele nou sa? Ki sa ki fonksyon pral jwenn pri a? Sa a Passage, se konsa lè l sèvi avèk Passage sou yon senbòl patikilye ap ba ou yon anpil enfòmasyon. Li pral ba w 3 moso nan enfòmasyon - Non a, senbòl la, kòm byen ke pri an. Yon fwa ou Passage yon senbòl sèten, Lè sa a, ou kapab jwenn pri a, ak Lè sa a, ou ka itilize pri a yo dwe parèt nan dosye ou. Pòtfolyo a ta dwe tou montre aktyèl balans itilizatè a lajan kach. Se ke jaden ki estoke nan tab itilizatè ou an. Se konsa, Lè sa a, sonje ki jan n ap basically gen yo - nou ap gen diferan kalite dosye PHP. Nou pwal gen yon kontwolè ki basically fè tout panse a pou ou. Lè sa a, nou gen yon modèl nan ki modèl la kontra ak sorti done. Ou gen panse a sa ki varyab kontwolè a pral bezwen pran in. Si nou ap fè fas ak yon pòtfolyo ki sorti chak non, senbòl, ak nimewo pataje, kòm byen ke aktyèl pri de yon estòk, Lè sa a, ou pral vle jwenn kèk fason pou basically pase nan - ou ka pase nan yon etalaj de valè ki koresponn ak sa. Ann al nan yon egzanp sou kouman ou ta ka rekipere tout nan aksyon yo posede pa yon itilizatè patikilye. Sa a se pa sa fè fas - ankò - ak pri a nan stock la. Ki sa sa ta fè se kouri nan yon sijè rechèch. Li ta jwenn senbòl a kòm byen ke aksyon yo nan - M ap rele tablo sa a, men nan ka sa a ki sa li ta kapab pran? Ki sa ki nan non yo nan tablo a ke nou ap fè fas ak ki gen senbòl ak pataje pou yon itilizatè patikilye? Li nan swa itilizatè oswa pòtfolyo. Pòtfolyo. Ki sa sa ta fè se dosye rechèch pou senbòl yo, epi aksyon pou yon itilizatè patikilye. Isit la, mwen vle di, (Chwazi senbòl, aksyon KI SOTI NAN tbl - men olye pou yo tab, w ap ale nan ranplase sa ak pòtfolyo. 'Ki kote' se fondamantalman kondisyon m 'yo. M ap di mwen sèlman vle jwenn sa yo ranje asosyatif ki koresponn  sa a kondisyon sa yo - id egal.  Lè sa a, mwen mete yon kontneur gen ak Lè sa a, id sesyon. Ki sa sa ta fè se di pou chak ranje nan ranje. Sa a se yon fason pwòp olye pou yo aktyèlman gen yo mete kanpe yon pou riban ki iterates sou tout nan endèks yo, Lè sa a, nan PHP ou ka gen yon pou-chak riban. Si ou gen yon etalaj bay yo, lè sa a ou ka di mwen pral rele chak eleman siksesif - Mwen pral rele chak eleman sa a non. Se konsa, pou chak youn nan eleman sa yo, mwen pral rele yo sa a, Lè sa a, mwen ka fè sa. Nan sa a pou chak, ou gen ranje kòm etalaj aktyèl ou, epi chak ranje w ap ale nan rele ranje. Chak fwa li ègzekutra kò a, li pral leve, li li pral mete ajou ranje eleman nan pwochen nan ranje. Koulye a, an tèm de achte aksyon, ki sa nou vle fè se jwenn stock la ki itilizatè a vle achte ak kantite lajan an nan aksyon ki itilizatè a vle achte, ak Lè sa a, - si yo vle - ajoute ke machandiz yo pòtfolyo yo. Li evidan, si yo ap achte yon bagay, Lè sa a, ki nan ale nan diminye kantite lajan yo gen, se konsa ke a pral diminye lajan kach yo. Nou ap pral fè fas ak mete ajou dosye a kòm byen ke tab la itilizatè yo, ki gen lajan kach la. Men, an premye, ou bezwen jwenn stock aktyèl la ak kantite lajan pou aksyon ki itilizatè a vle. Pou sa, ou pral bezwen yon fòm HTML ki pral mande pou senbòl la nan stock la ke ou vle achte kòm byen ke nimewo ki gen aksyon. Lè sa a, ou pral vle ajoute. Ou pral vle chwazi valè a sèten. Nou te ale nan sa a yon ti jan deja, men lè w ap eseye jwenn ranje sèten - rekipere ranje sèten soti bò tab la SQL, sa a se sentaks ki anba la a. Ou te chwazi, ak Lè sa a, si ou presize yon etwal, ki pral fondamantalman retounen antye, tout ranje a pou ou. Lè sa a, ankò, ou gen kondisyon an, kote, ak Lè sa a, ou presize - Mwen sèlman vle non itilizatè la yo dwe egal a lapòs nan-, konsa li pral sèlman rekipere ranje a nan itilizatè ki koresponn ak lapòs nan-. Lè yon itilizatè vle ajoute yon pati nan nan yon dosye pou yo, ou bezwen yo tcheke pou yon erè kèk. Ou vle asire w ke itilizatè a kapab aktyèlman peye stock la, konsa ou pral vle tcheke lajan kach yo. Anvan, nou itilize zetwal rekipere yon ranje tout antye ki sòti nan yon tab SQL. Men, isit la, nou ka aktyèlman jis presize ke mwen sèlman vle 1 valè a - Mwen sèlman vle lajan kach. Se konsa, isit la, li ta retounen lajan kach la pou itilizatè ki gen nimewo id 1. Si yon itilizatè deja te achte yon stock sèten men Lè sa a, achte plis nan ki aksyon, Lè sa a, nan pòtfolyo ou - ou pa vle yon liy apa, yon lòt ranje ki a ki gen ladan tranzaksyon nouvo. Ou aktyèlman vle mete ajou kantite lajan an. Tout sa ki nan chanje vrèman se kantite lajan an de aksyon ke ki itilizatè posede. Si ou itilize insert a nan rechèch - se konsa li jis insert nan pòtfolyo ou tout moun sa yo valè - Nimewo ID itilizatè a kòm byen ke senbòl la nan stock nan yo ke yo ap achte ak pataje yo, Lè sa a, ou pral vle tou presize, byen, si mwen kouri antre nan yon kle kopi - nan ka sa a, kle a kopi se pa sèlman id itilizatè a, men tou senbòl bousye a - paske ou ka sèlman genyen - site nou an se ke ou ka sèlman gen 1 ranje  ki koresponn a 1 senbòl espesifik. Se konsa, sou kle a kopi - si ou kouri antre nan yon kolizyon gen - w ap sèlman ale nan mete ajou pataje valè nouvo li yo. Aksyon egal tou sa nou te genyen anvan plis kantite aksyon ki itilizatè a ap achte. Kounye a ke nou te mete ajou tab la pòtfolyo, nou pral vle mete ajou lajan kach itilizatè a la. Sa a nan tablo a itilizatè yo, pou nou ap pral soustraksyon yon sèten kantite soti nan lajan kach. Prezimableman, li te pral fè lajan kach egal mwens lajan kach - ak Lè sa a, yon sèten kantite. Pou w bay nouvo lajan kach la, ou ta - si mwen te vle pran lajan nan men lapòs-nan, Lè sa a, mwen ta kouri sa a sijè rechèch - 'Update divinò yo ak Lè sa a, mete kolòn nan lajan kach nan lajan kach - Mwen ta retire dola 9,999 sèlman si non itilizatè a se egal a lapòs nan-. Men, nan ka sa a, nou pa vle fè soustraksyon 9,999 espesyalman. Nou vle presize, byen, nou vle fè soustraksyon pri aktyèl la nan stock la miltipliye pa kantite aksyon yo ke yo ap achte. Koulye a, nou te pèmèt yo wè tout nan aksyon yo ke yo genyen, kòm byen ke achte plis aksyon. Nou menm tou ki te deja pèmèt yo gade moute pri aktyèl la nan yon estòk. Isit la nou vle pèmèt yo vann yo. Premye nou vle montre fondamantalman - nou vle pèmèt yo wè tout nan aksyon yo ke yo genyen, Se konsa isit la nou vle montre tout nan ranje yo nan dosye a. Si yo chwazi nan vann yon estòk sèten, Lè sa a, nou pral asime ke yo vle vann tout nan li. Yo pa gen jis pral vann 50% nan aksyon yo, yo pwal santi yo vann 100% nan li. Nou ka jis efase ranje a tout antye nan pòtfolyo. Nou ka efase aksyon itilizatè a bay la nan senbòl la a sèten. Genyen nan sentaks la pou sa. Lè sa a, nou vle mete ajou lajan kach la. Nou ap pral ajoute nan lajan kach la egal a kantite lajan an de aksyon yo ap vann miltipliye pa pri aktyèl la nan stock la - pa pri a nan kote yo te achte li, men pito pri a nan kote yo yo se - pri aktyèl la yo lè yo ap vann li. Referans pri aktyèl la nan yon estòk, ou pral vle itilize Passage, ki pral ba ou pri a nan yon estòk nan moman aktyèl la. Koulye a, nou ap kite avèk istwa, ki ou vle pèmèt yon itilizatè nan kenbe tras nan tout tranzaksyon yo - vle wè chak fwa yo te vann yon bagay, chak fwa yo achte yon stock. Nou vle presize tan an nan kote yo te fè sa kòm byen ke konbyen yo te achte epi ki sa aksyon sa te pase. nou gen nenpòt ki kounye-a, ki deja egziste estrikti ki espesifye sa? Oke, nou gen dosye ki montre aksyon yo nimerik ki yon itilizatè gen pou yon pati nan bay yo. Men, n ap òganize dosye nan fason ke li mete ajou lè nou achte miltip, Lè nou konsidere ke istwa yo ta dwe - si ou achte Apple, 10 aksyon nan li, ak Lè sa a, pita sou vann 5, Lè sa a, ou ta vle wè sa yo separeman kòm aksyon ki apa a, ranje separe. Lè nou konsidere ke aksyon sa a visualized ki nan tablo pòtfolyo nou an ta jis pou yon ajou ak sa yo ki ranje an patikilye,  se konsa n ap pwobableman ale nan yon lòt vle tab. Nan baz done nou an, nou gen tab itilizatè nou an, nou gen tab pòtfolyo nou an, e kounye a, nou pral pwobableman vle yon tab listwa. Sa tab istwa ka kenbe tras nan dat aktyèl la, kòm byen ke senbòl nan stock patikilye, kòm byen ke konbyen aksyon, ak Lè sa a, ki aksyon li se - si ou te achte sa yo aksyon oswa si ou te vann yo. Fè fas ak dat, gen yon koup nan fason ke ou ka fè sa. PHP gen yon jan pou kenbe tras de dat, kote ou ka gade moute tèt ou. Nan SQL ou ka tou itilize swa kounye a oswa timestamp ye kounye a. Sa a moute nan ou. Jis asire w ke chak fwa yon itilizatè achte oswa vann, ou pral mete ajou lajan kach yo nan tablo a itilizatè yo, ou pral mete ajou ranje yo nan tablo a pòtfolyo, Lè sa a, ou pral tou pou mete ajou istwa a, Se konsa, gen pwal 3 separe queries SQL ke ou pral dwe rele la. Nou gen yon pakèt moun sou fonksyonalite kounye a. Jis yon koup la rapèl ke nan dosye endèks ou a, ou pral vle konekte nan omwen ou - men ou pral vle pèmèt yon itilizatè ap mennen nan paj la buy.php. Sa a pral pèmèt yon itilizatè - buy.php se kontwolè a, se konsa ke a pral swa voye ou bò kote - sa a pral voye ou nan fòm lan ki pèmèt ou gade sou bagay yo. Nou gen istwa. Nou te antre soti, jwenn yon quote ak Lè sa a, vann. Moun sa yo se nan minimòm ki sa ou vle montre. An tèm de dosye a, se pòtfolyo a aktyèlman yo montre nan paj la endèks. Si nou ale nan endèks, isit la nou wè ke li rann portfolio.php epi pase nan etalaj la asosyatif - fondamantalman tit la egal pòtfolyo. Se konsa,, sa a se kontwolè a. Si nou ale nan modèl la nan portfolio.php, Lè sa a, tout li gen se - montre fondamantalman yon foto ki di, o, sit sa a se anba konstriksyon. Pita sou, yon fwa ou pase nan - you'll dwe pase nan enfòmasyon fondamantalman plis espesifik. Olye pou yo jis tit la, ou pral pwobableman ap pase nan plis bagay sa yo. Yon fwa ou gen valè sa yo, lè sa a portfolio.php ka fè fas ak valè sa yo ak enprime yo soti kite nan nenpòt ki sòt nan lòd. Yon fwa ou te aplike tout moun sa yo, ou ap bezwen tou aplike 1 plis karakteristik. Sa a ka swa dwe pèmèt yon itilizatè chanje modpas yo, retabli modpas yo si yo te bliye li - se konsa pou reset nan modpas, Lè sa a, ou pral pwobableman vle tou edite enskri konsa ke li pèmèt yo presize yon imèl, Se konsa, si yo bliye modpas yo, lè sa a yo ka jwenn sa. Yo ka pwobableman antre nan non itilizatè yo, epi yo Lè sa a, yo pral yon imèl ap voye yo ak yon lyen pou kapab retabli modpas yo. Ou ka gen yon bagay ki pèmèt itilizatè yo jwenn resi chak fwa yo achte oswa vann yon bagay, ak Lè sa a, finalman, pèmèt yo ajoute lajan kach yo sou sit entènèt yo. Jis ale tounen nan konsèp la nan contrôleur ak modèl yon ti jan. Ou pral gen yon bagay tankou yon - se konsa ou pral gen yon kontwolè isit la. Dwa kounye a, nou ap chèche nan egzanp lan login.php. Lè nou gen yon kontwolè, ki fondamantalman li a pral pran 2 ka. Lè nou gen contrôleur, nou ap nan pyès sa a ke nou se tou kalite ki gen rapò ak lè nou gen fòm kòm byen. Kontwolè a pral fondamantalman gen aksyon separe - yon sèl si gen yon fòm yo te deja soumèt, ak Lè sa a, de si itilizatè a ap vini ak sa yo ki paj la pou premye fwa epi li toujou bezwen opinyon ke fòm. Mwen pral Ale nan ka sa a premye anvan ou ale jiska ka a premye ki gen fòm nan pous Isit la nou di, si li te fòm a te soumèt ansanm ak post la metòd - pa enkyete sou ki yon ti jan. pa enkyete sou ki twòp men konprann ke fondamantalman sa a fonksyon kontra ak si yon fòm te soumèt oswa ou pa. Kondisyon sa a se vre si yon itilizatè soumèt fòm nan. Si ou pa, Lè sa a, nou pral vle rele login_form.php rann, ak Lè sa a, pase nan tit la. Sa a tit se jis fondamantalman ale nan parèt nan header la. Ki sa sa fè se fondamantalman di, oke - byen, si yon itilizatè ale nan login.php epi yo pa gen aktyèlman louvri sesyon an, Lè sa a, mwen vle voye yo nan paj la ki gen ke fòm ki pèmèt yo opinyon non itilizatè a ak modpas la. Lè sa a, m 'ale nan login_form, ak Lè sa a, ki gen fòm aktyèl la. Lè sa a,, yon fwa itilizatè a soumèt ki fòm, yo pwal santi yo soumèt li ba login.php ak post la metòd. Lè sa a, mwen aktyèlman ale nan antre nan seksyon sa a nan si-lòt riban m 'yo. Lè sa a, li la nan isit la ke nou fè fas ak valè yo antre nan fòm nan. Li nan isit la ke nou fè fas ak sa yo. Lè sa a, yon fwa ou fè fas avèk valè sa yo - si w ap fè fas ak - di nou ap fè fas ak paj la quote.php kote yon moun kapab D 'yon stock ki yo vle leve kanpe, Lè sa a, wè ke ekspozisyon - sa a, se kalite ki sanble isit la. Isit la nou gen yon fòm login - you'd pwobableman gen yon fòm quote - men Lè sa a, yon fwa ke itilizatè a aktyèlman soumèt enfòmasyon sa a, Lè sa a, ou pral vle kontwolè a pase nan yon lòt modèl ki pral montre yo ke enfòmasyon aktyèl. Se konsa, Lè sa a, dwa alantou isit la, Lè sa a, Ou ap pwobableman - alantou nan fen eta sante ou isit la - si metòd la egal pòs - a Lè sa a, ou pral pwobableman vle rann yon lòt paj - quote a montre - ki voye ou nan paj sa a - show_quote.php-- ak Lè sa a, nan ki dosye yo pral konsilte valè sa yo. ki fè sans? Nou gen yon kontwolè ki fondamantalman kontra ak 2 ka yo - si ou fin rantre nan yon fòm nan oswa ou pa. Si ou pa gen antre nan yon fòm, Lè sa a, li pral redireksyon ou ak sa yo ki fòm, ki pral Lè sa a, mete ou tounen nan paj sa a. Lè sa a,, yon fwa ou gen enfòmasyon ki nan kontwolè a, ke kò pral fè fas avèk ki enfòmasyon jan sa nesesè - swa leve je l 'valè pou stock la, ak Lè sa a, yon fwa li leve je l 'valè sa yo epi ki gen yo nan yon etalaj joliman formate, Lè sa a, kapab pase ki etalaj nan paj la modèl  ki boule ak sorti enfòmasyon sa a. Yon fwa ankò, depi wèb li a, li te pral fè plezi. Nou se deyò nan C pou nou pa ap limite a sa sèlman ASCII la ak ke randman tèminal, konsa gen plezi ak sa a. Ou ka fè li kòm vizyèl kòm ou vle. Ou kapab pèmèt itilizatè yo dè milyon de dola D 'nan yon moman, oswa limite yo yo epi yo dwe reyèlman vle di epi pèmèt yo sèlman a antre nan 1 peni nan yon moman oubyen yon bagay tankou sa. Definitivman asire w ke ou gen plezi ak sa. PHP kòd se yon ti jan ki pi senp nan ke li nan yon ti jan pi fasil kat soti pseudocode ou nan aplikasyon a vrè. Se konsa, definitivman pran plezi ak sa a paske li se aktyèlman moso dènye nou yo nan CS50. Avèk ki, sa a te solisyon 7. Yon fwa w ap fini l ap gade solisyon an ak fini pset ou a, Lè sa a, sa yo ki te tou psets, epi kounye a nou se sou pwodwi final la - apre nou fin jwenn nan egzamen 1. Lè sa a, èspere ke ou ka itilize zouti yo ke ou te aprann nan men psets yo - pa sèlman sentaks la, men plis nosyon a abstrè pou konnen kijan pou pran yon sèten - renmen, mwen vle fè sa ak Lè sa a, aktyèlman mete ann aplikasyon sa. Aprann kouman ap goumen ak sentaks ak kòd distribisyon. Lekti kòd lòt moun, ak Lè sa a, entèprete ke lè l sèvi avèk fonksyon pre-egziste ki. Se konsa, bon chans ak pset an dènye. Li te yon plezi a plon valktroug yo. Mwen espere ke yo ve yo te itil pou ou. Se yo ki te valktroug, ak mèsi anpil. [CS50.TV]