1 00:00:00,000 --> 00:00:12,800 >> [音乐播放] 2 00:00:12,800 --> 00:00:13,410 >> ROB BOWDEN:你好。 3 00:00:13,410 --> 00:00:17,150 我抢了,我希望你准备好 把股票在这个解决方案。 4 00:00:17,150 --> 00:00:19,740 首先,让我们来看看寄存器。 5 00:00:19,740 --> 00:00:24,400 所以请记住,我们在这里检查 看有没有形式是 6 00:00:24,400 --> 00:00:26,200 发布到该页面。 7 00:00:26,200 --> 00:00:29,170 >> 我们将这样的第一件事 要做的就是去了别的。 8 00:00:29,170 --> 00:00:31,650 而我们将要呈现 报名表。 9 00:00:31,650 --> 00:00:37,320 因此,登记表是怎么回事 发布到register.PHP。 10 00:00:37,320 --> 00:00:38,760 又是什么打算送? 11 00:00:38,760 --> 00:00:44,510 它会发送一个用户名的 用户要填写,密码, 12 00:00:44,510 --> 00:00:46,050 并确认 - 13 00:00:46,050 --> 00:00:48,350 密码再次键入。 14 00:00:48,350 --> 00:00:54,020 >> 所以,现在当该窗体发送到 register.PHP我们如果执行这个。 15 00:00:54,020 --> 00:00:57,260 看着这个,如果,我们先 要验证输入。 16 00:00:57,260 --> 00:01:00,650 我们希望确保用户名 和密码不是空的, 17 00:01:00,650 --> 00:01:03,860 确认实际 相匹配的密码。 18 00:01:03,860 --> 00:01:07,820 一旦我们确认,我们可以 实际注册用户。 19 00:01:07,820 --> 00:01:08,750 >> 这是什么意思? 20 00:01:08,750 --> 00:01:12,120 那么,我们要插入的 用户进入我们的数据库。 21 00:01:12,120 --> 00:01:13,600 这就是我们将如何做到这一点。 22 00:01:13,600 --> 00:01:19,250 所以,我们要插入到用户 表中的字段的用户名, 23 00:01:19,250 --> 00:01:21,230 哈希,和现金。 24 00:01:21,230 --> 00:01:24,920 >> 现金的默认值 将是10,000。 25 00:01:24,920 --> 00:01:29,630 而我们将通过为用户名, 用户名,通过POST超 26 00:01:29,630 --> 00:01:32,070 全球那些是从形式提交。 27 00:01:32,070 --> 00:01:35,370 而我们将要进行加密 密码。 28 00:01:35,370 --> 00:01:40,780 >> 所以,如果说成功了,那么结果 将非假。 29 00:01:40,780 --> 00:01:42,990 如果它失败了,那么我们 要道歉。 30 00:01:42,990 --> 00:01:44,100 出事了。 31 00:01:44,100 --> 00:01:45,330 还有什么在哪里呢? 32 00:01:45,330 --> 00:01:48,610 >> 好了,需要有 唯一的用户名。 33 00:01:48,610 --> 00:01:51,900 这样一来,查询可能失败 如果用户名已经 34 00:01:51,900 --> 00:01:53,700 存在于表中。 35 00:01:53,700 --> 00:01:58,210 因此,假设它是一个唯一的用户名, 那么我们要查询抢 36 00:01:58,210 --> 00:01:59,640 该用户的ID。 37 00:01:59,640 --> 00:02:02,300 记住,ID是 自动递增。 38 00:02:02,300 --> 00:02:06,730 >> 所以如果出现这种情况失败的一些 原因,那么我们要道歉 39 00:02:06,730 --> 00:02:08,520 我们不能抢的ID。 40 00:02:08,520 --> 00:02:13,450 但假设它并没有失败,那么 我们抢的ID从什么查询 41 00:02:13,450 --> 00:02:18,400 返回的,存储在我们的会议 - 所以我们想通过登录该用户 42 00:02:18,400 --> 00:02:21,770 存储的ID在会话 超级全局,最后 43 00:02:21,770 --> 00:02:23,820 重定向到我们的投资组合。 44 00:02:23,820 --> 00:02:26,040 这就是它的寄存器。 45 00:02:26,040 --> 00:02:28,680 >> 现在,我们要转移到的报价。 46 00:02:28,680 --> 00:02:31,770 所以报价都将有 一个非常类似的设置。 47 00:02:31,770 --> 00:02:35,220 我们在这里看到,这是代码, 我们要执行时,形式是 48 00:02:35,220 --> 00:02:36,850 发布到该页面。 49 00:02:36,850 --> 00:02:40,500 但首先,我们实际上有 来呈现形式。 50 00:02:40,500 --> 00:02:44,140 因此,采取一看报价表, 哪些领域有哪些? 51 00:02:44,140 --> 00:02:50,710 >> 我们看到,所有的报价已经是一个单一的 文本框的名称符号。 52 00:02:50,710 --> 00:02:55,350 所以当报价表张贴 到quote.PHP我们现在要 53 00:02:55,350 --> 00:02:56,950 执行这段代码。 54 00:02:56,950 --> 00:03:01,630 而在我们这个后超唯一的变量 全球将是象征。 55 00:03:01,630 --> 00:03:05,910 >> 我们验证,以确保 他们居然张贴的象征。 56 00:03:05,910 --> 00:03:08,760 如果他们没有,我们说你 必须提供一个象征。 57 00:03:08,760 --> 00:03:12,670 假设他们确实提供了一个符号, 我们仰望的符号。 58 00:03:12,670 --> 00:03:16,750 >> 现在还记得那样子了可能 因为失败了,好吧,也许这不是一个 59 00:03:16,750 --> 00:03:18,460 有效符号开始。 60 00:03:18,460 --> 00:03:22,690 因此,如果这个查询返回false, 我们要道歉的 61 00:03:22,690 --> 00:03:24,850 符号未找到。 62 00:03:24,850 --> 00:03:29,450 一旦我们找到符号,现在我们 可以使quote.PHP模板。 63 00:03:29,450 --> 00:03:31,220 >> 那是什么样子的? 64 00:03:31,220 --> 00:03:36,580 这只是要打印共享 无论股票名称是 65 00:03:36,580 --> 00:03:41,540 值得一无论股票价格。 66 00:03:41,540 --> 00:03:45,490 现在,为什么我们用这个用htmlspecialchars 功能? 67 00:03:45,490 --> 00:03:49,280 这是因为股票名称和符​​号 实际上可能包含特殊 68 00:03:49,280 --> 00:03:54,410 字符不应该 被解释为HTML。 69 00:03:54,410 --> 00:03:56,960 >> 好吧,所以这是它的报价。 70 00:03:56,960 --> 00:04:00,700 现在,我们要来看看的index.php 和投资组合。 71 00:04:00,700 --> 00:04:04,730 但首先,我们确实需要构建 投资组合表。 72 00:04:04,730 --> 00:04:07,310 以下是我们将如何做到这一点。 73 00:04:07,310 --> 00:04:09,390 >> 因此,让我们来看看结构。 74 00:04:09,390 --> 00:04:13,530 而且我们看到,投资组合 表都将有一个ID。 75 00:04:13,530 --> 00:04:17,760 所以这将是用户的 的ID是插入的股份。 76 00:04:17,760 --> 00:04:21,839 我们有一个符号,这将是 该公司是我们的象征 77 00:04:21,839 --> 00:04:23,610 插入的股份。 78 00:04:23,610 --> 00:04:27,940 然后股价是多少 被插入的股。 79 00:04:27,940 --> 00:04:33,490 >> 所以请记住,每pset的规范, 我们指定的ID和符号 - 80 00:04:33,490 --> 00:04:37,140 我们检查了索引,ID和 符号是主键。 81 00:04:37,140 --> 00:04:41,240 因此,一个用户ID和符号配对 应该只出现一个 82 00:04:41,240 --> 00:04:44,010 时间在此表中。 83 00:04:44,010 --> 00:04:46,050 现在让我们来看看代码。 84 00:04:46,050 --> 00:04:50,950 >> 所以,现在的index.php是要抓住所有 我们的产品组合的信息和 85 00:04:50,950 --> 00:04:52,700 它显示给用户。 86 00:04:52,700 --> 00:04:56,230 因此,首先,我们要抢现金 该用户目前已经从 87 00:04:56,230 --> 00:04:57,160 现金桌。 88 00:04:57,160 --> 00:05:02,070 记住,查询总是会 返回一个数组的数组。 89 00:05:02,070 --> 00:05:06,070 因此,即使我们仅选择现金 从单排,我们仍然需要 90 00:05:06,070 --> 00:05:10,850 抢了现金,通过提取 行的零指数和抓 91 00:05:10,850 --> 00:05:13,720 现金索引。 92 00:05:13,720 --> 00:05:17,810 >> 所以,现在我们要选择所有的 从投资组合表信息 93 00:05:17,810 --> 00:05:21,640 这是相关于当前 登录的用户。 94 00:05:21,640 --> 00:05:25,070 我们当然需要验证 实际上成功了,这是我们 95 00:05:25,070 --> 00:05:28,120 应该总是做当我们查询。 96 00:05:28,120 --> 00:05:31,890 一旦我们有了所有这些信息, pset的规范告诉我们,我们 97 00:05:31,890 --> 00:05:36,298 应以很好地保存这样做 所有在此的信息 98 00:05:36,298 --> 00:05:37,850 位置数组。 99 00:05:37,850 --> 00:05:42,250 >> 因此,我们遍历所有的 投资组合信息,仰视 100 00:05:42,250 --> 00:05:47,030 与每行中的相关联的库存 投资组合信息,然后 101 00:05:47,030 --> 00:05:52,510 位置阵列中存储的名称, 价格,股票和所有的符号 102 00:05:52,510 --> 00:05:54,790 与该股票相关联。 103 00:05:54,790 --> 00:05:59,040 最后,我们要呈现 portfolio.PHP,传递量 104 00:05:59,040 --> 00:06:02,290 现金,我们目前拥有的 数组中的位置,我们只是 105 00:06:02,290 --> 00:06:06,510 构成,在此标题 页面这将是投资组合。 106 00:06:06,510 --> 00:06:09,166 >> 让我们来看看portfolio.PHP。 107 00:06:09,166 --> 00:06:13,570 而且我们看到,各大有趣 部分是这个循环。 108 00:06:13,570 --> 00:06:17,410 因此,我们在循环的位置 阵,创造了 109 00:06:17,410 --> 00:06:19,420 表,其中该表 - 110 00:06:19,420 --> 00:06:23,220 我们在填充每一行与 我们把里面的信息 111 00:06:23,220 --> 00:06:24,470 位置数组。 112 00:06:24,470 --> 00:06:28,250 >> 同样,我们需要使用用htmlspecialchars 在这种情况下,符号或名称 113 00:06:28,250 --> 00:06:31,020 包含HTML字符。 114 00:06:31,020 --> 00:06:36,690 在这里,我们要乘以价格, 的股份,我们有量 115 00:06:36,690 --> 00:06:40,880 为了得到多少那 目前价值给用户。 116 00:06:40,880 --> 00:06:42,880 就是这样的组合。 117 00:06:42,880 --> 00:06:45,500 >> 现在,我们就来看看卖。 118 00:06:45,500 --> 00:06:50,190 所以卖是要回去的 格式,我们在register.PHP。 119 00:06:50,190 --> 00:06:53,200 我们看到,一个表格是怎么回事 被发布到该页面。 120 00:06:53,200 --> 00:06:57,270 但首先,当我们加载该页面, 我们将做到这一点。 121 00:06:57,270 --> 00:06:58,880 >> 那么,什么是该做的? 122 00:06:58,880 --> 00:07:03,660 嗯,我们可能只是有销售页面 有一个文本框,用户 123 00:07:03,660 --> 00:07:06,020 进入此符号的 我们想卖。 124 00:07:06,020 --> 00:07:08,890 但我们要更聪明一点 并且我们将有一个下降 125 00:07:08,890 --> 00:07:14,690 下,允许用户选择 实际的符号,他们已经有了。 126 00:07:14,690 --> 00:07:17,940 >> 所以,我们得到了用户的投资组合。 127 00:07:17,940 --> 00:07:22,630 我们打​​算从投资组合选择 所有的符号,用户 128 00:07:22,630 --> 00:07:26,180 目前,目前 登录的用户。 129 00:07:26,180 --> 00:07:28,150 请确保成功。 130 00:07:28,150 --> 00:07:31,960 现在我们要遍历所有的 返回的信息,只是霎那 131 00:07:31,960 --> 00:07:35,610 每一个符号,并将其存储 在这个符号数组。 132 00:07:35,610 --> 00:07:37,570 >> 现在我们要 渲染卖出形式。 133 00:07:37,570 --> 00:07:43,380 所以卖的形式是要公正 是一个下拉菜单,一个选择。 134 00:07:43,380 --> 00:07:49,140 而在卖出的形式每个选项是 将刚刚打印出来的符号 135 00:07:49,140 --> 00:07:52,380 我们从抓起 投资组合表。 136 00:07:52,380 --> 00:07:58,390 >> 这样的销售形式是要 提交返回sell.PHP。 137 00:07:58,390 --> 00:08:04,340 看着sell.PHP,这是代码 那将执行,当我们提交 138 00:08:04,340 --> 00:08:05,555 此页面。 139 00:08:05,555 --> 00:08:10,320 我们要验证用户 实际上进入了一个符号。 140 00:08:10,320 --> 00:08:12,730 >> 现在,假设他们没有 - 141 00:08:12,730 --> 00:08:16,930 所以现在我们要确定有多少 共享用户实际上卖 142 00:08:16,930 --> 00:08:20,830 以及有多少现金,用户应该得到 售卖不少股份。 143 00:08:20,830 --> 00:08:25,210 因此,我们抓住的股份数目 用户有这个标志。 144 00:08:25,210 --> 00:08:30,690 我们正在寻找在投资组合的 给定用户和给定的符号。 145 00:08:30,690 --> 00:08:34,289 >> 现在确保实际 返回的行。 146 00:08:34,289 --> 00:08:39,440 因为如果它没有,用户不 其实有一个符号来卖。 147 00:08:39,440 --> 00:08:42,890 假设他们确实有这个符号, 我们要抢的数量 148 00:08:42,890 --> 00:08:44,530 他们有股份。 149 00:08:44,530 --> 00:08:47,640 现在我们想看看怎么了 多每股的价值。 150 00:08:47,640 --> 00:08:49,450 >> 所以我们用查找功能。 151 00:08:49,450 --> 00:08:52,910 我们正在寻找提升价值 的象征。 152 00:08:52,910 --> 00:08:56,700 假设一下了成功,现在 我们要真正更新所有 153 00:08:56,700 --> 00:08:57,830 的信息。 154 00:08:57,830 --> 00:09:02,285 所以我们想从组合中删除 我们正在出售股份。 155 00:09:02,285 --> 00:09:05,610 我们要更新的用户 数额的现金。 156 00:09:05,610 --> 00:09:10,480 >> 我们正在通过股份更新它 倍的股票价格 - 157 00:09:10,480 --> 00:09:13,050 所以这是多少钱 用户只需进行。 158 00:09:13,050 --> 00:09:15,150 现在,我们要更新我们的历史。 159 00:09:15,150 --> 00:09:17,390 所以,我们没有采取一看 在历史记录表呢。 160 00:09:17,390 --> 00:09:19,440 所以我们会回来的。 161 00:09:19,440 --> 00:09:23,690 >> 现在,终于,我们要重定向 回到投资组合。 162 00:09:23,690 --> 00:09:25,300 现在让我们来看看买。 163 00:09:25,300 --> 00:09:28,910 所以,买应该是很 类似的卖。 164 00:09:28,910 --> 00:09:32,300 >> 我们看到,我们再次去 检查,看看是否我们 165 00:09:32,300 --> 00:09:33,900 提交给本页面。 166 00:09:33,900 --> 00:09:37,470 假设我们不是,我们是 要装载的团购形式。 167 00:09:37,470 --> 00:09:40,210 那么,团购的形式是什么样子? 168 00:09:40,210 --> 00:09:42,510 >> 我们在这里看到它只是一个普通 形成的将 169 00:09:42,510 --> 00:09:44,450 提交返回buy.PHP。 170 00:09:44,450 --> 00:09:49,230 而这将有一个符号, 该用户输入,数 171 00:09:49,230 --> 00:09:53,330 用户想要买股 该符号的,这就是它。 172 00:09:53,330 --> 00:09:59,890 因此,当我们提交返回buy.PHP,我们 现在要执行此代码。 173 00:09:59,890 --> 00:10:04,250 >> 我们再次希望以验证 用户输入有效的东西。 174 00:10:04,250 --> 00:10:06,730 所以在这里我们要确保他们 实际上进入了一个符号。 175 00:10:06,730 --> 00:10:09,190 在这里,我们正在确保他们 实际上进入股。 176 00:10:09,190 --> 00:10:12,840 在这里,我们正在确保他们 进入股份整数,所以 177 00:10:12,840 --> 00:10:15,095 他们没有试图购买农行股份。 178 00:10:15,095 --> 00:10:17,630 179 00:10:17,630 --> 00:10:23,130 >> 现在,我们要查找的价格 符号,所以我们知道现金多少,我们 180 00:10:23,130 --> 00:10:26,590 应该减去的用户。 181 00:10:26,590 --> 00:10:31,700 现在,我们将选择多少现金的用户 实际上有和确保 182 00:10:31,700 --> 00:10:33,960 那成功。 183 00:10:33,960 --> 00:10:35,600 在这里,我们要抓住现金。 184 00:10:35,600 --> 00:10:39,660 而现在在这里,我们要确保 用户有足够的现金。 185 00:10:39,660 --> 00:10:44,950 >> 所以,如果股数用户 想买次,每次的价格 186 00:10:44,950 --> 00:10:49,100 该等股份大于 现金量,我们有,那么 187 00:10:49,100 --> 00:10:50,950 用户消费不起。 188 00:10:50,950 --> 00:10:54,500 假设用户有足够的现金, 现在我们要插入 189 00:10:54,500 --> 00:10:55,980 用户的投资组合。 190 00:10:55,980 --> 00:10:59,900 好了,我们将插入到用户的 如果这个组合正好是 191 00:10:59,900 --> 00:11:02,770 第一次用户购买 上述特殊符号。 192 00:11:02,770 --> 00:11:06,630 >> 但是,如果他们已经发生 有一些苹果公司的股票? 193 00:11:06,630 --> 00:11:10,930 好了,现在我们正在做的使用上 重复键更新语句。 194 00:11:10,930 --> 00:11:15,750 所以这就是为什么我们前面指定的 标识和符号应该是一个联合 195 00:11:15,750 --> 00:11:19,620 主键,因此,如果我们尝试 插入一个ID和符号是 196 00:11:19,620 --> 00:11:24,670 已经存在,我们只是更新 股份包括新股的 197 00:11:24,670 --> 00:11:26,720 用户购买。 198 00:11:26,720 --> 00:11:30,390 >> 现在,我们要更新量 现金该用户具有的,因为它们 199 00:11:30,390 --> 00:11:33,390 只是花了点钱该等股份。 200 00:11:33,390 --> 00:11:36,060 最后,我们将更新 历史表一次。 201 00:11:36,060 --> 00:11:38,590 其中,我们再次来看看 在第二个。 202 00:11:38,590 --> 00:11:43,230 最后,我们会重定向 回到portfolio.PHP。 203 00:11:43,230 --> 00:11:45,440 >> 因此,让我们来看看 历史表。 204 00:11:45,440 --> 00:11:48,770 205 00:11:48,770 --> 00:11:53,430 现在,请记住,历史表是 应该让所有的购买田径 206 00:11:53,430 --> 00:11:57,580 销售的所有用户进行,而不仅仅是 股份目前有多少了 207 00:11:57,580 --> 00:12:00,500 用户拥有,这是 投资组合的目的。 208 00:12:00,500 --> 00:12:06,350 因此,我们保持用户的跟踪 是买还是卖,是否 209 00:12:06,350 --> 00:12:11,740 这种特殊的交易是买入 或卖出,这是作为符号 210 00:12:11,740 --> 00:12:17,540 买或卖,数量股份 我们正在购买或出售,该 211 00:12:17,540 --> 00:12:22,840 单一份额的是价格 买或卖,最后,在时间 212 00:12:22,840 --> 00:12:25,550 这买进或卖出 正在发生。 213 00:12:25,550 --> 00:12:27,650 >> 而这一切的历史 我们需要的信息 214 00:12:27,650 --> 00:12:29,850 保持跟踪。 215 00:12:29,850 --> 00:12:37,340 所以,当我们看着卖,我们看到 我们被插入的历史销售, 216 00:12:37,340 --> 00:12:42,060 作为我们是否买入或卖出, 当前时间戳,以及 217 00:12:42,060 --> 00:12:46,070 当前用户,这是作为符号 出售,那是股份数目 218 00:12:46,070 --> 00:12:50,010 被出售,并且价格 该股在这个时候。 219 00:12:50,010 --> 00:12:52,740 同样,团购,它会 看起来几乎是一样的。 220 00:12:52,740 --> 00:12:56,820 唯一的区别是代替 的销售,我们买。 221 00:12:56,820 --> 00:13:01,243 >> 因此,在销售和购买,我们插入 在历史表中所有的 222 00:13:01,243 --> 00:13:02,960 购买和销售正在发生。 223 00:13:02,960 --> 00:13:08,680 因此,所有history.PHP需要做的是抢 从历史记录中的信息 224 00:13:08,680 --> 00:13:13,960 表,确保它成功了, 并呈现这些信息。 225 00:13:13,960 --> 00:13:18,770 所以在看history.PHP模板, 有趣的信息 226 00:13:18,770 --> 00:13:19,940 就在这里。 227 00:13:19,940 --> 00:13:23,935 >> 我们遍历所有的 交易,印刷,这是否 228 00:13:23,935 --> 00:13:29,580 是买或卖,格式化日期时间 我们做这个交易。 229 00:13:29,580 --> 00:13:31,520 请记住,我们需要使用用htmlspecialchars 在 230 00:13:31,520 --> 00:13:33,270 符号,以防万一。 231 00:13:33,270 --> 00:13:37,150 最后,格式化数 被买了,价格是股 232 00:13:37,150 --> 00:13:39,310 当时一个单一的份额。 233 00:13:39,310 --> 00:13:42,570 >> 并显示所有的历史 我们需要的信息。 234 00:13:42,570 --> 00:13:44,220 这就是它的这个pset中。 235 00:13:44,220 --> 00:13:47,820 我的名字是罗布,这 为CS50财务。 236 00:13:47,820 --> 00:13:52,171