1 00:00:00,000 --> 00:00:12,800 >> [MUSIK SPELA] 2 00:00:12,800 --> 00:00:13,410 >> ROB BOWDEN: Hej. 3 00:00:13,410 --> 00:00:17,150 Jag är Rob, och jag hoppas att du är redo att sätta lager i denna lösning. 4 00:00:17,150 --> 00:00:19,740 Först, låt oss ta en titt på register. 5 00:00:19,740 --> 00:00:24,400 Så kom ihåg att här vi kollar för att se om ett formulär var 6 00:00:24,400 --> 00:00:26,200 skickas till den här sidan. 7 00:00:26,200 --> 00:00:29,170 >> Så första vi ska göra är att gå till annat. 8 00:00:29,170 --> 00:00:31,650 Och vi kommer att göra registret form. 9 00:00:31,650 --> 00:00:37,320 Så registret formen kommer att lägga till register.php. 10 00:00:37,320 --> 00:00:38,760 Och vad kommer det att skicka? 11 00:00:38,760 --> 00:00:44,510 Det kommer att skicka ett användarnamn att användaren ska fylla i, ett lösenord, 12 00:00:44,510 --> 00:00:46,050 och en bekräftelse - 13 00:00:46,050 --> 00:00:48,350 lösenordet skrivs igen. 14 00:00:48,350 --> 00:00:54,020 >> Så nu när formuläret postas till register.php vi ska utföra detta om. 15 00:00:54,020 --> 00:00:57,260 Titta på detta om, är vi först kommer att validera den ingången. 16 00:00:57,260 --> 00:01:00,650 Vi vill se till att användarnamnet och lösenordet inte var tomma och att 17 00:01:00,650 --> 00:01:03,860 bekräftelsen faktiskt matchar lösenordet. 18 00:01:03,860 --> 00:01:07,820 När vi har verifierat att vi kan faktiskt registrera användaren. 19 00:01:07,820 --> 00:01:08,750 >> Vad innebär det? 20 00:01:08,750 --> 00:01:12,120 Jo, vi vill infoga användare i vår databas. 21 00:01:12,120 --> 00:01:13,600 Och det är hur vi ska göra det. 22 00:01:13,600 --> 00:01:19,250 Så vi kommer att sätta in användarna tabellen fält användarnamn, 23 00:01:19,250 --> 00:01:21,230 hash, och kontanter. 24 00:01:21,230 --> 00:01:24,920 >> Standardvärdet av kontanter kommer att bli 10.000. 25 00:01:24,920 --> 00:01:29,630 Och vi kommer att passera som användarnamn, användarnamn, genom POST super 26 00:01:29,630 --> 00:01:32,070 globalt som har lämnats in från formuläret. 27 00:01:32,070 --> 00:01:35,370 Och vi kommer att kryptera lösenordet. 28 00:01:35,370 --> 00:01:40,780 >> Så om det lyckades, resulterar sedan kommer att vara icke-falskt. 29 00:01:40,780 --> 00:01:42,990 Om det misslyckades, då vi vill be om ursäkt. 30 00:01:42,990 --> 00:01:44,100 Något gick fel. 31 00:01:44,100 --> 00:01:45,330 Och vad kan ha gått fel? 32 00:01:45,330 --> 00:01:48,610 >> Tja, det måste finnas ett unikt användarnamn. 33 00:01:48,610 --> 00:01:51,900 Och så frågan skulle ha misslyckats Om användarnamnet redan 34 00:01:51,900 --> 00:01:53,700 existerade i tabellen. 35 00:01:53,700 --> 00:01:58,210 Så om det nu var ett unikt användarnamn, då ska vi fråga att ta tag i 36 00:01:58,210 --> 00:01:59,640 ID: t för den användaren. 37 00:01:59,640 --> 00:02:02,300 Kom ihåg att ID är automatisk uppräkning. 38 00:02:02,300 --> 00:02:06,730 >> Och så om det händer att misslyckas av någon skäl, då vill vi be om ursäkt 39 00:02:06,730 --> 00:02:08,520 att vi inte kunde ta tag i ID. 40 00:02:08,520 --> 00:02:13,450 Men antar att det inte misslyckas, då vi ta tag i ID från vad frågan 41 00:02:13,450 --> 00:02:18,400 återvände, förvara det i vår session - så vi vill logga den här användaren genom 42 00:02:18,400 --> 00:02:21,770 lagring av ID i sessionen super globalt, och slutligen 43 00:02:21,770 --> 00:02:23,820 omdirigera till vår portfölj. 44 00:02:23,820 --> 00:02:26,040 Och det är det för registret. 45 00:02:26,040 --> 00:02:28,680 >> Nu ska vi gå vidare till citat. 46 00:02:28,680 --> 00:02:31,770 Så citat kommer att ha ett riktigt liknande uppsättning upp. 47 00:02:31,770 --> 00:02:35,220 Vi ser här att det är den kod som vi kommer att köras när ett formulär är 48 00:02:35,220 --> 00:02:36,850 skickas till den här sidan. 49 00:02:36,850 --> 00:02:40,500 Men först vi faktiskt har att göra detta formulär. 50 00:02:40,500 --> 00:02:44,140 Så ta en titt på citat form, vilka områden finns det? 51 00:02:44,140 --> 00:02:50,710 >> Vi ser att alla citat har är en enda textruta med namnet symbolen. 52 00:02:50,710 --> 00:02:55,350 Och så när quote formuläret postas till quote.PHP vi nu att 53 00:02:55,350 --> 00:02:56,950 exekvera denna kod. 54 00:02:56,950 --> 00:03:01,630 Och den enda variabeln i vår POST super globalt kommer att bli symbol. 55 00:03:01,630 --> 00:03:05,910 >> Vi validera att se till att de faktiskt postade symbolen. 56 00:03:05,910 --> 00:03:08,760 Och om de inte gjorde det, säger vi att du måste tillhandahålla en symbol. 57 00:03:08,760 --> 00:03:12,670 Förutsatt att de lämnade en symbol, vi ser upp som symbol. 58 00:03:12,670 --> 00:03:16,750 >> Nu kom ihåg att titta upp kan ha misslyckades eftersom, ja, kanske det inte var en 59 00:03:16,750 --> 00:03:18,460 giltig symbol till att börja med. 60 00:03:18,460 --> 00:03:22,690 Så om detta se upp återvändande falskt, vi vill beklagar att 61 00:03:22,690 --> 00:03:24,850 symbolen hittades inte. 62 00:03:24,850 --> 00:03:29,450 När vi har hittat symbolen, nu vi kan återge det quote.PHP mall. 63 00:03:29,450 --> 00:03:31,220 >> Vad ser det ut som? 64 00:03:31,220 --> 00:03:36,580 Det är bara att skriva ut att en aktie oavsett det bestånd hette 65 00:03:36,580 --> 00:03:41,540 är värt vad aktiekursen är. 66 00:03:41,540 --> 00:03:45,490 Nu varför vi använder denna htmlspecialchars fungera? 67 00:03:45,490 --> 00:03:49,280 Det beror på att aktie namn och symbol kan faktiskt innehålla särskilda 68 00:03:49,280 --> 00:03:54,410 tecken som inte bör tolkas som HTML. 69 00:03:54,410 --> 00:03:56,960 >> Okej, så det är det för offert. 70 00:03:56,960 --> 00:04:00,700 Nu vill vi titta på index.php och portfölj. 71 00:04:00,700 --> 00:04:04,730 Men först vi faktiskt behöver för att bygga tabellen portföljer. 72 00:04:04,730 --> 00:04:07,310 Här är hur vi ska göra det. 73 00:04:07,310 --> 00:04:09,390 >> Så låt oss ta en titt på strukturen. 74 00:04:09,390 --> 00:04:13,530 Och vi ser att portföljerna Tabellen kommer att få ett ID. 75 00:04:13,530 --> 00:04:17,760 Så det kommer att vara användarens ID som är att föra in aktierna. 76 00:04:17,760 --> 00:04:21,839 Vi har en symbol, som kommer att bli symbolen för det företag som vi är 77 00:04:21,839 --> 00:04:23,610 föra in aktierna för. 78 00:04:23,610 --> 00:04:27,940 Och då aktier är antalet aktier som håller på att införas. 79 00:04:27,940 --> 00:04:33,490 >> Så kom ihåg att per den pset spec, vi ange att ID och symbol - 80 00:04:33,490 --> 00:04:37,140 vi kolla index, ID och symbolen är primärnyckel. 81 00:04:37,140 --> 00:04:41,240 Så ett användar-ID och symbolhoppar ska bara visas en enda 82 00:04:41,240 --> 00:04:44,010 gången i den här tabellen. 83 00:04:44,010 --> 00:04:46,050 Nu ska vi titta på koden. 84 00:04:46,050 --> 00:04:50,950 >> Så nu index.php kommer att ta alla i vår portfölj information och 85 00:04:50,950 --> 00:04:52,700 visa den för användaren. 86 00:04:52,700 --> 00:04:56,230 Så först ska vi få tag på kontanter att användaren har för närvarande från 87 00:04:56,230 --> 00:04:57,160 cash bord. 88 00:04:57,160 --> 00:05:02,070 Kom ihåg att den frågan kommer alltid att returnera en matris med matriser. 89 00:05:02,070 --> 00:05:06,070 Så även om vi bara valt kontanter från en enda rad, ändå måste vi 90 00:05:06,070 --> 00:05:10,850 ta det pengar genom att indexera in i nollte index rader och ta tag i 91 00:05:10,850 --> 00:05:13,720 kontanter index. 92 00:05:13,720 --> 00:05:17,810 >> Så nu vill vi markera alla information från tabellen portföljer 93 00:05:17,810 --> 00:05:21,640 som är relevant för den aktuella inloggade användaren. 94 00:05:21,640 --> 00:05:25,070 Vi behöver naturligtvis att validera att som faktiskt lyckats, vilket vi 95 00:05:25,070 --> 00:05:28,120 ska alltid göra när vi fråga. 96 00:05:28,120 --> 00:05:31,890 När vi har all denna information, den pset spec informerar oss om att vi 97 00:05:31,890 --> 00:05:36,298 bör göra detta för att snyggt lagra all information i denna 98 00:05:36,298 --> 00:05:37,850 positioner array. 99 00:05:37,850 --> 00:05:42,250 >> Så vi loopa över alla de portföljinformation, se upp 100 00:05:42,250 --> 00:05:47,030 lager är associerad med varje rad i portföljinformation och sedan 101 00:05:47,030 --> 00:05:52,510 lagring i den position array namnet, pris, aktier och symbol alla 102 00:05:52,510 --> 00:05:54,790 förknippas med det beståndet. 103 00:05:54,790 --> 00:05:59,040 Och slutligen, kommer vi att göra portfolio.PHP, som går i mängden 104 00:05:59,040 --> 00:06:02,290 av kontanter vi har för närvarande, det positioner array som vi bara 105 00:06:02,290 --> 00:06:06,510 konstrueras, och titeln på denna sida som kommer att vara portfölj. 106 00:06:06,510 --> 00:06:09,166 >> Låt oss ta en titt på portfolio.PHP. 107 00:06:09,166 --> 00:06:13,570 Och vi ser att de stora intressanta delen är denna slinga. 108 00:06:13,570 --> 00:06:17,410 Så vi looping över positionerna matris, vilket skapar en 109 00:06:17,410 --> 00:06:19,420 bord, där det bordet - 110 00:06:19,420 --> 00:06:23,220 vi fylla varje rad med information som vi lägger in i 111 00:06:23,220 --> 00:06:24,470 positioner array. 112 00:06:24,470 --> 00:06:28,250 >> Återigen måste vi använda htmlspecialchars ifall denna symbol eller namn 113 00:06:28,250 --> 00:06:31,020 innehåller HTML-tecken. 114 00:06:31,020 --> 00:06:36,690 Och här vi multiplicera priset och det antal aktier som vi har 115 00:06:36,690 --> 00:06:40,880 för att få hur mycket som är för närvarande värd för användaren. 116 00:06:40,880 --> 00:06:42,880 Och det är det för portfölj. 117 00:06:42,880 --> 00:06:45,500 >> Nu tar vi en titt på sälja. 118 00:06:45,500 --> 00:06:50,190 Så säljer kommer att gå tillbaka till format som vi hade i register.php. 119 00:06:50,190 --> 00:06:53,200 Vi ser att ett formulär ska för att skickas till den här sidan. 120 00:06:53,200 --> 00:06:57,270 Men först, när vi laddar sidan, Vi ska göra det här. 121 00:06:57,270 --> 00:06:58,880 >> Så vad är det här att göra? 122 00:06:58,880 --> 00:07:03,660 Tja, vi kan bara ha säljsidan har en enda textruta som användaren 123 00:07:03,660 --> 00:07:06,020 går denna symbol att vi vill sälja. 124 00:07:06,020 --> 00:07:08,890 Men vi ska vara lite mer smart och vi kommer att ha en droppe 125 00:07:08,890 --> 00:07:14,690 ner som tillåter användaren att välja verkliga symboler som de redan har. 126 00:07:14,690 --> 00:07:17,940 >> Så vi får användarens portfölj. 127 00:07:17,940 --> 00:07:22,630 Vi kommer att välja mellan portföljer alla symbolerna som användaren 128 00:07:22,630 --> 00:07:26,180 har idag, den för tillfället inloggade användaren. 129 00:07:26,180 --> 00:07:28,150 Se till att det lyckades. 130 00:07:28,150 --> 00:07:31,960 Och nu ska vi slinga över tillbaka information, bara ta tag 131 00:07:31,960 --> 00:07:35,610 varje symbol, och lagra den i detta symboler array. 132 00:07:35,610 --> 00:07:37,570 >> Och nu ska vi göra sälja formuläret. 133 00:07:37,570 --> 00:07:43,380 Så säljer formuläret ska bara vara en rullgardinsmeny, en utvald. 134 00:07:43,380 --> 00:07:49,140 Och varje alternativ i sälj formen är kommer att bara skriva ut symbolen 135 00:07:49,140 --> 00:07:52,380 att vi tog från portföljer tabell. 136 00:07:52,380 --> 00:07:58,390 >> Så säljer formuläret kommer att skicka tillbaka till sell.PHP. 137 00:07:58,390 --> 00:08:04,340 Om man tittar på sell.PHP, detta är den kod det kommer att köras när vi in 138 00:08:04,340 --> 00:08:05,555 till den här sidan. 139 00:08:05,555 --> 00:08:10,320 Vi vill validera att användaren faktiskt kommer in en symbol. 140 00:08:10,320 --> 00:08:12,730 >> Nu antar att de gjorde - 141 00:08:12,730 --> 00:08:16,930 så nu vill vi bestämma hur många delar som användaren faktiskt säljer 142 00:08:16,930 --> 00:08:20,830 och hur mycket pengar användaren ska få för att sälja så många aktier. 143 00:08:20,830 --> 00:08:25,210 Så vi ta det antal aktier som användaren har för denna symbol. 144 00:08:25,210 --> 00:08:30,690 Vi tittar upp i portföljerna för given användare och den givna symbolen. 145 00:08:30,690 --> 00:08:34,289 >> Nu se till att det faktiskt return rad. 146 00:08:34,289 --> 00:08:39,440 För om det inte gjorde det, inte användaren faktiskt har den symbolen för att sälja. 147 00:08:39,440 --> 00:08:42,890 Förutsatt att de har den symbolen, vi vill ta det antal 148 00:08:42,890 --> 00:08:44,530 aktier som de har. 149 00:08:44,530 --> 00:08:47,640 Och nu vill vi att slå upp hur mycket varje aktie är värd. 150 00:08:47,640 --> 00:08:49,450 >> Så vi använde slå upp funktionen. 151 00:08:49,450 --> 00:08:52,910 Vi letar upp värdet av symbolen. 152 00:08:52,910 --> 00:08:56,700 Med antagande av att titta upp lyckats, nu vi ska faktiskt uppdatera alla 153 00:08:56,700 --> 00:08:57,830 informationen. 154 00:08:57,830 --> 00:09:02,285 Så vi vill ta bort från portföljer de aktier som vi säljer. 155 00:09:02,285 --> 00:09:05,610 Vi vill uppdatera användarens mängd kontanter. 156 00:09:05,610 --> 00:09:10,480 >> Och vi uppdaterar den med aktier gånger aktiekursen - 157 00:09:10,480 --> 00:09:13,050 så det är hur mycket pengar användaren just gjort. 158 00:09:13,050 --> 00:09:15,150 Och nu vill vi att uppdatera vår historia. 159 00:09:15,150 --> 00:09:17,390 Så vi har tagit en titt på historien tabellen än. 160 00:09:17,390 --> 00:09:19,440 Så vi ska återkomma till detta. 161 00:09:19,440 --> 00:09:23,690 >> Nu äntligen ska vi omdirigera tillbaka till portföljen. 162 00:09:23,690 --> 00:09:25,300 Nu ska vi ta en titt på köp. 163 00:09:25,300 --> 00:09:28,910 Så, köpa borde vara ganska liknande att sälja. 164 00:09:28,910 --> 00:09:32,300 >> Vi ser att vi återigen kommer för att kontrollera om vi är 165 00:09:32,300 --> 00:09:33,900 lämna in till den här sidan. 166 00:09:33,900 --> 00:09:37,470 Förutsatt att vi inte är, vi är går att ladda köp formuläret. 167 00:09:37,470 --> 00:09:40,210 Så vad betyder det köp formuläret ut? 168 00:09:40,210 --> 00:09:42,510 >> Vi ser här att det är bara en vanlig bildar det kommer att 169 00:09:42,510 --> 00:09:44,450 skicka tillbaka till buy.PHP. 170 00:09:44,450 --> 00:09:49,230 Och det kommer att ha en symbol som användaren är på väg in, antal 171 00:09:49,230 --> 00:09:53,330 aktier som användaren vill köpa av den symbolen, och det är det. 172 00:09:53,330 --> 00:09:59,890 Så när vi lämna tillbaka till buy.PHP, vi är nu kommer att köra den här koden. 173 00:09:59,890 --> 00:10:04,250 >> Vi vill återigen för att validera att användaren angett något giltigt. 174 00:10:04,250 --> 00:10:06,730 Så här är vi se till att de faktiskt kommer in en symbol. 175 00:10:06,730 --> 00:10:09,190 Här vi se till att de som faktiskt förs in aktier. 176 00:10:09,190 --> 00:10:12,840 Och här vi se till att de in ett heltal aktier, så 177 00:10:12,840 --> 00:10:15,095 De försöker inte köpa ABC-aktier. 178 00:10:15,095 --> 00:10:17,630 179 00:10:17,630 --> 00:10:23,130 >> Nu vill vi titta upp priset på symbol så vi vet hur mycket pengar vi 180 00:10:23,130 --> 00:10:26,590 bör dra från användaren. 181 00:10:26,590 --> 00:10:31,700 Nu väljer vi hur mycket pengar användaren faktiskt har och se till att 182 00:10:31,700 --> 00:10:33,960 det lyckades. 183 00:10:33,960 --> 00:10:35,600 Här vi ta tag i kontanter. 184 00:10:35,600 --> 00:10:39,660 Och nu här, vi se till att användaren har tillräckligt med kontanter. 185 00:10:39,660 --> 00:10:44,950 >> Så om det antal aktier användaren vill köpa gånger priset för varje 186 00:10:44,950 --> 00:10:49,100 av dessa aktier är större än mängd kontanter som vi har, då den 187 00:10:49,100 --> 00:10:50,950 Användaren har inte råd med det. 188 00:10:50,950 --> 00:10:54,500 Med antagande av att användaren har tillräckligt med kontanter, nu vill vi sätta in i 189 00:10:54,500 --> 00:10:55,980 användarens portfölj. 190 00:10:55,980 --> 00:10:59,900 Nåväl, vi sätter in i användarens portfölj om det råkar vara 191 00:10:59,900 --> 00:11:02,770 Första gången användaren köper att särskild symbol. 192 00:11:02,770 --> 00:11:06,630 >> Men vad händer om de redan hända att ha lite Apple lager? 193 00:11:06,630 --> 00:11:10,930 Nåväl, nu är vi att använda sig av den duplicera nyckel uppdatering uttalande. 194 00:11:10,930 --> 00:11:15,750 Så det är därför tidigare vi angett att ID och symbolen ska vara en gemensam 195 00:11:15,750 --> 00:11:19,620 primärnyckel, så att om vi försöker sätt in ett ID och symbol som är 196 00:11:19,620 --> 00:11:24,670 redan där, vi bara uppdatera aktier för att inkludera de nya aktierna som 197 00:11:24,670 --> 00:11:26,720 användaren köper. 198 00:11:26,720 --> 00:11:30,390 >> Nu vill vi att uppdatera den mängd pengar som användaren har, eftersom de 199 00:11:30,390 --> 00:11:33,390 precis spenderat lite pengar på dessa aktier. 200 00:11:33,390 --> 00:11:36,060 Och slutligen, vi uppdaterar historia bordet igen. 201 00:11:36,060 --> 00:11:38,590 Vilket, återigen, kommer vi att titta på i en sekund. 202 00:11:38,590 --> 00:11:43,230 Och slutligen ska vi styra om tillbaka till portfolio.PHP. 203 00:11:43,230 --> 00:11:45,440 >> Så låt oss ta en titt på historiktabellen. 204 00:11:45,440 --> 00:11:48,770 205 00:11:48,770 --> 00:11:53,430 Kom nu ihåg att historien tabellen är tänkt att hålla reda på alla köper och 206 00:11:53,430 --> 00:11:57,580 säljer att alla användare gör, inte bara den nuvarande antal aktier som 207 00:11:57,580 --> 00:12:00,500 användarna har, vilket är vad portfölj är för. 208 00:12:00,500 --> 00:12:06,350 Så vi hålla reda på användaren som köper eller säljer, oavsett om 209 00:12:06,350 --> 00:12:11,740 denna transaktion var ett köp eller en försäljning, en symbol som är att vara 210 00:12:11,740 --> 00:12:17,540 köpts eller sålts, antalet aktier att vi ska köpa eller sälja, det 211 00:12:17,540 --> 00:12:22,840 priset för en enskild aktie som är att vara köpas eller säljas, och slutligen, den tid 212 00:12:22,840 --> 00:12:25,550 att köpa eller sälja sker. 213 00:12:25,550 --> 00:12:27,650 >> Och det är allt historia information som vi behöver 214 00:12:27,650 --> 00:12:29,850 att hålla reda på. 215 00:12:29,850 --> 00:12:37,340 Så när vi tittade på sälja, såg vi att vi sätter in i historien sälja, 216 00:12:37,340 --> 00:12:42,060 som om vi ska köpa eller sälja, den aktuella tidsstämpel, och 217 00:12:42,060 --> 00:12:46,070 aktuella användaren, symbolen som är att vara säljas, det antal aktier som 218 00:12:46,070 --> 00:12:50,010 säljs, och priset på beståndet vid denna tid. 219 00:12:50,010 --> 00:12:52,740 Likaså i köpa, det ska ser nästan likadana ut. 220 00:12:52,740 --> 00:12:56,820 Den enda skillnaden är i stället att sälja, vi köper. 221 00:12:56,820 --> 00:13:01,243 >> Så i sälja och köpa, vi sätter in i tabellen historier alla av 222 00:13:01,243 --> 00:13:02,960 köper och säljer som händer. 223 00:13:02,960 --> 00:13:08,680 Så allt history.PHP behöver göra är att ta tag informationen från historiken 224 00:13:08,680 --> 00:13:13,960 bord, se till att det lyckades, och göra den informationen. 225 00:13:13,960 --> 00:13:18,770 Så titta på history.PHP mallen, det intressant information 226 00:13:18,770 --> 00:13:19,940 är just här. 227 00:13:19,940 --> 00:13:23,935 >> Vi looping över alla de transaktioner, tryckning huruvida detta 228 00:13:23,935 --> 00:13:29,580 var en köpa eller sälja, formatering datum tid att vi gjorde den här transaktionen. 229 00:13:29,580 --> 00:13:31,520 Kom ihåg måste vi använda htmlspecialchars på 230 00:13:31,520 --> 00:13:33,270 symbol, för säkerhets skull. 231 00:13:33,270 --> 00:13:37,150 Och slutligen, formatering av antalet aktier som köptes och priset 232 00:13:37,150 --> 00:13:39,310 av en enda aktie på den tiden. 233 00:13:39,310 --> 00:13:42,570 >> Och som visar hela historien information som vi behöver. 234 00:13:42,570 --> 00:13:44,220 Och det var allt för denna pset. 235 00:13:44,220 --> 00:13:47,820 Mitt namn är Rob, och detta var CS50 Finance. 236 00:13:47,820 --> 00:13:52,171