[Powered by Google Translate] [Problema Walkthrough Set 7]
[Zamyla Chan] [Universitatea Harvard]
[Acest lucru este CS50] [CS50.TV]
>> Bună ziua tuturor, si bun venit la Walkthrough 7, CS50 Finante.
Acum suntem oficial terminat cu toate psets în CS50,
și suntem tocmai a plecat cu unul mai mult, care va fi o punere în aplicare distractiv
de un site web unde utilizatorii se pot conecta la CS50 Finanțe
și să cumpere și să vândă stocurile.
>> Astăzi, vom avea câteva instrumente la dispoziția noastră.
Vom vorbi despre permisiuni.
Ori de câte ori aveți un folder Web,
ai de gând să doriți să permiteți utilizatorilor să execute anumite fișiere
dar, de asemenea, citit altele,
asa ca vom privi în permisiunile și cum puteți seta cele.
Apoi ne-am de gând să se uite în PHP, HTML, și codul SQL.
>> În primul rând, permisiuni.
Când ești în terminalul într-un anumit director,
atunci ceea ce vrei sa faci este vreți să rulați comanda chmod.
Asta e urmat fie de litere sau cifre
corespunde cu ceea ce practic vor ca lumea să vadă,
te pentru a vedea, etc
De exemplu, ori de câte ori aveți un folder,
atunci vrei ca dosarul să fie executabil de toată lumea că vede,
Deci, ceea ce ar face este că ar putea rula comanda chmod o + x
și apoi numele folderului.
Când aveți un fișier, cum ar fi fișiere CSS sau fișiere imagine -
cum ar fi JPEG și bitmap-uri, lucruri de genul asta, sau orice cod JavaScript -
vrei ca să fie citite de toată lumea,
astfel încât, atunci ceea ce faci este ai putea folosi wildcard -
care este un asterisc -
pentru a indica în principal în dosarul CSS - tot în acel dosar -
Am de gând să spun că va fi citit de toată lumea.
Cu permisiuni, atunci când vom folosi literele,
putem folosi, de asemenea, numere de schimb.
Deci, veți vedea că în cele din urmă atunci când vrei ceva sa fie executabil -
care este reprezentată de numărul 1 -
ceva să fie ușor de citit este numărul 4 și apoi -
scriere este numărul 2 -
și așa mai departe, în esență atunci când doriți o combinație a celor, apoi adăugați-le.
Daca vrei ca ceva să fie ușor de citit, scriere, și executabil,
atunci s-ar adăuga 4, 2, și 1 și care ar da 7,
apoi ori de câte ori aveți un folder pe care doriți să fie executabil de toată lumea -
precum și ușor de citit si scris - apoi face că 7, 1, 1.
Asta ar fi 7 pentru tine, apoi 1 pentru alte persoane.
Când aveți spec., acesta va specifica de fapt care foldere și fișiere care
Trebuie să fie chmod-ed în mod special.
De exemplu, atunci când aveți foldere - acestea sunt 7-1-1 -
atunci când aveți imagini, sau HTML, CSS, JavaScript,
apoi cei care se vor a fi de 6, 0, 4 - sau 6, 4, 4 -
și apoi fișierele PHP sunt de gând să fie de 6, 0, 0.
Ideea din spatele că este faptul că utilizatorii nu ar trebui să vedeți, de fapt codul PHP,
dar fi doar posibilitatea de a vedea de ieșire.
>> Minunat! Mutarea în PHP.
Pur și simplu, ori de câte ori doriți un fișier PHP, sufixul fișierul este. Php.
De asemenea, puteți amesteca HTML cu cod PHP.
Dacă aveți un fișier HTML, de exemplu,
atunci puteți să-l includeți în unghiul din stânga, semn de întrebare, php -
pune codul php - și apoi închideți care cu o altă semn de întrebare și un unghi drept.
Variabile în PHP sunt mult mai ușor de a face cu mult variabile în C.
Orice variabila doar începe cu un semn dolar în fața ei, și ei slab tastat.
Asta înseamnă că nu aveți nevoie să vă faceți griji cu privire la stabilirea ceva
egală cu un șir sau un număr întreg.
Puteți să spun pur și simplu, acesta este numele meu variabilei
și apoi aceasta este valoarea sa,
așa că va fi mai ușor să se ocupe de acolo.
>> Un alt lucru este că PHP vă permite să utilizați tablouri asociative.
Puteți defini pur și simplu doar un array ca tine ar fi, în C
prin a spune, dolar semn-numele dvs. de matrice-egal,
și apoi în paranteze pătrate au practic doar lista de valori ale tuturor elementelor din matrice.
Dar, în PHP ce se poate face, de asemenea, este specifica practic -
e un fel de funcție hash.
Puteți specifica indexul - ceea ce ai de gând să-l numim -
și apoi care corespunde la o valoare.
Dacă treci de fapt, într-un = 1, b = 2, c = 3,
apoi matrice la o indicele ar da 1.
Acest lucru vă va încălzi PSET cu unele PHP într-o secțiune de întrebări,
și apoi vom arunca cu capul în CS50 Finanțe.
>> Avem un cuplu de - avem unele funcționalități, practic,
să pună în aplicare în acest site.
Dorim pentru a permite utilizatorilor să se înregistreze pe site-ul nostru cu un nume de utilizator și o parolă.
Vrem să le permită să se uite un citat,
și apoi ne-ar imprima numele de acel citat, precum și prețul curent, care este la.
Ne dorim pentru a le permite să vadă un portofoliu de toate acțiunile pe care le-au cumparat pana acum.
De asemenea, dorim să le permită să cumpere acțiuni, precum și să le vândă.
Și apoi în cele din urmă, dorim să le permite să vadă istoria
a tuturor tranzacțiilor pe care le-am făcut.
Apoi, în cele din urmă, după ce ați implementat toate că,
atunci ești liber să pună în aplicare o caracteristică suplimentară.
Vom merge în cele.
Acestea pot fi fie permite utilizatorilor pentru a obține bani în plus prin depunerea de numerar în plus,
sau ai putea permite acestora să schimbe parola, sau ceva de genul asta,
prin e-mail o confirmare de primire atunci când cumpără sau vinde un stoc.
Există o listă limitată de caracteristici pe care le-ar putea pune în aplicare tine,
asa ca asta e ultima acolo.
>> Deoarece acesta este un site web, voi avea, de asemenea, o mulțime de libertatea de a-l personaliza.
Noi facem oferi un cod CSS, dar cu siguranta esti liber să-l tweak,
face sa arate mai frumos, dar care stă la baza este o funcționalitate de bază
astfel încât se referă întotdeauna la spec. despre ceea ce ai de fapt nevoie pentru a include acolo.
În urma spec., vom folosi aparatul ca, de asemenea, un server.
O să fie ce gazduieste site-ul nostru pentru noi, pe serverul local.
Dacă urmați aceste instrucțiuni și dezarhivează codul PSET 7 distribuție
în ta virtuala gazda / locale dosar gazdă,
le puteti vizita doar http://localhost/ în Google Chrome în aparat,
și apoi v-ar ajunge codului în care le-ați scris PSET 7.
>> PSET 7 vine cu o grămadă de cod de distribuție,
și, sperăm, weve - prin toate psets înainte de acest lucru -
obișnuiți să ne citirea prin cod de distribuție,
înțelegerea a ceea ce funcții sunt deja oferite, precum și modul în care am putea fi capabili de a utiliza
acestea și celelalte funcții pe care le vom fi de punere în aplicare.
În acest caz, avem 3 foldere.
Avem un dosar HTML, un dosar include și un dosar șabloane.
Ceea ce am de gând să face cu acest PSET este un fel de separare gândire -
gândirea de programare - de cod PHP cu aspectul vizual real.
Vom avea un singur fișier PHP care face toate gândire, citește în baza de date,
printuri lucruri, are în cazul în care situațiile - lucruri de genul asta -
și apoi faptul că va trece de date într-un fișier șablon nostru - sau fișier template.php.
Ceea ce va face este citit de date și apoi îl va imprima.
>> Noi putem trata template-uri ca "prost", în care nu vrem într-adevăr le
să faci o mulțime de muncă în calculul lucrurile.
Ne dorim ca operatorii nostri pentru a face asta.
Un pic pe care - haideți să aruncăm o privire la unele dintre codului de distribuție.
Aici avem fișierul nostru index.html, si e destul de gol.
În esență, ceea ce face - se spune, ei bine, am de gând să solicite fișierul configuration.php.
Noi nu vedem că acolo, dar sună practic fișierul configuration.php,
și de executare asta.
După ce o face, o să facă portofoliului.
Rendering este o funcție, astfel încât ori de câte ori suntem într-un controler,
vom numi face, vom da fișier și apoi datele pe care ne trec prin,
astfel încât acesta va suna în portfolio.php-un fel de-pass în care datele, astfel încât portofoliul poate face cu asta.
>> Și acum, aici, avem formularul nostru login.php.
Aceasta este operatorul care are practic grija de logare inch
Aici, se verifică dacă un formular a fost transmis acest fișier și se ocupă cu validarea depunere.
Ne vom uita în această funcție mi cer scuze.
Când ne-am dori să imprime un mesaj de eroare,
vom folosi cerem scuze și că va redirecționa utilizatorul la o anumită pagină
care se vor imprima mesajul de eroare specific pe care le indica.
Continuând, acesta va interoga baza de date - Vom ajunge în mai mult de asta mai târziu.
Apoi, veți vedea că aici jos, dacă un formular nu a fost prezentat, apoi face un formular.
Asta înseamnă că se duce la login_form.php, așa că hai să uităm la asta.
>> Login.php este de fapt în cazul în care vom vedea ocupă HTML cu aspectul vizual real.
Aici avem o etichetă de intrare pentru numele de utilizator, o intrare pentru parola,
precum și un buton submit.
Asta e de fapt în cazul în care aspectul vizual și formularul HTML se va desfasura.
Aici, se spune că va fi prezentat printr-o anumită metodă, numit post.
Vom intra în diferențele dintre metodele de -
posta versus ajunge, există, de asemenea ceva numit pus -
vom intra in aceste metode mai târziu, dar pentru interesul acestei PSET,
Mi-ar încuraja foarte să utilizați mesaj.
>> Știm că în principiu o dată pe acest formular este prezentat -
de la login_form.php--
apoi va merge la acțiune - login.php--
practic treci în toate aceste parametrii din aceste formulare in login.php.
Rezultatele de la această formă sunt conținute în acest tablou asociativ mesaj.
Indicii ale diferitelor elemente din matrice mesaj
sunt exact ceea ce ai specificați aici.
Tu spui că numele acestui intrare este numele de utilizator. Numele acesta este parola.
În mod similar, veți vedea numele de utilizator ca indicele de tablou asociativ acolo.
Dacă mergem la folderul include, avem acest fișier funcții, care va fi foarte util.
>> Toate aceste funcții sunt puse în aplicare pentru tine.
Nu aveți nevoie de a pune în aplicare în mod special oricare dintre acestea tine,
dar ei vor să destul de util.
Ne-am scuze, care, după cum am spus mai înainte, se va imprima practic din un mesaj de eroare
pentru tine pe o anumită pagină - apology.php.
Apoi, avem benă, asa ca daca ai suna doar benă și apoi trece în variabila,
apoi vă va duce la o pagină care va afișa pe care variabila pentru tine.
Apoi ne-am iesire, care se va încheia, practic sesiune de un anumit utilizator al.
Căutare va fi de folos.
Din moment ce avem de-a face cu citate și a stocurilor, vom fi capabili -
și e în esență, în timp real.
Avem nevoie să știm ce aceste valori sunt în stoc,
deci avem funcția de căutare care se ocupă cu documentația Yahoo a stocurilor.
După ce te uiți în sus un anume simbol al unui stoc, va reveni la tine simbolul de stoc
precum și numele și prețul actual al acestui stoc.
Asta e funcția de căutare.
>> Apoi, avem de a face cu MySQL,
deci vom fi doresc să execute anumite interogări pe baza noastră de date SQL.
Avem de a face interogare - la fel de unele abstracte de asta.
Vom fi trecerea în șir întreg de interogare SQL noastre -
și toate variabilele care merg în ea -
și ce face asta este de fapt executa asta pentru noi.
În loc de a avea pentru a scrie toate acest lucru de fiecare dată când doriți să interogați -
prin obtinerea toate rezultatele din această interogare -
atunci puteți apela pur și simplu funcția de interogare, și se va întoarce la tine -
în funcție de ceea ce îl utilizați pentru interogare -
probabil, un rând de toate rezultatele care se potrivesc interogării sau similar.
Mai multe despre asta mai târziu, deși.
>> În cele din urmă, avem de redirecționare, care, după cum sugerează și numele, vă redirecționează la o altă pagină.
Și apoi ne-am face, pe care vom fi de asteptare de cateva ori.
Când ești într-un controler, te sun face in pagina de șablonul
și să treacă apoi în valorile care se vor ocupa șablonul, apoi cu.
Aceste valori sunt, probabil, va fi a face cu tipul de ieșire pe care doriți
care urmează să fie indicat pe pagina de șablonul.
Bine. Acestea sunt funcțiile, și există o mult mai mult la acest cod de distribuție.
Am să vă încurajez să treci prin asta și de a explora singur.
De asemenea, va merge, probabil, spec. te prin intermediul unor alte elemente ale codului de distribuție.
Aici este un rezumat al funcțiilor găsite în functions.php.
>> Bine. Prima sarcină este de a permite utilizatorilor să se înregistreze pe site-ul web.
Chiar acum, există un formular de logare pe site-ul,
și vă sunt oferite cu câțiva utilizatori cu parole.
Puteți utiliza aceste nume de utilizator și a vă conecta,
dar doriți pentru a permite oamenilor să facă propriile lor nume de utilizator
și s-au adauga la site-ul web.
Aspect de înregistrare este destul de similar cu formularul de logare,
cu excepția numele de utilizator nu este pre-existente,
și, de asemenea, utilizatorul trebuie să furnizeze o parolă nouă,
si apoi de obicei, avem o confirmare parolă.
Odată ce utilizatorul introduce toate aceste informații,
vrem să le adăugați la baza noastră de date de utilizatori.
Vom avea o bază de date - o bază de date SQL -
că vom referință.
În această bază de date, vom avea un tabel cu toți utilizatorii
conținând numele de utilizator, parola, și, de asemenea, cât de mult bani au.
>> În registrul, vrem să le permită să intre aceste informații.
Dorim să afișeze această formă.
Dorim să vă asigurați că lor parola -
că au intrat, și apoi, de asemenea, că parolele potrivesc atunci cand ei intra de două ori.
După toate, care se face - presupunând că aceste erori sunt verificate -
apoi ne-o dorim pentru a adăuga acești utilizatori la baza de date.
În cele din urmă, odată ce v-ați înregistrat, e destul de convenabil, dacă nu aveți nevoie să vă conectați din nou
odată ce v-ați înregistrat,
așa că de gând să le conecta la site-ul în cazul în care ați înregistrat cu succes.
>> Prima sarcină este de a afișa forma, iar acest lucru este, de fapt va fi -
acest proces de înregistrare întreg este de gând să fie modelate destul de strâns, după autentificare
cu excepția loc de login.php ai putea avea register.php.
În loc de login_form.php--care este șablon -
veți fi înregistrați formă.
Veți dori să adăugați un câmp mai mult - o confirmare câmp parolă -
în loc de doar numele de utilizator, și parola de unul.
În continuare, dorim să verifice dacă parolele potrivesc sau sunt goale.
Avem controler - register.php--care este de gând să aibă grijă de a face aceste verificări.
Când un formular este prezentat prin intermediul metodei de post,
atunci toate aceste variabile sunt conținute în matrice post.
Doriți să vă asigurați că matrice valoarea mesaj la indicele parola
Meciuri elementul de confirmare.
Doriți să vă asigurați că acestea nu sunt goale,
și doriți să vă asigurați că acestea sunt la fel.
>> Un lucru convenabil despre PHP este că nu avem nevoie să utilizați șir compara mai.
Putem folosi operatorul egal-egal
pentru a verifica dacă șirurile sunt egale unul de altul.
Pentru eroare de manipulare, veți dori să-mi cer scuze.
Pentru a-mi cer scuze, te sun pur și simplu funcția de
și apoi specificați un tip de mesaj pe care doriți să o ieșire.
Ai apoi doriți să adăugați utilizatorul bazei de date.
Până acum, tot ce am făcut este doar tranzacții pe plan local cu rezultatele formularului.
Acum, avem de fapt nevoie pentru a le adăuga la baza noastra de date.
Pentru aceasta, mai întâi doriți să vă asigurați că numele de utilizator nu este goală.
Înțelegeți că pe un site, nu poți avea mai mulți utilizatori cu același nume de utilizator,
astfel încât veți dori să vă asigurați că, atunci când introduceți ceva în baza de date -
se introduce un nou utilizator -, atunci nu ai o coliziune între un nume de utilizator pre-existente
și numele de utilizator pe care un utilizator încearcă să-și prezinte.
Pentru aceasta, odată ce executa o interogare -
inserarea unui anumit utilizator cu parola lor și o sumă inițială de bani -
Odată ce ați numi asta interogare, atunci MySQL va reveni, de fapt falsă, dacă nu reușește.
>> Structura de utilizatori este de așa natură încât numele de utilizator este o valoare unică,
astfel încât să nu poate avea mai mult de unul.
Când încercați și inserați un rând nou, cu un nume de utilizator care există deja,
care este de gând să se întoarcă fals - ca un fals booleană-valoare.
Un lucru complicat aici este că veți dori să verificați dacă rezultatul este rezultatul interogare.
În cazul în care nu reușește, atunci veți dori să verificați cu operatorul de triplu-egal.
Asta e de fapt de gând pentru a verifica dacă există un eșec sau nu,
întrucât, în doar un simplu egal-egal, ar fi adevărat dacă rând era gol.
Rezultatul unei defecțiuni în cazul în care există o coliziune între utilizatori
este valoarea reală fals.
>> Iată cum ar insera într-o bază de date.
Aici este interogarea care le-ar executa strict în SQL.
Un lucru este ca poti sa te duci de fapt, la site-ul care gestionează baza de date SQL
și să se joace în jurul valorii de acolo prin introducerea manuală, fie valori sau rânduri.
Acesta va afișa ceea ce este de ieșire SQL.
Puteți rula, de asemenea, comenzi SQL în cadrul bazei de date
si vezi apoi ce ar putea fi sintaxa,
și apoi traduce că în funcția de interogare pe care o avem în PSET 7,
care va fi foarte similar cu interogările pe care le conduc, de fapt.
>> Dacă vroiam să inserați un rând nou în tabelul de utilizatori mea,
atunci aș preciza introduce în utilizatori, care este numele de masa mea.
Apoi am să specificați numele coloanelor.
Apoi am va furniza valorile, împreună cu parola.
Parolele din tabelul nostru de utilizatorii nu sunt stocate ca doar șir.
Acestea sunt stocate ca versiunea criptată,
astfel încât veți dori să rulați cripta funcția parola reală,
și care vă va oferi tipul corect de stocare pentru utilizatorii de matrice.
Rularea acest lucru va insera un rând nou în tabel utilizatori.
>> Pentru a face față cu funcția de interogare,
înainte de a în C am folosit semnul procent ca un substituent.
În mod similar, același concept de un înlocuitor se aplică și aici.
Cu interogare, specificați interogarea ansamblu,
cu excepția ori de câte ori ai de a face cu variabile ca mărime de intrare dvs. în interogare,
atunci în loc de fapt, le pune în interiorul - ca atunci când am avut situații în printf C.
Ne-ar pune șir și apoi au un substituent acolo, și apoi după fiecare
virgulă, specificați pe care am avut variabilă.
Aici, vom folosi semnul semn de întrebare ca substituent nostru
și să treacă apoi în fiecare variabilă, respectiv în ordine, pentru substituenți -
în cazul în care aceste variabile ar trebui să meargă.
Deci, aici, semnul prima întrebare ar fi înlocuită cu numele de utilizator real
apoi semn de întrebare doua parola.
>> Apoi, în final, o dată ce le-am înregistrat și le-a adăugat în baza de date,
apoi doriți să le conectați la site-ul web.
Avem un fel de o sesiune super-global variabilă numită.
Sesiunea are o anumită id,
și că ID-ul de utilizator corespunde cu care este în prezent autentificat inch
Ce veți dori să faceți este să găsiți ceea ce ID-ul lor de utilizare este
și a stabilit apoi că id-ul sesiunii ca ID-ul pe care anumit utilizator.
O funcție care veți dori să utilizați aici este o comandă SQL
care va prelua ultimul număr id-ul introdus de la masa ta.
Apoi va apela rânduri - it'll apel id - it'll aloca un nume pentru numărul pe care-l returnează.
Va suna ca id-ul.
Acum am terminat de înregistrare, și putem trece la cita.
>> Citat permite unui utilizator pentru a introduce numele unei anumite stoc,
și apoi vom întoarce calitățile de acest stoc.
Ce veți dori să fac aici este să aibă un controler și unele șabloane.
În acest caz, vom avea un operator, care va face tot gândire pentru noi.
Se va căuta simbolul și apoi trece în valori la șabloanele care se vor imprima.
Vom avea 2 template-uri aici.
Vom avea un șablon care prevede forma în care utilizatorii sunt de gând să
intrare numele stoc - numele parts.
Apoi ne, de asemenea, de gând să doriți un alt șablon, care afișează aceste valori.
Poti sa te uiti intr-autentificare pentru un exemplu de modul în care v-ați putea avea o formă care acceptă intrare,
cu excepția aici, vrem doar 1 domeniu.
Noi nu vrem un nume de utilizator și un câmp parolă.
Ne dorim doar 1 câmp de text care permite utilizatorului să intrare numele unui anumit stoc.
Apoi doriți să trimiteți acele date - odată ce ați uitat în sus acest stoc -
la quote_form.php.
Căutare va returna simbolul unui stoc, numele, și un preț.
Acestea sunt conținute într-un tablou asociativ.
Uită-te în interiorul funcția de căutare functions.php pentru mai multe informații
cu privire la tipurile de returnare ale acestora.
>> Minunat! Deci în cele din urmă, veți dori să afișeze informație de stoc.
Veți dori, probabil, să afișeze - veți avea nevoie pentru a accesa aceste variabile.
Odată ce aveți prețul într-o variabilă -
precum și numele și simbolul -
atunci veți dori să afișeze cele din pagina de șablonul.
Această pagină șablon ar putea fi numit show_quote.php sau ceva de genul.
Pagina dvs. quote.php ar face oferta spectacol și apoi să treacă în toate aceste valori.
Apoi, în pagina dvs. php, să imprimați efectiv aceste valori la aspectul HTML al paginii.
Puteți utiliza doar funcția de imprimare și să treacă în preț.
Există 2 moduri - te poate înlănțui, fie cu operatorul punct,
sau de a folosi un substituent.
>> Utilizatorii în cele din urmă vor fi cumpararea si vanzarea de actiuni.
Vrem să le permită un mod de a vedea toate stocurile pe care le au în prezent.
Vom numi acest portofoliu lor.
Portofoliu ar fi, probabil pentru fiecare utilizator, conțin o grămadă de rânduri
listarea tipul de acțiuni pe care le au și apoi cât de mulți dintre cei care au.
Masa noastră existent - acum avem un tabel de utilizatori în baza noastră de date.
Care conține numele de utilizator al unui utilizator, precum și parola lor și cât de mult bani au.
Nu e nici o cale reală de a stoca toate stocurile lor în cadrul asta.
Nu e ca și cum putem insera coloane noi pentru fiecare stoc.
Asta ar fi un rând foarte, foarte lung, deoarece avem o cantitate infinit
tipurilor de stocuri pe care le-ar putea avea.
Deci, în loc de ceea ce vom face este în aceeași bază de date,
vom avea un tabel de utilizatori, dar apoi vom avea, de asemenea, un tabel de portofoliu.
Tabelul Portofoliul va fi cu siguranta legat de tabelul de utilizatori,
ci structura portofoliului tabelul va avea informație de stoc,
câte acțiuni ale stocul utilizatorul are,
precum și un anumit utilizator ID-ul de număr.
Ai tabelul de utilizatori, care are un id, precum și numele de utilizator, hash -
care este parola, parola criptată -
și apoi suma de bani au.
Numărul id-ar fi legată de numărul de id-ul de portofoliu.
Portofoliul ar avea doar un simbol al stocului, precum și acțiuni -
numărul de acțiuni din stocul că utilizatorul are.
În acest tabel portofoliu le-ar fi practic
toate acțiunile deținute de toți utilizatorii de pe site-ul dvs..
Ulterior, pentru a specifica doar parts un anumit utilizator al lor - doar de portofoliu -
v-ar regăsi valorile din tabelul portofoliul dumneavoastră, astfel încât
număr de identificare este specifică acestui utilizator.
>> Când afișați portofoliu, veți dori să reclami fiecare dintre rezervele de în portofoliul unui utilizator.
Veți dori să reclami numărul de acțiuni și valoarea actuală a acestor acțiuni.
Faptul că valoarea actuală a acestor acțiuni nu este stocată în tabelul de portofoliu
pentru că va fi actualizarea - la minim - în fiecare zi prin Yahoo.
Pentru a obține aceste informații, nu poți referire la faptul că interogarea SQL.
Ce prevede că funcția de la noi? Ce funcție va primi prețul?
Asta e de căutare, astfel încât utilizarea de căutare pe un anumit simbol vă va oferi o mulțime de informații.
O să vă dau 3 bucăți de informații - numele, simbolul, precum și prețul.
Odată ce ați căutare un anumit simbol, atunci puteți obține preț,
și apoi puteți utiliza prețul care urmează să fie afișat în portofoliul dumneavoastră.
>> Portofoliul trebuie să afișeze, de asemenea, echilibrul utilizatorului numerar curent.
Acest câmp este stocat în tabelul utilizatorilor.
Deci, atunci amintesc cum ne practic în vedere -
avem diferite tipuri de fișiere PHP.
Vom avea un controller care, practic, face tot gândire pentru tine.
Și apoi avem un șablon în care șablonul se ocupă cu date de semnale.
Trebuie să te gândești de ce variabile controlerul va trebui să ia inch
Dacă avem de-a face cu un portofoliu care sa furnizeze orice nume, simbol, și numărul de acțiuni,
precum și prețul actual al unei actiuni,
atunci veți dori să găsească un mod de a trece în esență -
aveți posibilitatea să treci într-o matrice de valori care se potrivesc asta.
>> Să mergem într-un exemplu de modul în care s-ar putea regăsi toate stocurilor
deținută de un anumit utilizator.
Acest lucru nu este de-a face - inca - cu prețul de stoc.
Ce-ar face asta este să rulați o interogare.
Aceasta ar obține simbolul, precum și acțiunile de la -
Am sunat acest tabel, dar în acest caz, ceea ce ar fi?
Care este numele tabelului care am de-a face cu faptul că are simbolul și acțiuni
pentru un anumit utilizator?
E fie utilizatori sau de portofoliu.
Portofoliului.
Ce-ar face este portofoliul de interogare pentru simbolurile și acțiuni
pentru un anumit utilizator.
Iată, Eu spun, (simbol SELECT, actiuni de la TBL -
dar în loc de masa, ai de gând să le înlocuiască cu portofoliu.
"În cazul în care" este de fapt starea mea.
Eu zic că doar doriți să obțineți acele tablouri asociative care corespund
la această condiție text - id egal.
Apoi am pun un substituent acolo și apoi id-ul sesiunii.
Ce este acest lucru ar face este spus pentru fiecare rând în rânduri.
Acesta este un mod elegant de loc de fapt, având de a crea un pentru buclă
reiterează faptul că peste toate a indicilor, apoi în PHP puteți avea o pentru fiecare buclă-.
>> Dacă aveți o matrice dat, atunci pot spune ca am de gând să sun în fiecare element de succesive -
Am de gând să sun în fiecare element de acest nume.
Deci, pentru fiecare dintre aceste elemente, am de gând să le numim acest lucru,
atunci pot face acest lucru.
În acest lucru pentru fiecare, aveți rânduri ca matrice-ul real, și fiecare rând ai de gând să sun rând.
De fiecare dată când execută corpul,
ea va merge în sus și se va actualiza rând la următorul element în rânduri.
>> Acum, în ceea ce privește stocurile de cumpărare,
ceea ce vrem să facem este să stoc pe care utilizatorul dorește să cumpere
și numărul de acțiuni pe care utilizatorul dorește să cumpere, iar apoi - în cazul în care doresc -
adaugă faptul că stocul pentru portofoliul lor.
Evident, în cazul în care sunteți de cumpărare ceva, atunci care va scădea
suma de bani pe care au, astfel că va scădea lor în numerar.
Vom fi a face cu actualizarea portofoliului, precum și tabelul de utilizatori,
care conține numerar.
Dar, mai întâi, aveți nevoie pentru a obține stocul real și numărul de acțiuni pe care utilizatorul dorește.
Pentru că, veți avea nevoie de un formular HTML care va solicita simbol al stocului
pe care doriți să o cumpărați, precum și numărul de acțiuni.
Apoi, veți dori să adăugați.
Veți dori să selectați anumite valori.
Am trecut prin asta un pic pic deja, dar atunci când sunteți încercarea de a obține anumite rânduri -
prelua rânduri anumite din tabelul SQL,
aceasta este următoarea sintaxă.
Ați selectați, și apoi, dacă specificați o stea,
care va reveni în esență rând întreg, întregul pentru tine.
Apoi, din nou, aveți condiție în cazul în care, și apoi specificați -
Vreau doar numele de utilizator să fie egală cu e-mail-in,
așa că va prelua numai în rândul utilizatorilor care corespunde la e-mail-in.
>> Atunci când un utilizator dorește să adauge o cotă într-un portofoliu,
aveți nevoie pentru a verifica câteva erori.
Doriți să vă asigurați că utilizatorul își poate permite de fapt de stoc,
astfel încât veți dori să verificați lor în numerar.
Înainte, am folosit stea pentru a prelua un rând întreg dintr-un tabel SQL.
Dar aici, de fapt, putem specifica doar că vreau doar 1 valoare -
Vreau numai plata în numerar.
Deci, aici, s-ar întoarce în numerar pentru utilizator cu numărul ID 1.
Dacă un utilizator a cumpărat deja un anumit stoc, dar cumpără apoi mai mult de acest stoc,
apoi în portofoliul dumneavoastră - nu vrei o linie separată,
un alt rând care conține această operațiune nouă.
Tu de fapt vrei sa actualizeze suma.
Tot ceea ce se schimbă este într-adevăr numărul de acțiuni pe care acel utilizator deține.
Dacă utilizați introduce în interogarea - așa că pur și simplu introduceți în portofoliul dumneavoastră toate aceste valori -
numărul de ID-ul de utilizator, precum și simbol al stocului pe care ei cumpără
și acțiunile, atunci veți dori, de asemenea, să se precizeze, de asemenea, în cazul în care am rulat într-o cheie duplicat -
în acest caz, cheia duplicat nu este doar ID-ul de utilizator, dar, de asemenea, simbolul de stoc -
pentru ca poti avea doar - premisa noastră este că puteți avea doar 1 rând
care corespunde la 1 simbol specific.
Deci, pe tasta dublură - dacă aveți o într-o coliziune acolo -
esti doar de gând să actualizeze acțiunilor la noua sa valoare.
Actiunile adică orice am avut înainte, plus numărul de acțiuni pe care utilizatorul este de cumpărare.
>> Acum, că ne-am completa tabelul de portofoliu,
vom dori să actualizați numerar utilizatorului.
Asta e în tabelul de utilizatori, deci vom fi scăzând o anumită sumă de bani.
Probabil, o să fie în numerar egal cu minus de numerar - și apoi o anumită sumă.
Pentru a actualiza numerar, ar fi -
în cazul în care am vrut să-i ia bani de la e-mail-in, atunci mi-ar executa această interogare -
"Utilizatori" de actualizare și apoi setați coloana de numerar la numerar -
>> Mi-ar elimina de dolari 9999 numai dacă numele de utilizator este egal cu e-mail-in.
Dar, în acest caz, nu vrem, pentru a scădea în mod specific 9999.
Dorim să precizeze, de asemenea, dorim să scadă prețul actual al stocului
înmulțită cu numărul de acțiuni pe care le cumperi.
>> Acum ne-am le-a permis pentru a vedea toate stocurile care le au,
precum și cumpere ca mai multe stocuri.
De asemenea, am trecut le-a permis să se uite în sus prețul actual al unei actiuni.
Aici vrem să le permită să le vândă.
În primul rând dorim să afișeze practic -
vrem să le permită să vadă toate stocurile pe care le au,
asa ca aici vrem pentru a afișa toate rândurile din portofoliu.
În cazul în care aleg să-și vândă o anumită stoc,
atunci vom presupune că doresc să vândă totul.
Ele nu sunt doar de gând să vândă 50% din acțiunile lor, au de gând să vândă 100% din ea.
Putem șterge doar întregul rând din portofoliu.
Ne puteți șterge acțiunile utilizatorului dat de anumit simbol.
Nu e sintaxa pentru asta.
>> Apoi ne-am dori să actualizați numerar.
Vom adăuga în bani egal cu numarul de actiuni care sunt de vânzare
înmulțită cu prețul actual al stocului -
nu la prețul la care au cumpărat-o, ci mai degrabă prețul la care acestea sunt -
prețul curent atunci când acestea sunt de vânzare-l.
De referință prețul actual al unei actiuni,
veți dori să utilizați de căutare, care vă va oferi pretul unei actiuni
la ora actuală.
>> Acum am rămas cu istoria,
care doriți să permiteți unui utilizator pentru a ține evidența tuturor tranzacțiilor lor -
vrea să vadă ori de câte ori au vandut ceva, ori de câte ori au cumparat un stoc.
Dorim să precizeze data la care au făcut ca, precum și câte au cumpărat
și ceea ce a fost de stoc.
Nu avem nici o structura actuală, existentă care specifică faptul că?
Ei bine, avem portofoliu care afișează numărul de stocurile pe care un utilizator le are
pentru o acțiune dată.
Dar suntem structurarea portofoliului, în modul în care aceasta actualizează atunci când cumpărăm mai multe,
întrucât ar trebui să istoriei - dacă ați cumpărat de mere, 10 acțiuni ale acesteia, și apoi mai târziu în vânzare 5,
atunci ce-ar vrea să vadă pe cei separat ca acțiuni separate, rânduri separate.
Întrucât această acțiune de a vizualiza că, în tabelul portofoliul nostru
ar fi doar o actualizare la rândul special,
așa că, probabil, va dori un alt tabel.
În baza noastră de date, avem masa noastră utilizatori, avem masa noastră de portofoliu,
și acum vom dori, probabil, un tabel de istorie.
Tabelului istorie poate urmări data curentă,
precum și simbolul de stoc special, precum și câte acțiuni,
și apoi ce acțiunea este -
dacă au cumpărat aceste acțiuni sau dacă ați fost pentru a le vinde.
>> Pentru a face față în prezent, există o serie de moduri în care poți face acest lucru.
PHP are un mod de a ține evidența data, pe care poti sa te uiti la tine.
În SQL puteți utiliza, de asemenea, nici acum și nici timestamp-ul actual. Asta depinde de tine.
Doar asigurați-vă că de fiecare dată când un utilizator cumpără sau vinde, veți fi actualizarea lor în numerar
în tabelul de utilizatori, veți fi actualizarea rândurilor în tabel portofolii,
atunci veți fi, de asemenea, actualizarea istorie,
deci nu vor fi de 3 interogări separate SQL care veți fi de asteptare acolo.
Avem o grămadă de funcționalitate acum.
>> Doar un cuplu de memento-uri, care în fișierul index, veți dori să se leagă de cel puțin dumneavoastră -
dar veți dori, pentru a permite unui utilizator pentru a lega la pagina de buy.php.
Asta se întâmplă pentru a permite unui utilizator - buy.php este controlor, astfel încât va fie
trimite să - care este de gând să te trimit la forma care vă permite să căutați lucrurile.
Avem istorie. Ne-am logare afară, obtinerea un citat și apoi de vânzare.
Acestea sunt la minim ceea ce doriți să arate.
În ceea ce privește portofoliul, portofoliul este de fapt prezentată în pagina de index.
Dacă mergem la index, aici vom vedea că acesta face portfolio.php
și trece în tablou asociativ - practic egal cu titlu de portofoliu.
Deci, aceasta este controler.
Dacă mergem la șablonul de portfolio.php,
atunci tot ce are este - în principiu afișează o imagine care spune, oh, acest site este in constructie.
Mai târziu, odată ce treci de la - veți avea fi trece în informații practic mai specifice.
În loc de doar titlul, veți fi, probabil, trece în mai multe lucruri.
Odată ce aveți aceste valori, atunci portfolio.php poate face cu aceste valori
și le imprimarea în orice fel de ordine.
>> După ce ați implementat toate acestea, ai nevoie de asemenea să pună în aplicare facilitate 1 mai.
Acest lucru poate fi fie pentru a permite unui utilizator pentru a schimba parola,
pentru a reseta parola lor, dacă le-am uitat - atât pentru resetare a parolei, apoi
probabil, veți dori, de asemenea, să editați înregistrare, astfel încât le permite să specificați un e-mail,
așa că, dacă au uitat parola, atunci ei pot obține asta.
Ele pot intra, probabil, în numele de utilizator lor, și apoi un e-mail va fi trimis pentru a le
cu un link pentru a putea reseta parola.
Puteți avea ceva care permite utilizatorilor să obțină încasări
de fiecare data cand cumpara sau vinde ceva,
și apoi în cele din urmă, le permite să adăugați în numerar la site-ul lor.
Doar pentru a merge înapoi în conceptul de controlere și șabloane un pic.
Vei avea ceva de genul o - deci vei avea un controler de aici.
Chiar acum, ne uităm la exemplul login.php.
Când vom avea un controler, practic se va lua 2 cazuri.
Când avem controlori, suntem în această piesă pe care suntem, de asemenea, un fel de a face cu
atunci când avem forme, de asemenea.
Operatorul va avea practic acțiuni distincte -
una, dacă un formular a fost deja depusă, iar apoi două, dacă utilizatorul se apropie de acea pagină
pentru prima dată, și încă are nevoie pentru a introduce această formă.
>> Am de gând să sari la primul caz, înainte de a merge până la primul caz de a avea forma inch
Aici spunem, dacă formularul a fost transmis cu postul metoda -
nu vă faceți griji despre asta un pic.
Nu-ți face griji prea mult, dar să înțeleagă că în esență această funcție se ocupă cu
dacă un formular a fost depusă sau nu.
Această condiție este adevărată, dacă un utilizator a trimis formularul.
Dacă nu, atunci vom dori să sun login_form.php face, si apoi treci la titlu.
Acest titlu este doar principiu de gând să apară în antet.
Ceea ce face este practic spune, bine - ei bine, dacă un utilizator se duce la login.php
și nu a efectiv autentificat, atunci vreau să-i trimită la pagina care are această formă
care le permite să introduceți numele de utilizator și parola.
Apoi mă duc la login_form, iar apoi că are forma actuală.
Apoi, odată ce utilizatorul susține că forma, au de gând să-l prezinte la login.php
cu postul metoda.
Atunci voi de fapt de gând să introduceți această secțiune a mea, dacă-bucla altceva.
Apoi, e aici ca avem de a face cu valori introduse în formular.
E aici, că avem de a face cu cei.
>> Apoi, odată ce ați face cu acele valori - în cazul în care ai de a face cu -
spune că de-a face cu pagina de quote.php în cazul în care cineva poate introduce un stoc care
ei vor sa arate în sus, și să vedem apoi că afișare -
asta e un fel de asemănătoare aici.
Aici avem un formular autentificare - you'd avea, probabil, o forma citat -
dar apoi, o dată utilizator a afirmat că informațiile de fapt,
atunci veți dori controlerul de a trece în alt șablon
care le va arăta că informațiile reale.
Deci, apoi la dreapta în jurul valorii de aici, atunci veți, probabil -
în jurul valorii de sfârșitul de starea dumneavoastră de aici - în cazul în care metoda este egal cu post -
atunci veți dori, probabil, să facă o altă pagină - citat spectacol -
care te trimite la acea pagină - show_quote.php--
și apoi, în acel fișier va referi aceste valori.
Are vreun sens?
>> Avem un controler care se ocupă în principal cu 2 cazuri -
dacă ați intrat într-o formă sau nu.
Dacă nu ați introdus un formular,
atunci vă va redirecționa la această formă, ceea ce va pune apoi înapoi la această pagină.
Apoi, odată ce aveți informații în controler, acest organism se va ocupa cu asta
informațiile necesare - fie cautati la valorile pentru stoc,
și apoi după ce a fost uitat în sus aceste valori și le-a într-o matrice frumos formatat,
atunci poate trece ca matrice în pagina de șablonul
care se ocupă cu aceste informații. scoate
>> Din nou, deoarece web, acesta se va fi distractiv.
Suntem în afara C, asa ca nu te limita la ASCII și că producția terminale,
au atât de distractiv cu asta.
Puteți face ca vizual, după cum doriți.
Puteți permite utilizatorilor să milioane de dolari de intrare la un moment dat,
sau să le limiteze și să fie serios și să le permită să introduci doar 1 Penny, la un moment dat
sau ceva de genul asta.
Categoric asigurați-vă că pentru a se distra cu asta.
>> Cod PHP este un pic mai simplă prin faptul că e un pic mai ușor pentru a mapa pseudocod dvs.
în punerea în aplicare efectivă.
Deci, avea cu siguranta te distrezi cu acest lucru, deoarece ea este de fapt piesa ultima noastră în CS50.
Cu faptul că, aceasta a fost Walkthrough 7.
După ce ați terminat vizionarea pas cu pas și a terminat PSET ta,
apoi acestea au fost, de asemenea, psets, iar acum suntem pe la produsul final -
după ce trecem de test 1.
Apoi, sperăm, puteți utiliza instrumentele pe care le-am învățat de la psets -
nu numai sintaxa, dar mai noțiunea abstractă a modului de a lua o anumită -
ca, eu vreau să fac acest lucru și apoi de fapt, punerea în aplicare a asta.
A învăța cum să lupte prin sintaxă și codul de distribuție.
Citirea codului altor oameni, iar apoi interpretarea că utilizarea pre-existente funcții.
>> Deci, noroc cu PSET ultima.
A fost o plăcere să conducă walkthroughs.
Sper că le-am fost de ajutor pentru tine.
Acestea au fost walkthroughs, și mulțumește foarte mult.
[CS50.TV]