[Музыка играет] 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 Финансы.