>> [Redare a muzicii]
>> ROB BOWDEN: Hi.
Sunt Rob, și sper că sunteți gata pentru a pune stoc în această soluție.
În primul rând, haideți să aruncăm o privire la registru.
Deci, amintiți-vă că aici suntem de verificare pentru a vedea dacă un formular a fost
postate pe această pagină.
>> Deci, primul lucru pe care vom să faceți este să mergeți la altcineva.
Și vom face formularul de registru.
Deci, forma registru se întâmplă pentru a posta la register.PHP.
Și ceea ce este ea de gând să trimită?
Se va trimite un nume de utilizator care utilizatorul este de gând să completeze, o parolă,
și o confirmare -
parola tastat din nou.
>> Deci, acum, în momentul în care forma este postat la register.PHP vom executa acest lucru, dacă.
Privind la acest lucru, dacă, suntem în primul rând va valida de intrare.
Vrem să ne asigurăm că numele de utilizator și parola nu erau goale și că
confirmarea de fapt, se potrivește cu parola.
După ce am verificat că putem înregistra fapt utilizator.
>> Ce înseamnă asta?
Ei bine, ne-o dorim pentru a insera utilizator în baza noastră de date.
Și acest lucru este cum vom face asta.
Deci, vom introduce în utilizatorilor masa câmpurile numele de utilizator,
hash, și bani.
>> Valoarea implicită de numerar va fi de 10.000.
Și vom trece în calitate de nume de utilizator, username, prin POST super-
la nivel mondial, care este prezentat de forma.
Și am de gând să cripta parola.
>> Deci, dacă faptul că a reușit, atunci rezultă va fi non-false.
În cazul în care nu a reușit, atunci ne-am Vreau să-mi cer scuze.
Ceva a mers prost.
Și ce ar putea fi mers prost?
>> Ei bine, trebuie să existe un nume de utilizator unic.
Și astfel interogarea ar fi eșuat dacă numele de utilizator deja
existat în tabel.
Deci, presupunând că a fost un nume de utilizator unic, atunci vom interoga pentru a apuca
ID-ul de acel utilizator.
Amintiți-vă că ID-ul este auto-incrementarea.
>> Și așa că, dacă se întâmplă să eșueze pentru unele motiv, atunci ne-am dori să-mi cer scuze
că nu am putut apuca ID-ul.
Dar presupunând că nu reușesc, atunci ne-am apuca ID-ul de la ceea ce interogarea
returnate, stoca că în sesiunea noastră - așa că doriți să vă conectați la acest utilizator de
stocarea ID-ul în sesiunea super-global, și în cele din urmă
redirecționa la portofoliul nostru.
Și asta este pentru registru.
>> Acum vom trece la citat.
Deci, citat va avea un set foarte similară în sus.
Vedem aici că acesta este codul care vom executa atunci când un formular este
postate pe această pagină.
Dar mai întâi trebuie de fapt pentru a face această formă.
Deci, a lua o privire la forma citat, ce domenii sunt acolo?
>> Vedem că toți citat a este un singur caseta de text cu simbolul nume.
Și astfel, atunci când forma citat este postat a quote.PHP ne acum să
executa acest cod.
Și singura variabilă în POST nostru super- la nivel global va fi simbol.
>> Noi valida ca să ne asigurăm că au scris de fapt simbolul.
Și dacă ei nu, noi vă spunem trebuie să furnizeze un simbol.
Presupunând că a furnizat un simbol, ne uităm în sus ca simbol.
>> Acum, amintiți-vă că aspect sus ar putea avea nu a reușit, deoarece, ei bine, poate că nu a fost un
simbol valabil pentru a începe cu.
Deci, dacă acest privi în sus de returnare false, vrem să-mi cer scuze că
simbol nu a fost găsit.
Odată ce am găsit simbolul, acum ne-am poate face șablonul quote.PHP.
>> Ce înseamnă asta arata ca?
Care este doar de gând pentru a imprima ca o parte indiferent de denumirea stocurilor fost
este în valoare indiferent de prețul de stoc este.
Acum, de ce nu folosim acest htmlspecialchars funcționeze?
Asta pentru ca numele de valori și simbolul ar putea conține, de fapt special
caractere care nu ar trebui să fi interpretat ca HTML.
>> În regulă, deci asta e pentru citat.
Acum vrem să se uite la index.php și de portofoliu.
Dar, în primul rând avem de fapt nevoie pentru a construi masa de portofolii.
Iată cum vom face asta.
>> Deci, haideți să aruncăm o privire la structura.
Și vom vedea că portofoliile masă va avea o identitate.
Astfel că va fi utilizator ID-ul, care este introducerea acțiunilor.
Avem un simbol, care va fi simbol al companiei care suntem
introducerea de acțiuni pentru.
Apoi acțiuni este numărul de acțiuni care este introdus.
>> Deci, amintiți-vă că pe spec. PSET, precizăm că ID-ul și simbol -
vom verifica indici, ID-ul și Simbolul este cheia primară.
Deci, un ID de utilizator și simbol asociere ar trebui să apară doar o singură
timp în acest tabel.
Acum, să ne uităm la codul.
>> Deci, acum index.php se va apuca toate de informații noastre de portofoliu și
afișa pentru utilizator.
Deci, în primul rând, vom apuca de numerar că utilizatorul are în prezent din
masă cash.
Amintiți-vă, că interogarea este întotdeauna o pentru a reveni o serie de tablouri.
Deci, chiar dacă am selectat doar cash de la un singur rând, avem încă nevoie de
apuca că numerar prin indexarea în index zero din rânduri și hapsân
index numerar.
>> Deci, acum ne-o dorim pentru a selecta toate informații de la masa de portofolii
care este relevant pentru în momentul respectiv conectat la utilizator.
Noi, desigur, trebuie să valideze că că de fapt a reușit, pe care ne-am
ar trebui să facă întotdeauna ori de câte ori am interogare.
După ce vom avea toate aceste informații, spec. PSET ne informează că noi
ar trebui să facă acest lucru în scopul de a stoca frumos toate informațiile în acest
poziții de matrice.
>> Deci, suntem looping peste tot a informații portofoliu, uita în sus
stoc asociate cu fiecare rând din informatii de portofoliu, și apoi
stocarea în matrice poziție numele, pret, acțiuni și simbolul toate
asociate cu acest stoc.
Și, în sfârșit, vom face portfolio.PHP, trecând în suma
de numerar, avem în prezent, poziții matrice care ne-am
construite, și titlul acestui Pagina care va fi de portofoliu.
>> Să aruncăm o privire la portfolio.PHP.
Și vom vedea că interesante majore parte este această buclă.
Deci, suntem looping pe pozițiile matrice, creând o
masă, în cazul în care masa -
suntem popularea fiecare rând cu informații pe care ne-am pus în interiorul
poziții de matrice.
>> Din nou, avem nevoie de a utiliza htmlspecialchars în cazul în care acest simbol sau numele
conțin caractere HTML.
Și aici suntem înmulțirea prețului și numarul de actiuni pe care le avem
în scopul de a obține cât de mult e valoare în prezent pentru utilizator.
Și asta e tot pentru portofoliul.
>> Acum, vom arunca o privire la vânzare.
Deci vinde este de gând să se întoarcă la Formatul pe care am avut-o în register.PHP.
Vedem că un formular se va pentru a fi postate pe această pagină.
Dar, în primul rând, atunci când am incarca pagina, am de gând să facă acest lucru.
>> Deci, ceea ce se face acest lucru?
Ei bine, am putea avea doar pagina vinde au o singură casetă text pe care utilizatorul
introduce acest simbol care vrem să-și vândă.
Dar vom fi un pic mai inteligent și vom avea o scădere
jos, care permite utilizatorului să selecteze simboluri reale pe care le au deja.
>> Deci, ne apropiem de portofoliu utilizatorului.
Vom selecta din portofoliile toate simbolurile care utilizatorul
are în prezent, în momentul respectiv conectat la utilizator.
Asigurați-vă că a reușit.
Și acum vom bucla peste întors de informații, doar hapsân
fiecare simbol, și stocarea în această matrice simboluri.
>> Și acum vom face forma vinde.
Deci, formularul se va vinde la doar fi un meniu drop-down, o selectați.
Și fiecare opțiune în formularul de vanzare este merge pentru a imprima doar din simbolul
că am desprinsa din masă portofolii.
>> Deci, formularul se va vinde la prezenta înapoi la sell.PHP.
Privind la sell.PHP, acesta este codul care se va executa atunci când ne supunem
la această pagină.
Vrem să valideze faptul că utilizatorul intrat de fapt un simbol.
>> Acum, presupunând că au făcut -
așa că acum ne-o dorim pentru a determina cât de multe împărtășește utilizatorul este de fapt de vânzare
și cât de mult bani, utilizatorul trebuie să obțineți pentru vânzarea de faptul că multe acțiuni.
Deci, ne-am apuca de numărul de acțiuni pe care utilizatorul are pentru acest simbol.
Căutăm în portofolii pentru dat de utilizator și simbolul dat.
>> Acum, asigurați-vă că de fapt returnat un rând.
Pentru că, dacă nu a făcut, utilizatorul nu are de fapt, că simbolul pentru a vinde.
Presupunând că nu au acest simbol, ne-o dorim pentru a apuca numărul de
acțiunile pe care le au.
Și acum vrem să se uite în sus cum mult fiecare acțiune este în valoare.
>> Așa că am folosit căuta funcția.
Căutăm până la valoarea a simbolului.
Presupunând că privi în sus a reușit, acum vom actualiza de fapt, toate
informațiile.
Așa că vrem să-l ștergeți din portofoliile acțiunile pe care le vinzi.
Vrem să actualizeze utilizator sumă de bani.
>> Și suntem o actualizare de acțiuni ori prețul de vînzare -
așa că e cât de mult bani utilizatorul tocmai a făcut.
Și acum vrem să actualizeze istoria noastră.
Deci, nu am luat o privire la masa istorie încă.
Deci, vom reveni la acest lucru.
>> Acum, în cele din urmă vom redirecționa înapoi la portofoliul.
Acum, haideți să aruncăm o privire la buy.
Deci, cumpăra ar trebui să fie destul de similară a vinde.
>> Vedem că vom merge din nou pentru a verifica pentru a vedea dacă suntem
prezentarea la această pagină.
Presupunând că nu suntem, suntem merge pentru a încărca formularul de buy.
Deci, ce are forma buy arata ca?
>> Vedem aici că este doar un obișnuit forma care va
prezenta înapoi la buy.PHP.
Și că va avea un simbol care utilizatorul intră, numărul
acțiunile pe care utilizatorul dorește să le cumpere de care simbol, și asta e tot.
Așa că atunci când ne supunem înapoi la buy.PHP, suntem acum va executa acest cod.
>> Ne dorim din nou, pentru a valida faptul că utilizatorul a intrat ceva valid.
Deci, aici suntem asigurându-vă că intrat de fapt un simbol.
Aici suntem asigurându-vă că acestea acțiuni introduse de fapt.
Și aici suntem asigurându-vă că acestea a intrat un număr întreg de acțiuni, astfel încât
ei nu încearcă să cumpere acțiuni ABC.
>> Acum vrem să se uite în sus prețul de Simbolul așa că știu cât de mult ne-am bani
trebuie să scadă de la utilizator.
Acum, vom selecta cât de mult bani utilizator de fapt, are și asigurați-vă că
că a reușit.
Aici suntem hapsân banii.
Și acum aici, facem sigur că utilizatorul are suficient numerar.
>> Deci, în cazul în care numărul de acțiuni a utilizatorului vrea să cumpere ori prețul de fiecare
dintre aceste acțiuni este mai mare decât Suma de bani pe care o avem, atunci
utilizatorul nu își pot permite asta.
Presupunând că utilizatorul are suficient numerar, acum ne-o dorim pentru a insera în
Portofoliul utilizatorului.
Ei bine, vom introduce în Utilizatorului Portofoliul dacă acest lucru se întâmplă să fie
prima dată când utilizatorul este de cumpărare ca simbol special.
>> Dar ceea ce în cazul în care deja se întâmplă de a avea unele stocul Apple?
Ei bine, acum vom face uz de pe duplicat declaratie de actualizare a cheii.
Deci, acesta este motivul pentru care am precizat mai devreme că ID-ul și ar trebui să fie un simbol comun
cheie primară, astfel încât, dacă vom încerca să introduceți un ID și simbol, care sunt
deja acolo, vom actualiza doar acțiuni pentru a include noi acțiuni care
utilizatorul este de cumpărare.
>> Acum vrem să actualizeze valoarea de numerar că utilizatorul are, din moment ce
doar cheltuit niște bani cu privire la aceste acțiuni.
Și, în sfârșit, vom actualiza tabelul istorie din nou.
Ceea ce, din nou, ne vom uita la un al doilea.
Și, în sfârșit, vom redirecționa înapoi la portfolio.PHP.
>> Deci, haideți să aruncăm o privire la tabelul istorie.
Acum, amintiți-vă că tabelul de istorie este ar trebui să țină evidența tuturor cumpără și
vinde că toți utilizatorii fac, nu doar numărul actual de acțiuni pe care
Utilizatorii au, care este ceea ce Portofoliul este pentru.
Așa că urmărirea a utilizatorului care este de cumpărare sau de vânzare, dacă
această tranzacție a fost un buy sau o vinde, simbolul ca fiind
, numărul de acțiuni cumpărate sau vândute că suntem de cumpărare sau de vânzare,
Prețul de o cotă unică care fiind cumpărat sau vândut, și în cele din urmă, timpul de
că această cumpărare sau de vânzare are loc.
>> Și asta e tot din istorie informații de care avem nevoie
pentru a ține evidența.
Așa că atunci când ne-am uitat la vanzare, am văzut că am fost inserarea în istorie vinde,
ca daca suntem de cumpărare sau de vânzare, ștampila ora curentă, și
utilizatorului curent, simbolul care este fiind vândut, numărul de acțiuni care sunt
fiind vândute, și prețul de stocul în acest moment.
În mod similar, în cumpara, acesta va arata aproape la fel.
Singura diferență este în schimb de vânzare, suntem de cumpărare.
>> Deci, în vinde și cumpăra, ne introduce în tabelul istorii cele de mai
cumpără și vinde, care se întâmplă.
Deci, toate history.PHP trebuie să faceți este să apuca informațiile din istoria
masă, asigurați-vă că a reușit, și face aceste informații.
Deci, uita la șablonul history.PHP, interesant informațiile
Este chiar aici.
>> Suntem looping peste tot a tranzacții, de imprimare dacă aceasta
a fost o cumpere sau să vândă, formatare de timp data că am făcut această tranzacție.
Amintiți-vă avem nevoie pentru a utiliza htmlspecialchars privind
simbol, doar în cazul în.
Și, în sfârșit, de formatare a numărului de acțiuni care au fost cumpărate și prețul
de o singură cotă la acel moment.
>> Și care afișează toate din istorie informații de care avem nevoie.
Și asta-i tot pentru acest PSET.
Numele meu este Rob, și acest lucru a fost CS50 Finance.