>> [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.