[Powered by Google Translate] [Walkthrough Problem Postavite 7] [Zamyla Chan] [Sveučilište Harvard] [Ovo je CS50] [CS50.TV] Pozdrav svima, i dobrodošli na Walkthrough 7, CS50 financija. Sada smo i službeno su učinili sa svim psets u CS50, i mi smo samo s lijeve strane još jedan koji će biti zabavno provođenje od web stranicu na kojoj korisnici mogu prijaviti na CS50 financija i kupiti i prodati dionice. Danas ćemo imati nekoliko alata na raspolaganju. Idemo da se govori o dozvolama. Kad imate web mapu, idete da želite omogućiti korisnicima da izvršavaju određene datoteke ali i samo čitati one druge, pa ćemo gledati u dozvolama i kako možete postaviti one. Tada ćemo gledati u PHP, HTML, i SQL koda. Prvo, dozvole. Kada ste u terminalu u određenom direktoriju, onda ono što želite učiniti je da želite pokrenuti chmod naredbu. To je potom bilo slova ili brojeva odgovara za ono što zapravo želite svijet vidi, sami vidjeti, itd. Na primjer, kad imate mapu, onda želite da mapa biti izvršna po svima da ga vidi, tako što će učiniti je da bi mogao pokrenuti naredbu chmod + x , a zatim naziv mape. Kada imate datoteku, kao što su CSS datoteke ili slikovnih datoteka - kao JPEG i bitmape, stvari kao što je to, ili bilo koji JavaScript kod - želite da se čitati sve, pa onda ono što trebate učiniti je da bi mogao koristiti zamjenski - što je Zvjezdica - na osnovi ukazuju na CSS mapu - sve u toj mapi -  Ja ću reći da je to će biti čitljiv svima. Sa dozvolama, kad smo koristiti slova, također možemo koristiti brojeve umjesto. Dakle, vidjet ćete da u konačnici kada želite nešto da se izvršna - koji je predstavlja broj 1 - nešto biti čitljiva je broj 4 i zatim - writable broj 2 - i tako bitno kada želite kombinaciju onih, onda ih dodati. Ako želite nešto da bude čitljiva, pisati i izvršna, onda bi se dodati 4, 2 i 1 i da će vam dati sedam, onda kad imate mapu želite da se izvršna svima - kao i čitati i pisati - onda bi taj 7, 1, 1. To bi bilo 7 za vas, onda jedan za drugim ljudima. Kada imate spec., zapravo ćete odrediti koje mape i koja slika trebaju biti chmod-ed posebno. Na primjer, kada imate mape - to su 7-1-1 - kada imate slike, ili HTML, CSS, JavaScript, onda oni će biti 6, 0, 4 - ili 6, 4, 4 - i onda PHP datoteka će biti 6, 0, 0. Ideja iza toga je da korisnici zapravo ne bi trebao vidjeti svoj PHP kôd, ali samo biti u mogućnosti vidjeti izlaz. Sjajno! Preseljenje u PHP. Jednostavno, kad god želite PHP datoteku, datoteka sufiks je. Php. Također možete miješati s HTML PHP koda. Ako imate HTML datoteke, na primjer, onda možete priložiti lijevog kuta, upitnik, php - staviti svoj php kod - i zatim zatvorite da se s drugim upitnikom i pod pravim kutom. Varijable u PHP su puno lakše da se bave od varijabli u C. Svaka varijabla samo počinje sa znakom dolara ispred njega, a oni slabo ste upisali. To znači da ne morate brinuti o postavljanju nešto jednak niz ili cijeli broj. Možete samo jednostavno reći, ovo je moj naziv varijable i onda je to njegova vrijednost, tako da će biti lakše da se bave tamo. Druga stvar je da PHP vam omogućuje da koristite asocijativne polja. Možete samo jednostavno definirati niz kao što bi u C govoreći, znak dolara-ime vašeg niz-jednaka, , a zatim u uglatim zagradama imaju u osnovi samo popis vrijednosti svih elemenata u polju. No, u PHP što možete učiniti je odrediti osnovi - to je vrsta kao što su hash funkcije. Možete odrediti indeks - što ćeš ga nazvati - , a zatim da se odnosi na vrijednost. Ako ste zapravo prođe u = 1, b = 2, c = 3, onda tvoj niz u indeks će vam dati jedan. Ovo pset će vas zagrijati sa nekim PHP u dijelu pitanja, i onda smo zaroniti u CS50 financija. Imamo par - imamo neku funkciju, u osnovi, provesti u ovoj web stranici. Želimo omogućiti korisnicima da se registrirate na našoj web stranici s korisničkim imenom i lozinkom. Želimo im omogućiti da pogledate ponudu, a onda bismo ispisali ime tog citat kao i trenutna cijena da je to u. Želimo im omogućiti da vide portfelj svih dionica koje su kupili tako daleko. Također, želimo im omogućiti da kupi dionice te ih prodati. I onda na kraju, želimo im omogućiti da vide povijest od svih transakcija koje ste im napravili. Zatim, na kraju, nakon što ste provesti sve to, onda ste slobodni provesti jedan dodatni značajku. Mi ćemo ići u one. Oni mogu biti ili omogućujući korisnicima da biste dobili dodatne gotovine polaganjem dodatni novac, ili ste mogli dopustiti im da promijene svoje lozinke, ili nešto slično, e im potvrdu kad su kupnju ili prodaju dionica. Tu je ograničen popis značajki koje ste mogli sami provesti, tako da je zadnji tamo. Budući da je ovo web stranica, vi također imaju mnogo slobode da ga prilagodite. Mi ne pružaju neke CSS koda, ali ti si definitivno bez da ga uštinuti, učiniti da izgleda ljepše, ali ga podupire je osnovna funkcionalnost tako da uvijek se odnose na spec. o tome što vam je zapravo potrebno uključiti postoji. Nakon spec., idemo se pomoću aparata kao i poslužitelj. To će biti domaćin našu web stranicu za nas, na svom lokalnom poslužitelju. Ako slijedite ove upute i raspakirajte pset 7 distribucije kod u svoj virtualni host / lokalni domaćin mapu,  onda možete jednostavno posjetiti http://localhost/ u Google Chrome u aparatu, i onda će doći kod u kojem ste pismeni pset 7. Pset 7 dolazi s hrpom distribucije koda, i nadamo se da smo s - kroz sve psets prije ove - nas navikli na čitanje kroz distribucijsku koda, razumijevanje što funkcionira već osigurano, a kako bismo mogli biti u mogućnosti koristiti one i ostale funkcije koje ćemo se provesti. U tom slučaju, imamo tri mape. Imamo HTML mape, uključuje mapu, a mapu Obrasci. Što ćemo da se radi s ovim pset je vrsta odvajanja razmišljanja - programiranje razmišljanje - od PHP koda sa stvarnim vizualnog aspekta. Imat ćemo jedan PHP datoteku koja čini sve razmišljanja, navodi se u bazi podataka, ispisuje stvari, ima li izvještaji - stvari kao što je to - i onda da ću proći podatke u našu datoteku predloška - ili template.php datoteku. Što da će učiniti je čitati podatke, a zatim će ga ispisati. Možemo liječiti predloške kao "glupi" u smislu da mi zapravo ne žele ih da se radi puno posla u izračunu stvari. Mi želimo da naši kontrolori to učiniti. Malo o tome - ajmo pogledati neke od distribucije koda. Ovdje imamo index.html datoteku, i to je prilično prazna. U suštini ono što čini - kaže, dobro, ja ću zahtijevati configuration.php datoteku. Mi ne vidimo da je upravo tamo, ali u osnovi je pozivom configuration.php datoteku, i izvršavanju toga. Nakon što to radi, to će donijeti portfelj. Rendering je funkcija, tako da kad god smo u kontroler, zvat ćemo uzvratiti, mi ćemo mu dati datoteku, a zatim su podaci koje smo prolaze u, tako da ću zvati u portfolio.php--vrste proći u tim podacima, tako da portfelj može nositi s tim. A sada, evo, mi imamo login.php obrazac.  To je regulator koji u osnovi brine o sječe u. Evo, to provjerava ako je oblik bio podnesen na ovu datoteku i bavi potvrđivanju podnesak. Mi ćemo gledati u ovoj ispričati funkciji. Kada želimo ispisati poruku o pogrešci, mi koristimo ispričati i da će se preusmjeriti korisnika na određenu stranicu koji će ispisati poruku o pogrešci da smo ukazati. Nastavljajući se na, to će upita baze podataka - hrapavi ući više od toga kasnije. Tada ćete vidjeti da je ovdje dolje, ako oblik nije podnesen, onda to čini obrazac. To znači da se ide na login_form.php, pa pogledajmo kako. Login.php je zapravo gdje smo vidjeli HTML bave stvarnim vizualnog aspekta. Ovdje imamo ulaznog oznaku za korisničko ime, ulaznog za lozinku, kao i gumb Pošalji. To je zapravo gdje je vizualni aspekt i HTML oblik će se održati. Evo, on kaže da će to biti podnesen u određenom metodom, zvanom post. Mi ćemo ući u razlikama između načina - postavljati nasuprot dobiti, tu je i nešto što se zove staviti - ćemo dobiti u tim metodama kasnije, ali za interes ovog pset, Ja bih visoko savjetujemo vam da koristite post. Mi znamo da je u osnovi se jednom ova obrazac podnosi - od login_form.php-- onda će se ići na akciji - login.php-- osnovi proći u svim tim parametrima iz tih oblika u login.php. Rezultati iz tog obrasca se nalaze unutar ovaj post asocijativnog niza. Indeksi od različitih elemenata u poštanskom niz su upravo ono što ste naveli ovdje. Možete reći da je ime ovog ulaz je korisničko ime. Ime ovog jednog lozinkom. Isto tako, možete vidjeti ime kao indeksa asocijativnog niza tamo. Ako idemo na uključuje mapu, imamo ovu funkcije datoteku koja se događa da se vrlo korisno. Sve ove funkcije se provodi za vas. Vi ne trebate posebno provesti bilo koji od ovih sebe, ali oni će vrlo korisno. Mi smo se ispričavam, koji je kao što sam rekao prije, u osnovi će ispisati poruku o pogrešci za vas na određenu stranicu - apology.php. Onda imamo deponij, tako da ako samo zovi dump i onda prođe u varijablu, onda će vas odvesti na stranicu koja će se prikazati tu varijablu za vas. Onda smo logout, koji u osnovi će završiti određeni korisnika sjednicu. Potraži će biti korisna. Budući da smo se bave citati i zalihe, mi ćemo biti u mogućnosti - i to je bitno u stvarnom vremenu. Moramo znati što one vrijednosti dionica su, tako da imamo pretraživanje funkciju koja se bavi Yahoo dokumentacije dionica. Nakon što pogledate određeni simbol dionica, vratit će se na vas dioničko simbol kao i ime i trenutne cijene tog fonda. To je funkcija pretraživanja. Onda imamo posla s MySQL, tako da ćemo se žele izvršiti određene upite na našem SQL baze podataka. Imamo upita za rješavanje - na vrste sažetak nekih od tog izlaza. Mi ćemo se prolazi u cijelom nizu naših SQL upita - i sve varijable koje idu u njemu - i što to znači je zapravo izvršiti da za nas. Umjesto da pisati sve ovo van svaki put koji želite da upita - uzimajući sve rezultate iz tog upita - onda možete samo nazvati upita funkciju, a to ću se vratiti vama - ovisno o tome što ste koristeći za vaš upit - Vjerojatno red sve rezultate koji se podudaraju s upitom ili slično. Više o tome kasnije ipak. Konačno, moramo preusmjeriti koji, kao što ime sugerira, vas preusmjerava na drugu stranicu. I onda imamo žbuke, što idemo se zove nekoliko puta. Kada ste u kontroler, zoveš donijeti u predlošku stranicu a potom proći u vrijednosti koje je predložak onda će se baviti. Te vrijednosti vjerojatno će se baviti vrsti proizvodnje koji želite koji će biti prikazan na stranici predloška. Ok. Oni su funkcije, a tu je i puno više na ovu distribucije koda. Ohrabrujem vas da ide kroz to i istražite sami. Također, spec. vjerojatno će vas provesti kroz neke druge elemente distribucije koda. Ovdje je sažetak funkcije nalaze u functions.php. Ok. Prvi je zadatak omogućiti korisnicima da se registrirate na web stranici. Upravo sada, postoji prijava oblik na web stranici, i daje vam se s nekoliko korisnika s lozinkama. Možete koristiti te korisnička imena i prijavite, ali želite omogućiti ljudima da svoje korisničko ime i sami dodati na web stranici. Raspored za registraciju je prilično sličan prijavu obliku, osim korisničko ime nije već postojećih, a korisnik također treba osigurati novu lozinku, i onda obično imamo lozinku potvrdu. Nakon što korisnik ulaza sve te informacije, želimo ih dodati u našu bazu podataka korisnika. Mi ćemo imati bazu podataka - SQL baze podataka - da ćemo referencirati. U toj bazi podataka, mi ćemo imati tablice sa svim korisnicima sadrži svoje korisničko ime, svoju lozinku, a također i koliko novca imaju. U registar, želimo im omogućiti da unesete te podatke. Mi želimo prikazati tu formu. Želimo biti sigurni da njihove lozinke - da su ušli jednom, a zatim i da su lozinke utakmicu kada su ga otvorili dva puta. Nakon svega što je učinio - pod pretpostavkom da su one pogreške provjeriti - onda želimo dodati one korisnike u našu bazu podataka. Konačno, nakon što ste se registrirali, to je prilično zgodan ako ne morate ponovno prijaviti Jednom kad ste registrirani, tako da ćemo ih prijaviti na web stranici ako ste se registrirali na uspješno. Prvi zadatak je prikazati u obliku, a to je zapravo će biti - cijeli ovaj proces registracije će se po uzoru prilično usko nakon prijave osim umjesto login.php možda ćete morati register.php. Umjesto login_form.php--koji je predložak - imat ćete registrirati obrazac. Vi ćete želite dodati još jednu polje - polje lozinku potvrda - umjesto samo jednog korisničkog imena i jedan lozinkom. Dalje, želimo provjeriti da li su lozinke slagala ili su prazne. Imamo kontroler - register.php--koji ide brinuti radi ove provjere. Kada se obrazac podnosi putem pošte metodom, onda sve one varijable su sadržana u post polju. Vi želite da biste bili sigurni da je vrijednost nakon niz na indeksu lozinkom odgovara potvrdom element. Vi želite da biste bili sigurni da oni nisu prazne, i želite da biste bili sigurni da su oni isti. Jedan zgodan stvar o PHP je da ne trebamo koristiti string usporediti više. Možemo koristiti jednako-jednak operatoru  provjeriti jesu li nizovi su jednaki jedan drugom. Za rukovanje pogreškama, da ćete želite ispričati. Da se ispričavam, možete jednostavno pozvati funkciju  a zatim odrediti vrstu poruke koju želite čuti. Tada želite dodati korisnika na bazu podataka. Do sada, svi smo radili samo se bavi lokalno s rezultatima obliku. Sada, mi zapravo žele da ih dodati u našu bazu podataka. Za to, prvo želim da biste bili sigurni da je korisničko ime nije prazno. Shvatite da na web stranici, ne možete imati više korisnika s istim imenom, tako da ćete želite biti sigurni da kada umetnete nešto u svoju bazu podataka - umetanje novog korisnika - onda ne dobijete sudar između postojećeg korisničkog imena i korisničko ime koje korisnik pokušava podnijeti. Za to, nakon što izvršite upit - umetanja određeni korisnik sa svojim lozinkom i početne količine novca - jednom nazoveš da upita, a zatim mySQL zapravo će se vratiti false ako to ne uspije. Struktura korisnika je takva da je korisničko ime je jedinstvena vrijednost, tako da se ne može imati više od jednog. Kada probati i umetnuti novi redak s imenom koji već postoji, da će se vratiti lažno - kao Booleova vrijednost false. Lukav stvar ovdje je da ćete želite provjeriti je li rezultat je rezultat Vašeg upita. Ako to ne uspije, onda ćete želite provjeriti s triple-jednaka operatera. To se zapravo događa provjeriti da li postoji neuspjeh ili ne, budući da je, u samo jednostavan jednako-jednaka, to bi bilo istinito, ako je red bio prazan. Rezultat neuspjeha ako postoji kolizija između korisničkih imena je stvarna vrijednost false. Ovdje je kako bi umetnuti u bazu podataka. Ovdje je upit da li će se kandidirati isključivo u SQL. Jedna stvar je da možete zapravo otići na web stranicu koja upravlja SQL baze podataka i poigrati se unosom ručno ni vrijednosti ili redaka. To će se čuti ono SQL izlaz. Također možete pokrenuti SQL naredbi unutar baze podataka  i onda vidjeti što sintaksa bi moglo biti, a zatim prevesti u funkciji upita koje imamo u pset 7, što će biti vrlo sličan na upite da ste zapravo rade. Ako sam htjela umetnuti novi redak u mom tablice korisnika, onda bih navesti umetak u korisnika, što je ime mog stola. Onda bih navesti imena stupaca. Onda bih dati vrijednosti, zajedno s mojim lozinkom. Lozinke u našoj users tablici se ne pohranjuju samo kao string. Oni su pohranjeni kao šifrirane verziji, tako da ćete želite pokrenuti funkcije kriptu na stvarnoj lozinkom, i da će vam dati ispravnu vrstu pohrane za korisnike niza. Trčanje ovo će umetnuti novi redak u svoj tablice korisnika. Za rješavanje upita funkcije, prije u C koristili smo znak za postotak kao rezervirano mjesto. Isto tako, isti koncept rezervirano vrijedi i ovdje. S upitu, navedite cijeli upita, osim kad ste se bave varijabli kao ulaz u upitu, onda umjesto zapravo stavljajući ih iznutra - kao kad smo imali printf izjave u C. Mi bi staviti string, a zatim imaju rezervirano mjesto tamo, a onda nakon svakog zarez, odrediti koje varijable smo imali. Ovdje ćemo koristiti znak upitnika kao naš rezervirano a potom proći u svaku varijablu, odnosno kako bi, za rezervirana mjesta - gdje one varijable treba ići. Dakle, ovdje, prvo upitnik biti zamijenjen pravom korisničko ime onda drugi upitnik po lozinkom. Tada je konačno, nakon što ste ih registrira i da ih dodaju u bazu podataka, onda ih želite prijaviti na web stranici. Imamo vrstu super-globalnu varijablu sjednici. Sjednica traje određeni id, i da id odgovara korisnika koji trenutno prijavljeni Što ćete želite učiniti je pronaći ono što je njihovo korisnički ID i onda postaviti toj sjednici id kao da određenog korisnika id. Funkcija da ćete želite koristiti ovdje je SQL naredba da će dohvatiti zadnju umetnuta ID broj iz tablice. Zatim redovi će se zvati - it'll nazvati id - it'll dodijeliti naziv broju da se vraća. To ću nazvati taj id. Sada smo završili registraciju, i možemo krenuti dalje citirati. Citat omogućuje korisniku da unesete ime određenog fonda, a onda ću se vratiti odlike tog fonda. Što ćete želite učiniti ovdje je imati kontroler i neke predloške. U tom slučaju, mi ćemo imati kontroler koji će učiniti sve misliti za nas. To će se pogledati simbol, a zatim proći u vrijednosti do predložaka koji će ispisati. Mi ćemo imati dva predloške ovdje. Mi ćemo imati jedan predložak koji pruža formu u kojoj će se korisnici Ulaz je ime skladištu - ime udjela. Tada smo također idete da želite još jedan predložak koji prikazuje te vrijednosti. Možete pogledati u prijavu za primjer kako bi imati obrazac koji prihvaća unos, osim ovdje, samo želimo jedan polja. Mi ne želimo korisničko ime i lozinku polje. Mi samo želimo jedan tekstualno polje koje omogućuje korisniku da unesete naziv određenog fonda. Tada želite poslati te podatke - nakon što ste gledali gore taj stock - da quote_form.php. Potraži će vratiti simbol dionica, ime, i cijenu. Oni se nalaze unutar asocijativnog niza. Potražite pregledna funkciju unutar functions.php za više informacija Na povratku vrste onih. Sjajno! Dakle napokon, da ćete želite prikazati burzovne informacije. Vi ćete vjerojatno želite prikazati - you'll želite pristupiti tim varijablama. Nakon što su cijene u varijablu - kao i ime i simbol - onda ćete želite prikazati one u vašem stranici predloška. To predložak stranica bi se moglo nazvati show_quote.php ili nešto. Vaša stranica quote.php bi donijeti showa citat i onda prođe u svim onim vrijednostima. Zatim u php stranicu, vi ste zapravo ispisati te vrijednosti u HTML aspekt stranici. Vi samo koristiti funkciju ispisa i proći u cijenu. Postoje dva načina - možete ga spojite s dot operatora, ili koristiti rezervirano mjesto. Korisnici na kraju će se kupuju i prodaju dionice. Želimo omogućiti im neki način gledanja svih dionica koje su trenutno imaju. Mi ćemo pozvati da je njihov portfelj. Portfolio bi, vjerojatno za svakog korisnika, sadrže hrpa redaka navodeći vrstu dionici koju imaju, a zatim kako su mnogi od onih koje imaju. Naša postojeća tablica - upravo sada imamo korisnicima tablicu u našoj bazi podataka. Koji sadrži korisničko ime, kao i njihove lozinke i koliko novca imaju. Nema pravi način za pohranu svih svojih dionica u to. To nije kao možemo ubaciti nove stupce za svaku dionicu. To bi bilo jako, jako dugo red jer imamo beskonačno količinu vrsta dionica da bi oni mogli imati. Dakle, umjesto što ćemo učiniti je u istoj bazi podataka, imat ćemo korisnicima stol, ali onda također ćemo imati portfelja stol. Portfelj stol će definitivno biti povezan s tablice korisnika, ali umjesto struktura portfelja stol će imati podatke dionica, koliko dionica tog fonda korisnik ima, kao korisnikov posebno id broj. Imate korisnicima tablicu koja ima ID kao i korisničko ime, ljestve - koja je lozinka, šifrirana zaporka - a zatim iznos novca imaju. ID broj će biti povezan na ID broj iz portfelja. Portfelj samo bi imati simbol dionica, kao i dionice - broj dionica te dionica koje korisnik ima. U tom portfelja tablici koju bi u osnovi sve dionice posjeduju sve korisnike na svoje stranice. Kasnije, navesti samo određeni korisnik dionice - samo njihov portfelj - da bi dohvatili vrijednosti iz svog portfelja stolu, kao da id broj specifičan je za tog korisnika. Kada prikaz portfelja, da ćete želite prijaviti svaku od dionica u korisničkom portfelju. Vi ćete želite prijaviti na broj dionica i sadašnje vrijednosti tih dionica. To trenutna vrijednost tih dionica nije pohranjen u tablici portfelja jer to će biti ažuriranju - na minimum - svaki dan Yahoo. Da biste dobili tu informaciju, ne možete referencirati da iz vašeg SQL upita. Što funkcija omogućuje da za nas? Što funkcija će dobiti cijenu? To je pregledna, tako da pomoću lookup na određeni simbol će vam dati puno informacija. To će vam dati tri komada informacije - ime, simbol, kao i cijene. Nakon što lookup određeni simbol, a zatim možete dobiti cijenu, i onda možete koristiti cijenu koji će biti prikazani u svom portfelju. Portfelj također treba prikazati korisnikov trenutni saldo gotovine. To polje je spremljena unutar vašeg tablice korisnika. Pa onda prisjećajući se kako smo u osnovi nailazite na - imamo različite vrste PHP datoteka. Mi ćemo imati kontroler koji u osnovi se sve razmišljanja za vas. I onda imamo predložak u kojoj je predložak bavi izlaza podataka. Morate razmišljati o tome što varijabli kontroler će morati poduzeti u. Ako je riječ o portfelju koji Izlazi svaki naziv, simbol, i podijeliti broj, kao i trenutna cijena dionica, onda ćete želite pronaći neki način zapravo prolazi u - možete proći u niz vrijednosti koje se podudaraju s tim. Idemo u primjer kako biste mogli dohvatiti sve dionice u vlasništvu pojedinog korisnika. To se ne bavi - ali - uz cijenu dionica. Što bi to učiniti je pokrenuti upit. To bi dobili simbol, kao i dionica od - Zovem ovu tablicu, ali u ovom slučaju što bi to bilo? Što je ime od stola da smo se bave koja ima simbol i dionice za određenog korisnika? To je bilo korisnici ili portfelj. Portfolio. Što bi to učiniti je upita portfelj za simbolima i udjela za određenog korisnika. Evo, ja kažem, (SELECT simbol, dionica od tbl - ali umjesto stola, ideš zamijeniti to s portfelja. 'Gdje je zapravo moje stanje. Ja govorim samo želim da se one asocijativne polja koja odgovaraju  na ovom sljedećem stanju - id jednakima.  Tada sam stavljajući rezervirano mjesto tamo i tada sjednici id. Što bi to učiniti je reći za svaki redak u redovima. To je uredan način, umjesto da zapravo postavili za petlje da ponovi nad svim indeksa, a zatim u PHP možete imati za-svaki petlju. Ako imate zadani niz, onda možete reći ću nazvati svaki uzastopni elementa - Idem zvati svaki element to ime. Dakle, za svaku od tih elemenata, ja ću ih nazvati ovo, onda ja mogu to učiniti. U to za svakoga, imate retke kao svoj stvarni niz, i svaki redak idete nazvati red. Svaki put se izvršava tijelo, to će ići gore i da će ažurirati red do sljedećeg elementa u redovima. Sada, u smislu kupnje dionica, ono što želimo učiniti je dobiti dionice koje korisnik želi kupiti i iznos dionica koje korisnik želi kupiti, a onda - ako žele - dodati da je zaliha na njihovu portfelju. Očito, ako oni kupuju nešto, onda to će smanjiti iznos novca imaju, tako da će se smanjiti njihov novac. Mi ćemo se baviti ažuriranju portfelja, kao i tablice korisnika, koji sadrži gotovinu. Ali prvo, morate dobiti stvarni zaliha i količinu dionica koje korisnik želi. Za to, morat ćete HTML obrazac koji će tražiti simbol skladištu koji želite kupiti, kao i broj dionica. Tada ćete želite dodati. Vi ćete želite odabrati određene vrijednosti. Mi smo prošli kroz ovaj malo već, ali kada pokušavate dobiti određene retke - dohvatiti određene retke iz SQL tablice, ovo je sljedeća sintaksa. Vi ste odabrali, a zatim ako navedete zvijezdu, da je u osnovi će se vratiti cijeli, cijeli red za vas. Onda opet, imate stanje gdje, a onda ste odredili - Ja samo želim korisničko ime biti jednaka mail-u, tako da će dohvatiti redak u korisnike koji odgovara mail-u. Kad korisnik želi dodati udio u portfelju, trebate provjeriti za nekoliko pogrešaka. Vi želite da biste bili sigurni da je korisnik zapravo može priuštiti dionice, tako da ćete želite da provjerite svoj novac. Prije smo koristili zvijezdu dohvatiti cijeli redak iz SQL tablice. Ali ovdje, zapravo možemo samo navesti da želim samo jedna vrijednost - Želim samo gotovinu. Dakle, ovdje, to bi vratiti novac za korisnika s ID broj jedan. Ako korisnik već kupio određenu zalihu, ali onda kupuje više od tog fonda, onda u svom portfelju - ne želite zasebnu liniju, drugi red koji sadrži tu novu transakciju. Vi zapravo želite ažurirati iznos. Sve što se mijenja je stvarno iznos dionica koje da korisnik posjeduje. Ako koristite umetke u upitu - pa to je samo umetnuti u svoj portfelj svih tih vrijednosti - korisnikov ID broj kao simbol dionica koje oni kupuju i dionice, onda ćete također želite navesti, dobro, ako sam utrčati dvostrukom ključu - u ovom slučaju, duple ključ je ne samo korisnikov ID, ali također je dioničko simbol - jer možete imati samo - naša pretpostavka je da možete imati samo jedan redak  koji odgovara jednom određenom simbolu. Dakle, na duple tipke - ako naiđete na sudara postoji - vi ste samo ide za ažuriranje dionica na novu vrijednost. Dionice iznosi ono što smo imali prije plus broju dionica koje je korisnik kupuju. Sada kada smo ažurirali portfelja stol, ćemo želite ažurirati korisnikovu gotovinu. To je u users tablici, tako da ćemo se oduzimanjem određeni iznos od novca. Vjerojatno, to će biti novčani iznosi novčanih minus - i onda određeni iznos. Da biste ažurirali gotovine, što bi - ako sam htjela oduzeti novac od mail-u, onda bih pokrenuti ovaj upit - 'Promjeni Korisnici', a zatim postavite novčani stupac novcu - Ja bih ukloniti 9.999 dolara samo ako ime je jednak mail-u. No, u tom slučaju, ne želimo oduzeti 9999 posebno. Želimo odrediti, dobro, želimo oduzimati trenutnu cijenu dionica pomnožen s brojem dionica koje oni kupuju. Sada smo im dopustili da vide sve dionice koje imaju, kao i kupiti više dionica. Također smo prethodno im je omogućilo da pogledate trenutnu cijenu dionice. Ovdje želimo im omogućiti da ih proda. Prvo želimo prikazati u osnovi - želimo im omogućiti da vidite sve dionice koje imaju, pa ovdje želimo prikazati sve retke iz portfelja. Ako se odlučite prodati određenu dionica, onda ćemo pretpostaviti da oni žele prodati sve to. Oni nisu samo ide na prodaju 50% svojih dionica, oni će prodati 100% od toga. Mi samo možemo izbrisati cijeli redak iz portfelja. Možemo izbrisati danog korisnika dionica određenog simbola. Tu je sintaksa za to. Tada želimo ažurirati gotovinu. Mi ćemo biti dodajući u gotovini jednaka količini dionica koje se prodaje pomnožen trenutne cijene dionica - ne cijena po kojoj ih je kupio, nego cijena po kojoj su - trenutna cijena kad su ga prodaju. Za upućivanje trenutnu cijenu dionice, ćete želite koristiti lookup, koji će vam dati cijenu dionice u ovom trenutku. Sada smo s lijeve strane povijesti, koji želite omogućiti korisniku da pratiti sve njihove transakcije - želi vidjeti kad su prodali nešto, kad god je kupio dionice. Želimo da odredite vrijeme u kojem su oni i učinili da, kao i koliko su kupili i što je to dionica. Imamo li bilo struje, postojeću strukturu koja određuje da? Pa, imamo portfolio koji prikazuje broj dionica koje korisnik ima za određenu dionicu. Ali mi smo strukturiranju portfelja na način da se aktualizira kad smo kupiti više, dok povijest trebala - ako kupite jabuka, 10 dionica njega, a potom na prodaju 5, onda bi željeli vidjeti one odvojeno kao zasebne akcije, odvojeni redaka. Dok se ta akcija zamišljati da je u našem portfelju tablici će samo biti promjena na tom određenom retku,  tako da smo vjerojatno idete da želite drugu tablicu. U našoj bazi podataka, mi imamo korisnicima stol, mi imamo portfelja stol, i sad ćemo vjerojatno želite stol povijesti. To stol povijest može pratiti trenutni datum, kao i posebno dioničko simbol, kao i koliko dionica, i što onda akcija je - da li su one kupuju dionice ili da li su ih prodaju. Za rješavanje datuma, postoji nekoliko načina na koje možete to učiniti. PHP ima način praćenja datuma, koji možete pogledati do sebe. U SQL možete koristiti bilo sada ili trenutni timestamp. To je do vas. Samo pazite da svaki put kada korisnik kupuje ili prodaje, vi ćete biti ažuriranju svoj novac u users tablici, vi ćete biti ažuriranju retke u tablici portfelja, onda ćete također biti ažuriranju povijest, tako da će biti tri odvojene SQL upita da ćete se pozivaju tamo. Imamo hrpu funkcionalnosti sada. Samo par podsjetnik da u datoteci indeksa, da ćete želite povezati s najmanje vaše - ali ćete želite omogućiti korisniku da link na buy.php stranici. To će omogućiti korisniku - buy.php je kontroler, tako da će se bilo vam poslati - to će vas poslati u obliku koji vam omogućuje da gledati stvari. Imamo povijest. Mi smo se odjaviti, uzimajući citat i onda prodaju. Oni su na minimum što želite pokazati. U smislu portfelja, portfelj je zapravo prikazano na index stranici. Ako idemo na indeksu, ovdje vidimo da to čini portfolio.php i prolazi u asocijativni niz - u osnovi naslov jednak portfelj. Dakle, ovo je kontroler. Ako idemo na predložak portfolio.php, onda sve to ima je - prikazuje osnovi slika koja kaže, oh, ova stranica je u izradi. Kasnije, nakon što prođe u - you'll biti prolazi u osnovi više određene informacije. Umjesto samo naslov, vjerojatno ćete biti prolazi u više stvari. Nakon što su te vrijednosti, onda portfolio.php može nositi s tim vrijednostima te ih ispisuje u bilo kakve narudžbe. Nakon što ste provesti sve one, također je potrebno provesti jedan više značajku. To može biti dopuštajući korisniku da promijeni svoje lozinke, vratiti svoju lozinku ako ste ga zaboravili - pa za poništavanje lozinke, a zatim vjerojatno ćete također žele urediti registar, tako da im omogućuje da odredite e-mail, pa ako oni zaboraviti svoje lozinke, onda oni mogu dobiti taj. Oni vjerojatno mogu ući u svoje korisničko ime, a zatim e-mail će biti poslan na njih s vezom biti u mogućnosti vratiti svoje lozinke. Možete imati nešto što omogućuje korisnicima da biste dobili račune svaki put kad kupiti ili prodati nešto, i onda napokon, omogućiti im da dodate novac na svoje web stranice. Samo da se vrati u koncept kontrolera i predložaka malo. Imat ćete nešto slično - tako da ćete imati kontroler ovdje. Upravo sada, mi smo u potrazi na login.php primjer. Kada imamo kontroler, u osnovi to će potrajati dva slučaja. Kada smo kontrolere, mi smo u ovom komadu koji smo također vrsta koje se bave kada imamo oblike kao dobro. Regulator će u osnovi imaju odvojene akcije - jednom ako oblik već poslali, a zatim dvije ako korisnik dolazi na toj stranici po prvi put i još uvijek treba ulaz koji oblik. Ja ću skočiti na tom slučaju prije nego što odete do prvog slučaja ima oblik u. Ovdje ćemo reći, ako je oblik podnesen s metodom post - Ne brinite o tome malo. Ne brinite o tome previše, ali razumijem da je u osnovi ova funkcija bavi da li oblik podnesen ili ne. Ovaj uvjet je istina, ako korisnik podnese obrazac. Ako ne, onda ćemo se želite nazvati Render login_form.php, a potom proći u naslovu. Ovaj naslov je samo u osnovi će se pojaviti u zaglavlju. Što to znači je u osnovi kaže, ok - dobro, ako korisnik odlazi login.php i nije zapravo prijavljeni, onda želim da ih poslati na stranici koja ima tu formu što im omogućuje da unesete korisničko ime i lozinku. Tada sam ići na login_form, a zatim da ima stvarni oblik. Zatim, nakon što korisnik pošalje taj oblik, oni će ga predati login.php s metodom posta. Tada sam zapravo ću ući u ovaj dio moje ako-drugo petlje. Onda je ovdje da se bave vrijednosti unesenih u obrazac. To je da se ovdje bavimo s onima. Onda kada se bave s tim vrijednostima - ako ste se bave - recimo imamo posla s quote.php stranici gdje netko može ulaz zalihu da žele gledati, a onda vidjeti da zaslon - to je vrsta slična ovdje. Ovdje imamo prijavu obrazac - you'd vjerojatno imati citat obrazac - ali onda kada korisnik zapravo je podnio tu informaciju, onda ćete želite kontroler proći u drugi predložak koji će im pokazati da stvarne podatke. Pa onda desno oko ovdje, onda ćete vjerojatno - oko kraju svoje stanje ovdje - ako je metoda jednako post - onda ćete vjerojatno želite učiniti drugu stranicu - show citat - koji vam šalje na tu stranicu - show_quote.php-- i onda u toj datoteci će referencirati te vrijednosti. Ima li to smisla? Imamo kontroler koji u osnovi bavi dva slučaja - da li ste unijeli oblik u ili ne. Ako niste unijeli oblik, onda će vas preusmjeriti na tom obrascu, koji će vas vratiti na tu stranicu. Zatim, nakon što su informacije u kontroleru, to tijelo će se nositi s tim informacije koliko je potrebno - bilo gledajući vrijednosti dionica, , a zatim nakon što je pogledao one vrijednosti te ih ima u lijepo oblikovani niz, onda mogu proći taj niz u predložak stranice  koja se bavi izlaza tu informaciju. Opet, budući da je webu, to će biti zabavno. Mi smo izvan C, tako da nismo ograničeni na ASCII i tog terminala izlaz, pa zabavite se s tim. Možete ga napraviti kao vizualni god želite. Možete omogućiti korisnicima da unesete milijuna dolara na vrijeme, ili ih ograničiti i biti stvarno znači i omogućiti im samo unesite jedan peni u isto vrijeme ili nešto slično. Definitivno budite sigurni da se zabavite s tim. PHP kod je malo jednostavniji da je malo lakše map svoj pseudocode u stvarne provedbe. Dakle, definitivno zabavite se uz to, jer to je zapravo naš zadnji komad u CS50. Uz to, ovo je bio Walkthrough 7. Nakon što završite gledajući prohod i završio svoj pset, onda su to također psets, a sada smo na konačni proizvod - nakon što smo dobili kroz kvizu 1. Onda nadamo se možete koristiti alate koje ste naučili iz psets - ne samo sintaksa, ali više apstraktni pojam kako da se sigurno - sviđa, želim to učiniti i onda zapravo provedbi toga. Učenje kako da se bore kroz sintaksu i distribucije koda. Čitanje tuđih kôd, a zatim tumačenje da koristite postojeće funkcije. Dakle, sretno s posljednjeg pset. Prošlo je zadovoljstvo voditi Walkthroughs. Nadam se da sam bila od pomoći za vas. To su bili Walkthroughs, i hvala puno. [CS50.TV]