1 00:00:00,000 --> 00:00:03,000 [Powered by Google Translate] [Walkthrough Problem Set 7] 2 00:00:03,000 --> 00:00:04,400 [Zamyla Chan] [Harvard University] 3 00:00:04,400 --> 00:00:07,640 [Detta är CS50] [CS50.TV] 4 00:00:07,640 --> 00:00:12,090 >> Hej alla, och välkomna till Walkthrough 7, CS50 Finans. 5 00:00:12,090 --> 00:00:15,090 Nu är vi officiellt klar med alla psets i CS50, 6 00:00:15,090 --> 00:00:19,380 och vi bara kvar med en mer som kommer att bli en rolig implementering 7 00:00:19,380 --> 00:00:23,770 en webbplats där användare kan logga in på CS50 Finans 8 00:00:23,770 --> 00:00:25,830 och köpa och sälja aktier. 9 00:00:25,830 --> 00:00:32,280 >> Idag kommer vi att ha några verktyg till vårt förfogande. 10 00:00:32,280 --> 00:00:34,320 Vi kommer att tala om rättigheter. 11 00:00:34,320 --> 00:00:36,380 När du har en webbmapp 12 00:00:36,380 --> 00:00:40,800 du kommer att vilja tillåta användare att köra vissa filer 13 00:00:40,800 --> 00:00:42,500 men också bara läsa andra, 14 00:00:42,500 --> 00:00:45,150 så vi ska titta på behörigheter och hur du kan ställa in dem. 15 00:00:45,150 --> 00:00:49,630 Sen ska vi undersöka PHP, HTML och SQL-kod. 16 00:00:49,630 --> 00:00:51,990 >> Först behörigheter. 17 00:00:51,990 --> 00:00:56,060 När du är i terminalen i en viss katalog, 18 00:00:56,060 --> 00:01:00,430 vad du vill göra är att du vill köra kommandot chmod. 19 00:01:00,430 --> 00:01:03,750 Det är följt av antingen bokstäver eller siffror 20 00:01:03,750 --> 00:01:08,100 motsvarande vad du i princip vill att världen ska se, 21 00:01:08,100 --> 00:01:09,830 du själv se, etc. 22 00:01:09,830 --> 00:01:13,350 Till exempel, när du har en mapp, 23 00:01:13,350 --> 00:01:15,560 då du vill att mappen kunna köras av alla som ser det, 24 00:01:15,560 --> 00:01:19,500 så vad du skulle göra är att du kan köra kommandot chmod a + x 25 00:01:19,500 --> 00:01:21,050 och sedan namnet på mappen. 26 00:01:21,050 --> 00:01:28,110 När du har en fil som CSS-filer eller bildfiler - 27 00:01:28,110 --> 00:01:33,060 som JPEG och bitmappar, saker, eller någon JavaScript-kod - 28 00:01:33,060 --> 00:01:36,440 du vill att vara läsbar av alla, 29 00:01:36,440 --> 00:01:39,880 så vad du gör är att du kan använda jokertecken - 30 00:01:39,880 --> 00:01:41,650 vilket är en asterisk - 31 00:01:41,650 --> 00:01:46,190 att i princip ange i CSS-mappen - allt i den mappen - 32 00:01:46,190 --> 00:01:48,740  Jag ska säga att det kommer att vara läsbar av alla. 33 00:01:48,740 --> 00:01:54,220 Med behörigheter, när vi använder bokstäverna, 34 00:01:54,220 --> 00:01:57,610 Vi kan också använda siffror i stället. 35 00:01:57,610 --> 00:02:00,900 Så ser du att i slutändan när du vill ha något att vara körbar - 36 00:02:00,900 --> 00:02:02,810 som är representerad av siffran 1 - 37 00:02:02,810 --> 00:02:08,340 något att vara läsbar är antalet 4 och sedan - 38 00:02:08,340 --> 00:02:10,590 skrivbar är nummer 2 - 39 00:02:10,590 --> 00:02:13,670 och så väsentligt när du vill ha en kombination av dessa, då du lägger till dem. 40 00:02:13,670 --> 00:02:15,860 Om du vill ha något att vara läsbar, skrivbar och körbar, 41 00:02:15,860 --> 00:02:21,970 då du skulle lägga upp 4, 2 och 1 och som skulle ge dig 7, 42 00:02:21,970 --> 00:02:26,230 då när du har en mapp som du vill att det ska kunna köras av alla - 43 00:02:26,230 --> 00:02:31,380 samt läs-och skrivbara - då du gör att 7, 1, 1. 44 00:02:31,380 --> 00:02:38,140 Det skulle vara 7 för dig, då 1 för andra människor. 45 00:02:38,140 --> 00:02:42,870 När du har spec, det ska ange faktiskt vilka mappar och vilka filer 46 00:02:42,870 --> 00:02:45,040 måste chmod-ed specifikt. 47 00:02:45,040 --> 00:02:47,920 Till exempel, när du har mappar - de är 7-1-1 - 48 00:02:47,920 --> 00:02:52,690 när du har bilder eller HTML, CSS, JavaScript, 49 00:02:52,690 --> 00:02:55,870 då de kommer att vara 6, 0, 4 - eller 6, 4, 4 - 50 00:02:55,870 --> 00:03:00,030 och sedan PHP-filer kommer att vara 6, 0, 0. 51 00:03:00,030 --> 00:03:04,940 Tanken bakom detta är att användarna inte faktiskt borde se din PHP-kod, 52 00:03:04,940 --> 00:03:08,370 men bara kunna se utgången. 53 00:03:08,370 --> 00:03:11,030 >> Bra! Flytta till PHP. 54 00:03:11,030 --> 00:03:18,850 Enkelt, när du vill ha en PHP-fil, är filen ändelsen. Php. 55 00:03:18,850 --> 00:03:22,000 Du kan också blanda HTML med PHP-kod. 56 00:03:22,000 --> 00:03:24,880 Om du har en HTML-fil, till exempel, 57 00:03:24,880 --> 00:03:32,520 då kan du bifoga den med vänster vinkel, frågetecken, php - 58 00:03:32,520 --> 00:03:39,320 sätta din PHP-kod - och sedan stänga den med en annan frågetecken och en rät vinkel. 59 00:03:39,320 --> 00:03:45,020 Variabler i PHP är mycket lättare att hantera än variabler i C. 60 00:03:45,020 --> 00:03:50,310 Varje variabel börjar bara med ett dollartecken framför den, och de är svagt skrivit. 61 00:03:50,310 --> 00:03:53,470 Det innebär att du inte behöver oroa dig för att ställa något 62 00:03:53,470 --> 00:03:55,020 lika med en sträng eller ett heltal. 63 00:03:55,020 --> 00:03:57,710 Du kan bara helt enkelt säga, detta är mitt namn på variabeln 64 00:03:57,710 --> 00:04:00,390 och då detta är dess värde, 65 00:04:00,390 --> 00:04:03,280 så det kommer att bli lättare att hantera det. 66 00:04:03,280 --> 00:04:08,220 >> En annan sak är att PHP kan du använda associativa arrayer. 67 00:04:08,220 --> 00:04:11,330 Du kan helt enkelt definiera en array som du skulle i C 68 00:04:11,330 --> 00:04:14,900 genom att säga, dollartecken, namnet på din array-lika, 69 00:04:14,900 --> 00:04:22,600 och sedan inom hakparenteser har i princip bara en lista över värden för alla element i arrayen. 70 00:04:22,600 --> 00:04:27,160 Men i PHP vad du kan också göra är att ange grunden - 71 00:04:27,160 --> 00:04:31,050 Det är ungefär som en hashfunktion. 72 00:04:31,050 --> 00:04:34,410 Du kan ange index - vad du ska kalla det - 73 00:04:34,410 --> 00:04:37,030 och sedan som motsvarar ett värde. 74 00:04:37,030 --> 00:04:42,880 Om du skickar faktiskt i en = 1, b = 2, C = 3, 75 00:04:42,880 --> 00:04:50,820 då din array vid index en skulle ge dig 1. 76 00:04:50,820 --> 00:04:56,600 Denna pset kommer att värma dig med lite PHP i en del av frågorna, 77 00:04:56,600 --> 00:04:59,240 och då vi dyka in CS50 Finans. 78 00:04:59,240 --> 00:05:02,650 >> Vi har ett par - vi har vissa funktioner, i princip, 79 00:05:02,650 --> 00:05:05,130 att genomföra i denna webbplats. 80 00:05:05,130 --> 00:05:10,440 Vi vill tillåta användare att registrera sig på vår hemsida med ett användarnamn och ett lösenord. 81 00:05:10,440 --> 00:05:13,670 Vi vill ge dem möjlighet att slå upp ett citat, 82 00:05:13,670 --> 00:05:19,330 och då skulle vi skriva ut namnet på det citatet samt det aktuella priset att det är på. 83 00:05:19,330 --> 00:05:26,830 Vi vill ge dem möjlighet att se en portfölj av samtliga aktier som de har köpt hittills. 84 00:05:26,830 --> 00:05:34,240 Vi vill också ge dem möjlighet att köpa aktier samt sälja dem. 85 00:05:34,240 --> 00:05:37,540 Och slutligen vill vi låta dem se historiken 86 00:05:37,540 --> 00:05:39,490 av alla transaktioner som de har gjort. 87 00:05:39,490 --> 00:05:41,540 Sedan, slutligen, efter att du har genomfört allt detta, 88 00:05:41,540 --> 00:05:45,110 då är du fri att genomföra en extra funktion. 89 00:05:45,110 --> 00:05:46,610 Vi går in i de. 90 00:05:46,610 --> 00:05:51,330 De kan antingen vara så att användarna kan få extra pengar genom att deponera extra pengar, 91 00:05:51,330 --> 00:05:54,550 eller du kan låta dem ändra sitt lösenord, eller något liknande, 92 00:05:54,550 --> 00:06:00,590 maila dem ett kvitto när de köper eller säljer en aktie. 93 00:06:00,590 --> 00:06:05,370 Det finns en begränsad lista över funktioner som du kan genomföra själv, 94 00:06:05,370 --> 00:06:08,340 så det är det sista där. 95 00:06:08,340 --> 00:06:13,430 >> Eftersom detta är en webbplats, ni har också en stor frihet att anpassa den. 96 00:06:13,430 --> 00:06:20,960 Vi ger viss CSS-kod, men du är definitivt fri att justera det, 97 00:06:20,960 --> 00:06:26,680 få det att se trevligare, men underliggande är en grundläggande funktionalitet 98 00:06:26,680 --> 00:06:30,310 så alltid hänvisa till spec om vad du faktiskt behöver för att inkludera det. 99 00:06:30,310 --> 00:06:39,940 Efter spec, vi ska använda apparaten som också en server. 100 00:06:39,940 --> 00:06:43,910 Det kommer att vara värd vår hemsida för oss på sin lokala servern. 101 00:06:43,910 --> 00:06:49,750 Om du följer dessa instruktioner och packa upp pset 7 distributionen kod 102 00:06:49,750 --> 00:06:53,500 i din virtuella värd / lokal värd mappen 103 00:06:53,500 --> 00:07:02,470  då kan du bara besöka http://localhost/ i Google Chrome i apparaten, 104 00:07:02,470 --> 00:07:09,120 och sedan skulle nå koden som du har skrivit pset 7. 105 00:07:09,120 --> 00:07:14,490 >> Pset 7 levereras med ett gäng fördelning kod, 106 00:07:14,490 --> 00:07:18,330 och förhoppningsvis we've - genom alla psets innan detta - 107 00:07:18,330 --> 00:07:21,700 vant oss att läsa igenom utdelning kod, 108 00:07:21,700 --> 00:07:25,650 förstå vilka funktioner som redan finns, och hur vi skulle kunna använda 109 00:07:25,650 --> 00:07:29,470 dessa och andra funktioner som vi kommer att genomföra. 110 00:07:29,470 --> 00:07:31,570 I det här fallet har vi 3 mappar. 111 00:07:31,570 --> 00:07:36,350 Vi har en HTML-mapp, en inkluderar mapp och en Mallar. 112 00:07:36,350 --> 00:07:40,630 Vad vi ska göra med denna pset är typ att separera tänkande - 113 00:07:40,630 --> 00:07:45,580 programmering tänkande - av PHP-koden med den faktiska visuella aspekten. 114 00:07:45,580 --> 00:07:52,690 Vi kommer att ha en PHP-fil som gör allt tänkande, läser i databasen, 115 00:07:52,690 --> 00:07:55,620 Skriver ut saker, har om uttalanden - sånt - 116 00:07:55,620 --> 00:08:02,140 och då kommer skicka data i vår mallfil - eller template.php fil. 117 00:08:02,140 --> 00:08:05,710 Vad som kommer att göra är att läsa data och så kommer det att skriva ut den. 118 00:08:05,710 --> 00:08:09,550 >> Vi kan behandla mallar som "dum" eftersom vi inte verkligen vill ha dem 119 00:08:09,550 --> 00:08:12,370 att göra en hel del arbete för att beräkna saker. 120 00:08:12,370 --> 00:08:16,330 Vi vill att våra styrenheter att göra det. 121 00:08:16,330 --> 00:08:21,610 En liten bit på det - låt oss ta en titt på några av distributionen koden. 122 00:08:21,610 --> 00:08:28,250 Här har vi vår index.html fil, och det är ganska tom. 123 00:08:28,250 --> 00:08:34,429 I huvudsak vad den gör - det säger, ja, jag kommer att kräva configuration.php filen. 124 00:08:34,429 --> 00:08:40,120 Vi ser inte att just där, men det är i princip ringa configuration.php filen, 125 00:08:40,120 --> 00:08:42,240 och verkställande det. 126 00:08:42,240 --> 00:08:45,130 Efter det gör det, kommer det att göra portföljen. 127 00:08:45,130 --> 00:08:49,310 Rendering är en funktion, så när vi är i en styrenhet, 128 00:08:49,310 --> 00:08:56,490 vi kallar render, vi ge den filen och sedan de data som vi passerar i, 129 00:08:56,490 --> 00:09:04,570 så att det ringer i portfolio.php--typ av pass i dessa uppgifter så att portföljen kan hantera detta. 130 00:09:04,570 --> 00:09:10,540 >> Och nu, här har vi vår login.php form. 131 00:09:10,540 --> 00:09:17,540  Det är regulatorn som i grunden tar hand om att logga in 132 00:09:17,540 --> 00:09:29,090 Här kontrollerar det om en form lämnades till den här filen och behandlar validera ansökan. 133 00:09:29,090 --> 00:09:31,990 Vi ska undersöka detta Apologize funktion. 134 00:09:31,990 --> 00:09:35,100 När vi vill skriva ut ett felmeddelande, 135 00:09:35,100 --> 00:09:39,550 Vi använder be om ursäkt och som kommer att omdirigera användaren till en viss sida 136 00:09:39,550 --> 00:09:42,530 som kommer att skriva ut det specifika felmeddelandet som vi visar. 137 00:09:42,530 --> 00:09:47,860 Fortsätter, kommer det att söka i databasen - we'll komma in mer av det senare. 138 00:09:47,860 --> 00:09:54,180 Då kan du se att här nere om en form som inte lämnades, så gör ett formulär. 139 00:09:54,180 --> 00:10:01,360 Det innebär att det går att login_form.php, så låt oss titta på det. 140 00:10:01,360 --> 00:10:09,400 >> Login.php är faktiskt där vi ser HTML befattning med den aktuella visuella aspekten. 141 00:10:09,400 --> 00:10:15,130 Här har vi en ingång tagg för användarnamn, en ingång för lösenordet, 142 00:10:15,130 --> 00:10:16,630 samt en submit-knapp. 143 00:10:16,630 --> 00:10:22,660 Det är faktiskt där den visuella aspekten och HTML-formulär kommer att hållas. 144 00:10:22,660 --> 00:10:27,550 Här står det att det kommer att läggas fram av en viss metod, kallad post. 145 00:10:27,550 --> 00:10:30,190 Vi kommer få in skillnaderna mellan metoderna - 146 00:10:30,190 --> 00:10:33,240 posta kontra få, det finns också något som kallas lagt - 147 00:10:33,240 --> 00:10:36,160 vi får in de metoder senare, men för det intresse av detta pset, 148 00:10:36,160 --> 00:10:37,810 Jag skulle starkt uppmuntra er att använda tjänsten. 149 00:10:37,810 --> 00:10:42,210 >> Vi vet att i princip när denna formuläret skickas - 150 00:10:42,210 --> 00:10:44,650 från login_form.php-- 151 00:10:44,650 --> 00:10:50,850 så kommer det att gå till handling - login.php-- 152 00:10:50,850 --> 00:10:56,070 princip godkänt på alla dessa parametrar från dessa former i login.php. 153 00:10:56,070 --> 00:11:04,900 Resultaten från den formen finns i det här inlägget associativ array. 154 00:11:04,900 --> 00:11:11,710 Indexen för de olika elementen i posten array 155 00:11:11,710 --> 00:11:15,290 är exakt vad du anger här. 156 00:11:15,290 --> 00:11:19,240 Du säger att namnet på denna ingång är användarnamn. Namnet på denna är lösenord. 157 00:11:19,240 --> 00:11:26,840 Likaså ser du användarnamnet som index för associativ array där. 158 00:11:26,840 --> 00:11:35,110 Om vi ​​går till inkluderar mappen har vi denna funktion fil som kommer att vara mycket användbar. 159 00:11:35,110 --> 00:11:37,570 >> Alla dessa funktioner är implementerade för dig. 160 00:11:37,570 --> 00:11:41,870 Du behöver inte att specifikt tillämpa någon av dessa själv, 161 00:11:41,870 --> 00:11:43,140 men de kommer att ganska bra. 162 00:11:43,140 --> 00:11:49,450 Vi har ursäkt, vilket som jag sa tidigare, i princip kommer att skriva ut ett felmeddelande 163 00:11:49,450 --> 00:11:52,920 för dig på en specifik sida - apology.php. 164 00:11:52,920 --> 00:11:59,890 Sen har vi dumpa, så om du bara ringa dumpa och sedan passera i variabeln, 165 00:11:59,890 --> 00:12:04,930 så kommer det att ta dig till en sida som visar den variabeln för dig. 166 00:12:04,930 --> 00:12:09,950 Då har vi logga ut, som i princip kommer att avsluta en viss användares session. 167 00:12:09,950 --> 00:12:12,240 Uppslagning kommer att vara användbar. 168 00:12:12,240 --> 00:12:15,870 Eftersom vi har att göra med citat och lager, kommer vi att kunna - 169 00:12:15,870 --> 00:12:17,650 och det är i huvudsak i realtid. 170 00:12:17,650 --> 00:12:21,380 Vi behöver veta vad dessa lager värden, 171 00:12:21,380 --> 00:12:28,210 så vi har funktionen LETAUPP som handlar Yahoos dokumentation av bestånden. 172 00:12:28,210 --> 00:12:37,700 När du tittar upp en viss symbol för en aktie, återgår den till dig aktiesymbol 173 00:12:37,700 --> 00:12:41,480 samt namn och det aktuella priset på detta bestånd. 174 00:12:41,480 --> 00:12:44,330 Det är funktionen LETAUPP. 175 00:12:44,330 --> 00:12:48,350 >> Då vi har att göra med MySQL, 176 00:12:48,350 --> 00:12:53,970 så vi kommer att vilja utföra vissa frågor på vår SQL-databas. 177 00:12:53,970 --> 00:12:58,890 Vi har en fråga att ta itu - till typ av abstrakta del av denna ut. 178 00:12:58,890 --> 00:13:03,200 Vi kommer att passera i hela raden av våra SQL-fråga - 179 00:13:03,200 --> 00:13:05,360 och alla variabler som går i den - 180 00:13:05,360 --> 00:13:09,480 och vad detta innebär är faktiskt genomföra det för oss. 181 00:13:09,480 --> 00:13:15,070 Istället för att behöva skriva allt detta ut varje gång som du vill söka - 182 00:13:15,070 --> 00:13:21,740 genom att få alla resultat från denna fråga - 183 00:13:21,740 --> 00:13:24,740 då kan du bara ringa frågan funktion och det kommer tillbaka till dig - 184 00:13:24,740 --> 00:13:28,750 beroende på vad du använder för din fråga - 185 00:13:28,750 --> 00:13:33,000 förmodligen en rad av alla de resultat som matchar sökfrågan eller liknande. 186 00:13:33,000 --> 00:13:34,690 Mer om det senare ändå. 187 00:13:34,690 --> 00:13:41,200 >> Slutligen har vi omdirigera som, vilket namnet antyder, omdirigerar dig till en annan sida. 188 00:13:41,200 --> 00:13:46,280 Och så har vi render, som vi kommer att kalla ett par gånger. 189 00:13:46,280 --> 00:13:51,010 När du är i en styrenhet, kallar du göra i mallen sidan 190 00:13:51,010 --> 00:13:55,390 och sedan passera i de värderingar som mallen kommer då hantera. 191 00:13:55,390 --> 00:13:59,540 Dessa värden är förmodligen kommer att göra med den typ av produktion som du vill 192 00:13:59,540 --> 00:14:01,050 som visas på din mall sida. 193 00:14:01,050 --> 00:14:09,370 Okej. Det är funktioner, och det finns mycket mer att denna fördelning kod. 194 00:14:09,370 --> 00:14:12,930 Jag uppmuntrar dig att gå igenom detta och utforska det själv. 195 00:14:12,930 --> 00:14:17,050 Dessutom kommer spec gå förmodligen dig genom några andra delar av distributionen koden. 196 00:14:17,050 --> 00:14:27,360 Här är en sammanfattning av de funktioner som finns i functions.php. 197 00:14:27,360 --> 00:14:31,710 >> Okej. Den första uppgiften är att tillåta användare att registrera sig på webbplatsen. 198 00:14:31,710 --> 00:14:34,860 Just nu finns det en inloggning form på webbplatsen, 199 00:14:34,860 --> 00:14:40,080 och du har tillgång till ett fåtal användare med lösenord. 200 00:14:40,080 --> 00:14:42,130 Du kan använda dessa användarnamn och logga in, 201 00:14:42,130 --> 00:14:45,140 men du vill tillåta människor att göra sina egna användarnamn 202 00:14:45,140 --> 00:14:47,390 och lägga sig på webbplatsen. 203 00:14:47,390 --> 00:14:53,070 Layouten för registrering är ganska lik inloggningsformuläret, 204 00:14:53,070 --> 00:14:56,340 utom användarnamnet inte tidigare, 205 00:14:56,340 --> 00:14:59,430 och användaren måste också tillhandahålla ett nytt lösenord, 206 00:14:59,430 --> 00:15:02,440 och sedan vanligtvis har vi ett lösenord bekräftelse. 207 00:15:02,440 --> 00:15:06,580 När användaren matar alla av denna information, 208 00:15:06,580 --> 00:15:10,620 Vi vill lägga till dem i vår databas med användare. 209 00:15:10,620 --> 00:15:12,970 Vi kommer att ha en databas - en SQL-databas - 210 00:15:12,970 --> 00:15:14,470 att vi kommer att referera till. 211 00:15:14,470 --> 00:15:18,140 I denna databas kommer vi att ha en tabell med alla användare 212 00:15:18,140 --> 00:15:23,850 innehåller deras användarnamn, sitt lösenord, och även hur mycket pengar de har. 213 00:15:23,850 --> 00:15:28,480 >> I registret vill vi låta dem komma in denna information. 214 00:15:28,480 --> 00:15:29,740 Vi vill visa detta formulär. 215 00:15:29,740 --> 00:15:32,210 Vi vill se till att deras lösenord - 216 00:15:32,210 --> 00:15:37,490 att de kom in en, och sedan också att lösenorden stämmer när de går in det två gånger. 217 00:15:37,490 --> 00:15:42,240 Efter allt detta är gjort - förutsatt att dessa fel kontrolleras - 218 00:15:42,240 --> 00:15:45,120 då vill vi lägga till dessa användare till vår databas. 219 00:15:45,120 --> 00:15:49,630 Slutligen, när du har registrerat, det är ganska bekvämt om du inte behöver logga in igen 220 00:15:49,630 --> 00:15:51,000 När du har registrerat, 221 00:15:51,000 --> 00:15:54,000 så vi kommer att logga dem på webbplatsen om de har registrerats i framgångsrikt. 222 00:15:54,000 --> 00:16:00,360 >> Den första uppgiften är att visa form och det faktiskt kommer att bli - 223 00:16:00,360 --> 00:16:04,920 hela denna registreringsprocess kommer att modelleras ganska tätt efter inloggning 224 00:16:04,920 --> 00:16:10,510 utom i stället för login.php du kanske har register.php. 225 00:16:10,510 --> 00:16:14,300 Istället för login_form.php--vilket är mallen - 226 00:16:14,300 --> 00:16:16,030 du ha register form. 227 00:16:16,030 --> 00:16:19,680 Du vill lägga till ytterligare en fält - ett lösenord bekräftelse fält - 228 00:16:19,680 --> 00:16:23,450 istället för att bara ett användarnamn och ett lösenord. 229 00:16:23,450 --> 00:16:28,120 Sedan vill vi att kontrollera om lösenorden matchar eller är tomma. 230 00:16:28,120 --> 00:16:38,560 Vi har den registeransvarige - register.php--som kommer att ta hand om att göra dessa kontroller. 231 00:16:38,560 --> 00:16:41,690 När ett formulär skickas via posten metoden, 232 00:16:41,690 --> 00:16:47,050 då alla dessa variabler finns i stolpen arrayen. 233 00:16:47,050 --> 00:16:52,280 Du vill vara säker på att efter array värde vid index lösenord 234 00:16:52,280 --> 00:16:58,080 matchar bekräftelse elementet. 235 00:16:58,080 --> 00:16:59,410 Du vill vara säker på att de inte är tomma, 236 00:16:59,410 --> 00:17:01,650 och du vill vara säker på att de är samma. 237 00:17:01,650 --> 00:17:05,960 >> En bekväm sak om PHP är att vi inte behöver använda sträng jämföra längre. 238 00:17:05,960 --> 00:17:08,410 Vi kan använda lika-lika operatör 239 00:17:08,410 --> 00:17:11,470  att kontrollera om strängarna är lika med varandra. 240 00:17:11,470 --> 00:17:14,960 För felhantering, du vill be om ursäkt. 241 00:17:14,960 --> 00:17:17,150 Att be om ursäkt, ringa dig bara funktionen 242 00:17:17,150 --> 00:17:21,910  och sedan ange en typ av meddelande som du vill utdata. 243 00:17:21,910 --> 00:17:24,630 Du vill då lägga till användaren till databasen. 244 00:17:24,630 --> 00:17:30,880 Hittills är allt vi har gjort handlar bara lokalt med resultaten från formuläret. 245 00:17:30,880 --> 00:17:33,940 Nu vill vi verkligen att lägga till dem till vår databas. 246 00:17:33,940 --> 00:17:38,890 För detta vill vi först se till att användarnamnet inte är tomt. 247 00:17:38,890 --> 00:17:44,550 Förstå att på en webbplats, kan du inte ha flera användare med samma användarnamn, 248 00:17:44,550 --> 00:17:50,010 så du vill vara säker på att när du sätter något i din databas - 249 00:17:50,010 --> 00:17:56,650 infoga en ny användare - då du inte får en kollision mellan ett befintligt användarnamn 250 00:17:56,650 --> 00:17:59,150 och användarnamnet som en användare försöker skicka. 251 00:17:59,150 --> 00:18:02,250 För detta, när du kör en fråga - 252 00:18:02,250 --> 00:18:08,760 sätta in en viss användare med deras lösenord och en initial summa pengar - 253 00:18:08,760 --> 00:18:15,140 när du kallar den frågan, då mySQL faktiskt returnera false om det misslyckas. 254 00:18:15,140 --> 00:18:21,050 >> Strukturen av användare är sådan att användarnamnet är ett unikt värde, 255 00:18:21,050 --> 00:18:22,540 så du kan inte ha mer än en. 256 00:18:22,540 --> 00:18:30,080 När du försöker och infoga en ny rad med ett användarnamn som redan finns, 257 00:18:30,080 --> 00:18:34,470 det kommer att returnera false - som ett booleskt värde falskt. 258 00:18:34,470 --> 00:18:45,320 En knepig sak här är att du vill kontrollera om resultatet är resultatet av din sökning. 259 00:18:45,320 --> 00:18:52,320 Om det misslyckas, då du kommer att vilja kontrollera med trippel-lika operatör. 260 00:18:52,320 --> 00:18:55,420 Som faktiskt kommer att kontrollera om det finns ett fel eller inte, 261 00:18:55,420 --> 00:19:02,760 Med bara en enkel lika-lika, skulle det vara sant om raden var tom. 262 00:19:02,760 --> 00:19:06,000 Resultatet av ett misslyckande om det finns en kollision mellan användarnamn 263 00:19:06,000 --> 00:19:10,350 är det faktiska falskt värde. 264 00:19:10,350 --> 00:19:15,230 >> Här är hur du skulle infoga i en databas. 265 00:19:15,230 --> 00:19:19,220 Här är frågan som du skulle köra strikt SQL. 266 00:19:19,220 --> 00:19:25,750 En sak är att du faktiskt kan gå till den webbplats som hanterar din SQL databas 267 00:19:25,750 --> 00:19:31,070 och leka där genom att ange manuellt antingen värden eller rader. 268 00:19:31,070 --> 00:19:34,540 Det kommer att mata vad SQL utgången är. 269 00:19:34,540 --> 00:19:38,870 Du kan också köra SQL-kommandon i din databas 270 00:19:38,870 --> 00:19:42,200  och sedan se vad syntaxen kan vara, 271 00:19:42,200 --> 00:19:46,790 och sedan översätta det till frågan funktion som vi har i pset 7, 272 00:19:46,790 --> 00:19:51,120 som kommer att vara mycket lika de frågor som du faktiskt kör. 273 00:19:51,120 --> 00:19:54,570 >> Om jag ville infoga en ny rad i min användare bord, 274 00:19:54,570 --> 00:20:01,240 då skulle jag ange insatsen i användare, vilket är namnet på mitt bord. 275 00:20:01,240 --> 00:20:06,870 Då skulle jag ange kolumnnamn. 276 00:20:06,870 --> 00:20:13,230 Då skulle jag ge värden tillsammans med mitt lösenord. 277 00:20:13,230 --> 00:20:17,080 Lösenord i våra användare tabellen lagras inte som bara strängen. 278 00:20:17,080 --> 00:20:19,440 De lagras som den krypterade versionen, 279 00:20:19,440 --> 00:20:24,560 så du vill köra funktionen kryptan på själva lösenordet 280 00:20:24,560 --> 00:20:29,680 och som ger dig rätt typ av lagring för användare arrayen. 281 00:20:29,680 --> 00:20:34,960 Kör det här kommer att sätta in en ny rad i din användare tabellen. 282 00:20:34,960 --> 00:20:39,020 >> För att hantera frågan funktion, 283 00:20:39,020 --> 00:20:43,100 innan i C vi använt procenttecken som platshållare. 284 00:20:43,100 --> 00:20:47,670 Likaså gäller samma begreppet platshållare här. 285 00:20:47,670 --> 00:20:50,720 Med frågan anger du hela frågan, 286 00:20:50,720 --> 00:20:55,510 utom när du arbetar med variabler som din input i frågan, 287 00:20:55,510 --> 00:21:00,490 då istället för att faktiskt sätta dem inne - som när vi hade printf uttalanden i C. 288 00:21:00,490 --> 00:21:03,740 Vi skulle sätta strängen och sedan ha en platshållare där, och sedan efter varje 289 00:21:03,740 --> 00:21:06,990 kommatecken, ange vilken variabel som vi hade. 290 00:21:06,990 --> 00:21:14,480 Här kommer vi att använda kännetecknet frågetecken som vår platshållare 291 00:21:14,480 --> 00:21:21,670 och sedan passera i varje variabel, respektive i ordning, för platshållare - 292 00:21:21,670 --> 00:21:24,420 där dessa variabler ska gå. 293 00:21:24,420 --> 00:21:29,470 Så här skulle den första frågetecknet ersättas med den faktiska användarnamn 294 00:21:29,470 --> 00:21:33,610 sedan den andra frågetecknet av lösenordet. 295 00:21:33,610 --> 00:21:37,000 >> Sedan slutligen, när du har registrerat dem och lagt dem i databasen, 296 00:21:37,000 --> 00:21:40,510 då du vill logga in dem i webbplatsen. 297 00:21:40,510 --> 00:21:45,320 Vi har typ av en super-global variabel som kallas session. 298 00:21:45,320 --> 00:21:48,160 Session tar en viss id, 299 00:21:48,160 --> 00:21:51,750 och att id motsvarar den användare som för närvarande är inloggad 300 00:21:51,750 --> 00:21:56,380 Vad du vill göra är att hitta vad deras användarnamn är 301 00:21:56,380 --> 00:22:03,710 och ställ sedan in den Session ID som just användarens ID. 302 00:22:03,710 --> 00:22:07,560 En funktion som du vill använda här är en SQL-kommando 303 00:22:07,560 --> 00:22:15,150 som kommer att hämta den senast insatt id-nummer från tabellen. 304 00:22:15,150 --> 00:22:24,560 Då rader kommer att ringa - it'll ringa ID - it'll tilldela ett namn till numret som returneras. 305 00:22:24,560 --> 00:22:27,900 Det ringer detta ID. 306 00:22:27,900 --> 00:22:33,370 Nu har vi registrera klar och vi kan gå vidare för att citera. 307 00:22:33,370 --> 00:22:36,610 >> Citat tillåter en användare att mata in namnet på en viss aktie, 308 00:22:36,610 --> 00:22:41,940 och sedan kommer tillbaka de kvaliteter detta bestånd. 309 00:22:41,940 --> 00:22:48,410 Vad du vill göra här är att ha en styrenhet och en del mallar. 310 00:22:48,410 --> 00:22:53,380 I det här fallet kommer vi att ha en regulator som kommer att göra allt det tänkande för oss. 311 00:22:53,380 --> 00:23:01,210 Det kommer att slå upp symbolen och sedan passera i värden till de mallar som kommer att skriva ut. 312 00:23:01,210 --> 00:23:03,060 Vi kommer att ha 2 mallar här. 313 00:23:03,060 --> 00:23:07,260 Vi kommer att ha 1 mall som ger den form som användarna kommer att 314 00:23:07,260 --> 00:23:09,920 mata in namnet på lager - namnet på aktien. 315 00:23:09,920 --> 00:23:16,030 Då vi även kommer att vilja en annan mall som visar dessa värden. 316 00:23:16,030 --> 00:23:27,450 Du kan titta på inloggning för ett exempel på hur du skulle ha en form som accepterar indata, 317 00:23:27,450 --> 00:23:30,060 utom i här, vill vi bara 1 fält. 318 00:23:30,060 --> 00:23:31,630 Vi vill inte ha ett användarnamn och ett lösenord. 319 00:23:31,630 --> 00:23:37,110 Vi vill bara 1 textfält som tillåter användaren att mata in namnet på en viss aktie. 320 00:23:37,110 --> 00:23:40,110 Då du vill skicka dessa data - när du har tittat upp det beståndet - 321 00:23:40,110 --> 00:23:45,550 till quote_form.php. 322 00:23:45,550 --> 00:23:50,780 Lookup kommer tillbaka en symbol för en aktie, namn, och ett pris. 323 00:23:50,780 --> 00:23:53,910 De finns i en associativ array. 324 00:23:53,910 --> 00:24:01,390 Slå upp funktionen LETAUPP inuti functions.php för mer information 325 00:24:01,390 --> 00:24:04,010 på avkastningen typerna av dessa. 326 00:24:04,010 --> 00:24:08,520 >> Bra! Så slutligen, vill du visa aktieinformation. 327 00:24:08,520 --> 00:24:14,110 Du vill förmodligen visa - du vill komma åt dessa variabler. 328 00:24:14,110 --> 00:24:17,610 När du har priset i en variabel - 329 00:24:17,610 --> 00:24:20,860 samt namn och symbolen - 330 00:24:20,860 --> 00:24:25,550 då du vill visa dem i din mall sida. 331 00:24:25,550 --> 00:24:31,540 Det mallsida kan kallas show_quote.php eller något. 332 00:24:31,540 --> 00:24:39,660 Din quote.php sida skulle göra visa citat och sedan passera i alla dessa värden. 333 00:24:39,660 --> 00:24:47,170 Sedan i din PHP-sida, skriver du faktiskt ut dessa värden till HTML aspekten av sidan. 334 00:24:47,170 --> 00:24:53,800 Du använder bara utskrift och passerar i priset. 335 00:24:53,800 --> 00:24:57,990 Det finns 2 sätt - du kan antingen sammanfoga den med punktoperatorn, 336 00:24:57,990 --> 00:25:02,230 eller använda en platshållare. 337 00:25:07,580 --> 00:25:12,750 >> Användarna så småningom kommer att köpa och sälja aktier. 338 00:25:12,750 --> 00:25:18,450 Vi vill ge dem något sätt att se alla de lager som de för närvarande har. 339 00:25:18,450 --> 00:25:21,350 Vi kommer att kalla det sin portfölj. 340 00:25:21,350 --> 00:25:26,180 Portfölj skulle förmodligen för varje användare, innehåller en massa rader 341 00:25:26,180 --> 00:25:31,760 lista vilken typ av aktie som de har och sedan hur många av dem de har. 342 00:25:31,760 --> 00:25:36,500 Vår befintlig tabell - just nu har vi en användare bord i vår databas. 343 00:25:36,500 --> 00:25:41,780 Som innehåller en användares användarnamn samt deras lösenord och hur mycket pengar de har. 344 00:25:41,780 --> 00:25:50,390 Det finns ingen verklig sätt att lagra alla sina lager inom det. 345 00:25:50,390 --> 00:25:58,010 Det är inte som om vi kan infoga nya kolumner för varje lager. 346 00:25:58,010 --> 00:26:03,650 Det skulle vara en mycket, mycket lång rad eftersom vi har en oändlig mängd 347 00:26:03,650 --> 00:26:06,200 typer av lager som de kan ha. 348 00:26:06,200 --> 00:26:09,150 Så, är i stället vad vi ska göra inom samma databas, 349 00:26:09,150 --> 00:26:15,000 Vi kommer att ha en användare bord, men vi kommer också att ha en portfölj bord. 350 00:26:15,000 --> 00:26:18,430 Portföljen tabellen kommer att definitivt kopplat till användarna bordet, 351 00:26:18,430 --> 00:26:24,600 utan portfölj tabellstrukturen kommer att ha information om aktier, 352 00:26:24,600 --> 00:26:27,780 hur många aktier i det beståndet användaren har, 353 00:26:27,780 --> 00:26:31,620 liksom en användares särskild id-nummer. 354 00:26:31,620 --> 00:26:34,620 Du har användare tabellen som har ett id samt användarnamn, hash - 355 00:26:34,620 --> 00:26:40,130 vilket är lösenordet, det krypterade lösenordet - 356 00:26:40,130 --> 00:26:42,130 och sedan hur mycket pengar de har. 357 00:26:42,130 --> 00:26:47,900 ID-numret kommer att kopplas till ID-numret från portföljen. 358 00:26:47,900 --> 00:26:52,490 Portföljen skulle bara ha en symbol för beståndet samt aktier - 359 00:26:52,490 --> 00:26:55,410 det antal aktier i det lager som användaren har. 360 00:26:55,410 --> 00:26:58,520 I den portfölj tabellen du skulle ha i princip 361 00:26:58,520 --> 00:27:03,760 samtliga aktier innehas av alla användare på din webbplats. 362 00:27:03,760 --> 00:27:10,550 Senare, att ange endast en viss användares aktier - endast deras portfölj - 363 00:27:10,550 --> 00:27:15,360 skulle du hämta värden från din portfölj bord så att 364 00:27:15,360 --> 00:27:19,930 ID-numret är specifikt för användaren. 365 00:27:26,520 --> 00:27:34,890 >> När du visar portföljen, kommer du vill rapportera varje lager i en användares portfölj. 366 00:27:34,890 --> 00:27:41,670 Du vill rapportera antalet aktier och det aktuella värdet av dessa aktier. 367 00:27:41,670 --> 00:27:45,950 Det aktuella värdet på dessa aktier lagras inte i portföljen tabellen 368 00:27:45,950 --> 00:27:51,640 eftersom det kommer att bli uppdatering - vid minsta - varje dag av Yahoo. 369 00:27:51,640 --> 00:27:58,550 För att få denna information, kan du referera inte att från din SQL-fråga. 370 00:27:58,550 --> 00:28:02,400 Vilken funktion har det för oss? Vilken funktion får priset? 371 00:28:02,400 --> 00:28:09,110 Det är lookup, så kommer med uppslag på en viss symbol ger dig en hel del information. 372 00:28:09,110 --> 00:28:13,710 Det kommer att ge dig 3 bitar av information - namn, symbol, liksom priset. 373 00:28:13,710 --> 00:28:17,490 När du slå en viss symbol, då kan du få priset, 374 00:28:17,490 --> 00:28:20,460 och sedan kan du använda det pris som skall visas i din portfölj. 375 00:28:20,460 --> 00:28:26,190 >> Portföljen ska också visa användarens aktuella kassa. 376 00:28:26,190 --> 00:28:30,310 Detta område lagras i din användare tabellen. 377 00:28:30,310 --> 00:28:33,400 Så då ihåg hur vi i grund och botten ska ha till - 378 00:28:33,400 --> 00:28:36,850 vi ska ha olika typer av PHP-filer. 379 00:28:36,850 --> 00:28:40,160 Vi kommer att ha en regulator som i princip gör allt tänkande åt dig. 380 00:28:40,160 --> 00:28:45,940 Och så har vi en mall där mallen handlar utmatning data. 381 00:28:45,940 --> 00:28:50,790 Du måste tänka på vad variabler kontrollenheten kommer att behöva ta i. 382 00:28:50,790 --> 00:29:01,630 Om vi ​​har att göra med en portfölj som matar ut alla namn, symbol och dela nummer, 383 00:29:01,630 --> 00:29:03,730 samt nuvarande priset på en aktie, 384 00:29:03,730 --> 00:29:06,950 då du kommer att vilja hitta ett sätt att i grund och botten går i - 385 00:29:06,950 --> 00:29:12,070 du kan skicka i en matris med värden som matchar det. 386 00:29:15,250 --> 00:29:24,360 >> Låt oss gå in ett exempel på hur du kan hämta alla lager 387 00:29:24,360 --> 00:29:26,210 som ägs av en viss användare. 388 00:29:26,210 --> 00:29:31,400 Detta är inte att göra - ännu - med priset på aktien. 389 00:29:31,400 --> 00:29:33,520 Vad skulle göra är att köra en fråga. 390 00:29:33,520 --> 00:29:37,070 Det skulle få symbolen samt aktier från - 391 00:29:37,070 --> 00:29:42,770 Jag ringer denna tabell, men i detta fall vad skulle det vara? 392 00:29:42,770 --> 00:29:49,400 Vad är namnet på den tabell som vi har att göra med som har symbolen och aktier 393 00:29:49,400 --> 00:29:52,280 för en viss användare? 394 00:29:52,280 --> 00:29:56,410 Det är antingen användare eller portfölj. 395 00:29:56,410 --> 00:29:57,820 Portfölj. 396 00:29:57,820 --> 00:30:03,220 Vad skulle göra är fråga portfölj för symbolerna och aktier 397 00:30:03,220 --> 00:30:04,920 för en viss användare. 398 00:30:04,920 --> 00:30:09,260 Här, säger jag, (Välj symbol, aktier från TBL - 399 00:30:09,260 --> 00:30:12,280 men istället för bord, du kommer att ersätta det med portfölj. 400 00:30:12,280 --> 00:30:15,220 "Var är i grunden mitt tillstånd. 401 00:30:15,220 --> 00:30:21,050 Jag säger att jag bara vill få de associativa arrayer som motsvarar 402 00:30:21,050 --> 00:30:23,850  denna följande villkor - id jämlikar. 403 00:30:23,850 --> 00:30:27,600  Då får jag slå en platshållare där och då Session ID. 404 00:30:27,600 --> 00:30:36,720 Vad skulle göra är att säga för varje rad i rader. 405 00:30:36,720 --> 00:30:40,940 Detta är ett snyggt sätt istället för att faktiskt behöva upprätta en for-slinga 406 00:30:40,940 --> 00:30:47,450 som itererar över alla index, då i PHP kan du ha en för-varje slinga. 407 00:30:47,450 --> 00:30:53,520 >> Om du har en viss uppsättning, kan du säga att jag ska ringa varje efterföljande element - 408 00:30:53,520 --> 00:30:57,930 Jag ska ringa varje element detta namn. 409 00:30:57,930 --> 00:31:02,780 Så för var och en av dessa element, kommer jag att kalla dem det, 410 00:31:02,780 --> 00:31:04,500 då kan jag göra det här. 411 00:31:04,500 --> 00:31:10,370 I denna för varje, har du rader som din faktiska matris och varje rad du ska ringa rad. 412 00:31:10,370 --> 00:31:12,420 Varje gång den utför kroppen, 413 00:31:12,420 --> 00:31:16,960 det kommer att gå upp och det kommer att uppdatera raden till nästa element i rader. 414 00:31:18,900 --> 00:31:25,260 >> Nu, när det gäller att köpa aktier, 415 00:31:25,260 --> 00:31:29,500 vad vi vill göra är att få beståndet att användaren vill köpa 416 00:31:29,500 --> 00:31:35,300 och det antal aktier som användaren vill köpa, och sedan - om de vill - 417 00:31:35,300 --> 00:31:38,120 tillägga att lager till sin portfölj. 418 00:31:38,120 --> 00:31:40,310 Självklart, om de ska köpa något, då det kommer att minska 419 00:31:40,310 --> 00:31:43,520 hur mycket pengar de har, så det kommer att minska sina pengar. 420 00:31:43,520 --> 00:31:48,380 Vi kommer att ha att göra med att uppdatera portföljen samt användarnas tabellen, 421 00:31:48,380 --> 00:31:50,300 som innehåller kontanter. 422 00:31:50,300 --> 00:31:54,920 Men först måste du få den verkliga lager och antal aktier som användaren vill. 423 00:31:54,920 --> 00:32:00,010 För det behöver du ett HTML-formulär som kommer att be om symbolen för beståndet 424 00:32:00,010 --> 00:32:03,360 som du vill köpa samt antal aktier. 425 00:32:03,360 --> 00:32:08,300 Då kommer du vill lägga till. 426 00:32:08,300 --> 00:32:13,750 Du vill välja vissa värden. 427 00:32:13,750 --> 00:32:19,670 Vi har gått igenom detta lite redan, men när du försöker få vissa rader - 428 00:32:19,670 --> 00:32:22,020 hämta vissa rader från SQL-tabell, 429 00:32:22,020 --> 00:32:24,290 Detta är följande syntax. 430 00:32:24,290 --> 00:32:28,400 Du har att välja, och sedan om du anger en stjärna, 431 00:32:28,400 --> 00:32:31,830 som i princip kommer tillbaka det hela, hela raden för dig. 432 00:32:31,830 --> 00:32:36,890 Då igen, har du tillstånd då, och sedan anger du - 433 00:32:36,890 --> 00:32:39,990 Jag vill bara användarnamnet att vara lika med post-i, 434 00:32:39,990 --> 00:32:46,660 så det kommer bara hämta raden användare som motsvarar post-i. 435 00:32:46,660 --> 00:32:52,860 >> När en användare vill lägga till en aktie till en portfölj, 436 00:32:52,860 --> 00:32:54,400 måste du kontrollera några fel. 437 00:32:54,400 --> 00:32:57,680 Du vill vara säker på att användaren faktiskt har råd beståndet, 438 00:32:57,680 --> 00:33:00,810 så du vill kontrollera sina pengar. 439 00:33:00,810 --> 00:33:05,810 Förr använde vi stjärnan för att hämta en hel rad från en SQL-tabell. 440 00:33:05,810 --> 00:33:08,930 Men här kan vi faktiskt bara ange att jag vill bara 1 värde - 441 00:33:08,930 --> 00:33:10,080 Jag vill bara kontanter. 442 00:33:10,080 --> 00:33:17,970 Så här skulle det tillbaka pengar för användaren med id-nummer 1. 443 00:33:17,970 --> 00:33:25,940 Om en användare har redan köpt ett visst bestånd, men sedan köper mer av detta bestånd, 444 00:33:25,940 --> 00:33:30,440 sedan i din portfölj - vill du inte en separat rad, 445 00:33:30,440 --> 00:33:34,770 annan rad som innehåller den nya transaktionen. 446 00:33:34,770 --> 00:33:37,950 Du vill verkligen att uppdatera beloppet. 447 00:33:37,950 --> 00:33:42,530 Allt som förändras verkligen är det antal aktier som den användaren äger. 448 00:33:42,530 --> 00:33:47,730 Om du använder insatsen i frågan - så det är in precis i din portfölj alla dessa värden - 449 00:33:47,730 --> 00:33:51,710 användarens id-nummer samt symbol för beståndet att de köper 450 00:33:51,710 --> 00:33:57,750 och aktierna, så kommer du också vill ange, ja, om jag stöter på en dubblett nyckel - 451 00:33:57,750 --> 00:34:00,750 I detta fall är den dubblerade nyckeln inte bara användarens id utan också aktiesymbol - 452 00:34:00,750 --> 00:34:08,340 eftersom du kan bara ha - vår utgångspunkt är att du bara kan ha 1 rad 453 00:34:08,340 --> 00:34:10,699  som motsvarar 1 särskild symbol. 454 00:34:10,699 --> 00:34:13,659 Så, på den dubblerade nyckel - Om du stöter på en kollision där - 455 00:34:13,659 --> 00:34:18,520 du bara kommer att uppdatera aktier till sitt nya värde. 456 00:34:18,520 --> 00:34:23,290 Aktier motsvarar vad vi hade innan plus antal aktier som användaren köper. 457 00:34:27,790 --> 00:34:31,090 >> Nu när vi har uppdaterat portföljen bordet, 458 00:34:31,090 --> 00:34:34,730 vi vill uppdatera användarens kontanter. 459 00:34:34,730 --> 00:34:40,300 Det är i användarnas tabellen, så vi kommer att subtrahera en viss mängd från kontanter. 460 00:34:40,300 --> 00:34:46,270 Förmodligen kommer det att bli pengar motsvarar medel minus - och sedan ett visst belopp. 461 00:34:46,270 --> 00:34:50,560 För att uppdatera pengar, skulle du - 462 00:34:50,560 --> 00:34:55,699 om jag ville ta bort pengar från post-i, då skulle jag köra den här frågan - 463 00:34:55,699 --> 00:35:00,220 'Update användare och ställ sedan in den kontanta kolumnen till kontanter - 464 00:35:00,220 --> 00:35:07,300 >> Jag skulle ta bort 9.999 dollar om användarnamnet är lika med post-i. 465 00:35:07,300 --> 00:35:12,020 Men i det här fallet vill vi inte att subtrahera 9.999 specifikt. 466 00:35:12,020 --> 00:35:17,610 Vi vill specificera, ja, vi vill subtrahera det nuvarande priset på aktien 467 00:35:17,610 --> 00:35:22,400 multiplicerat med det antal aktier som de köper. 468 00:35:25,260 --> 00:35:29,910 >> Nu har vi tillät dem att se alla de lager som de har, 469 00:35:29,910 --> 00:35:33,080 samt köpa fler aktier. 470 00:35:33,080 --> 00:35:37,430 Vi har också tidigare tillät dem att slå upp det nuvarande priset på en aktie. 471 00:35:37,430 --> 00:35:40,030 Här vill vi låta dem sälja dem. 472 00:35:40,030 --> 00:35:42,160 Först vill vi visa i stort sett - 473 00:35:42,160 --> 00:35:45,270 Vi vill låta dem se alla de lager som de har, 474 00:35:45,270 --> 00:35:53,170 så här vill vi visa alla rader från portföljen. 475 00:35:53,170 --> 00:35:56,650 Om de väljer att sälja en viss aktie, 476 00:35:56,650 --> 00:35:59,140 då ska vi anta att de vill sälja allt. 477 00:35:59,140 --> 00:36:04,350 De är inte bara att sälja 50% av sina aktier, kommer de att sälja 100% av det. 478 00:36:04,350 --> 00:36:08,630 Vi kan bara ta bort hela raden från portföljen. 479 00:36:08,630 --> 00:36:17,520 Vi kan ta bort den givna användarens andelar av viss symbol. 480 00:36:17,520 --> 00:36:21,410 Det finns syntaxen för det. 481 00:36:21,410 --> 00:36:22,710 >> Sen vill vi uppdatera kontanter. 482 00:36:22,710 --> 00:36:30,930 Vi kommer att lägga i pengar motsvarar det antal aktier som de säljer 483 00:36:30,930 --> 00:36:34,640 multiplicerat med det aktuella priset på aktien - 484 00:36:34,640 --> 00:36:38,610 inte det pris som de köpte den, utan snarare det pris som de är - 485 00:36:38,610 --> 00:36:40,500 det aktuella priset när de säljer den. 486 00:36:40,500 --> 00:36:43,660 Att referera till nuvarande priset på en aktie, 487 00:36:43,660 --> 00:36:49,120 du kommer att vilja använda lookup, vilket ger dig priset på en aktie 488 00:36:50,030 --> 00:36:52,650 vid den aktuella tidpunkten. 489 00:36:52,650 --> 00:36:55,930 >> Nu är vi kvar med historia, 490 00:36:55,930 --> 00:37:00,170 som du vill tillåta en användare att hålla reda på alla sina transaktioner - 491 00:37:00,170 --> 00:37:03,040 vill se när de sålde något, när de köpte ett lager. 492 00:37:03,040 --> 00:37:08,870 Vi vill ange den tid då de gjorde det och hur många de köpte 493 00:37:08,870 --> 00:37:11,650 och vilken materiel det var. 494 00:37:11,650 --> 00:37:17,800 Har vi någon ström, befintlig struktur som anger det? 495 00:37:17,800 --> 00:37:25,230 Tja, vi har portfölj som visar antalet aktier som en användare har 496 00:37:25,230 --> 00:37:26,470 för en given andel. 497 00:37:26,470 --> 00:37:34,060 Men vi strukturera portföljen på det sätt att det uppdateras när vi köper flera, 498 00:37:34,060 --> 00:37:40,190 medan historien bör - om du köper Apple, 10 aktier i det, och sedan på sälja 5, 499 00:37:40,190 --> 00:37:44,040 då du skulle vilja se dem separat som separata åtgärder, separata rader. 500 00:37:44,040 --> 00:37:48,520 Med beaktande av att åtgärder för att visualisera det i vår portfölj tabell 501 00:37:48,520 --> 00:37:52,540 skulle bara vara en uppdatering till just raden, 502 00:37:52,540 --> 00:37:55,740  så vi förmodligen kommer att vilja en annan tabell. 503 00:37:55,740 --> 00:38:00,460 I vår databas har vi våra användare bord, har vi vår portfölj bord, 504 00:38:00,460 --> 00:38:04,090 och nu ska vi förmodligen ha en historia bord. 505 00:38:04,090 --> 00:38:08,070 Att historien tabell kan hålla reda på aktuellt datum, 506 00:38:08,070 --> 00:38:12,800 liksom den särskilda aktiesymbol, liksom hur många aktier, 507 00:38:12,800 --> 00:38:15,410 och sedan vilka åtgärder den är - 508 00:38:15,410 --> 00:38:18,800 om du köpte dessa aktier eller om du säljer dem. 509 00:38:20,660 --> 00:38:25,720 >> För att hantera datum, det finns ett par sätt som du kan göra här. 510 00:38:25,720 --> 00:38:28,820 PHP har ett sätt att hålla koll på datum, som du kan slå upp själv. 511 00:38:28,820 --> 00:38:33,990 I SQL kan du också använda antingen nu eller nuvarande tidsstämpel. Det är upp till dig. 512 00:38:33,990 --> 00:38:40,720 Bara se till att varje gång en användare köper eller säljer, kommer du att uppdatera sin kassa 513 00:38:40,720 --> 00:38:46,750 i användarens tabellen, kommer du att uppdatera raderna i portföljer tabellen, 514 00:38:46,750 --> 00:38:50,900 så kommer du också att uppdatera historien, 515 00:38:50,900 --> 00:38:56,260 så det kommer att bli 3 separata SQL-frågor som du kommer att ringa dit. 516 00:38:58,640 --> 00:39:01,530 Vi har ett gäng funktionalitet nu. 517 00:39:01,530 --> 00:39:10,600 >> Bara ett par påminnelser som i indexfilen kommer du vill länka till minst din - 518 00:39:10,600 --> 00:39:15,550 men du vill tillåta en användare att länka till buy.php sidan. 519 00:39:15,550 --> 00:39:23,560 Det kommer att tillåta en användare - buy.php är regulatorn, så att det kommer att antingen 520 00:39:23,560 --> 00:39:29,170 skicka dig till - det kommer att skicka dig till den form som låter dig söka upp saker. 521 00:39:29,170 --> 00:39:34,420 Vi har historia. Vi har logga ut, att få en offert och sedan sälja. 522 00:39:34,420 --> 00:39:37,350 De är vid minsta vad du vill visa. 523 00:39:37,350 --> 00:39:43,640 När det gäller portföljen är portföljen faktiskt visas i indexsidan. 524 00:39:43,640 --> 00:39:52,050 Om vi ​​går till index Här ser vi att den gör portfolio.php 525 00:39:52,050 --> 00:40:00,050 och passerar i associativ array - i grund och botten titeln lika portföljen. 526 00:40:00,050 --> 00:40:02,610 Så det här är styrenheten. 527 00:40:02,610 --> 00:40:08,000 Om vi ​​går till mallen för portfolio.php, 528 00:40:08,000 --> 00:40:18,060 så allt det har är - visar i princip en bild som säger, åh, det här platsen under uppbyggnad. 529 00:40:18,060 --> 00:40:23,810 Senare, när du passerar i - du kan passera i grunden mer specifik information. 530 00:40:23,810 --> 00:40:27,400 Istället för att bara titeln, kommer du förmodligen att passera i fler saker. 531 00:40:27,400 --> 00:40:32,010 När du har dessa värden, så portfolio.php kan hantera dessa värden 532 00:40:32,010 --> 00:40:34,490 och skriva ut dem i någon form av ordning. 533 00:40:34,490 --> 00:40:41,660 >> När du har genomfört alla dessa, måste du också implementera 1 fler funktioner. 534 00:40:41,660 --> 00:40:44,890 Detta kan antingen tillåta en användare att ändra sitt lösenord, 535 00:40:44,890 --> 00:40:50,110 att återställa sitt lösenord om de har glömt det - så för återställning av lösenord, sedan 536 00:40:50,110 --> 00:40:54,560 du förmodligen också vill redigera registrera så att det tillåter dem att ange en e-post, 537 00:40:54,560 --> 00:40:57,910 så om de glömmer sitt lösenord, så de kan få det. 538 00:40:57,910 --> 00:41:02,870 De kan nog i sina användarnamn och sedan ett e-postmeddelande kommer att skickas till dem 539 00:41:02,870 --> 00:41:06,180 med en länk för att kunna återställa sitt lösenord. 540 00:41:06,180 --> 00:41:10,980 Du kan ha något som tillåter användare att få kvitton 541 00:41:10,980 --> 00:41:12,380 varje gång de köper eller säljer något, 542 00:41:12,380 --> 00:41:19,910 och slutligen, att de kan lägga pengar på deras hemsida. 543 00:41:19,910 --> 00:41:24,970 Bara att gå tillbaka till begreppet flygledare och mallar lite. 544 00:41:24,970 --> 00:41:31,170 Du har något som liknar en - så att du har en styrenhet här. 545 00:41:31,170 --> 00:41:35,080 Just nu är vi tittar på login.php exempel. 546 00:41:35,080 --> 00:41:38,220 När vi har en styrenhet, i grund och botten att det kommer att ta 2 fall. 547 00:41:38,220 --> 00:41:42,090 När vi har regulatorer, vi i denna pjäs som vi också typ av hantera 548 00:41:42,090 --> 00:41:43,880 när vi har formulär också. 549 00:41:43,880 --> 00:41:47,500 Regulatorn kommer i huvudsak att ha separata åtgärder - 550 00:41:47,500 --> 00:41:53,880 en om en form redan lämnats in, och sedan två om användaren kommer till den sidan 551 00:41:53,880 --> 00:41:56,870 för första gången och fortfarande behöver ingång som formen. 552 00:41:56,870 --> 00:42:02,820 >> Jag ska hoppa till det målet innan gå upp till det första fallet av att ha formen i. 553 00:42:02,820 --> 00:42:12,640 Här säger vi, om formuläret har lämnats in med metoden efter - 554 00:42:12,640 --> 00:42:13,580 oroa dig inte om det lite. 555 00:42:13,580 --> 00:42:19,780 Oroa dig inte om det för mycket men förstår att grunden denna funktion handlar 556 00:42:19,780 --> 00:42:22,430 om ett formulär har skickats eller inte. 557 00:42:22,430 --> 00:42:25,640 Detta tillstånd gäller om en användare har lämnat på formuläret. 558 00:42:25,640 --> 00:42:45,940 Om inte, så vi kommer att vilja ringa render login_form.php och sedan passera i titeln. 559 00:42:45,940 --> 00:42:48,010 Denna titel är bara grunden kommer att visas i sidhuvudet. 560 00:42:48,010 --> 00:42:54,990 Vad detta innebär är i grunden säger, okej - ja, om en användare går till login.php 561 00:42:54,990 --> 00:43:00,310 och har faktiskt inte inloggad, då jag vill skicka dem till sidan som har denna form 562 00:43:00,310 --> 00:43:03,160 som tillåter dem att mata in användarnamn och lösenord. 563 00:43:03,160 --> 00:43:07,590 Sedan går jag till login_form och då har den verkliga formen. 564 00:43:07,590 --> 00:43:13,750 Sedan, när användaren har gjort gällande att formen kommer de att överlämna den till login.php 565 00:43:13,750 --> 00:43:15,840 med metoden inlägget. 566 00:43:15,840 --> 00:43:21,560 Då jag faktiskt kommer att gå in på denna del av mitt if-else slinga. 567 00:43:21,560 --> 00:43:29,560 Då är det här som vi behandlar de värden som anges i formuläret. 568 00:43:29,560 --> 00:43:32,800 Det är här som vi hanterar dem. 569 00:43:32,800 --> 00:43:40,860 >> Sen när du handskas med dessa värden - om du arbetar med - 570 00:43:40,860 --> 00:43:46,640 säga att vi arbetar med quote.php sidan där någon kan mata in ett bestånd som 571 00:43:46,640 --> 00:43:49,950 de vill slå upp, och sedan se till att displayen - 572 00:43:49,950 --> 00:43:52,850 det är ganska liknande här. 573 00:43:52,850 --> 00:43:56,070 Här har vi ett inloggningsformulär - you'd förmodligen en offert form - 574 00:43:56,070 --> 00:44:00,290 men sedan när användaren faktiskt lämnat denna information, 575 00:44:00,290 --> 00:44:04,810 då du vill regulatorn att passera in en annan mall 576 00:44:04,810 --> 00:44:07,430 som kommer att visa dem att aktuell information. 577 00:44:07,430 --> 00:44:11,250 Så sedan höger här, så kommer du förmodligen - 578 00:44:11,250 --> 00:44:18,830 i slutet av ditt tillstånd här - om metoden är lika efter - 579 00:44:18,830 --> 00:44:22,520 då du förmodligen vill göra en annan sida - showen citat - 580 00:44:22,520 --> 00:44:28,040 som skickar dig till den sidan - show_quote.php-- 581 00:44:28,040 --> 00:44:34,120 och sedan i den filen refererar dessa värden. 582 00:44:34,120 --> 00:44:36,480 Verkar det vettigt? 583 00:44:36,480 --> 00:44:40,390 >> Vi har en styrenhet som i grunden handlar om de 2 fall - 584 00:44:40,390 --> 00:44:42,710 om du har angett ett formulär i eller inte. 585 00:44:42,710 --> 00:44:43,950 Om du inte har angett ett formulär, 586 00:44:43,950 --> 00:44:47,300 så kommer det att omdirigera dig till den form som sedan kommer att sätta dig tillbaka till den sidan. 587 00:44:47,300 --> 00:44:54,020 Sedan, när du har information i regulatorn kommer detta organ ta itu med det 588 00:44:54,020 --> 00:44:59,750 information som behövs - antingen leta upp värden för beståndet, 589 00:44:59,750 --> 00:45:04,150 och sedan när det tittade upp dessa värden och har dem i en vackert formaterad array, 590 00:45:04,150 --> 00:45:08,180 då kan passera den arrayen i mallen sidan 591 00:45:08,180 --> 00:45:10,330  som handlar mata denna information. 592 00:45:10,330 --> 00:45:14,680 >> Återigen, eftersom det är webb, det kommer att bli kul. 593 00:45:14,680 --> 00:45:20,310 Vi är utanför C så att vi inte är begränsad till ASCII och att terminalen utgång, 594 00:45:20,310 --> 00:45:21,800 så ha kul med det här. 595 00:45:21,800 --> 00:45:24,920 Du kan göra det så visuellt som du vill. 596 00:45:24,920 --> 00:45:31,860 Du kan tillåta användare att mata in miljontals dollar i taget, 597 00:45:31,860 --> 00:45:34,730 eller begränsa dem och bli riktigt menar och låta dem bara ange 1 öre åt gången 598 00:45:34,730 --> 00:45:36,330 eller något liknande. 599 00:45:36,330 --> 00:45:38,550 Definitivt se till att ha kul med denna. 600 00:45:38,550 --> 00:45:47,030 >> PHP-kod är lite enklare att det är lite lättare att kartlägga din pseudokod 601 00:45:47,030 --> 00:45:50,070 i det faktiska genomförandet. 602 00:45:50,070 --> 00:45:56,320 Så definitivt ha kul med detta eftersom det är faktiskt vår sista bit i CS50. 603 00:45:56,320 --> 00:46:01,150 Därmed var Walkthrough 7. 604 00:46:01,150 --> 00:46:04,640 När du är klar tittar på genomgång och avslutat din pset, 605 00:46:04,640 --> 00:46:09,590 då dessa var också psets, och nu är vi på den slutliga produkten - 606 00:46:09,590 --> 00:46:12,330 efter att vi kommer igenom frågesport 1. 607 00:46:12,330 --> 00:46:16,200 Sedan förhoppningsvis kan du använda de verktyg som du har lärt från psets - 608 00:46:16,200 --> 00:46:21,980 inte bara syntaxen, men mer abstrakta begreppet hur man tar en viss - 609 00:46:21,980 --> 00:46:24,950 gillar, jag vill göra detta och sedan faktiskt genomföra det. 610 00:46:24,950 --> 00:46:28,740 Att lära sig att kämpa igenom syntax och distribution kod. 611 00:46:28,740 --> 00:46:33,020 Läsa andras kod och sedan tolka att använda befintliga funktioner. 612 00:46:33,020 --> 00:46:37,360 >> Så, lycka till med den sista pset. 613 00:46:37,360 --> 00:46:39,930 Det har varit ett nöje att leda genomgångar. 614 00:46:39,930 --> 00:46:40,940 Jag hoppas att de har varit till hjälp för dig. 615 00:46:40,940 --> 00:46:46,560 Det var genomgångar och tack så mycket. 616 00:46:52,580 --> 00:46:56,200 [CS50.TV]