[Powered by Google Translate] [Walkthrough Проблем Задайте 7] [Zamyla Chan] [Харвардския университет] [Това е CS50 [CS50.TV] Здравейте на всички, и добре дошли Walkthrough 7, CS50 финансите. Сега ние сме официално с всички от psets CS50 и ние просто остава още една, която ще бъде изпълнението забавно на уебсайт, където потребителите могат да влизат в CS50 финансите и да купуват и продават акции. Днес ние ще имаме няколко инструменти на наше разположение. Отиваме да се говори за разрешения. Винаги, когато имате уеб папка, , вие ще искате да позволите на потребителите да изпълняват определени файлове но също така просто да прочетете други такива, така че ние ще разгледаме в разрешения и как можете да зададете тези. След това отиваме да разгледа PHP, HTML и SQL код. Първо, разрешения. Когато сте в терминала в определена директория, тогава какво искате да направите, е да искате да изпълните командата коригира. Това е последвано от букви или цифри съответства на това, което основно искат светът да види, можете сами да видите и др. Например, когато имате папка, тогава искате тази папка да бъде изпълним от всички, че го вижда, така, какво ще направите, можете да изпълните командата коригира A + X и след това името на вашата папка. Когато имате файл като CSS файлове или файлове с изображения - като JPEG файлове и растерни изображения, подобни неща, или някой кодекс JavaScript - искате, че за да може да се чете от всички, така, тогава това, което правите, е, бихте могли да използвате маска - което е звездичка - всъщност да се показват в папката CSS - всичко в тази папка -  Отивам да се каже, че това ще може да се чете от всички. С разрешения, когато се използва буквите, Можем също да използваме номера. Така че, виждате, че в крайна сметка, когато искате нещо да изпълним - , която е представена от номер 1 - нещо, което да може да се чете е номер 4 и след това - записваеми е номер 2 - и така по същество, когато искате комбинация от тях, а след това да ги добавите. Ако искате нещо, за да могат да се четат, записваеми и изпълним, тогава ще добави 4, 2 и 1 и това ще ви даде 7, тогава, когато имате папка искате, че да бъдат изпълними от всички - , както и четене и писане - тогава, че 7, 1, 1. Това ще бъде 7 за вас, тогава 1 за другите хора. Когато имате спекулация, всъщност ще определи кои папки и кои файлове трябва да се коригира-ЕД специално. Например, когато имате папки - това са 7-1-1 - , когато имате снимки или HTML, CSS, JavaScript, след това тези, които ще бъдат 6, 0, 4 - или 6, 4, 4 - и PHP файлове ще бъдат 6, 0, 0. Идеята зад това е, че потребителите не трябва да видите PHP код, но просто да може да се види изхода. Чудесно! Преместване в PHP. Просто, когато пожелаете PHP файл, файлът наставка. PHP. Можете също така да се смесва HTML с PHP код. Ако имате HTML файл, например, след това можете да се загради с ляв ъгъл, въпросителен знак, PHP - сложиш PHP код - и след това затворете, че с друг въпрос марки и под прав ъгъл. Променливи в PHP са много по-лесно да се справят с от променливи в C. Всяка променлива просто започва със знака за долар пред него и те са слабо написали. Това означава, че не е нужно да се притеснявате за създаване на нещо равна на низ или число. Можете просто да кажа, че това е моето име на променливата и то това е неговата стойност, така че ще бъде по-лесно да се справят с там. Друго нещо е, че PHP ви позволява да използвате асоциативни масиви. Можете просто да дефинира масив, както бихте го направили в C с думите, знака за долар името на масив е равен, и след това в квадратни скоби са просто списък на стойностите на всички елементи в масива. Но в PHP, какво можете да направите, е да се посочва основно - това е нещо като хеш функция. Можете да зададете индекс - това, което ти започваш да го наречем - и след това, че съответства на стойността. Ако действително премине в = 1, б = 2, в = 3, масив в индекса ще ви дам 1. Това pset ще ви стопли с някои PHP в раздел от въпроси, и след това да се потопите в CS50 финансите. Ние имаме няколко - имаме някои функции, основно, да приложи в този уебсайт. Ние искаме да позволи на потребителите да се регистрират в нашия сайт с потребителско име и парола. Ние искаме да им позволи да търсите оферта, и тогава ние ще отпечата името на този цитат, както и текущата цена, че това е най. Ние искаме да им позволи да видят портфейл от всички акции, които са закупили този момент. Ние също искаме да им позволи да купуват акции, както и да ги продават. И накрая, ние искаме да им позволи да видят историята от всички транзакции, които сте направили. Тогава най-накрая, след като въведохме всичко това, тогава сте свободни да се приложи една допълнителна функция. Ние ще отидем в тях. Тези, които могат да бъдат или които позволяват на потребителите да получат допълнителни пари чрез депозиране на допълнителни пари, или бихте могли да им позволи да си смените паролата, или нещо подобно, имейл с разписка, когато купуват или продават запас. Има ограничен списък от функции, които бихте могли да се приложат, така че това е последният. Тъй като това е сайт, вие също имат голяма свобода да я персонализирате. Ние правим някакъв код CSS, но определено сте свободни да го ощипвам, го правят да изглежда по-хубав, но в основата е основната функционалност така че винаги да правят справка на спецификацията за това, което всъщност трябва да се включат там. След спекулация, отиваме да се използва уред, както и сървъра. Това ще бъде домакин на нашия уебсайт за нас, на своя локален сървър. Ако следвате тези инструкции и разархивирайте pset 7 разпространение на кодове във вашия виртуален хост / локалния хост папка,  след това можете да посетите http://localhost/ в Google Chrome в уреда, и тогава ще стигнат до кода, в която сте написали pset 7. Pset 7 идва с куп разпространение на кодове, и да се надяваме, we've - чрез всички psets преди това - ни свикнали да четете чрез разпространение на кодове, разбиране какви функции вече са осигурени и как бихме могли да можете да използвате тези и други функции, които ние ще се реализира. В този случай, ние имаме три папки. Имаме HTML папка, включва папка и папката с шаблони. Това, което ще се прави с този pset вид отделяне на мислене - програмния мислене - на PHP код с действителното визуален аспект. Ще има един PHP файл, който прави всичко на мислене, се казва в базата данни, отпечатва неща, ако отчети - такива неща - и това ще мине данни в нашия файл с шаблон или файл template.php. Какво, че ще направя е да прочетете данни и след това ще го разпечатате. Ние можем да се отнасяме към шаблони като "тъпо" в това, че ние всъщност не ги искат да се върши много работа при изчисляването на нещата. Ние искаме нашите контрольори, които да го направя. Малко по този въпрос - нека хвърлим един поглед към някои от разпространение на кодове. Ето ни index.html файл, и това е доста празна. По същество това, което прави - той казва, добре, аз отивам да се изисква от configuration.php файла. Ние не виждаме, че точно там, но това е в общи линии се обадите на configuration.php файла, и изпълнение. След като направи това, той ще направи портфейла. Rendering е функция, така че, когато ние сме в контролер, Ще се обадя на мазилка, ние ще го дам файла и след това данните, които ние сме преминавали през така, че ще се обадя в portfolio.php-вид пропуск, че данните, така че портфейл не може да се справи с това. И сега, ето, ние имаме login.php форма.  Това е контролер, който основно се грижи за сеч инча Ето, той проверява, ако и да е форма е подадено до този файл и се занимава с утвърждаването на подаване. Ние ще разгледаме в тази извиня функция. Когато искаме да отпечата съобщение за грешка, ние използваме извини и това ще пренасочва потребителя към определена страница , която ще изведе съобщение за грешка, че ние показват. Продължавайки, тя ще сверки с базата данни - Ще отида в повече от това по-късно. После виждате, че тук, ако и да е форма не е представена, след това го прави форма. Това означава, че че той отива login_form.php, така че нека да погледнем в това. Login.php всъщност е, където виждаме HTML се занимават с действително визуален аспект. Тук имаме един маркер за въвеждане на потребителското име, вход за паролата, както и бутона Submit. Това е всъщност, където визуален аспект и формата на HTML ще се проведе. Ето, той казва, че ще бъдат представени от даден метод, наречена пост. Ние ще влязат в разликите между методи - оставите срещу получи, има и нещо, наречено сложи - ние ще влязат в тези методи по-късно, но за интереса на този pset, Бих силно препоръчваме Ви да използвате мнение. Ние знаем, че основно веднъж този формуляр се подава - от login_form.php - след което ще премине към действие - login.php - основно преминава във всички тези параметри от тези форми в login.php. Резултатите от тази форма, съдържаща се в тази публикация асоциативен масив. Индексите на различните елементи в масив поста са точно това, което сте задали тук. Вие казвате, че името на този вход е потребителско име. Името на това е парола. По същия начин, ще видите потребителско име, след като индексът на асоциативен масив. Ако отидем до включва папка, имаме тази функция файл, който ще бъде много полезен. Всички тези функции се изпълняват за вас. Не е нужно специално да изпълни всеки от тях себе си, но те ще доста полезно. Ние се извиняваме, която както казах преди, по същество ще отпечата съобщение за грешка на определена страница - apology.php. Тогава ние имаме сметището, така че ако просто се обадете сметището и след това преминават в променливата, след това ще ви отведе до страница, която ще покаже, че променливата за вас. Тогава ние сме Изход, който на практика ще сложи край на сесията на даден потребител. Lookup ще бъде полезен. Тъй като ние сме се занимават с цитати и запаси, отиваме, за да може - и това е по същество реално време. Ние трябва да знаем, какви са тези акции стойности са, така че ние имаме функция за търсене, която се занимава с документация от акции на Yahoo. След търсите определен символ на запаси, той ще се върне на фондовата символ както и името и текущата цена на този запас. Това е функция за търсене. След това си имаме работа с MySQL, така че ние ще трябва да се иска да изпълни определени заявки за SQL нашата база данни. Имаме заявка да се справи - вид на абстрактното някои, че от Отиваме да се минава през целия низ на SQL заявка - и всички променливи, които отиват в него - и какво прави всъщност изпълни, че за нас. Вместо да се налага да пиша всичко това всеки път, когато искате да задава въпроси - от получаване на резултатите от тази заявка - след това можете да се обадите на заявка функция, и тя ще се върне към вас - в зависимост от това, което използвате за вашата заявка - вероятно е ред на всички резултати, които съвпадат със заявката или подобен. Повече за това по-късно пак. Накрая, ние имаме пренасочване, която, както подсказва и името, ви пренасочва към друга страница. И тогава имаме рендер, който отива да се обади няколко пъти. Когато сте в контролер, ти се обадя направи в шаблона страница и след това преминават в ценностите, които шаблона ще се справят с. Тези стойности са най-вероятно ще се занимава с вида на продукцията, която искате да се показва на вашия шаблон страница. Добре. Това са функции, и има много повече в това разпределение код. Аз ви насърчавам да мине през това и да я опозная себе си. Също така, спец. вероятно ще ви преведе през някои други елементи на разпространение на кодове. Ето обобщение на функциите, намерени в functions.php. Добре. Първата задача е да позволи на потребителите да се регистрират на уебсайта. Точно сега, е логин формата на уебсайта, и са снабдени с няколко потребители с пароли. Можете да използвате тези потребителски имена и влезете в системата, но вие искате да се даде възможност на хората да направят свои собствени потребителски имена и се добавят към сайта. Оформление за регистрация е доста подобен на логин формата, с изключение на потребителското име не е вече съществуваща, и потребителят трябва да предостави нова парола, и след това обикновено имаме парола за потвърждение. След като потребителските въвеждания всички на тази информация, искаме да ги добавите към нашата база данни на потребителите. Отиваме да има база данни - SQL база данни - че отиваме за позоваване. В тази база данни, ние ще имаме таблица с всички потребители съдържащ тяхното потребителско име, парола, а също и колко пари те имат. В регистър, ние искаме да им позволи да въведете тази информация. Искате да покажете тази форма. Ние искаме да сме сигурни, че паролата си - , че са влезли, и след това също така, че паролите съвпадат, когато те го въведете два пъти. След всичко това се прави - ако приемем, че тези грешки са проверени - тогава ние искаме да добавим тези потребители в нашата база данни. Накрая, след като сте се регистрирали, то е доста удобно, ако не е нужно да влезете отново веднъж сте се регистрирали, така че ние ще им влезете в уебсайта, ако сте се регистрирали успешно. Първата задача е да се покаже формата, и това всъщност ще бъде - целия този процес ще се моделира доста внимателно след вход регистрация с изключение вместо login.php може да се наложи register.php. Вместо login_form.php-които е шаблон - ти ще се регистрирайте форма. Вие ще искате да добавите още едно поле - полето парола потвърждение - а не само на едно име и една парола. На следващо място, ние искаме да се провери дали паролите съвпадат или са празни. Ние имаме контролер - register.php-който ще се грижи за правене на тези проверки. Когато формулярът се подава по пощата метод, тогава всички тези променливи се съдържат в рамките на мнение масив. Вие искате да се уверите, че стойността на мнение масива индекс парола съответства на потвърждение елемент. Вие искате да сте сигурни, че те не са празни, и искате да се уверите, че те са едни и същи. Едно удобно нещо за PHP е, че не е нужно да използвате низ сравнение вече. Ние можем да използваме за равенство се равнява на оператора  да се провери дали струните са равни един на друг. За обработка на грешки, вие ще искате да се извиня. Да се ​​извини, просто се обадете на функция  и след това определете вида на съобщението, което искате да изведете. След това искате да добавите потребителя към базата данни. До сега, всички ние сме били прави е просто справяне на местно ниво с резултатите от формата. Сега, ние всъщност искате да ги добавите в нашата база данни. За тази цел, ние първо ще искате да се уверите, че потребителското име не е празен. Разберете, че на интернет страница, не може да има множество потребители с едно и също потребителско име, така че вие ​​ще искате да се уверите, че когато поставите нещо в базата данни - вмъкнете нов потребител - тогава не се получи сблъсък между предшестваща потребителско име както и потребителското име, че потребителят се опитва да представи. За тази цел, след като изпълните заявка - поставяне на определен потребител с паролата си и първоначалния размер на паричните средства - веднъж ти се обадя тази заявка, MySQL действително ще се върне невярно, ако не успее. Структурата на потребителите е такова, че потребителското име е уникална стойност, така че не може да има повече от един. Когато се опитате и да вмъкнете нов ред с потребителско име, което вече съществува, че ще се върне погрешно като Булева стойност фалшива. Сложно нещо тук е, че вие ​​ще искате да проверите, ако резултатът е резултат от вашата заявка. Ако се провали, тогава вие ще искате да се консултирате с тройната равнява на оператора. Това всъщност се случва да се провери дали е провал или не, като има предвид, че само един прост се равнява на равен, би било вярно, ако беше празен ред. В резултат на повреда, ако има сблъсък между потребителски имена е фалшива действителната стойност. Ето как можете да вмъкнете в база данни. Тук е заявка, че ще изпълните стриктно SQL. Едно нещо е, че реално могат да посетят уеб сайт, който управлява SQL база данни и да си поиграете, като въведете ръчно стойности или редове. Той ще изведе какво SQL продукция е Можете също така да стартирате SQL команди в рамките на вашата база данни  и след това вижте какво може да синтаксиса, и след това превежда, че в заявката функция, която имаме в pset 7, , която ще бъде много подобен на заявките, които всъщност работят. Ако исках да вмъкнете нов ред в таблицата с потребителите си, тогава аз ще уточни вмъкнете в потребителите, който е на името на моята маса. Тогава ще се уточнят имената на колоните. Тогава ще осигури стойностите заедно с паролата си. Не се съхраняват паролите в таблицата с нашите потребители само като низ. Те се съхраняват като криптирана версия, така че вие ​​ще искате да стартирате криптата функция на действителната парола и това ще ви даде правилния тип за съхранение на масив на потребителите. Работещи това ще въведе нов ред в таблицата с потребителите си. За да се справят със заявка функция, преди в C знака за процент като контейнер. Също така, една и съща концепция на контейнера важи и тук. При заявка, да зададете цялата заявка, освен в случаите, когато си имаш работа с променливи като принос в заявката, след това, вместо действително пускането им вътре - като, когато имахме ФОРМАТ отчети в C. Ние ще постави низ и след това има контейнер там, и след това след всяко запетая, в т.ч. с променлив имахме. Ето, ние ще използваме знак въпросителен знак, тъй като нашата контейнер и след това преминават във всяка променлива, съответно в ред, за контейнери когато тези променливи трябва да тръгвам. Така че тук, на първия въпросителен знак ще бъде заменена от действителната потребителско име тогава втори въпросителен знак с парола. Тогава най-накрая, след като сте ги регистрират и ги добавя към базата данни, след това искате да влезете в сайта. Имаме вид супер-глобална променлива, наречена на сесията. Сесия отнема определен номер, и този номер съответства на потребител, който е влязъл в момента инча Какво вие ще искате да направите, е да разберете какъв е техният идентификационен номер на потребителя и след това, че сесиен идентификатор идентификатор, който конкретния потребител. Функция, която вие ще искате да използвате тук е SQL команда че ще изтегли последната въведена идентификационен номер от вашата трапеза. Тогава редове ще се обадя - it'll се обадите на номер - it'll зададете име на номера, който се връща. Ще се обадя на този номер. Сега сме готови регистрирате, и ние може да се движи, за да цитирам. Цитат позволява на потребителя да въведете името на определен състав, и след това ще се върне качествата на този запас. Това, което вие ще искате да направите тук, е да има контролер и някои шаблони. В този случай, ние ще да има контролер, който ще направи всичко на мислене за нас. Тя ще изглежда символа и след това преминават в стойностите на шаблони, които ще се отпечатат. Отиваме да има две шаблони тук. Отиваме да има едно шаблон, който предвижда формата, в която потребителите ще въведете името на запаса - името на акцията. Тогава ние сме също така ще искате друг шаблон, който показва тези стойности. Можете да погледнете в вход за пример как да ги имат форма, която приема вход, с изключение на тук, искам само 1 поле. Ние не искаме потребителско име и парола областта. Ние просто искаме 1 текстово поле, което позволява на потребителя да въведете името на определен състав. След искате да изпратите, че данни - веднъж сте разглеждали този запас - да quote_form.php. Търсене ще се върне символ на запаси, името и цената. Тези, които се съдържат в асоциативен масив. Погледнете нагоре функция за търсене вътре в functions.php за повече информация за обратните на тези. Чудесно! Така че накрая ще искате да покажете борсова информация. Вероятно Вие ще искате да се покаже - ще искат да имат достъп до тези променливи. След като сте цена в променлива - както и името и символа - тогава вие ще искате да се покаже на тези във вашия шаблон страница. Този шаблон на страницата може да се нарече show_quote.php или нещо такова. Би направило цитат Вашата страница quote.php шоу и след това преминават във всички тези ценности. След това в PHP страница, всъщност отпечатате тези стойности на HTML аспект на страницата. Можете просто да използвате функцията за печат и да премине в цената. Има два начина - можете да го свързвам с оператора точка, или да използвате контейнер. На потребителите в крайна сметка ще бъдат покупка и продажба на акции. Ние искаме да им позволи някакъв начин на виждане на всички запаси, които в момента те имат. Отиваме да се обадя, че тяхното портфолио. Портфолио би, вероятно за всеки потребител, съдържат куп редове списък на вида на акции, които те имат, и колко от тези, които имат. Нашата съществуваща таблица - точно сега имаме потребители на таблицата в нашата база данни. Това съдържа име на потребителя, както и паролата си и колко пари те имат. Няма по-реален начин за съхраняване на запасите си в рамките на този. Не е като да могат да се монтират нови колони за всяка акция. Това би било много, много дълъг ред, защото имаме безкрайно количество видове запаси, които биха могли да имат. Така че, вместо това, което ние ще направим, е в рамките на една и съща база данни, ще имаме маса, но след това ще има таблица портфейл. Портфолиото маса ще бъде определено свързани с масата на потребителите, но вместо това структурата на таблицата портфейл ще имат борсова информация, колко акции на този запас, потребителят има, , както и специално идентификатор на потребителя номер. Имате на потребителите таблица, която има номер, както и потребителското име, хеш - което е парола, криптирана парола и след това сумата на паричните средства, които имат. Идентификационен номер ще бъде свързан с идентификационен номер от портфейла. Портфейлът би просто символ на запасите, както и акции - броя на акциите на този състав, който потребителят има. В този портфейл маса ще са основно всички притежаваните акции от всички потребители на вашия сайт. Късно, за да се уточнят само акции даден потребител - само портфейла си - ще извлечете стойности от таблицата портфолиото си по такъв начин, че идентификационен номер е специфична за този потребител. Когато показвате портфейла, вие ще искате да съобщават за всеки от запасите в портфейла на потребителя. Вие ще искате да отчитат броя на акции и текущата стойност на тези акции. Че текущата стойност на тези акции не се съхранява в портфейла маса защото това ще се актуализира при минимален всеки ден от Yahoo. За да получите тази информация, не може да препращане, че от SQL заявката си. Каква функция се предвижда, че за нас? Каква функция ще получите цената? Това е търсене, така че използването на търсене в определен символ ще ви даде много информация. Ще ви дам три парчета от информация - име, символ, както и цената. След като търсене на определен символ, след това можете да получите цена, и след това можете да използвате цената, която да се показва във вашия ресор. Портфейл, следва също така да покаже текущия баланс на паричните средства на потребителя. Това поле се съхранява в таблицата с потребителите си. Тогава си спомни как сме основно се налага да ние сме с различни видове PHP файлове. Отиваме да има контролер, който основно прави всичко мисли вместо вас. И тогава ще имаме шаблон, в който шаблона се занимава с генериране на данни. Трябва да се мисли какви променливи контролера ще трябва да се инча Ако ние сме се занимават с портфейл, който извежда всяко име, символ, и броя акции, , както и текущата цена на запаси, тогава вие ще искате да се намери някакъв начин на основно преминаване в може да премине в масив от стойности, които съответстват на тази. Да отидем в пример, как можете да изтеглите всички на запасите собственост на определен потребител. Това не се занимава - все още - с цената на акцията. Това, което ще направя, е да пусна заявка. Той ще получи символ, както и акции от Обаждам тази таблица, но в този случай какво ще бъде то? Какво е името на таблицата, че си имаме работа с този символ и акции за даден потребител? Потребители или портфейла. Портфейл. Това, което ще направя, е заявка портфейл за символите и акции за определен потребител. Ето, аз казвам, (Изберете символ, акции от TBL но вместо на масата, ти започваш да се замени с портфейл. "Къде ми е основно условие. Аз казвам, че само искате да получите тези асоциативни масиви, които съответстват  тази следното условие - ID равни.  Тогава аз съм като контейнер и след това сесиен идентификатор. Това, което ще направя е да се каже за всеки ред в редове. Това е чист начин, вместо да се налага да се създаде за цикъл итерации над всички на индексите, след това в PHP можете да имате за всеки цикъл. Ако имате даден масив, тогава може да се каже, аз отивам да се обадя на всеки следващ елемент - Ще се обадя на всеки елемент това име. Така че, за всеки един от тези елементи, аз ще ги наричам това, тогава мога да направя това. При това за всеки, имате редове като вашата действителна масив, а всеки ред, ти започваш да се обадя ред. Всеки път, когато той изпълнява тялото, тя ще вървим напред и ще се актуализира ред на следващия елемент в редове. Сега, в условията на покупка на акции, това, което искаме да направим, е да получите запас, че потребителят иска да купи и размера на акциите, които потребителят иска да купи и след това - ако искат - добави, че запасите на портфейла си. Очевидно е, че ако те купуват нещо, а след това, че ще да намалява размера на парите, така че това ще намали парите си. Отиваме да се занимава с актуализиране на портфейла, както и таблицата на потребителите, което съдържа парите. Но първо, трябва да получите актуална наличност и размера на акциите, които потребителят иска. За това, вие ще се нуждаете от HTML форма, която ще поиска за символ на запаса , които искате да купите, както и броя на акциите. Тогава вие ще искате да добавите. Вие ще искате да изберете определени ценности. Сме преминали през това малко вече, но когато се опитвате да получите определени редове - извличане на някои редове от таблицата SQL, това е следния синтаксис. Можете да изберете, и след това, ако сте задали звезда, , които основно ще се върне като цяло, целия ред за вас. Тогава пак, имате това заболяване, където, а след това да определите Искам само име да бъде равна на пощата в така че само ще извлечете ред потребители, който съответства на пощата в. Когато даден потребител иска да добавите акции до портфейл, трябва да се провери за няколко грешки. Вие искате да сте сигурни, че потребителят може да си позволи състав, така че вие ​​ще искате да проверите техните пари. Преди, ние използвахме звезда, за да изтегли целия ред от таблица на SQL. Но тук, ние всъщност може да само да уточним, че аз искам само 1 стойност - Искам само пари в брой. Така че тук, че ще върне парите за потребителя с идентификационен номер 1. Ако потребителят вече е купил акции, но след това купува повече от този запас, след това в портфолиото си - вие не искате отделен ред, друг ред, който съдържа тази нова сделка. Вие всъщност искате да актуализирате сумата. Всичко това се променя наистина е размера на акциите, които притежава този потребител. Ако използвате вмъкнете в заявката - така че просто поставете в портфолиото си всички тези стойности - ID номер на потребителя, както и като символ на запаса, че да си купуват и акции, тогава вие ще искате да зададете, добре, ако аз тичам в дубликат на ключ - в този случай, дубликат ключ е не само потребителски идентификатор, но също така и символ фонд - защото може да има само - нашата хипотеза е, че може да има само един ред  , който съответства на 1 специален символ. Така че, на дубликат на ключ - ако се сблъскате сблъсък там - вие просто ще актуализира акции с новия си стойност. Акциите се равнява на каквато сме имали преди, плюс броя на акциите, че потребителят се купуват. Сега, когато сме се обновява на портфейла маса, ние ще искате да се актуализира на парични средства на потребителя. Това е в таблицата на потребителите, така че започваш да се извади определена сума от парични средства. Предполага се, че това ще се извърши в брой се равнява на парични минус - и след определена сума. За да актуализирате пари, нали - ако исках да отнеме пари от пощата в, тогава аз ще изпълните тази заявка - "Актуализиране на потребители" и след това определени паричните колона на парите в брой - Ще премахне 9999 долара, само ако потребителското име е равна на пощата в. Но в този случай, ние не искаме специално за изваждане 9999. Ние искаме да се уточни, добре, ние искаме да се извади текущата цена на запасите умножена по броя на акциите, които те купуват. Сега сме им позволи да видите всички на запасите, които те имат, както и да купуват повече запаси. Ние и по-рано са им позволява да търсите текущата цена на запаси. Тук бихме искали да им позволи да ги продават. Първо искаме да се покаже в общи линии - ние искаме да им позволи да видят всички на запасите, които те имат, така че тук ние искаме да се покажат всички редове от портфейла. Ако те решат да продават определен състав, след това отиваме да се предположи, че те искат да продават всичко. Те не просто ще продаде 50% от акциите си, те ще се продават 100% от нея. Ние можем само да изтрия целия ред от портфейла. Можем да изтрием акции на даден потребител на определен символ. Има синтаксиса за това. Тогава искаме да актуализира пари. Отиваме да се добавят в парични средства, равни на размера на дяловете, които се продават умножен по текущата цена на запаса - не е цената, на която я е купил, а цената, на която те са - текущата цена, когато те са го продава. За указване на текущата цена на запаси, вие ще искате да използвате справка, която ще ви даде цената на фондовата в настоящия момент. Сега ни остава с история, който искате да позволи на потребителя да следите всичко на своите сделки - иска да види всеки път, когато те продават нещо, когато те купи наличност. Искаме да се определи времето, в което те направиха, че както и колко са купили и какво наличност. Да имаме ток, съществуваща структура, която уточнява, че? Е, ние имаме портфейл, който показва броя запаси, за които даден потребител е за дадена акция. Но ние сме структуриране на портфейл в начина, по който я актуализира, когато купуваме няколко, като има предвид, че историята трябва да - ако си купите Apple, 10 акции на, и след това по-късно продава 5, тогава вие ще искате да видите тези отделно като отделни действия, отделни редове. Като има предвид, че това действие да се визуализира, че в нашето портфолио маса просто ще бъде актуализация в този конкретен ред,  така че ние вероятно ще искате друга маса. В нашата база данни, имаме таблицата с нашите потребители, ние имаме нашето портфолио маса, и сега най-вероятно ще искате таблицата история. Тази маса историята може да следите на текущата дата, , както и определен символ състав, както и колко акции, и след това какви действия е дали купуват тези акции или дали да ги продава. За да се справи с дата, има няколко начини, по които можете да направите това. PHP има начин за следене на дата, която можете да търсите себе си. В SQL можете да използвате сега или текущата клеймото. Това е до вас. Просто се уверете, че всеки път, когато потребителят купува или продава, ще се актуализира парите си в таблицата на потребителите, ще се актуализира редовете в таблицата портфейли, тогава ще се актуализира историята, така че ще бъдат три отделни SQL заявки, че ще се обади там. Имаме един куп функционалност. Само няколко напомняния, че във вашия индекс файл, вие ще искате да се свържете с най-малко си - но вие ще искате да позволи на потребителя да се свърже на buy.php страница. Това ще да позволи на потребителя - buy.php е контролера, така че става или ви прати да - това ще ви изпрати до форма, която ви позволява да търсите нещата. Ние имаме история. Ние сме излиза, получаване на оферта и след това продават. Това са минимум това, което искате да покажете. По отношение на портфейла, портфейлът е действително показва в началната страница. Ако отидем в индекс, тук виждаме, че тя прави portfolio.php и преминава в асоциативен масив - основно заглавието се равнява на портфейла. Така че, това е контролера. Ако отидем шаблона на portfolio.php, тогава всичко, което тя е показва основно картина, която казва, о, този сайт е в процес на изграждане. По-късно, след като премине в - ще преминава в основно по-конкретна информация. Вместо само заглавие, вероятно ще се минава в повече неща. След като имате тези стойности, тогава portfolio.php могат да се справят с тези стойности и отпечатването им в каквато и да е цел. След като въведохме всички онези, вие също трябва да прилагат един повече черта. Това може да се позволява на потребителя да промените паролата си, да възстановите паролата си, ако съм го забравила - за нулиране на паролата, след което най-вероятно ще искате да редактирате регистрират, така че това им позволява да зададете имейл, така че ако те забравят своята парола, след това те могат да получат. Те могат вероятно ще влезе в своето потребителско име и след това ще бъде изпратен имейл за тях с връзка, за да бъде в състояние да възстановите паролата си. Можете да имате нещо, което позволява на потребителите да получат постъпления всеки път, когато купуват или продават нещо, и накрая, да им позволи да добавите пари към техния уебсайт. Само да се върне в концепцията на ръководителите и шаблони малко. Вие ще имате нещо като - така че ще трябва контролер. Точно сега, ние търсим в login.php пример. Когато имаме контролер, основно това ще отнеме две дела. Когато имаме контролери, ние сме в тази част, че ние сме също вид за справяне с когато имаме форми, както добре. Контролерът на практика ще имат отделни действия - ако и да е форма вече е била подадена, и след това две, ако потребителят се към тази страница за първи път и все още е необходимо да въведете тази форма. Отивам да скочи до този случай, на първо място, преди да отиде до първия случай на формата. Тук казваме, ако формата е била представена с метода пост - не се притеснявайте за това малко. Не се притеснявайте за това твърде много, но разбират, че в основата на тази функция се занимава с дали формата е представена или не. Това условие е вярно, ако даден потребител се е представил под формата. Ако не, тогава ние отиваме да искат да свържете се с login_form.php на мазилка, и след това преминават в заглавието. Това заглавие е само основно ще се появи в заглавната си част. Това не е основно се казва, добре - добре, ако потребителят отива login.php и всъщност не влезете в профила си, тогава искам да ги изпратите на страница, която има тази форма което им дава възможност за въвеждане на потребителско име и парола. После отивам да login_form, а след това, че има действително форма. След това, след като потребителят твърди, че формата, те ще го представя login.php с метода пост. Тогава всъщност ще влезете в този раздел на моя ако друг контур. Тогава това е, че ние се занимаваме с ценностите, вписани във формата. Той е тук, че ние се занимаваме с тези. След като се справите с тези стойности - ако имаш работа с казват, че се занимават с quote.php страницата, където някой може да въведете състав, който те искат да изглеждат, и след това да се види, че дисплея - това е вид на подобни тук. Тук имаме логин формата - you'd вероятно има формата цитат , но след това, след като потребителят е всъщност твърди, че информацията, тогава вие ще искате контролера, за да премине в друг шаблон , които ще им покажем, че актуална информация. Значи някъде тук, а след това най-вероятно ще около края на състоянието ви тук - ако методът се равнява на мнение тогава най-вероятно ще искат да направят друга страница - предаването цитат които ви изпраща на тази страница - show_quote.php - и след това в този файл ще се отнася до тези ценности. Това прави ли смисъл? Имаме контролер, който основно се занимава с два случая - дали сте въвели начин или не. Ако не сте въвели форма, след това ще ви пренасочи към тази форма, които след това ще ви се връща към тази страница. След това, когато имат информация в контролера, този орган ще се занимава с това информация, когато е необходимо - или търсите стойности на запасите, а след това веднъж е погледна тези ценности и ги има в добре форматиран масив, след това може да премине този масив в шаблона страница  която се занимава с извеждането на тази информация. Отново, тъй като това е интернет, ще бъде забавно. Ние сме извън C, така че не сте ограничени до ASCII и че изход, така че да се забавляват с това. Можете да направите това като визуален, колкото искате. Можете да позволи на потребителите да входни милиони долари в даден момент, или да ги ограничат и да бъдат наистина означава и да им позволяват само да въведете 1 стотинка в даден момент или нещо подобно. Определено бъдете сигурни, да се забавляват с това. PHP кодът е малко по-лесно в това, че е малко по-лесно да се набележат pseudocode за действителното прилагане. Така че, определено се забавляват с това, защото той всъщност е последното парче в CS50. С това, това е репетиция 7. След като приключите с гледането на репетиция и приключите pset, то те също са psets, и сега ние сме на крайния продукт - след като получите чрез викторина 1. След това се надяваме, че може да използва инструментите, които сте научили от psets не само синтаксис, но по-абстрактно понятие за това как да отнеме известно - харесва, аз искам да направя това и след това действително прилагане на това. Да се ​​научиш как да се борят чрез синтаксиса и код на разпределение. Четене код на други хора, а след това тълкуване, че използването на вече съществуващи функции. Така че, успех с последния pset. За мен беше удоволствие да доведе сваляне. Надявам се да съм била полезна за вас. Те са били за сваляне, и благодаря много. [CS50.TV]