[MUSIC nagpe-play] Rob BOWDEN: Hi. Ako Rob, at Umaasa ako na ikaw ay handa na upang ilagay ang stock sa solusyon na ito. Una, sabihin tumagal ng isang pagtingin sa rehistro. Kaya tandaan na dito kami pagsuri upang makita kung ang isang form noon ay nai-post sa pahinang ito. Kaya unang bagay na kami ay pagpunta gawin ay pumunta sa iba. At kami ay pagpunta sa render ang rehistro form. Kaya ang rehistro na form ay pagpunta mag-post sa register.PHP. At ano naman magpadala? Ito ay pagpunta upang magpadala ng isang username na ang gumagamit ay pagpunta sa punan, isang password, at isang kumpirmasyon - muli-type ang password. Kaya ngayon kapag anyo na naka-post sa register.PHP magpapadala kami isakatuparan ito kung. Sa pagtingin sa ito kung, hindi namin unang pagpunta sa patunayan ang mga input. Gusto naming siguraduhin na ang username at password ay hindi walang laman at na ang kumpirmasyon talaga Tumutugma ang password. Sa sandaling na-verify mo namin na makakaya namin talaga magparehistro user. Ano ang ibig sabihin na? Well, gusto naming upang ipasok ang gumagamit sa aming database. At ito ay kung paano gagawin namin iyon. Kaya kami ay pagpunta upang ipasok sa mga gumagamit talahanayan ang user name field, hash, at cash. Ang default na halaga ng cash ay magiging 10,000. At kami ay pagpunta sa pumasa bilang username, username, sa pamamagitan ng POST super global na naisumite mula sa form na ito. At kami ay pagpunta upang i-encrypt ang password. Kaya kung nagtagumpay na, pagkatapos ay nagreresulta Magiging di-false. Kung nabigo ito, pagkatapos namin nais na humihingi ng paumanhin. May nangyaring mali. At kung ano ang maaaring nawala mali? Well, doon ay kailangang maging isang natatanging username. At kaya makakapag-Nabigo ang query kung ang username na umiral sa talahanayan. Kaya kung ipagpalagay na ito ay isang natatanging username, pagkatapos kami ay pagpunta para sa mga tanong sa grab ang ID ng gumagamit na iyon. Tandaan na ang ID ay auto-incrementing. At kaya kung iyon ang mangyayari sa mabibigo para sa ilang mga dahilan, pagkatapos ay nais naming Humihingi na hindi namin ma-grab ang ID. Ngunit sa pag-aakala na hindi ito mabibigo, at pagkatapos ay grab namin ang ID mula sa kung ano ang query ibinalik, mag-imbak na sa aming session - kaya gusto naming i-log ang gumagamit na ito sa pamamagitan ng pag-iimbak ng mga ID sa session sobrang global, at sa wakas ay nagre-redirect sa aming portfolio. At na ito para sa rehistro. Ngayon kami ay pagpunta upang lumipat sa quote. Kaya quote ay pagpunta sa may isang talagang katulad na set up. Nakakakita kami dito na ito ang code na kami ay pagpunta upang maisagawa kapag ang isang form ay nai-post sa pahinang ito. Ngunit una talagang mayroon kami mag-render ng form na iyon. Kaya ng pagtingin sa quote form, ano patlang ay doon? Nakita namin na ang lahat ng mga quote na ay isang solong kahon ng teksto na may simbolong pangalan. At kaya kapag quote form na naka-post sa quote.PHP kami ngayon ng pagpunta sa isakatuparan ang code na ito. At ang tanging variable sa aming POST super global ay magiging simbolo. Patunayan namin na upang matiyak na sila talaga nag-post ng simbolo. At kung ginawa nila hindi, sinasabi namin sa iyo ay dapat magbigay ng isang simbolo. Sa pag-aakala nila ginawang magbigay ng isang simbolo, Inaasahan up namin simbolo na. Tandaan Ngayon na hitsura up na maaaring mayroon Nabigo ang simula, well, siguro ay hindi ito isang wastong simbolo upang magsimula sa. Kaya kung ito tumingin hanggang return false, gusto naming Humihingi na ang simbolo ay hindi natagpuan. Sa sandaling nahanap na namin ang simbolo, ngayon namin Maaari render ang template quote.PHP. Ano ang ibig na hitsura? Na lamang ng pagpunta sa i-print na binahagi ng anuman ang pangalan ng mga stock noon ay ay nagkakahalaga ng kahit ano ang presyo ng stock ay. Ngayon bakit ko gagamitin namin ito htmlspecialchars gumana? Iyon ay dahil sa ang pangalan ng mga stock at simbolo maaaring aktwal na naglalaman ng mga espesyal na character na dapat hindi mangahulugan bilang HTML. Ang lahat ng mga karapatan, sa gayon na ito para sa quote. Ngayon nais namin upang tumingin sa index.PHP at portfolio. Ngunit unang aktwal na kailangan namin upang bumuo ng mga talahanayan ng mga portfolio. Narito kung paano kami ay pagpunta upang gawin iyon. Kaya ipaalam sa tumagal ng isang pagtingin sa istraktura. At nakita namin na ang mga portfolio talahanayan ay pagpunta sa magkaroon ng isang ID. Kaya na pupuntahan maging ng gumagamit ID na pagpasok ng pagbabahagi. Mayroon kaming isang simbolo, na kung saan ay magiging ang simbolo ng mga kumpanya na hindi namin pagpasok ng pagbabahagi para sa. At pagkatapos ay pagbabahagi ay ang bilang ng pagbabahagi na idina-ipinasok. Kaya tandaan na alinsunod sa mga pset spec, aming tinukoy na ID at simbolo - check out namin ini-index, ID at simbolo ay ang pangunahing key. Kaya ang isang user ID at simbolo pagpapares dapat lamang lumitaw ang isang solong oras sa table na ito. Ngayon tingnan natin ang mga code ipaalam. Kaya ngayon index.PHP ay pagpunta sa grab lahat sa aming mga impormasyon portfolio at ipakita ito sa user. Kaya una sa lahat, kami ay pagpunta sa grab ang cash na ang gumagamit ay kasalukuyang may mula sa cash table. Tandaan, ang query na iyon ay palaging pagpunta upang bumalik isang array ng array. Kaya kahit na lamang ang mga piniling namin cash mula sa isang solong hilera, kailangan pa rin namin upang grab na cash sa pamamagitan ng pag-index sa index ng mga hilera ng 0 at daklot ang cash index. Kaya ngayon ay nais namin upang piliin ang lahat ng impormasyon mula sa talahanayan ng mga portfolio na may-katuturan sa kasalukuyan log in na user. Siyempre namin kailangan upang patunayan na na aktwal na nagtagumpay, saan kami dapat palaging gawin sa tuwing i-query namin. Sa sandaling mayroon namin ang lahat ng impormasyon na iyon, ang pset spec informs sa amin na namin dapat gawin ito upang mag-imbak ng mabuti ang lahat ng impormasyon sa ito mga posisyon ng array. Kaya kami looping sa ibabaw ng lahat ng impormasyon portfolio, hinahanap ang stock na nauugnay sa bawat hilera sa impormasyon portfolio, at pagkatapos ay pag-iimbak sa posisyon na array ang pangalan, presyo, pagbabahagi at simbolo lahat na nauugnay sa na stock. At sa wakas, kami ay pagpunta sa render portfolio.PHP, pagpasa sa halagang ng cash kasalukuyan naming mayroon, ang mga posisyon ng array na namin lamang itinayo, at ang pamagat ng ito pahina na magiging portfolio. Hayaan ang kumuha ng isang pagtingin sa portfolio.PHP. At nakita namin na ang mga pangunahing mga kawili-wiling bahagi ay ito loop. Kaya kami looping sa ibabaw ng mga posisyon array, ang paglikha ng isang talahanayan, kung saan talahanayan na - kami ay populating bawat hilera na may mga impormasyon na naming ilagay sa loob ng mga posisyon ng array. Muli, kailangan naming gamitin htmlspecialchars sa kasong ito simbolo o ang pangalan maglaman ng HTML na mga character. At dito naka-multiply namin ang presyo at ang halaga ng pagbabahagi na mayroon kami sa pagkakasunud-sunod upang makakuha ng kung magkano na Kasalukuyang nagkakahalaga sa gumagamit. At na ito para sa portfolio. Ngayon kami na ang isang pagtingin sa sell. Kaya sell ay pagpunta sa bumalik sa format na namin ay may sa register.PHP. Nakita namin na ang isang form ay pagpunta upang mai-post sa pahinang ito. Ngunit una, kapag load namin ang pahina, kami ay pagpunta sa gawin ito. Kaya kung ano ang ginagawa ay? Well, maaari kaming magkaroon lamang ang pahina sell magkaroon ng iisang kahon ng teksto na ang gumagamit nagpasok simbolong ito na nais naming ibenta. Ngunit kami ay pagpunta sa maging ng kaunti pang matalino at kami ay pagpunta sa magkaroon ng isang drop pababa na nagpapahintulot sa gumagamit na upang piliin aktwal na simbolo na sila ay mayroon. Kaya namin nakukuha portfolio ng user. Kami ay pagpunta upang pumili mula sa mga portfolio lahat ng mga simbolo na ang gumagamit Kasalukuyang, ang kasalukuyang log in na user. Tiyakin na na nagtagumpay. At ngayon kami ay pagpunta sa loop sa ibabaw ng ibinalik na impormasyon, lamang daklot bawat simbolo, at pag-imbak nito sa ganitong mga simbolo ng array. At ngayon kami ay pagpunta sa render ang sell form. Kaya ang sell form ng pagpunta sa makatarungan maging isang drop down na menu, piliin ang isang. At sa bawat pagpipilian sa sell anyo ay pagpunta sa i-print lamang ang mga simbolo na namin grabbed mula sa mga portfolio talahanayan. Kaya ang sell form ng pagpunta sa isumite pabalik sa sell.PHP. Sa pagtingin sa sell.PHP, ito ang code na pupuntahan execute kapag isinumite kami sa pahinang ito. Gusto naming patunayan na ang gumagamit talagang ipinasok isang simbolo. Sa pag-aakala Ngayon na sila ginawa - kaya ngayon gusto naming matukoy kung gaano karaming nagbabahagi ang user ay aktwal na nagbebenta ng at kung magkano ang cash dapat makuha ang user para sa pagbebenta na maraming mga pagbabahagi. Kaya grab namin ang dami ng pagbabahagi na ang user ay may para sa simbolong ito. Hinahanap up kami sa mga portfolio para sa ibinigay ng gumagamit at ang ibinigay na simbolo. Ngayon tiyakin na na aktwal na Nagbalik ang isang hilera. Dahil kung ito ay hindi, ang user ay hindi talaga mayroon na simbolo upang magbenta. Sa pag-aakala ang kanilang ginagawa ay may simbolo na, gusto naming grab ang bilang ng mga pagbabahagi na mayroon sila. At ngayon nais naming maghanap ng kung paano magkano ang bawat share ay nagkakahalaga. Kaya ginamit namin ang pag-andar tumingin hanggang. Hinahanap namin ang hanggang ang halaga ng simbolo. Sa pag-aakala na nagtagumpay ang hitsura up, ngayon kami ay pagpunta sa aktwal na i-update ang lahat ang impormasyon. Kaya gusto naming tanggalin ang mula sa mga portfolio ang pagbabahagi na kami nagbebenta ka. Gusto naming upang i-update ang user halaga ng cash. At naming ina-update ito sa pamamagitan ng pagbabahagi beses ang presyo ng stock - kaya iyan ay kung gaano kalaki ang pera ang gumagamit lang ginawa. At ngayon nais naming upang i-update ang aming kasaysayan. Kaya hindi namin kinuha ng isang hitsura sa talahanayan kasaysayan pa. Kaya magpapadala kami ay bumalik sa ito. Ngayon sa wakas kami ay pagpunta upang i-redirect i-back sa portfolio. Ngayon tumagal ng isang pagtingin sa pagbili ipaalam. Kaya, bumili dapat na kaakit-akit katulad upang magbenta. Nakita namin na muli kami ay pagpunta upang suriin upang makita kung kami ay pagsusumite sa pahinang ito. Sa pag-aakala na hindi, kami ay hindi namin pagpunta upang i-load ang form sa pagbili. Kaya kung ano ang hitsura ng form na ito na bili tulad? Nakakakita kami dito ito ay lamang ng isang regular na bumubuo na pupuntahan isumite pabalik sa buy.PHP. At ito ay pagpunta sa magkaroon ng isang simbolo na ang user ay pagpasok, ang bilang ng mga pagbabahagi na gusto ni user ang bumili ng simbolo na, at iyon ito. Kaya kapag isinumite kami pabalik sa buy.PHP, kami ay ngayon pagpunta sa execute ang code na ito. Muli naming nais upang patunayan na ang ipinasok ng gumagamit ng isang bagay na wasto. Kaya dito ginagawa namin sigurado sila talagang ipinasok isang simbolo. Narito ginagawa namin siguraduhin na sila talagang ipinasok pagbabahagi. At dito ginagawa namin siguraduhin na sila Nagpasok ka ng integer para sa pagbabahagi, kaya hindi nila sinusubukan mong bumili ABC pagbabahagi. Ngayon gusto naming tumingin hanggang ang presyo ng simbolo upang malaman namin kung magkano ang cash namin dapat ibawas mula sa user. Ngayon gagamitin namin piliin kung magkano ang cash user talaga ay may at tiyakin na na nagtagumpay. Narito kami ay daklot ang cash. At ngayon dito, ginagawa namin sigurado na ang gumagamit ay may sapat na cash. Kaya kung ang bilang ng mga pagbabahagi ng user Nais ni na bumili beses ang presyo ng bawat ng mga pagbabahagi ay mas malaki sa halaga ng salapi na mayroon kami, pagkatapos ay ang hindi kayang bayaran gumagamit na iyon. Sa pag-aakala na ang gumagamit ay may sapat na salapi, ngayon gusto naming ipasok sa portfolio gumagamit. Well, magpapadala kami isingit sa ng gumagamit portfolio kung nangyari ito upang maging unang pagkakataon ang user ay pagbili na partikular na simbolo. Ngunit ano kung ang mga ito na mangyari upang kumuha ng Apple stock? Well, ngayon ginagawa namin ang paggamit ng sa duplicate key update ng statement. Kaya ito ang dahilan kung bakit mas maaga kami tinukoy na ID at simbolo ay dapat na isang magkasanib na pangunahing key, upang kung sinusubukan naming magpasok ng isang ID at simbolo na pa ito doon, gagamitin namin lamang i-update ang pagbabahagi upang isama ang bagong pagbabahagi na ang user ay bumibili. Ngayon gusto naming i-update ang halaga ng cash na ang gumagamit ay, dahil sila ginugol lamang ng ilang mga pera sa mga pagbabahagi. At sa wakas, ia-update namin ang talahanayan kasaysayan muli. Aling, muli, titingnan namin sa sa isang segundo. At sa wakas ay bibigyan namin i-redirect i-back sa portfolio.PHP. Kaya ipaalam sa tumagal ng isang pagtingin sa ang talahanayan kasaysayan. Ngayon tandaan na ang table ng kasaysayan ay dapat subaybayan ng lahat ng mga pagbili ng at nagbebenta na gumawa ng lahat ng mga gumagamit, hindi lamang ang kasalukuyang bilang ng pagbabahagi na ang gumagamit mayroon, na kung saan ay kung ano ang portfolio ay para sa. Kaya Pinananatili namin ang pagsubaybay ng user na bumibili o nagbebenta, kung ang partikular na transaksyon ay isang pagbili o isang sell, ang simbolo na pagiging binili o ibinebenta, ang bilang ng mga pagbabahagi na aming pagbili o pagbebenta, ang presyo ng isang solong bahagi na pagiging binili o ibinebenta, at sa wakas, ang oras ng na ito sa pagbili o nagbebenta ng nagaganap. At iyon ang lahat ng kasaysayan impormasyon na kailangan namin upang masubaybayan. Kaya kapag itinuturing namin ang sell, nakita namin na ang tayo ay pagpasok sa sell kasaysayan, bilang kung kami ay pagbili o pagbebenta, ang kasalukuyang time stamp, at ang kasalukuyang user, ang simbolo na pagiging ibinebenta, ang bilang ng pagbabahagi na ibinebenta, at ang presyo ng ang stock sa oras na ito. Katulad nito, na bili, idedetalye ito Inaasahan ang parehong halos. Ang pagkakaiba lamang ay sa halip ng pagbebenta, kami ay pagbili. Kaya sa sell at bumili, kami ay pagpasok sa talahanayan ng mga kasaysayan sa lahat ng mga bumibili at nagbebenta na nangyayari. Kaya lahat ay kailangang history.PHP lang gawin ay mang-agaw ang impormasyon mula sa kasaysayan mesa, tiyakin na ito ay nagtagumpay, at i-render ang impormasyon na iyon. Kaya ng pagtingin sa mga template history.PHP, ang kawili-wiling impormasyon ay dito mismo. Kami ay looping sa ibabaw ng lahat ng transaksyon, pagpi-print kung ito ay isang bumili o magbenta, pag-format ng oras petsa na ginawa namin sa transaksyong ito. Alalahanin na kailangan namin upang gamitin htmlspecialchars sa simbolo, kung sakali. At sa wakas, ang formatting ang bilang ng mga pagbabahagi na binili at ang presyo ng isang solong bahagi sa oras na iyon. At iyon ay nagpapakita ng lahat ng kasaysayan impormasyon na kailangan namin. At na ito para sa pset. Ang pangalan ko ay Rob, at ito ay CS50 Finance.