[Музика грає] ROB BOWDEN: Привет. Я Роб, і я сподіваюся, що ви будете готові поставити акції в цьому розчині. По-перше, давайте поглянемо на реєстр. Тому пам'ятайте, що тут ми перевіряємо щоб побачити, якщо форма була розміщені на цій сторінці. Так перше, що ми збираємося зробити, це піти в іншому місці. І ми збираємося надавати регістр форма. Таким чином, форма реєстру збирається опублікувати в register.php. І те, що він збирається відправити? Це збирається відправити логін, що користувач збирається заповнити, пароль, і підтвердження - пароль знову набрали. Так що тепер, коли ця форма розміщені на register.php ми виконати це, якщо. Дивлячись на це, якщо, ми в першу чергу збирається перевірки вводу. Ми хочемо, щоб переконатися, що ім'я користувача і пароль не були порожніми, і що підтвердження насправді відповідає паролю. Як тільки ми переконалися, що ми можемо фактично реєстрації користувача. Що це означає? Ну, ми хочемо, щоб вставити Користувач в нашу базу даних. І це, як ми зробимо це. Так що ми збираємося вставити в користувачів Таблиця поля ім'я користувача, хеш, і готівку. Значення за замовчуванням готівкою буде 10000. І ми збираємося пройти як ім'я користувача, ім'я користувача, через POST супер глобальний, який представив з форми. І ми збираємося для шифрування пароль. Так що якщо що вдалося, то результати буде не брехня. Якщо це не вдалося, то ми хочу вибачитися. Щось пішло не так. А що може піти не так? Ну, там має бути унікальне ім'я користувача. І тому запит міг не якщо ім'я користувача вже існував в таблиці. Так припускаючи, що це був унікальний ім'я користувача, Потім ми збираємося запросити, щоб захопити Ідентифікатор цього користувача. Пам'ятайте, що ідентифікатор автоматичне прирощення. І так, якщо це відбудеться на провал для деяких Причина, то ми хочемо, щоб вибачитися що ми не могли захопити ID. Але якщо припустити, що він не забув, то ми захопити ID від того, що запит повернувся, зберігати, що в нашій сесії - тому ми хочемо увійти даного учасника в по зберігання ID в сесії супер глобальному, і, нарешті, перенаправити до нашого портфеля. І це все для регістра. Тепер ми збираємося перейти на цитати. Так цитата матиме дійсно схожі набір. Ми бачимо тут, що це код, який ми збираємося виконати коли форма розміщені на цій сторінці. Але спочатку ми насправді є надавати цю форму. Так поглянути на цитатою формі, які поля є? Ми бачимо, що всі цитата є одним текстове поле з символом ім'я. І тому, коли форма цитата розміщена щоб quote.PHP ми зараз збираємося виконати цей код. І єдина змінна в нашій POST супер Глобальна буде символ. Ми підтвердження того, що, щоб переконатися, що вони насправді відправив символ. І якщо вони цього не зробили, ми говоримо, ви повинні надати символ. Припускаючи, що вони дійсно надавали символ, ми дивимося цей символ. Тепер згадайте, що погляд вгору, можливо, доведеться не вдалося, так як, ну, може бути, це не було дійсним символом з самого початку. Так що, якщо цей погляд до повернення помилкове, ми хочемо, щоб вибачитися, що символ не був знайдений. Після того, як ми знайшли символ, тепер ми може надати шаблон quote.PHP. На що це схоже? Ось тільки в друк, що частка всього, що назва акції було Варто все ціна акції. Тепер, чому ми використовуємо цей HTMLSpecialChars функціонувати? Це тому, що назва акції та символ може насправді містять спеціальні знаки, які не повинні інтерпретувати як HTML. Гаразд, так що це для цитати. Тепер ми хочемо, щоб подивитися на index.php і портфель. Але спочатку нам потрібно побудувати таблиця портфелі. Ось як ми збираємося це зробити. Так що давайте поглянемо на структуру. І ми бачимо, що портфелі таблиця буде мати ідентифікатор. Так що це буде користувача ID, який вставки акції. У нас є символ, який збирається бути символом компанії, що ми знаходимося вставивши акції на. А потім акції це число акції, які в даний час встановлена. Тому пам'ятайте, що відповідно до PSet специфікації, ми вказуємо, що ID і символ - ми перевірити індекси, ID і Символ є первинним ключем. Так ідентифікатор користувача і символ спарювання з'являється тільки один Час у цій таблиці. Тепер давайте подивимося на код. Так що тепер index.php збирається захопити всі нашою інформацією портфеля і показати його користувачеві. Отже, спочатку ми збираємося захопити гроші що користувач в даний час має від грошових таблиці. Пам'ятайте, що запит завжди буде повернутися масив масивів. Так що, хоча ми тільки вибрали гроші від одного рядка, ми все ще повинні захопити ці гроші шляхом індексації в нульовий індекс рядків і захоплення Індекс готівкою. Так що тепер ми хочемо вибрати всі інформація з таблиці портфелів ось ставлення до себе увійшов в систему користувача. Ми, звичайно, потрібно перевірити, що що насправді вдалося, яку ми завжди повинні робити, коли ми запитуємо. Як тільки у нас є все, що інформація, PSET специфікації повідомляє нам, що ми повинні зробити це для того, щоб приємно зберігати вся інформація в цьому позиції масиву. Так ми пробігаємо по всіх Інформація портфель, дивлячись акції, пов'язані з кожного рядка в Інформація портфель, а потім зберігання в масиві положення ім'я, ціна, акції та символ всіх пов'язані з цієї акції. І, нарешті, ми збираємося зробити portfolio.PHP, проходячи в розмірі готівки зараз, позиції масив, який ми тільки що побудовані, і назва це сторінка, яка буде портфель. Давайте поглянемо на portfolio.PHP. І ми бачимо, що основна цікаво частина цього циклу. Так ми пробігаємо щодо положень Масив, створюючи стіл, де ця таблиця - ми заповнення кожного рядка з Інформація, яку ми покласти всередину позиції масиву. Знову ж, ми повинні використовувати HTMLSpecialChars в випадку цей символ або назву містять HTML символи. І ось ми множення ціни і кількість акцій, які у нас є для того, щоб отримати, скільки це В даний час стоїть користувачеві. І це все для портфеля. Тепер ми поглянемо на продаж. Так продають збирається повернутися до формат, який ми мали в register.php. Ми бачимо, що форма буде , Які будуть розміщені на цій сторінці. Але спочатку, коли ми завантажити сторінку, ми збираємося зробити це. Так що ж це робиш? Ну, ми могли б просто мати сторінку розпродажі є одне текстове поле, що користувача входить в цей символ, який ми хочемо продати. Але ми збираємося бути трохи розумніші і ми збираємося мати падіння вниз, що дозволяє користувачеві вибрати фактичні символи, які вони вже мають. Так ми отримуємо портфель користувача. Ми збираємося, щоб вибрати з портфелів всі символи, які користувач в даний час має, в даний час увійшов в систему користувача. Переконайтеся в тому, що це вдалося. І тепер ми збираємося циклу по повернувся інформацію, просто захоплення кожен символ, і зберігати її в цьому символів масиву. І тепер ми збираємося вивести її на продаж. Таким чином, форма продавати збирається просто бути меню, що випадає, виберіть. І кожен варіант у вигляді розпродажі є збирається просто роздрукувати символ що ми захопили з портфелі таблиці. Таким чином, форма продавати збирається представити до sell.PHP. Дивлячись на sell.PHP, це код що збирається виконати, коли ми представляємо на цю сторінку. Ми хочемо, щоб підтвердити, що користувач фактично вступила в символ. Тепер за умови, що вони зробили - так що тепер ми хочемо визначити, скільки розділяє користувач насправді продажу і скільки грошей споживач повинен отримати для продажу, що багато акцій. Таким чином, ми захопити кількість акцій, яка користувач має для цього символу. Ми шукаємо в портфелях для враховуючи користувача і даний символ. Тепер переконайтеся, що, що насправді повернувся рядок. Тому що, якщо цього не відбулося, користувач не насправді є цей символ, щоб продати. Припускаючи, у них дійсно є цей символ, ми хочемо, щоб захопити кількість акції, які вони мають. А тепер ми хочемо подивитися, як набагато кожна акція варто. Таким чином, ми використовували функцію перегляду. Ми шукаємо до значення символу. Якщо припустити, що погляд, досяг успіху, тепер ми збираємося фактично оновити всі інформація. Тому ми хочемо, щоб видалити з портфелів акції, які ми продаємо. Ми хочемо, щоб оновити користувача сума грошових коштів. І ми оновлюємо його акцій раз ціна акцій - так от, скільки грошей користувач тільки що зробив. А тепер ми хочемо, щоб оновити нашу історію. Таким чином, ми не розглянули в таблиці історії ще. Таким чином, ми ще повернемося до цього. Тепер, нарешті, ми збираємося, щоб перенаправити назад до портфоліо. Тепер давайте поглянемо на покупки. Таким чином, купити має бути досить схоже, щоб продати. Ми бачимо, що ми знову будемо , Щоб перевірити, якщо ми подання на цю сторінку. Якщо припустити, що ми не, ми збирається завантажити на покупку форму. Отже, що ж купити форма виглядає? Ми бачимо тут, що це просто звичайний утворюють що збирається представити до Енциклопедія програм. І це матиме символ, який користувач вводить число акції, які користувач хоче купити з цього символу, і цим все сказано. Тому, коли ми представити до Енциклопедія програм, ми тепер збирається виконати цей код. Ми знову хочемо підтвердити, що користувач ввів щось дійсне. Так от ми переконавшись, що вони фактично вступила в символ. Тут ми переконавшись, що вони фактично введені акції. І ось ми, переконавшись, що вони увійшов ціле для акцій, так вони не намагаються купувати акції ABC. Тепер ми хочемо подивитися на ціну символ, тому ми знаємо, як багато Готівкові гроші повинні відняти від користувача. Тепер ми виберемо, скільки грошей користувач насправді має і переконайтеся, що що це вдалося. Тут ми хапаючи гроші. І ось тепер, ми робимо, що що користувач має достатньо грошей. Таким чином, якщо кількість акцій користувач хоче купити разів ціну кожного цих акцій більше, ніж сума грошових коштів, які у нас є, то Користувач не може собі цього дозволити. Припускаючи, що користувач має достатньо грошей, тепер ми хочемо, щоб вставити в Портфель користувача. Ну, ми вставимо в користувача портфель, якщо це трапляється, Перший раз, коли користувач купує що конкретний символ. Але що, якщо вони вже відбулося мати певний Яблуко акції? Що ж, тепер ми робимо використання на дублікат ключа інструкцію оновлення. Так ось чому раніше ми вказали, що ID і символ повинен бути спільним первинний ключ, так що, якщо ми спробуємо вставити ID і символ, які є вже є, ми просто оновити акції включити нові акції, що користувач купує. Тепер ми хочемо, щоб оновити кількість грошових коштів, які користувач має, так як вони тільки що провів трохи грошей на ці акції. І, нарешті, ми будемо оновлювати таблиця історії знову. Що, знову ж, ми будемо дивитися в в секунду. І, нарешті, ми будемо перенаправити повернутися до portfolio.PHP. Так що давайте поглянемо на історія таблиці. Тепер згадайте, що таблиця історія передбачається відстежувати всі купує і продає, що всі користувачі роблять, а не тільки поточну кількість акцій, що користувачі мають, що і портфель для. Таким чином, ми відстеження користувача, купує або продає, будь це конкретна угода була покупка або продавати, символ, який будучи купити або продати, кількість акцій що ми купувати або продавати, ціна на єдину акцію, що істоти купити або продати, і нарешті, то час що це купівля або продаж відбувається. І це все історії Інформація, яку ми повинні відстежувати. Тому, коли ми дивилися на продажу, ми побачили, що ми були вставки в історії продажу, як ми купувати або продавати, поточний час штамп, і поточний користувач, символ, який будучи продається, кількість акцій, які продається, і ціна фондовий в цей час. Точно так само в покупку, воно буде виглядають майже однаково. Різниця лише в тому, а не збуту, ми купуємо. Таким чином, у продаж і покупку, ми вставки в таблиця історії все купує і продає, які відбуваються. Так що все history.PHP потрібно зробити, це схопити інформація з історії стіл, переконайтеся, що він досяг успіху, і зробити цю інформацію. Так, дивлячись на шаблоні history.PHP, цікава інформація прямо тут. Ми циклу по всіх угоди, друк чи це був купити або продати, форматування дати і часу що ми зробили цю угоду. Пам'ятайте, що ми повинні використовувати HTMLSpecialChars на символ, на всякий випадок. І, нарешті, форматування кількість акції, які були куплені і ціна однієї акції в той час. І, що відображає всю історію Інформація, яку ми повинні. І це все для цього PSet. Мене звуть Боб, і це був CS50 Фінанси.