1 00:00:00,000 --> 00:00:03,000 [Powered by Google Translate] [Walkthrough Probleem Set 7] 2 00:00:03,000 --> 00:00:04,400 [Zamyla Chan] [Harvard University] 3 00:00:04,400 --> 00:00:07,640 [Dit is CS50] [CS50.TV] 4 00:00:07,640 --> 00:00:12,090 >> Hallo allemaal, en welkom bij Walkthrough 7, CS50 Financiën. 5 00:00:12,090 --> 00:00:15,090 Nu zijn we officieel klaar met alle psets in CS50, 6 00:00:15,090 --> 00:00:19,380 en we zijn net vertrokken met een meer dat wordt een leuk implementatie 7 00:00:19,380 --> 00:00:23,770 van een website waar gebruikers kunnen inloggen op CS50 Financiën 8 00:00:23,770 --> 00:00:25,830 en kopen en verkopen voorraden. 9 00:00:25,830 --> 00:00:32,280 >> Vandaag gaan we een paar tools tot onze beschikking hebben. 10 00:00:32,280 --> 00:00:34,320 We gaan om te praten over machtigingen. 11 00:00:34,320 --> 00:00:36,380 Wanneer u een web-map, 12 00:00:36,380 --> 00:00:40,800 je gaat te willen toestaan ​​dat gebruikers bepaalde bestanden uit te voeren 13 00:00:40,800 --> 00:00:42,500 maar ook net gelezen anderen, 14 00:00:42,500 --> 00:00:45,150 dus we zullen kijken naar rechten en hoe u kunt instellen die. 15 00:00:45,150 --> 00:00:49,630 Dan gaan we kijken naar PHP, HTML en SQL-code. 16 00:00:49,630 --> 00:00:51,990 >> Ten eerste, machtigingen. 17 00:00:51,990 --> 00:00:56,060 Als je in de terminal in een bepaalde directory, 18 00:00:56,060 --> 00:01:00,430 dan wat je wilt doen is je het chmod commando uit te voeren. 19 00:01:00,430 --> 00:01:03,750 Dat is gevolgd door ofwel letters of cijfers 20 00:01:03,750 --> 00:01:08,100 overeenkomt met wat je eigenlijk wilt dat de wereld om te zien, 21 00:01:08,100 --> 00:01:09,830 je jezelf te zien, etc. 22 00:01:09,830 --> 00:01:13,350 Bijvoorbeeld, wanneer u een map hebt, 23 00:01:13,350 --> 00:01:15,560 dan wil je die map om uitvoerbare door iedereen die het ziet is, 24 00:01:15,560 --> 00:01:19,500 dus wat je zou doen is je kon het commando chmod a + x 25 00:01:19,500 --> 00:01:21,050 en dan de naam van uw map. 26 00:01:21,050 --> 00:01:28,110 Wanneer u een bestand, zoals CSS-bestanden of afbeeldingsbestanden - 27 00:01:28,110 --> 00:01:33,060 zoals JPEG's en bitmaps, dat soort dingen, of een JavaScript-code - 28 00:01:33,060 --> 00:01:36,440 u wilt dat om leesbaar door iedereen, 29 00:01:36,440 --> 00:01:39,880 dus dan wat je doet is dat je zou kunnen gebruik maken van de wildcard - 30 00:01:39,880 --> 00:01:41,650 die een asterisk - 31 00:01:41,650 --> 00:01:46,190 in principe aangeven in de CSS map - alles in die map - 32 00:01:46,190 --> 00:01:48,740  Ik ga om te zeggen dat dat gaat leesbaar door iedereen. 33 00:01:48,740 --> 00:01:54,220 Met machtigingen, als we de letters te gebruiken, 34 00:01:54,220 --> 00:01:57,610 kunnen we ook gebruiken in plaats nummers. 35 00:01:57,610 --> 00:02:00,900 Dus, zie je dat uiteindelijk als je iets uitvoerbaar te zijn willen - 36 00:02:00,900 --> 00:02:02,810 dat is vertegenwoordigd door het aantal 1 - 37 00:02:02,810 --> 00:02:08,340 iets om leesbaar is het nummer 4 en dan - 38 00:02:08,340 --> 00:02:10,590 beschrijfbaar is nummer 2 - 39 00:02:10,590 --> 00:02:13,670 en dus in wezen als je een combinatie van deze wil, dan moet je ze toevoegen. 40 00:02:13,670 --> 00:02:15,860 Als je wilt dat iets leesbaar, schrijfbaar en uitvoerbaar zijn, 41 00:02:15,860 --> 00:02:21,970 dan zou je optelt 4, 2, en 1 en dat zou je 7, 42 00:02:21,970 --> 00:02:26,230 dan wanneer u een map hebt u wilt dat dit uitvoerbaar door iedereen worden - 43 00:02:26,230 --> 00:02:31,380 evenals lees-en schrijfbaar - dan maak je dat 7, 1, 1. 44 00:02:31,380 --> 00:02:38,140 Dat zou 7 voor u, dan 1 voor de andere mensen. 45 00:02:38,140 --> 00:02:42,870 Wanneer u de spec hebben, zal het eigenlijk aangeven welke mappen en welke bestanden 46 00:02:42,870 --> 00:02:45,040 specifiek hoeft te worden chmod-ed. 47 00:02:45,040 --> 00:02:47,920 Bijvoorbeeld, wanneer u mappen hebben - dat zijn 7-1-1 - 48 00:02:47,920 --> 00:02:52,690 wanneer u afbeeldingen of HTML, CSS, JavaScript, 49 00:02:52,690 --> 00:02:55,870 dan die zullen worden 6, 0, 4 - of 6, 4, 4 - 50 00:02:55,870 --> 00:03:00,030 en PHP bestanden zullen worden 6, 0, 0. 51 00:03:00,030 --> 00:03:04,940 Het idee daarachter is dat gebruikers niet zou eigenlijk zien uw PHP-code, 52 00:03:04,940 --> 00:03:08,370 maar alleen in staat om de uitvoer te bekijken. 53 00:03:08,370 --> 00:03:11,030 >> Geweldig! Verhuizen naar PHP. 54 00:03:11,030 --> 00:03:18,850 Gewoon, als je een PHP-bestand wilt, het bestand achtervoegsel is. Php. 55 00:03:18,850 --> 00:03:22,000 U kunt ook mengen HTML met PHP-code. 56 00:03:22,000 --> 00:03:24,880 Als u een HTML-bestand, bijvoorbeeld, 57 00:03:24,880 --> 00:03:32,520 dan kunt u meesturen met de linker hoek, vraagteken, php - 58 00:03:32,520 --> 00:03:39,320 zet je php code - en sluit dat met een ander vraagteken en een rechte hoek. 59 00:03:39,320 --> 00:03:45,020 Variabelen in PHP zijn een stuk gemakkelijker te behandelen dan variabelen in C. 60 00:03:45,020 --> 00:03:50,310 Elke variabele begint net met een dollar teken in de voorkant van het, en ze zijn zwak getypt. 61 00:03:50,310 --> 00:03:53,470 Dat betekent dat je niet hoeft te maken over het instellen van iets 62 00:03:53,470 --> 00:03:55,020 gelijk aan een tekenreeks of een geheel getal. 63 00:03:55,020 --> 00:03:57,710 Je kunt gewoon zeggen, dit is mijn naam van de variabele 64 00:03:57,710 --> 00:04:00,390 en dan is dit de waarde, 65 00:04:00,390 --> 00:04:03,280 dus het zal makkelijker om te gaan met hun. 66 00:04:03,280 --> 00:04:08,220 >> Een ander ding is dat PHP kunt u gebruik maken van associatieve arrays. 67 00:04:08,220 --> 00:04:11,330 U kunt gewoon definiëren een array zoals je zou doen in C 68 00:04:11,330 --> 00:04:14,900 door te zeggen, dollarteken-de naam van de array-gelijken, 69 00:04:14,900 --> 00:04:22,600 en tussen haakjes hebben eigenlijk alleen de zoeklijst van alle elementen in de array. 70 00:04:22,600 --> 00:04:27,160 Maar, in PHP wat je kunt dit ook doen is aangeven in feite de - 71 00:04:27,160 --> 00:04:31,050 het is net zoiets als een hash-functie. 72 00:04:31,050 --> 00:04:34,410 U kunt de index - wat je gaat om het te noemen - 73 00:04:34,410 --> 00:04:37,030 en die overeenkomt met een waarde. 74 00:04:37,030 --> 00:04:42,880 Als u daadwerkelijk passeren in a = 1, b = 2, c = 3, 75 00:04:42,880 --> 00:04:50,820 vervolgens de array bij index een zou geven u 1. 76 00:04:50,820 --> 00:04:56,600 Dit PSET zal u opwarmen met een aantal PHP in een sectie van de vragen, 77 00:04:56,600 --> 00:04:59,240 en dan gaan we duiken in CS50 Finance. 78 00:04:59,240 --> 00:05:02,650 >> We hebben een paar - hebben we een aantal functies, in principe, 79 00:05:02,650 --> 00:05:05,130 te implementeren in deze website. 80 00:05:05,130 --> 00:05:10,440 We willen dat gebruikers op onze website te registreren met een gebruikersnaam en een wachtwoord. 81 00:05:10,440 --> 00:05:13,670 We willen hen in staat stellen het opzoeken van een offerte, 82 00:05:13,670 --> 00:05:19,330 en dan zouden we afdrukken van de naam van dat citaat, alsmede de huidige prijs dat het is. 83 00:05:19,330 --> 00:05:26,830 We willen hen in staat stellen om een ​​portfolio van alle aandelen die zij hebben tot nu toe gekocht te zien. 84 00:05:26,830 --> 00:05:34,240 We willen ook hen in staat stellen om aandelen te kopen en te verkopen. 85 00:05:34,240 --> 00:05:37,540 En dan tot slot, willen we hen in staat stellen om de geschiedenis te zien 86 00:05:37,540 --> 00:05:39,490 van alle transacties die zij hebben gemaakt. 87 00:05:39,490 --> 00:05:41,540 En dan, eindelijk, nadat je hebt geïmplementeerd dat alles, 88 00:05:41,540 --> 00:05:45,110 dan ben je vrij om een ​​extra functie te implementeren. 89 00:05:45,110 --> 00:05:46,610 We gaan naar die. 90 00:05:46,610 --> 00:05:51,330 Die kan zowel zodat gebruikers extra geld te krijgen door het storten van extra geld, 91 00:05:51,330 --> 00:05:54,550 of je kan hen in staat stellen om hun wachtwoord, of iets dergelijks te veranderen, 92 00:05:54,550 --> 00:06:00,590 ze e-mailen een ontvangstbewijs bij de aankoop of verkoop van een voorraad. 93 00:06:00,590 --> 00:06:05,370 Er is een beperkte lijst van functies dat u uzelf uit te voeren, 94 00:06:05,370 --> 00:06:08,340 dus dat is de laatste daar. 95 00:06:08,340 --> 00:06:13,430 >> Aangezien dit een website, jullie hebben ook een veel vrijheid om het aan te passen. 96 00:06:13,430 --> 00:06:20,960 Wij geven wel een aantal CSS-code, maar je bent zeker vrij om het te tweaken, 97 00:06:20,960 --> 00:06:26,680 zodat het lijkt mooier, maar de onderliggende het is een basisfunctionaliteit 98 00:06:26,680 --> 00:06:30,310 dus altijd verwijzen naar de spec over wat je eigenlijk nodig hebt om daar te zijn. 99 00:06:30,310 --> 00:06:39,940 Naar aanleiding van de spec, we gaan gebruiken het apparaat als ook een server. 100 00:06:39,940 --> 00:06:43,910 Het gaat om het hosten van onze website voor ons, op de lokale server. 101 00:06:43,910 --> 00:06:49,750 Als u deze instructies en unzip het PSET 7 verdeelsleutel 102 00:06:49,750 --> 00:06:53,500 in uw virtuele host / local host map, 103 00:06:53,500 --> 00:07:02,470  dan kun je gewoon naar http://localhost/ in Google Chrome in het apparaat, 104 00:07:02,470 --> 00:07:09,120 en dan zou je bij de code in die je hebt geschreven PSET 7. 105 00:07:09,120 --> 00:07:14,490 >> Pset 7 wordt geleverd met een stel verdeelsleutel, 106 00:07:14,490 --> 00:07:18,330 en hopelijk we've - door alle van de psets voordat deze - 107 00:07:18,330 --> 00:07:21,700 gewend ons te lezen door middel van distributie-code, 108 00:07:21,700 --> 00:07:25,650 begrijpen welke functies al worden geleverd, en hoe we zouden kunnen gebruiken 109 00:07:25,650 --> 00:07:29,470 deze en de andere functies die we gaan te implementeren. 110 00:07:29,470 --> 00:07:31,570 In dit geval hebben we 3 mappen. 111 00:07:31,570 --> 00:07:36,350 We hebben een HTML-map, een map bevat, en een map voor sjablonen. 112 00:07:36,350 --> 00:07:40,630 Wat we gaan doen met deze PSET is een soort van het scheiden van het denken - 113 00:07:40,630 --> 00:07:45,580 de programmering denken - van de PHP-code met de werkelijke visuele aspect. 114 00:07:45,580 --> 00:07:52,690 We hebben een PHP-bestand dat alle denken doet, leest in de database, 115 00:07:52,690 --> 00:07:55,620 prenten uit dingen, heeft if-statements - dat soort dingen - 116 00:07:55,620 --> 00:08:02,140 en dan dat zal het doorgeven van gegevens in onze template-bestand - of template.php bestand. 117 00:08:02,140 --> 00:08:05,710 Wat dat zal doen is de data te lezen en dan zal het uitprinten. 118 00:08:05,710 --> 00:08:09,550 >> We kunnen behandelen sjablonen als "dom" in dat we niet echt willen dat ze 119 00:08:09,550 --> 00:08:12,370 moeten doen een hoop werk bij de berekening van dingen. 120 00:08:12,370 --> 00:08:16,330 We willen dat onze controllers om dat te doen. 121 00:08:16,330 --> 00:08:21,610 Een beetje op die - laten we eens een kijkje bij enkele van de verdeelsleutel. 122 00:08:21,610 --> 00:08:28,250 Hier hebben we onze index.html bestand, en het is vrij leeg. 123 00:08:28,250 --> 00:08:34,429 In wezen wat het doet - het zegt, nou, ik ga naar het configuration.php bestand nodig. 124 00:08:34,429 --> 00:08:40,120 We zien niet dat daar, maar het is in feite het aanroepen van de configuration.php bestand, 125 00:08:40,120 --> 00:08:42,240 en uitvoeren dat. 126 00:08:42,240 --> 00:08:45,130 Nadat het dat doet, gaat het om het portfolio te maken. 127 00:08:45,130 --> 00:08:49,310 Rendering is een functie, dus wanneer we in een controller, 128 00:08:49,310 --> 00:08:56,490 we render noemen, geven we het het bestand en vervolgens de gegevens die we passeren in, 129 00:08:56,490 --> 00:09:04,570 zodat het bellen in portfolio.php--soort pas in die gegevens, zodat portefeuille kan gaan met dat. 130 00:09:04,570 --> 00:09:10,540 >> En nu, hier, hebben we onze login.php vorm. 131 00:09:10,540 --> 00:09:17,540  Dit is de controller die in principe zorg draagt ​​voor de in te loggen 132 00:09:17,540 --> 00:09:29,090 Hier, kijkt het of een vorm werd voorgelegd aan dit bestand en gaat over het valideren van de inzending. 133 00:09:29,090 --> 00:09:31,990 We zullen kijken naar deze excuses functie. 134 00:09:31,990 --> 00:09:35,100 Als we willen afdrukken van een foutmelding, 135 00:09:35,100 --> 00:09:39,550 gebruiken we verontschuldigen en dat zal de gebruiker omleiden naar een specifieke pagina 136 00:09:39,550 --> 00:09:42,530 dat drukt de specifieke foutbericht dat wij geven. 137 00:09:42,530 --> 00:09:47,860 Voortbordurend op, zal het query de database - we zullen later in nog meer van dat. 138 00:09:47,860 --> 00:09:54,180 Dan zie je dat hier beneden als een vorm is niet verzonden, dan is het een vorm maakt. 139 00:09:54,180 --> 00:10:01,360 Dat betekent dat het gaat om login_form.php, dus laten we eens kijken naar dat. 140 00:10:01,360 --> 00:10:09,400 >> Login.php is eigenlijk waar we de HTML omgaan met de werkelijke visuele aspect. 141 00:10:09,400 --> 00:10:15,130 Hier hebben we een input-tag voor de gebruikersnaam, een ingang voor het wachtwoord, 142 00:10:15,130 --> 00:10:16,630 en een verzendknop. 143 00:10:16,630 --> 00:10:22,660 Dat is eigenlijk waar het visuele aspect en de HTML-formulier zal worden gehouden. 144 00:10:22,660 --> 00:10:27,550 Hier, het zegt dat het gaat om worden ingediend door een bepaalde methode, genaamd post. 145 00:10:27,550 --> 00:10:30,190 We krijgen in de verschillen tussen methoden - 146 00:10:30,190 --> 00:10:33,240 plaatsen te krijgen ten opzichte van, is er ook zoiets als gezegd - 147 00:10:33,240 --> 00:10:36,160 we later zullen krijgen in deze methoden, maar voor het belang van deze PSET, 148 00:10:36,160 --> 00:10:37,810 Ik zou zeer raden u aan na het gebruik. 149 00:10:37,810 --> 00:10:42,210 >> We weten dat in principe een keer dit formulier wordt ingediend - 150 00:10:42,210 --> 00:10:44,650 van login_form.php-- 151 00:10:44,650 --> 00:10:50,850 dan zal het naar de actie - login.php-- 152 00:10:50,850 --> 00:10:56,070 In principe past in al die parameters van die vormen in login.php. 153 00:10:56,070 --> 00:11:04,900 De resultaten van die vorm op deze plaats associatieve array. 154 00:11:04,900 --> 00:11:11,710 De indexen van de verschillende elementen in de post-array 155 00:11:11,710 --> 00:11:15,290 zijn precies wat u hier opgeeft. 156 00:11:15,290 --> 00:11:19,240 U zegt dat de naam van deze input is gebruikersnaam. De naam van deze ene is met een wachtwoord. 157 00:11:19,240 --> 00:11:26,840 Ook zie je de gebruikersnaam als de index van de associatieve array daar. 158 00:11:26,840 --> 00:11:35,110 Als we naar de includes map, hebben we deze functies-bestand dat zal zeer nuttig zijn. 159 00:11:35,110 --> 00:11:37,570 >> Al deze functies zijn geïmplementeerd voor u. 160 00:11:37,570 --> 00:11:41,870 U hoeft niet specifiek te implementeren een van deze zelf, 161 00:11:41,870 --> 00:11:43,140 maar ze gaan heel nuttig. 162 00:11:43,140 --> 00:11:49,450 We hebben excuses, die zoals ik al eerder zei, in principe zal afdrukken van een foutmelding 163 00:11:49,450 --> 00:11:52,920 voor u op een specifieke pagina - apology.php. 164 00:11:52,920 --> 00:11:59,890 Dan hebben we dump, dus als je gewoon bellen dump en gaan vervolgens in de variabele, 165 00:11:59,890 --> 00:12:04,930 dan brengt u naar een pagina die die variabele worden weergegeven voor u. 166 00:12:04,930 --> 00:12:09,950 Dan hebben we logout, die in feite zal het einde van een bepaalde gebruiker de sessie. 167 00:12:09,950 --> 00:12:12,240 Lookup gaat om bruikbaar te zijn. 168 00:12:12,240 --> 00:12:15,870 Omdat we te maken hebben met citaten en voorraden, we gaan om te kunnen - 169 00:12:15,870 --> 00:12:17,650 en het is in wezen real time. 170 00:12:17,650 --> 00:12:21,380 We moeten weten wat die voorraad waarden zijn, 171 00:12:21,380 --> 00:12:28,210 dus we hebben de lookup functie die zich bezighoudt met documentatie Yahoo's van de voorraden. 172 00:12:28,210 --> 00:12:37,700 Zodra u het opzoeken van een bepaald symbool van een aandeel, zal het terug naar u de voorraad symbool 173 00:12:37,700 --> 00:12:41,480 alsmede de naam en de huidige prijs van dat bestand. 174 00:12:41,480 --> 00:12:44,330 Dat is de lookup functie. 175 00:12:44,330 --> 00:12:48,350 >> Dan hebben we hier te maken met MySQL, 176 00:12:48,350 --> 00:12:53,970 dus we gaan worden willen bepaalde queries uit te voeren op onze SQL-database. 177 00:12:53,970 --> 00:12:58,890 We moeten vragen om te gaan - van de soort abstracte sommige van die uit. 178 00:12:58,890 --> 00:13:03,200 We gaan passeren in de hele reeks van onze SQL-query - 179 00:13:03,200 --> 00:13:05,360 en alle variabelen die verder gaan in het - 180 00:13:05,360 --> 00:13:09,480 en wat dit doet is eigenlijk dat uit te voeren voor ons. 181 00:13:09,480 --> 00:13:15,070 In plaats van dit alles schrijven elke keer dat u wilt opvragen - 182 00:13:15,070 --> 00:13:21,740 door het verkrijgen van alle van de resultaten van die query - 183 00:13:21,740 --> 00:13:24,740 dan kun je gewoon bellen met de query functie, en het zal tot u terugkeren - 184 00:13:24,740 --> 00:13:28,750 afhankelijk van wat je gebruikt voor uw zoekopdracht - 185 00:13:28,750 --> 00:13:33,000 waarschijnlijk een rij van alle resultaten die de query of soortgelijke passen. 186 00:13:33,000 --> 00:13:34,690 Meer daarover later wel. 187 00:13:34,690 --> 00:13:41,200 >> Tot slot hebben we redirect die, zoals de naam al doet vermoeden, kunt u doorlinken naar een andere pagina. 188 00:13:41,200 --> 00:13:46,280 En dan hebben we render, die we gaan moeten bellen een paar keer. 189 00:13:46,280 --> 00:13:51,010 Als je in een controller, belt u maken in de template pagina 190 00:13:51,010 --> 00:13:55,390 en dan pas in de waarden die de sjabloon zal dan behandelen. 191 00:13:55,390 --> 00:13:59,540 Die waarden zijn waarschijnlijk zal te maken hebben met de aard van de uitgang die u wilt 192 00:13:59,540 --> 00:14:01,050 worden weergegeven op uw sjabloon pagina. 193 00:14:01,050 --> 00:14:09,370 Oke. Dat zijn de functies en er is veel meer aan deze verdeling code. 194 00:14:09,370 --> 00:14:12,930 Ik moedig u om te gaan door dit en het verkennen van jezelf. 195 00:14:12,930 --> 00:14:17,050 Ook zal de spec waarschijnlijk loop je door een aantal andere elementen van de verdeelsleutel. 196 00:14:17,050 --> 00:14:27,360 Hier is een overzicht van de functies in functions.php. 197 00:14:27,360 --> 00:14:31,710 >> Oke. De eerste taak is om gebruikers in staat te registreren op de website. 198 00:14:31,710 --> 00:14:34,860 Op dit moment is er een login formulier op de website, 199 00:14:34,860 --> 00:14:40,080 en bent u voorzien van een aantal gebruikers met wachtwoorden. 200 00:14:40,080 --> 00:14:42,130 U kunt gebruik maken van de gebruikersnamen en log in, 201 00:14:42,130 --> 00:14:45,140 maar u wilt toestaan ​​dat mensen hun eigen gebruikersnamen te maken 202 00:14:45,140 --> 00:14:47,390 en voeg zelf op de website. 203 00:14:47,390 --> 00:14:53,070 De lay-out voor inschrijving is redelijk vergelijkbaar met het login-formulier, 204 00:14:53,070 --> 00:14:56,340 behalve de gebruikersnaam is niet reeds bestaande, 205 00:14:56,340 --> 00:14:59,430 en de gebruiker moet ook een nieuw wachtwoord 206 00:14:59,430 --> 00:15:02,440 en dan meestal hebben we een wachtwoord bevestiging. 207 00:15:02,440 --> 00:15:06,580 Zodra de gebruiker voert al die informatie, 208 00:15:06,580 --> 00:15:10,620 willen we ze toe te voegen aan onze database van gebruikers. 209 00:15:10,620 --> 00:15:12,970 We gaan een database hebben - een SQL-database - 210 00:15:12,970 --> 00:15:14,470 dat we gaan verwijzen. 211 00:15:14,470 --> 00:15:18,140 In die database, zullen we een tabel hebben met alle gebruikers 212 00:15:18,140 --> 00:15:23,850 met hun gebruikersnaam, het wachtwoord, en ook hoeveel geld ze hebben. 213 00:15:23,850 --> 00:15:28,480 >> In register, willen we hen in staat stellen om die informatie in te voeren. 214 00:15:28,480 --> 00:15:29,740 We willen die vorm weer te geven. 215 00:15:29,740 --> 00:15:32,210 We willen ervoor zorgen dat hun wachtwoord - 216 00:15:32,210 --> 00:15:37,490 dat gingen ze een, en dan ook dat de wachtwoorden overeenkomen wanneer ze het twee keer. 217 00:15:37,490 --> 00:15:42,240 Na al dat wordt gedaan - in de veronderstelling dat deze fouten worden gecontroleerd - 218 00:15:42,240 --> 00:15:45,120 dan willen we die gebruikers toe te voegen aan onze database. 219 00:15:45,120 --> 00:15:49,630 Tot slot, als je eenmaal hebt geregistreerd, het is vrij handig als je niet opnieuw aan te melden in 220 00:15:49,630 --> 00:15:51,000 als je eenmaal hebt geregistreerd, 221 00:15:51,000 --> 00:15:54,000 dus we gaan om deze te loggen op de website of ze geregistreerd zijn in het succesvol. 222 00:15:54,000 --> 00:16:00,360 >> De eerste taak is om te laten zien in de vorm, en dit is eigenlijk gaat worden - 223 00:16:00,360 --> 00:16:04,920 dit hele registratieproces gaat vrij nauwkeurig worden gemodelleerd na het inloggen 224 00:16:04,920 --> 00:16:10,510 behalve in plaats van login.php u zou kunnen hebben register.php. 225 00:16:10,510 --> 00:16:14,300 In plaats van login_form.php--dat het template - 226 00:16:14,300 --> 00:16:16,030 je hebt Inschrijfformulier. 227 00:16:16,030 --> 00:16:19,680 U wilt nog een veld toe te voegen - een wachtwoord bevestiging veld - 228 00:16:19,680 --> 00:16:23,450 in plaats van alleen de een gebruikersnaam en de een wachtwoord. 229 00:16:23,450 --> 00:16:28,120 Vervolgens willen we nagaan of de wachtwoorden overeenkomen of zijn leeg. 230 00:16:28,120 --> 00:16:38,560 We hebben de controller - register.php--die zal zorgen voor het doen van deze controles. 231 00:16:38,560 --> 00:16:41,690 Wanneer een formulier wordt ingediend via de post methode, 232 00:16:41,690 --> 00:16:47,050 dan al deze variabelen zijn vervat in de post array. 233 00:16:47,050 --> 00:16:52,280 U wilt er zeker van zijn dat de post-array waarde bij index wachtwoord 234 00:16:52,280 --> 00:16:58,080 overeenkomt met de bevestiging element. 235 00:16:58,080 --> 00:16:59,410 U wilt ervoor zorgen dat ze niet leeg zijn, 236 00:16:59,410 --> 00:17:01,650 en u wilt er zeker van dat ze hetzelfde zijn. 237 00:17:01,650 --> 00:17:05,960 >> Een handig ding over PHP is dat we niet hoeven te gebruiken touw vergelijken meer. 238 00:17:05,960 --> 00:17:08,410 We kunnen gebruik maken van de gelijk-gelijk operator 239 00:17:08,410 --> 00:17:11,470  te controleren of strings gelijk zijn aan elkaar. 240 00:17:11,470 --> 00:17:14,960 Voor de afhandeling van fouten, zult u wilt om zich te verontschuldigen. 241 00:17:14,960 --> 00:17:17,150 Om zich te verontschuldigen, je gewoon bellen met de functie 242 00:17:17,150 --> 00:17:21,910  en geef vervolgens een type bericht dat u wilt uitvoeren. 243 00:17:21,910 --> 00:17:24,630 Vervolgens willen de gebruiker toe te voegen aan de database. 244 00:17:24,630 --> 00:17:30,880 Tot nu toe is alles wat we hebben gedaan gewoon plaatselijk te handelen met de resultaten van het formulier. 245 00:17:30,880 --> 00:17:33,940 Nu, we eigenlijk willen ze toe te voegen aan onze database. 246 00:17:33,940 --> 00:17:38,890 Hiervoor maken we eerst willen ervoor zorgen dat de gebruikersnaam niet leeg is. 247 00:17:38,890 --> 00:17:44,550 Begrijp dat op een website, kunt u niet meerdere gebruikers met dezelfde gebruikersnaam hebben, 248 00:17:44,550 --> 00:17:50,010 dus je zult willen ervoor zorgen dat als je iets invoegen in uw database - 249 00:17:50,010 --> 00:17:56,650 plaatst u een nieuwe gebruiker - dan krijg je niet een botsing tussen een reeds bestaande gebruikersnaam 250 00:17:56,650 --> 00:17:59,150 en de gebruikersnaam die een gebruiker probeert in te dienen. 251 00:17:59,150 --> 00:18:02,250 Voor deze, als je eenmaal een query wordt uitgevoerd - 252 00:18:02,250 --> 00:18:08,760 het plaatsen van een bepaalde gebruiker met hun wachtwoord en een initieel bedrag van contant geld - 253 00:18:08,760 --> 00:18:15,140 als je eenmaal belt die vraag dan, mySQL daadwerkelijk valse terug als het niet lukt. 254 00:18:15,140 --> 00:18:21,050 >> De structuur van de gebruikers is zodanig dat de gebruikersnaam een ​​unieke waarde, 255 00:18:21,050 --> 00:18:22,540 dus je kunt niet meer dan een. 256 00:18:22,540 --> 00:18:30,080 Wanneer u probeert en plaats een nieuwe rij met een gebruikersnaam die al bestaat, 257 00:18:30,080 --> 00:18:34,470 dat gaat return false - als een Booleaanse waarde false. 258 00:18:34,470 --> 00:18:45,320 Een lastige hier is dat je wilt controleren of het resultaat is het resultaat van uw zoekopdracht. 259 00:18:45,320 --> 00:18:52,320 Als het niet lukt, dan zult u wilt controleren met de triple-gelijk operator. 260 00:18:52,320 --> 00:18:55,420 Dat is eigenlijk gaat om te controleren of er een storing is of niet, 261 00:18:55,420 --> 00:19:02,760 dat in slechts een eenvoudige gelijk-gelijk, zou het waar zijn als de rij was leeg. 262 00:19:02,760 --> 00:19:06,000 Het resultaat van een storing als er een botsing tussen gebruikersnamen 263 00:19:06,000 --> 00:19:10,350 is de werkelijke valse waarde. 264 00:19:10,350 --> 00:19:15,230 >> Hier is hoe je zou voegen in een database. 265 00:19:15,230 --> 00:19:19,220 Hier is de query die u strikt zou lopen in SQL. 266 00:19:19,220 --> 00:19:25,750 Een ding is dat je eigenlijk kunt gaan naar de website die uw SQL database beheert 267 00:19:25,750 --> 00:19:31,070 en er rond te spelen door het invoeren van handmatig, hetzij waarden of rijen. 268 00:19:31,070 --> 00:19:34,540 Het zal uitvoeren wat de SQL-uitgang is. 269 00:19:34,540 --> 00:19:38,870 U kunt ook SQL-commando's in uw database 270 00:19:38,870 --> 00:19:42,200  en dan zien wat de syntaxis zou kunnen zijn, 271 00:19:42,200 --> 00:19:46,790 en dan vertalen in de query functie die we hebben in PSET 7, 272 00:19:46,790 --> 00:19:51,120 die zal zeer vergelijkbaar met de query's die u daadwerkelijk uit te voeren. 273 00:19:51,120 --> 00:19:54,570 >> Als ik wilde een nieuwe rij in te voegen in mijn gebruikers tabel, 274 00:19:54,570 --> 00:20:01,240 dan zou ik geef het inzetstuk in gebruikers, wat is de naam van mijn tafel. 275 00:20:01,240 --> 00:20:06,870 Dan zou ik geef de kolomnamen. 276 00:20:06,870 --> 00:20:13,230 Dan zou ik zorgen voor de waarden samen met mijn wachtwoord. 277 00:20:13,230 --> 00:20:17,080 Wachtwoorden in onze gebruikers tabel worden niet opgeslagen als gewoon de string. 278 00:20:17,080 --> 00:20:19,440 Ze zijn opgeslagen als de versleutelde versie 279 00:20:19,440 --> 00:20:24,560 dus je zult de functie wilt crypte lopen vanaf de eigenlijke wachtwoord, 280 00:20:24,560 --> 00:20:29,680 en dat geeft je het juiste type van opslag voor de gebruikers array. 281 00:20:29,680 --> 00:20:34,960 Het uitvoeren van deze voegt een nieuwe rij in uw gebruikers tabel. 282 00:20:34,960 --> 00:20:39,020 >> Om te gaan met de query-functie, 283 00:20:39,020 --> 00:20:43,100 voordat in C gebruikten we het procentteken als een tijdelijke aanduiding. 284 00:20:43,100 --> 00:20:47,670 Ook hetzelfde concept van een tijdelijke aanduiding is hier van toepassing. 285 00:20:47,670 --> 00:20:50,720 Met query, geeft u de hele query, 286 00:20:50,720 --> 00:20:55,510 behalve wanneer je te maken hebt met variabelen als input in de query, 287 00:20:55,510 --> 00:21:00,490 dan in plaats van het daadwerkelijk kunnen hen binnen - als toen we printf verklaringen hadden in C. 288 00:21:00,490 --> 00:21:03,740 We zouden een string te zetten en er een tijdelijke aanduiding, en vervolgens na elke 289 00:21:03,740 --> 00:21:06,990 komma, specificeren welke variabele we hadden. 290 00:21:06,990 --> 00:21:14,480 Hier gaan we het vraagteken teken te gebruiken als onze tijdelijke aanduiding 291 00:21:14,480 --> 00:21:21,670 en leid in elke variabele respectievelijk in volgorde, voor de tijdelijke aanduidingen - 292 00:21:21,670 --> 00:21:24,420 waar deze variabelen moet gaan. 293 00:21:24,420 --> 00:21:29,470 Dus hier, zou de eerste vraagteken worden vervangen door de werkelijke gebruikersnaam 294 00:21:29,470 --> 00:21:33,610 dan is de tweede vraag merk door het wachtwoord. 295 00:21:33,610 --> 00:21:37,000 >> Dan tot slot, als je eenmaal hebt ze registreerde en toegevoegd aan de database, 296 00:21:37,000 --> 00:21:40,510 dan moet je ze wilt inloggen op de website. 297 00:21:40,510 --> 00:21:45,320 We hebben een soort van een super-globale variabele genaamd sessie. 298 00:21:45,320 --> 00:21:48,160 Sessie duurt een bepaalde id, 299 00:21:48,160 --> 00:21:51,750 en dat id overeenkomt met de gebruiker die momenteel is ingelogd 300 00:21:51,750 --> 00:21:56,380 Wat je wilt doen is het vinden van wat hun gebruikers-ID is 301 00:21:56,380 --> 00:22:03,710 en vervolgens die sessie-ID als id die bepaalde gebruiker. 302 00:22:03,710 --> 00:22:07,560 Een functie die je wilt hier gebruiken is een SQL-opdracht 303 00:22:07,560 --> 00:22:15,150 dat haalt de laatst ingevoegde id-nummer van uw tafel. 304 00:22:15,150 --> 00:22:24,560 Dan rijen zullen noemen - it'll bellen met de id - it'll een naam toewijzen aan het nummer dat het terugkeert. 305 00:22:24,560 --> 00:22:27,900 Het zal noemen dat id. 306 00:22:27,900 --> 00:22:33,370 Nu we klaar zijn te registreren, en we kunnen verder gaan om te citeren. 307 00:22:33,370 --> 00:22:36,610 >> Citeren kan een gebruiker om de naam van een bepaalde aandelen, 308 00:22:36,610 --> 00:22:41,940 en dan is het weer terug de kwaliteiten van dat bestand. 309 00:22:41,940 --> 00:22:48,410 Wat je hier wilt doen is een controller en een aantal sjablonen. 310 00:22:48,410 --> 00:22:53,380 In dit geval gaan we een controller, die gaat naar alle denken te doen voor ons hebben. 311 00:22:53,380 --> 00:23:01,210 Het gaat opzoeken op het symbool en dan in waarden doorgeven aan de sjablonen die zal afdrukken. 312 00:23:01,210 --> 00:23:03,060 We gaan hier hebben 2 sjablonen. 313 00:23:03,060 --> 00:23:07,260 We gaan een sjabloon dat de vorm waarin gebruikers zullen hun biedt 314 00:23:07,260 --> 00:23:09,920 het invoeren van de naam van de voorraad - de naam van het aandeel. 315 00:23:09,920 --> 00:23:16,030 Dan hebben we ook weer een sjabloon die deze waarden weergeeft willen. 316 00:23:16,030 --> 00:23:27,450 U kunt kijken naar login voor een voorbeeld van hoe je een formulier dat gegevens kunnen worden ingevoerd hebben, 317 00:23:27,450 --> 00:23:30,060 behalve hier, we willen alleen maar 1 veld. 318 00:23:30,060 --> 00:23:31,630 We willen niet dat een gebruikersnaam en een wachtwoord veld. 319 00:23:31,630 --> 00:23:37,110 We willen gewoon een tekstveld waarmee de gebruiker het invoeren van de naam van een bepaalde aandelen. 320 00:23:37,110 --> 00:23:40,110 Dan wil je die gegevens te verzenden - als je eenmaal hebt opgezocht dat bestand - 321 00:23:40,110 --> 00:23:45,550 naar quote_form.php. 322 00:23:45,550 --> 00:23:50,780 Lookup terug het symbool van een aandeel, de naam, en een prijs. 323 00:23:50,780 --> 00:23:53,910 Die bevinden zich in een associatieve array. 324 00:23:53,910 --> 00:24:01,390 Zoek de lookup functie binnen de functions.php voor meer informatie 325 00:24:01,390 --> 00:24:04,010 op het rendement van deze types. 326 00:24:04,010 --> 00:24:08,520 >> Geweldig! Zo dan eindelijk, wil je de voorraad weer te geven. 327 00:24:08,520 --> 00:24:14,110 U wilt waarschijnlijk weer te geven - u zult willen deze variabelen te openen. 328 00:24:14,110 --> 00:24:17,610 Zodra u de prijs in een variabele - 329 00:24:17,610 --> 00:24:20,860 alsmede de naam en het symbool - 330 00:24:20,860 --> 00:24:25,550 dan zul je met die in uw sjabloon pagina weer te geven. 331 00:24:25,550 --> 00:24:31,540 Dat sjabloon pagina genoemd kan worden show_quote.php of zoiets. 332 00:24:31,540 --> 00:24:39,660 Uw quote.php pagina zou tonen citaat dan maken en passeren in al die waarden. 333 00:24:39,660 --> 00:24:47,170 Dan in je php pagina, je eigenlijk af te drukken die waarden aan de HTML-aspect van de pagina. 334 00:24:47,170 --> 00:24:53,800 Je gebruikt gewoon de printfunctie en doorberekenen in de prijs. 335 00:24:53,800 --> 00:24:57,990 Er zijn 2 manieren - u kunt het samenvoegen met de puntoperator, 336 00:24:57,990 --> 00:25:02,230 of gebruik een tijdelijke aanduiding. 337 00:25:07,580 --> 00:25:12,750 >> De gebruikers uiteindelijk zullen worden het kopen en verkopen van aandelen. 338 00:25:12,750 --> 00:25:18,450 We willen hen in staat stellen een of andere manier van het zien van alle van de aandelen die zij momenteel hebben. 339 00:25:18,450 --> 00:25:21,350 We gaan noemen hun portefeuille. 340 00:25:21,350 --> 00:25:26,180 Portfolio zou, vermoedelijk voor iedere gebruiker, een boel rijen 341 00:25:26,180 --> 00:25:31,760 voor elke soort van het aandeel dat zij hebben en dan hoeveel van de mensen die ze hebben. 342 00:25:31,760 --> 00:25:36,500 Onze bestaande tabel - op dit moment hebben we een gebruikers tabel in onze database. 343 00:25:36,500 --> 00:25:41,780 Dat bevat een gebruiker gebruikersnaam en het wachtwoord en hoeveel geld ze hebben. 344 00:25:41,780 --> 00:25:50,390 Er is geen echte manier van het opslaan van al hun aandelen binnen dat. 345 00:25:50,390 --> 00:25:58,010 Het is niet zo dat we kunnen nieuwe kolommen wilt invoegen voor elk aandeel. 346 00:25:58,010 --> 00:26:03,650 Dat zou een zeer, zeer lange rij te zijn, want we hebben een oneindige hoeveelheid 347 00:26:03,650 --> 00:26:06,200 van de soorten aandelen die ze zouden kunnen hebben. 348 00:26:06,200 --> 00:26:09,150 Dus, in plaats wat we doen, is binnen dezelfde database, 349 00:26:09,150 --> 00:26:15,000 hebben we een gebruikers tabel, maar dan zullen we ook een portfolio tafel. 350 00:26:15,000 --> 00:26:18,430 De portefeuille tafel zal zeker worden gekoppeld aan de gebruikers tabel, 351 00:26:18,430 --> 00:26:24,600 maar in plaats daarvan de portefeuille tabelstructuur zal de voorraad informatie, 352 00:26:24,600 --> 00:26:27,780 hoeveel aandelen van dat bestand de gebruiker heeft, 353 00:26:27,780 --> 00:26:31,620 en een gebruiker bepaalde id nummer. 354 00:26:31,620 --> 00:26:34,620 U hebt de gebruikers tabel, die een id heeft, evenals de gebruikersnaam, de hash - 355 00:26:34,620 --> 00:26:40,130 dat is het wachtwoord, het versleutelde wachtwoord - 356 00:26:40,130 --> 00:26:42,130 en dan de hoeveelheid geld die ze hebben. 357 00:26:42,130 --> 00:26:47,900 Het id-nummer wordt gekoppeld aan het ID-nummer van de portefeuille. 358 00:26:47,900 --> 00:26:52,490 De portefeuille zou gewoon het symbool van de voorraad en de aandelen - 359 00:26:52,490 --> 00:26:55,410 het aantal aandelen van dat bestand die de gebruiker heeft. 360 00:26:55,410 --> 00:26:58,520 In die portefeuille tabel zou je in principe 361 00:26:58,520 --> 00:27:03,760 alle aandelen bezeten door alle gebruikers op uw site. 362 00:27:03,760 --> 00:27:10,550 Later, om alleen nog een bepaalde gebruiker de aandelen - alleen hun portefeuille - 363 00:27:10,550 --> 00:27:15,360 zou je ophalen van de waarden uit de tabel uw portefeuille zodanig dat 364 00:27:15,360 --> 00:27:19,930 het id-nummer is specifiek voor die gebruiker. 365 00:27:26,520 --> 00:27:34,890 >> Wanneer u de portefeuille weer te geven, wil je aan elk van de voorraden rapporteren in de portefeuille van een gebruiker. 366 00:27:34,890 --> 00:27:41,670 U wilt het aantal aandelen en de huidige waarde van die aandelen te melden. 367 00:27:41,670 --> 00:27:45,950 Dat de huidige waarde van die aandelen wordt niet opgeslagen in de portefeuille tabel 368 00:27:45,950 --> 00:27:51,640 want dat gaat worden bijgewerkt - minimaal - elke dag door Yahoo. 369 00:27:51,640 --> 00:27:58,550 Om die informatie te krijgen, kunt u niet verwijzen naar die van uw SQL-query. 370 00:27:58,550 --> 00:28:02,400 Welke functie wordt bepaald dat voor ons? Welke functie krijgt de prijs? 371 00:28:02,400 --> 00:28:09,110 Dat lookup is, zal dus het gebruik lookup op een bepaald symbool geeft je een heleboel informatie. 372 00:28:09,110 --> 00:28:13,710 Het zal u 3 stukjes informatie - de naam, het symbool, evenals de prijs. 373 00:28:13,710 --> 00:28:17,490 Zodra je lookup een bepaald symbool, dan kun je de prijs, 374 00:28:17,490 --> 00:28:20,460 en dan kun je gebruik maken van de prijs die moet worden weergegeven in uw portefeuille. 375 00:28:20,460 --> 00:28:26,190 >> Het portfolio moet ook weer van de gebruiker huidige kaspositie. 376 00:28:26,190 --> 00:28:30,310 Dat veld wordt opgeslagen in uw gebruikers tabel. 377 00:28:30,310 --> 00:28:33,400 Dus dan herinneren hoe we in feite zijn dat u - 378 00:28:33,400 --> 00:28:36,850 we hebben verschillende soorten PHP-bestanden. 379 00:28:36,850 --> 00:28:40,160 We gaan een controller die in feite doet al het denkwerk voor u. 380 00:28:40,160 --> 00:28:45,940 En dan hebben we een sjabloon waarin de sjabloon zich bezighoudt met het uitvoeren van gegevens. 381 00:28:45,940 --> 00:28:50,790 Je moet denken aan wat variabelen de controller zal moeten nemen inch 382 00:28:50,790 --> 00:29:01,630 Als we te maken hebben met een portfolio die elke naam, symbool, en delen het aantal uitgangen, 383 00:29:01,630 --> 00:29:03,730 alsmede de huidige prijs van een aandeel, 384 00:29:03,730 --> 00:29:06,950 dan zul je een manier van in principe passeren in vinden - 385 00:29:06,950 --> 00:29:12,070 u kunt doorgeven in een array van waarden die die overeenkomen. 386 00:29:15,250 --> 00:29:24,360 >> Laten we naar een voorbeeld van hoe u halen alle voorraden 387 00:29:24,360 --> 00:29:26,210 bezit van een bepaalde gebruiker. 388 00:29:26,210 --> 00:29:31,400 Dit is niet te maken - nog - met de prijs van het aandeel. 389 00:29:31,400 --> 00:29:33,520 Wat dit zou doen is een query uitvoert. 390 00:29:33,520 --> 00:29:37,070 Het zou krijgen het symbool en de aandelen van - 391 00:29:37,070 --> 00:29:42,770 Ik bel deze tafel, maar in dit geval wat zou het zijn? 392 00:29:42,770 --> 00:29:49,400 Wat is de naam van de tabel die we mee te maken hebben dat heeft symbool en aandelen 393 00:29:49,400 --> 00:29:52,280 voor een bepaalde gebruiker? 394 00:29:52,280 --> 00:29:56,410 Het is of gebruikers of portfolio. 395 00:29:56,410 --> 00:29:57,820 Portfolio. 396 00:29:57,820 --> 00:30:03,220 Wat dit zou doen is vraag portfolio voor de symbolen en aandelen 397 00:30:03,220 --> 00:30:04,920 voor een bepaalde gebruiker. 398 00:30:04,920 --> 00:30:09,260 Hier, zeg ik, (SELECT symbool, aandelen van tbl - 399 00:30:09,260 --> 00:30:12,280 maar in plaats van tafel, zul je die vervangen door portfolio. 400 00:30:12,280 --> 00:30:15,220 'Waar' is eigenlijk mijn conditie. 401 00:30:15,220 --> 00:30:21,050 Ik zeg dat ik alleen wil die associatieve arrays die overeenkomen krijgen 402 00:30:21,050 --> 00:30:23,850  deze volgende voorwaarde - id is gelijk aan. 403 00:30:23,850 --> 00:30:27,600  Dan sluit ik een tijdelijke aanduiding daar en toen sessie-id. 404 00:30:27,600 --> 00:30:36,720 Wat dit zou doen is zeggen dat voor elke rij in rijen. 405 00:30:36,720 --> 00:30:40,940 Dit is een nette manier in plaats van daadwerkelijk te hebben om een ​​for-lus 406 00:30:40,940 --> 00:30:47,450 dat doorloopt over alle van de indexen, dan in PHP kunt u een for-each-lus. 407 00:30:47,450 --> 00:30:53,520 >> Als u een gegeven array, dan kun je zeggen ik ga elke opeenvolgende element noemen - 408 00:30:53,520 --> 00:30:57,930 Ik ga elk element deze naam noemen. 409 00:30:57,930 --> 00:31:02,780 Dus, voor elk van deze elementen, ga ik noem ze dit, 410 00:31:02,780 --> 00:31:04,500 dan kan ik dit doen. 411 00:31:04,500 --> 00:31:10,370 In dit voor elk, heb je toeren als uw werkelijke array, en elke rij je gaat rij bellen. 412 00:31:10,370 --> 00:31:12,420 Elke keer als het filter het lichaam, 413 00:31:12,420 --> 00:31:16,960 het zal omhoog gaan en het zal rij updaten naar het volgende element in rijen. 414 00:31:18,900 --> 00:31:25,260 >> Nu, in termen van het kopen voorraden 415 00:31:25,260 --> 00:31:29,500 wat we willen doen is de voorraad die de gebruiker wil kopen 416 00:31:29,500 --> 00:31:35,300 en het bedrag van de aandelen die de gebruiker wil kopen, en dan - als ze dat willen - 417 00:31:35,300 --> 00:31:38,120 toe te voegen dat bestand aan hun portefeuille. 418 00:31:38,120 --> 00:31:40,310 Uiteraard, als ze het kopen van iets, dan is dat gaat afnemen 419 00:31:40,310 --> 00:31:43,520 de hoeveelheid geld die ze hebben, dus dat gaat om hun geld te verminderen. 420 00:31:43,520 --> 00:31:48,380 We gaan te maken hebben met het updaten van de portefeuille en de gebruikers tabel, 421 00:31:48,380 --> 00:31:50,300 die bevat het geld. 422 00:31:50,300 --> 00:31:54,920 Maar eerst, moet u de actuele voorraad en de hoeveelheid van de aandelen die de gebruiker wil. 423 00:31:54,920 --> 00:32:00,010 Daarvoor moet u een HTML-formulier dat zal vragen voor het symbool van de voorraad 424 00:32:00,010 --> 00:32:03,360 die u wilt en kopen van het aantal aandelen. 425 00:32:03,360 --> 00:32:08,300 Dan zult u wilt toevoegen. 426 00:32:08,300 --> 00:32:13,750 U wilt bepaalde waarden te selecteren. 427 00:32:13,750 --> 00:32:19,670 We hebben doorgemaakt dit een beetje al, maar als je probeert om bepaalde rijen te verkrijgen - 428 00:32:19,670 --> 00:32:22,020 halen bepaalde rijen uit de SQL-tabel, 429 00:32:22,020 --> 00:32:24,290 dat is de volgende syntax. 430 00:32:24,290 --> 00:32:28,400 Je hebt te selecteren en als u een ster, 431 00:32:28,400 --> 00:32:31,830 dat in principe zal de terugkeer van de hele, hele rij voor je. 432 00:32:31,830 --> 00:32:36,890 Dan weer, heb je de toestand waarin, en dan geeft u - 433 00:32:36,890 --> 00:32:39,990 Ik wil alleen de gebruikersnaam gelijk te zijn aan mail-in, 434 00:32:39,990 --> 00:32:46,660 dus alleen ophalen rij gebruikers die overeenkomt met mail-in. 435 00:32:46,660 --> 00:32:52,860 >> Wanneer een gebruiker wil een aandeel op een portefeuille, 436 00:32:52,860 --> 00:32:54,400 je nodig hebt om te controleren op een paar fouten. 437 00:32:54,400 --> 00:32:57,680 U wilt er zeker van zijn dat de gebruiker daadwerkelijk kan de voorraad veroorloven, 438 00:32:57,680 --> 00:33:00,810 dus je zult willen hun geld te controleren. 439 00:33:00,810 --> 00:33:05,810 Voorheen gebruikten we ster om een ​​hele rij van een SQL-tabel op te halen. 440 00:33:05,810 --> 00:33:08,930 Maar hier kunnen we eigenlijk alleen maar aangeven dat ik alleen maar 1 waarde wilt - 441 00:33:08,930 --> 00:33:10,080 Ik wil alleen maar geld. 442 00:33:10,080 --> 00:33:17,970 Dus hier, het zou het geld terug voor de gebruiker met id nummer 1. 443 00:33:17,970 --> 00:33:25,940 Als een gebruiker al gekocht een bepaalde aandelen-maar dan koopt meer van dat bestand, 444 00:33:25,940 --> 00:33:30,440 dan in uw portefeuille - u niet wilt dat een aparte regel, 445 00:33:30,440 --> 00:33:34,770 een andere rij dat die nieuwe transactie bevat. 446 00:33:34,770 --> 00:33:37,950 Je eigenlijk wilt van het bedrag bij te werken. 447 00:33:37,950 --> 00:33:42,530 Het enige dat echt aan het veranderen is de hoeveelheid aandelen die die gebruiker eigenaar is. 448 00:33:42,530 --> 00:33:47,730 Als u het inzetstuk in query - dus het is gewoon in te voegen in uw portefeuille al deze waarden - 449 00:33:47,730 --> 00:33:51,710 van de gebruiker-ID-nummer, evenals het symbool van de voorraad die ze kopen 450 00:33:51,710 --> 00:33:57,750 en de aandelen, dan zul je ook wilt opgeven, nou, als ik lopen in een dubbele sleutel - 451 00:33:57,750 --> 00:34:00,750 in dit geval de tweede sleutel niet alleen de gebruiker id maar ook beurssymbool - 452 00:34:00,750 --> 00:34:08,340 want je kunt alleen maar - ons uitgangspunt is dat je alleen kan bestaan ​​uit 1 rij 453 00:34:08,340 --> 00:34:10,699  die overeenkomt met een specifiek symbool. 454 00:34:10,699 --> 00:34:13,659 Dus, op de dubbele sleutel - als je in de een botsing daar - 455 00:34:13,659 --> 00:34:18,520 je gaat gewoon om aandelen te updaten naar de nieuwe waarde. 456 00:34:18,520 --> 00:34:23,290 Aandelen gelijk aan wat we hadden voordat plus het aantal aandelen dat de gebruiker is het kopen. 457 00:34:27,790 --> 00:34:31,090 >> Nu we de portefeuille tabel bijgewerkt, 458 00:34:31,090 --> 00:34:34,730 we willen de gebruiker contant geld bij te werken. 459 00:34:34,730 --> 00:34:40,300 Dat is in de gebruikers tabel, dus we gaan te trekken een bepaalde hoeveelheid van cash. 460 00:34:40,300 --> 00:34:46,270 Vermoedelijk gaat het om contant geld is gelijk aan liquide middelen verminderd - en dan een bepaald bedrag. 461 00:34:46,270 --> 00:34:50,560 Om het geld bij te werken, zou je - 462 00:34:50,560 --> 00:34:55,699 als ik wilde weg te nemen geld van mail-in, dan zou ik deze query - 463 00:34:55,699 --> 00:35:00,220 'Update gebruikers en stel vervolgens het geld kolom om contant geld - 464 00:35:00,220 --> 00:35:07,300 >> Ik zou verwijderen 9.999 dollar alleen als de gebruikersnaam is gelijk aan e-mail-in. 465 00:35:07,300 --> 00:35:12,020 Maar, in dit geval, we willen niet specifiek af te trekken 9999. 466 00:35:12,020 --> 00:35:17,610 We willen geven, wel, willen we de huidige prijs van het aandeel af te trekken 467 00:35:17,610 --> 00:35:22,400 vermenigvuldigd met het aantal aandelen dat ze kopen. 468 00:35:25,260 --> 00:35:29,910 >> Nu hebben we konden ze alle van de aandelen die zij hebben te zien, 469 00:35:29,910 --> 00:35:33,080 alsook meer kopen voorraden. 470 00:35:33,080 --> 00:35:37,430 We hebben ook eerder konden ze op te zoeken van de huidige prijs van een aandeel. 471 00:35:37,430 --> 00:35:40,030 Hier willen we hen in staat stellen om ze te verkopen. 472 00:35:40,030 --> 00:35:42,160 Eerst willen we in principe weer te geven - 473 00:35:42,160 --> 00:35:45,270 willen zodat zij alle bestanden dat zij zien, 474 00:35:45,270 --> 00:35:53,170 dus even willen we alle rijen weer te geven van de portefeuille. 475 00:35:53,170 --> 00:35:56,650 Als ze ervoor kiezen om een ​​bepaalde aandelen te verkopen, 476 00:35:56,650 --> 00:35:59,140 dan gaan we ervan uit dat ze willen alles verkopen. 477 00:35:59,140 --> 00:36:04,350 Ze zijn gewoon niet van plan om 50% van hun aandelen te verkopen, ze gaan tot 100% van het te verkopen. 478 00:36:04,350 --> 00:36:08,630 We kunnen gewoon verwijderen van de gehele rij uit portefeuille. 479 00:36:08,630 --> 00:36:17,520 We kunnen verwijderen de gegeven gebruiker aandelen van de bepaald symbool. 480 00:36:17,520 --> 00:36:21,410 Er is de syntax voor. 481 00:36:21,410 --> 00:36:22,710 >> Dan willen we het geld bij te werken. 482 00:36:22,710 --> 00:36:30,930 We gaan het toevoegen in de cash gelijk aan het bedrag van de aandelen die zij verkopen 483 00:36:30,930 --> 00:36:34,640 vermenigvuldigd met de huidige prijs van de voorraad - 484 00:36:34,640 --> 00:36:38,610 niet de prijs waartegen zij het gekocht, maar de prijs waartegen zij zijn - 485 00:36:38,610 --> 00:36:40,500 de huidige prijs als ze het verkopen. 486 00:36:40,500 --> 00:36:43,660 Om de huidige prijs van een aandeel verwijzen, 487 00:36:43,660 --> 00:36:49,120 wil je lookup gebruiken, die geeft je de prijs van een aandeel 488 00:36:50,030 --> 00:36:52,650 in de huidige tijd. 489 00:36:52,650 --> 00:36:55,930 >> Nu zijn we vertrokken met de geschiedenis, 490 00:36:55,930 --> 00:37:00,170 die u wilt toestaan ​​dat een gebruiker bij te houden van al hun transacties te houden - 491 00:37:00,170 --> 00:37:03,040 wil zien wanneer ze iets verkocht, wanneer zij een voorraad gekocht. 492 00:37:03,040 --> 00:37:08,870 We willen het tijdstip waarop ze dat deden en hoeveel ze gekocht specificeren 493 00:37:08,870 --> 00:37:11,650 en wat voorraad was. 494 00:37:11,650 --> 00:37:17,800 Hebben we alle huidige, bestaande structuur die die aangeeft? 495 00:37:17,800 --> 00:37:25,230 Nou, we hebben portefeuille waarin het aantal aandelen die een gebruiker heeft geeft 496 00:37:25,230 --> 00:37:26,470 voor een bepaalde aandeel. 497 00:37:26,470 --> 00:37:34,060 Maar we zijn het structureren van portfolio in de manier waarop het werkt wanneer we meerdere, 498 00:37:34,060 --> 00:37:40,190 terwijl de geschiedenis moet - als je koopt Apple, 10 aandelen van, en dan later verkopen 5, 499 00:37:40,190 --> 00:37:44,040 dan je zou willen om die afzonderlijk te zien als afzonderlijke acties, afzonderlijke rijen. 500 00:37:44,040 --> 00:37:48,520 Overwegende dat maatregelen om dat te visualiseren in onze portfolio tabel 501 00:37:48,520 --> 00:37:52,540 zou gewoon een update die bepaalde rij, 502 00:37:52,540 --> 00:37:55,740  dus we waarschijnlijk gaan om een ​​andere tafel willen. 503 00:37:55,740 --> 00:38:00,460 In onze databank hebben wij onze gebruikers tafel, we hebben onze portefeuille tafel, 504 00:38:00,460 --> 00:38:04,090 en nu zullen we waarschijnlijk willen een geschiedenis tafel. 505 00:38:04,090 --> 00:38:08,070 Die geschiedenis tafel kan bijhouden van de huidige datum, 506 00:38:08,070 --> 00:38:12,800 en de bijzondere aandelensymbool alsmede hoeveel aandelen 507 00:38:12,800 --> 00:38:15,410 en dan welke actie het is - 508 00:38:15,410 --> 00:38:18,800 of je koopt die aandelen of dat je ze te verkopen. 509 00:38:20,660 --> 00:38:25,720 >> Om te gaan met datum, er zijn een paar manieren waarop u dit kunt doen. 510 00:38:25,720 --> 00:38:28,820 PHP heeft een manier van het bijhouden van datum, die u kunt opzoeken jezelf. 511 00:38:28,820 --> 00:38:33,990 In SQL kunt u ook gebruik maken van zowel nu of de huidige timestamp. Dat is aan jou. 512 00:38:33,990 --> 00:38:40,720 Zorg er wel voor dat iedere keer dat een gebruiker koopt of verkoopt, wordt u het updaten van hun geld 513 00:38:40,720 --> 00:38:46,750 in de gebruikers tabel, wordt u het bijwerken van de rijen in de portefeuilles tabel, 514 00:38:46,750 --> 00:38:50,900 dan zul je ook het updaten van de geschiedenis, 515 00:38:50,900 --> 00:38:56,260 dus er zullen zijn 3 aparte SQL-query's dat je daar bellen. 516 00:38:58,640 --> 00:39:01,530 We hebben een heleboel functionaliteit nu. 517 00:39:01,530 --> 00:39:10,600 >> Gewoon een paar herinneringen die in uw index-bestand, zult u wilt koppelen ten minste uw - 518 00:39:10,600 --> 00:39:15,550 maar je wilt kan een gebruiker een link naar de buy.php pagina. 519 00:39:15,550 --> 00:39:23,560 Dat zal toestaan ​​dat een gebruiker - buy.php is de controller, zodat dat gaat om ofwel 520 00:39:23,560 --> 00:39:29,170 stuur je naar - dat gaat u naar het formulier waarmee u dingen op te zoeken. 521 00:39:29,170 --> 00:39:34,420 We hebben de geschiedenis. Wij hebben uit te loggen, aanvragen van een offerte en vervolgens te verkopen. 522 00:39:34,420 --> 00:39:37,350 Dat zijn minimaal wat je wilt laten zien. 523 00:39:37,350 --> 00:39:43,640 In termen van de portefeuille, wordt de portefeuille daadwerkelijk in de index pagina. 524 00:39:43,640 --> 00:39:52,050 Als we naar index hier zien we dat het portfolio.php maakt 525 00:39:52,050 --> 00:40:00,050 en gaat in de associatieve array - in principe de titel gelijk is aan portfolio. 526 00:40:00,050 --> 00:40:02,610 Dit is dus de controller. 527 00:40:02,610 --> 00:40:08,000 Als we naar het model van portfolio.php, 528 00:40:08,000 --> 00:40:18,060 dan alles wat het is - geeft in feite een beeld dat zegt, oh, deze site is onder constructie. 529 00:40:18,060 --> 00:40:23,810 Later, als je eenmaal voorbij in - u zult passeren in principe meer specifieke informatie. 530 00:40:23,810 --> 00:40:27,400 In plaats van alleen de titel, zult u waarschijnlijk passeren in meer dingen. 531 00:40:27,400 --> 00:40:32,010 Zodra u deze waarden, dan portfolio.php kan omgaan met deze waarden 532 00:40:32,010 --> 00:40:34,490 en ze af te drukken in een soort van orde. 533 00:40:34,490 --> 00:40:41,660 >> Als je eenmaal hebt geïmplementeerd al die, moet u ook nog 1 functie te implementeren. 534 00:40:41,660 --> 00:40:44,890 Dit kan worden waardoor een gebruiker om hun wachtwoord te wijzigen, 535 00:40:44,890 --> 00:40:50,110 om hun wachtwoord te veranderen indien ze vergeten - dus voor het wachtwoord resetten, dan 536 00:40:50,110 --> 00:40:54,560 U wilt waarschijnlijk ook te registreren bewerken, zodat het hen in staat stelt om aan te geven een e-mail, 537 00:40:54,560 --> 00:40:57,910 dus als ze vergeten hun wachtwoord, dan kunnen ze krijgen die. 538 00:40:57,910 --> 00:41:02,870 Ze kunnen waarschijnlijk invoeren in hun gebruikersnaam en vervolgens een e-mail worden verzonden naar hen 539 00:41:02,870 --> 00:41:06,180 met een link om te kunnen hun wachtwoord opnieuw in te stellen. 540 00:41:06,180 --> 00:41:10,980 U kunt iets dat gebruikers in staat stelt om zich te ontvangstbewijzen 541 00:41:10,980 --> 00:41:12,380 elke keer als ze iets kopen of verkopen, 542 00:41:12,380 --> 00:41:19,910 en dan eindelijk, laat ze om geld toe te voegen aan hun website. 543 00:41:19,910 --> 00:41:24,970 Gewoon om terug te gaan naar het concept van de controllers en sjablonen een beetje. 544 00:41:24,970 --> 00:41:31,170 Je hebt iets als een - zodat je een controller hier. 545 00:41:31,170 --> 00:41:35,080 Op dit moment zijn we op zoek naar de login.php voorbeeld. 546 00:41:35,080 --> 00:41:38,220 Wanneer we een controller hebben, kort gezegd: het gaat om twee gevallen. 547 00:41:38,220 --> 00:41:42,090 Als we controllers hebben, zitten we in dit stuk, dat wij ook zijn soort van omgaan met 548 00:41:42,090 --> 00:41:43,880 wanneer er vormen ook. 549 00:41:43,880 --> 00:41:47,500 De controller zal in principe afzonderlijke acties - 550 00:41:47,500 --> 00:41:53,880 een als een formulier werd reeds ingediend, en dan twee als de gebruiker komt naar die pagina 551 00:41:53,880 --> 00:41:56,870 voor het eerst en moet nog ingang die vorm. 552 00:41:56,870 --> 00:42:02,820 >> Ik ga eerst naar die zaak voor te gaan tot het eerste geval van het hebben van de vorm binnen 553 00:42:02,820 --> 00:42:12,640 Hier zeggen we, als het formulier is ingediend met de methode post - 554 00:42:12,640 --> 00:42:13,580 maak je geen zorgen over dat een beetje. 555 00:42:13,580 --> 00:42:19,780 Maak je geen zorgen over dat te veel, maar begrijpen dat in principe deze functie bezig met 556 00:42:19,780 --> 00:42:22,430 of een formulier is ingediend of niet. 557 00:42:22,430 --> 00:42:25,640 Deze voorwaarde geldt als een gebruiker heeft ingediend in de vorm. 558 00:42:25,640 --> 00:42:45,940 Zo niet, dan gaan we willen render login_form.php te bellen, en dan pas in de titel. 559 00:42:45,940 --> 00:42:48,010 Deze titel wordt alleen maar in principe zal verschijnen in de kop. 560 00:42:48,010 --> 00:42:54,990 Wat dit doet is in feite zegt, oke - nou ja, als een gebruiker gaat naar login.php 561 00:42:54,990 --> 00:43:00,310 en heeft niet echt ingelogd, dan wil ik ze naar de pagina die dat formulier 562 00:43:00,310 --> 00:43:03,160 die hen in staat stelt het invoeren van de gebruikersnaam en het wachtwoord. 563 00:43:03,160 --> 00:43:07,590 Dan ga ik naar login_form, en dan dat is de werkelijke vorm. 564 00:43:07,590 --> 00:43:13,750 Dan, als de gebruiker dat formulier indient, zullen ze voor te leggen aan login.php 565 00:43:13,750 --> 00:43:15,840 de methode post. 566 00:43:15,840 --> 00:43:21,560 Dan ga ik echt ga dit deel van mijn if-else lus in te voeren. 567 00:43:21,560 --> 00:43:29,560 Dan is het hier dat we omgaan met de waarden ingevoerd in het formulier. 568 00:43:29,560 --> 00:43:32,800 Het is hier dat we te maken met die. 569 00:43:32,800 --> 00:43:40,860 >> Dan zodra je om met die waarden - als je te maken hebt met - 570 00:43:40,860 --> 00:43:46,640 zeggen dat we te maken hebben met de quote.php pagina waar iemand kan invoeren een aandeel dat 571 00:43:46,640 --> 00:43:49,950 ze willen opzoeken, en dan zien dat display - 572 00:43:49,950 --> 00:43:52,850 dat soort gelijke hier. 573 00:43:52,850 --> 00:43:56,070 Hier hebben we een login formulier - you'd waarschijnlijk een offerte formulier - 574 00:43:56,070 --> 00:44:00,290 maar dan zodra de gebruiker daadwerkelijk gesteld dat informatie, 575 00:44:00,290 --> 00:44:04,810 dan zul je de controller door te geven in een andere template 576 00:44:04,810 --> 00:44:07,430 dat zal laten zien dat actuele informatie. 577 00:44:07,430 --> 00:44:11,250 Dus dan rechts hier in de buurt, dan zul je waarschijnlijk - 578 00:44:11,250 --> 00:44:18,830 rond het einde van uw aandoening hier - het als de methode is gelijk aan post - 579 00:44:18,830 --> 00:44:22,520 dan zul je waarschijnlijk nog een pagina wilt maken - de show quote - 580 00:44:22,520 --> 00:44:28,040 die stuurt je naar die pagina - show_quote.php-- 581 00:44:28,040 --> 00:44:34,120 en dan in dat bestand zal verwijzen die waarden. 582 00:44:34,120 --> 00:44:36,480 Is dat logisch? 583 00:44:36,480 --> 00:44:40,390 >> We hebben een controller die in principe betrekking heeft op de 2 gevallen - 584 00:44:40,390 --> 00:44:42,710 of die u hebt ingevoerd een formulier in of niet. 585 00:44:42,710 --> 00:44:43,950 Als u nog niet hebt opgegeven een formulier, 586 00:44:43,950 --> 00:44:47,300 dan leidt u naar die vorm, die dan zal je terug naar die pagina. 587 00:44:47,300 --> 00:44:54,020 Dan, als je eenmaal informatie in de controller, zal dat lichaam gaan met dat 588 00:44:54,020 --> 00:44:59,750 informatie die nodig is - hetzij het opzoeken van waarden voor de voorraad, 589 00:44:59,750 --> 00:45:04,150 en dan als het eenmaal is opgezocht die waarden en heeft ze in een mooi opgemaakte array, 590 00:45:04,150 --> 00:45:08,180 dan kan passeren die array in de template pagina 591 00:45:08,180 --> 00:45:10,330  dat zich bezighoudt met het uitvoeren van die informatie. 592 00:45:10,330 --> 00:45:14,680 >> Nogmaals, omdat het web, het gaat leuk worden. 593 00:45:14,680 --> 00:45:20,310 We zijn buiten de C dus we zijn niet beperkt tot de ASCII en die terminal output, 594 00:45:20,310 --> 00:45:21,800 dus veel plezier met deze. 595 00:45:21,800 --> 00:45:24,920 Je kunt het zo beeldend als je wilt. 596 00:45:24,920 --> 00:45:31,860 U kunt gebruikers toestaan ​​om ingang miljoenen dollars in een tijd, 597 00:45:31,860 --> 00:45:34,730 of ze beperken en worden eigenlijk en alleen hen in staat stellen tot 1 cent in te voeren op een moment 598 00:45:34,730 --> 00:45:36,330 of iets dergelijks. 599 00:45:36,330 --> 00:45:38,550 Zeker zeker om plezier te hebben met deze. 600 00:45:38,550 --> 00:45:47,030 >> PHP-code is een beetje eenvoudiger in dat het een beetje makkelijker op om uw pseudocode 601 00:45:47,030 --> 00:45:50,070 in de feitelijke tenuitvoerlegging. 602 00:45:50,070 --> 00:45:56,320 Dus, zeker veel plezier met deze want het is eigenlijk onze laatste stuk in CS50. 603 00:45:56,320 --> 00:46:01,150 Daarmee was Walkthrough 7. 604 00:46:01,150 --> 00:46:04,640 Zodra u klaar bent met het kijken naar de walkthrough en eindigde uw PSET, 605 00:46:04,640 --> 00:46:09,590 dan zijn deze waren ook psets, en nu zijn we op het eindproduct - 606 00:46:09,590 --> 00:46:12,330 nadat we er doorheen quiz 1. 607 00:46:12,330 --> 00:46:16,200 Dan hopelijk kunt u gebruik maken van de tools die je hebt geleerd van de psets - 608 00:46:16,200 --> 00:46:21,980 niet alleen de syntax, maar meer het abstracte begrip van hoe je een bepaalde te nemen - 609 00:46:21,980 --> 00:46:24,950 graag wil ik dit en vervolgens daadwerkelijk uitvoering van dat te doen. 610 00:46:24,950 --> 00:46:28,740 Leren hoe te worstelen door middel van syntax en distributie code. 611 00:46:28,740 --> 00:46:33,020 Het lezen van andere mensen in en druk vervolgens interpreteren dat het gebruik van reeds bestaande functies. 612 00:46:33,020 --> 00:46:37,360 >> Dus, veel succes met de laatste PSET. 613 00:46:37,360 --> 00:46:39,930 Het was een genoegen om de walkthroughs leiden. 614 00:46:39,930 --> 00:46:40,940 Ik hoop dat ze zijn geweest nuttig voor je. 615 00:46:40,940 --> 00:46:46,560 Dit waren Walkthroughs, en heel erg bedankt. 616 00:46:52,580 --> 00:46:56,200 [CS50.TV]