[Muziek] ROB BOWDEN: Hi. Ik ben Rob, en ik hoop dat je er klaar voor bent om de balans in deze oplossing zetten. Laten we eerst eens een kijkje nemen op register. Dus denk eraan dat hier we controleren te zien als een vorm was geplaatst op deze pagina. Dus eerste wat we gaan te doen is naar de ander. En we gaan maken het register formulier. Dus het register vorm gaat te plaatsen op register.php. En wat gaat het te versturen? Het gaat om een ​​gebruikersnaam te sturen dat de gebruiker gaat invullen, een wachtwoord, en een bevestiging - het wachtwoord opnieuw getypt. Dus nu wanneer die vorm is geplaatst op register.php we zullen dit uitvoeren als. Kijkend naar dit als, we zijn eerst naar de invoer te valideren. We willen ervoor zorgen dat de gebruikersnaam en het wachtwoord niet leeg waren en dat de bevestiging eigenlijk overeenkomt met het wachtwoord. Zodra we hebben vastgesteld dat we kunnen eigenlijk registreren de gebruiker. Wat betekent dat? Nou, we willen invoegen gebruiker in onze database. En dit is hoe we dat zullen doen. Dus we gaan in te voegen in de gebruikers tabel de velden gebruikersnaam, hash, en contant geld. De standaard waarde van contant geld gaat worden 10.000. En we gaan passeren als gebruikersnaam, gebruikersnaam, via de post super globale dat is ingediend vanaf het formulier. En we gaan versleutelen het wachtwoord. Dus als dat gelukt, resulteert dan zal niet vals. Als het mislukt, dan kunnen we wil me verontschuldigen. Er ging iets mis. En wat kan er mis zijn gegaan? Wel moet er worden een unieke gebruikersnaam. En dus is de vraag zou kunnen hebben gefaald Als de gebruikersnaam reeds bestond in de tabel. Dus in de veronderstelling dat het een unieke gebruikersnaam, dan gaan we om een ​​query te grijpen de ID van de gebruiker. Vergeet niet dat de ID auto-incrementing. En dus als dat gebeurt om te falen voor sommige reden, dan willen we verontschuldigen dat we niet konden grijpen de ID. Maar de veronderstelling dat het niet mislukt, dan we grijpen de ID van wat de query teruggekeerd, slaan die in onze sessie - dus we willen deze gebruiker inloggen door het opslaan van de ID in de sessie super wereldwijde, en ten slotte omleiden naar onze portfolio. En dat is het voor register. Nu gaan we om verder te gaan in het citaat. Dus citaat zal hebben echt een gelijkaardige set-up. We zien hier dat dit de code die we gaan uit te voeren wanneer een formulier is geplaatst op deze pagina. Maar eerst hebben we eigenlijk om die vorm te maken. Zodat het nemen van een kijkje op offerte formulier, welke gebieden zijn er? We zien dat alle citaat is is een enkele tekstvak met de naam symbool. En dus als offerte formulier wordt geplaatst om quote.PHP we gaan nu voer deze code. En de enige variabele in onze POST super wereldwijde gaat symbool zijn. We valideren dat om ervoor te zorgen dat ze daadwerkelijk geplaatst het symbool. En als ze dat niet, dan zeggen dat we moet een symbool verschaffen. Ervan uitgaande dat ze deden een symbool, we kijken dat symbool. Nu herinner me die blik omhoog zou kunnen hebben sinds mislukt, nou ja, misschien was het niet een geldig symbool om mee te beginnen. Dus als dit op te zoeken terugkeer vals, we willen verontschuldigen dat de symbool werd niet gevonden. Zodra we het symbool hebt gevonden, nu we kan de quote.PHP sjabloon maken. Hoe ziet dat eruit? Dat gaat gewoon om af te drukken dat een aandeel van welke de voorraden naam was is de moeite waard ongeacht de koers van het aandeel. Waarom gebruiken we deze htmlspecialchars functioneren? Dat komt omdat de voorraad en het symbool zou eigenlijk speciale bevatten tekens die niet mag worden geïnterpreteerd als HTML. Oke, dus dat is het voor citaat. Nu willen we kijken naar index.PHP en portfolio. Maar eerst hebben we eigenlijk nodig hebben om te bouwen de portefeuilles tafel. Hier is hoe we dat gaan doen. Dus laten we eens een kijkje nemen op de structuur. En we zien dat de portefeuilles tafel gaat om een ​​ID hebben. Dus dat gaat worden van de gebruiker ID dat is het plaatsen van de aandelen. We hebben een symbool, dat zal worden het symbool van het bedrijf dat we het plaatsen van de aandelen. En dan aandelen is het aantal aandelen dat wordt ingebracht. Dus onthoud dat per de PSET spec, specificeren we dat ID en het symbool - we uitchecken indexen, ID en symbool is de primaire sleutel. Dus een gebruikers-ID en het symbool pairing moet verschijnen alleen een enkele tijd in deze tabel. Laten we nu eens kijken naar de code. Dus nu index.PHP gaat alle grijpen van onze portfolio van informatie en weergeven aan de gebruiker. Dus eerst gaan we om het geld te grijpen dat de gebruiker momenteel de cash table. Vergeet niet, dat de vraag zal altijd een array van arrays terugkeren. Dus hoewel we alleen geselecteerde contante uit een enkele rij, moeten we nog pak dat geld door het indexeren in de nulde index rijen en grijpen de contante index. Dus nu willen we alle selecteren gegevens uit de tabel portefeuilles dat is aan de op dat moment relevante ingelogde gebruiker. We moeten natuurlijk om te valideren dat dat daadwerkelijk resultaat, waar we moet altijd doen wanneer we vragen. Zodra we hebben al die informatie, de PSET spec informeert ons dat we moet dit doen om mooi te slaan alle informatie in deze posities array. Dus we looping over alle portfolio informatie, het opzoeken van de voorraad geassocieerd met elke rij in de portfolio informatie, en vervolgens opslag in het positie-array de naam, prijs, aandelen en symbool van alle geassocieerd met dat bestand. En tot slot, we gaan maken portfolio.PHP, passeren in de hoeveelheid van contant geld we op dit moment, de posities array die we net gebouwd, en de titel van deze pagina die portefeuille zal zijn. Laten we eens een kijkje nemen op portfolio.PHP. En we zien dat de grote interessant deel is deze lus. Dus we een lus over de posities matrix, waardoor een tafel, waar die tafel - we vullen elke rij met de informatie die we binnen de gestelde posities array. Nogmaals, we moeten htmlspecialchars gebruiken in het geval dit symbool of de naam bevatten HTML karakters. En hier zijn we de prijs te vermenigvuldigen en het aantal aandelen dat we hebben om te krijgen hoeveel dat is momenteel een waarde voor de gebruiker. En dat is het voor portefeuille. Nu gaan we een kijkje nemen op sell nemen. Dus verkopen gaat om terug te gaan naar de formaat dat we hadden in register.php. We zien dat een vorm gaat worden geplaatst op deze pagina. Maar eerst, toen we de pagina wordt geladen, we gaan dit doen. Dus wat is dit? Nou, we kunnen gewoon de pagina te verkopen hebben een tekstvak dat de gebruiker komt dit symbool dat we willen verkopen. Maar we gaan een beetje slimmer worden en we gaan tot een daling hebben neer waarmee de gebruiker te selecteren werkelijke symbolen die ze al hebben. Dus we krijgen portefeuille van de gebruiker. We gaan om te kiezen uit portefeuilles alle symbolen die de gebruiker momenteel de momenteel ingelogde gebruiker. Zorg ervoor dat dat gelukt is. En nu gaan we lus over de keerde informatie, gewoon grijpen elk symbool en slaan in deze symbolen array. En nu gaan we naar maken het verkopen vorm. Dus de sell vorm gaat gewoon is een drop-down menu, een select. En elke optie in het verkopen vorm is zomaar uit te printen het symbool dat we greep uit de portefeuilles tafel. Dus de sell vorm gaat submit terug naar sell.PHP. Kijkend naar sell.PHP, is de code dat gaat te voeren als we ons onderwerpen naar deze pagina. We willen valideren dat de gebruiker eigenlijk ging een symbool. Nu in de veronderstelling dat ze deden - dus nu willen we bepalen hoeveel deelt de gebruiker daadwerkelijk verkopen en hoeveel geld de gebruiker zou moeten krijgen voor de verkoop van dat veel aandelen. Dus grijp we het aantal aandelen dat de gebruiker heeft voor dit symbool. We zijn op zoek in de portefeuilles voor de bepaalde gebruiker en het bepaald symbool. Nu ervoor zorgen dat die daadwerkelijk keerde een rij. Want als het niet deed, niet de gebruiker doet eigenlijk dat symbool te verkopen. Ervan uitgaande dat ze hebben dat symbool, we willen het aantal pakken aandelen die ze hebben. En nu willen we kijken hoe veel elk aandeel waard is. Dus we gebruikten de opzoeken functie. We zijn op zoek in de waardeketen van het symbool. Ervan uitgaande dat de look-up gelukt, nu we gaan eigenlijk allemaal werken de gegevens. Dus we willen verwijderen uit portefeuilles de aandelen die we verkopen. We willen updaten van de gebruiker hoeveelheid contant geld. En we updaten door aandelen maal de beurskoers - dus dat is hoeveel geld de gebruiker net. En nu willen we onze geschiedenis te werken. Dus we hebben niet een kijkje genomen bij nog de geschiedenis tafel. Dus we hierop terug. Nu eindelijk gaan we om te buigen Terug naar het portfolio. Laten we nu eens kijken naar buy. Dus, kopen moet mooi zijn vergelijkbaar te verkopen. We zien dat we weer gaan controleren om te zien of we onderwerpen aan deze pagina. Ervan uitgaande dat we niet, we zijn gaat de buy vorm te laden. Dus wat doet de buy formulier eruit? We zien hier het is gewoon een regelmatige vormen dat gaat submit terug naar buy.PHP. En het gaat om een ​​symbool te hebben dat de gebruiker invoeren, het aantal aandelen die de gebruiker wil om te kopen van dat symbool, en dat is het. Dus toen we leggen terug naar buy.PHP, we zijn Nu gaan deze code uit te voeren. We willen opnieuw te valideren dat de gebruiker ingevoerde iets geldig. Dus hier zijn we ervoor zorgen dat ze eigenlijk ging een symbool. Hier gaan we ervoor zorgen dat ze daadwerkelijk ingevoerd aandelen. En hier zijn we ervoor te zorgen dat ze hebt een geheel getal van aandelen, dus ze proberen niet ABC aandelen te kopen. Nu willen we kijken de prijs van de symbool, zodat we weten hoeveel geld we moeten aftrekken van de gebruiker. Nu zullen we kiezen hoeveel geld de gebruiker eigenlijk heeft en zorg ervoor dat dat is gelukt. Hier zijn we grijpen het geld. En nu hier, we maken zeker dat de gebruiker heeft genoeg geld. Dus als het aantal aandelen dat de gebruiker wil keer kopen de prijs van elk van deze aandelen groter is dan de hoeveelheid geld die we hebben, dan is de gebruiker kan niet veroorloven. Ervan uitgaande dat de gebruiker genoeg geld heeft, nu willen we invoegen in de portfolio gebruiker. Nou, we voegen in de gebruiker portefeuille als dit gebeurt als de eerste keer dat de gebruiker koopt dat bepaald symbool. Maar wat als ze al gebeuren sommige Apple-aandelen hebben? Nou, nu maken we gebruik van de op duplicate key-update statement. Dus dit is waarom we eerder aangegeven dat ID en symbool moet een gewricht primaire sleutel, zodat als we proberen te Steek een ID en symbool dat zijn er al, zullen we gewoon het actualiseren van de aandelen op de nieuwe aandelen die onder andere de gebruiker is het kopen. Nu willen we het bedrag van de werken geld dat de gebruiker heeft, aangezien ze net wat geld op die aandelen. En tenslotte, zullen we een update opnieuw de geschiedenis tafel. Die, nogmaals, zullen we kijken in een tweede. En tenslotte zullen we redirect terug naar portfolio.PHP. Dus laten we eens een kijkje nemen op de geschiedenis tafel. Nu herinner me dat de geschiedenis tafel is hoort te houden van al koopt en verkoopt dat alle gebruikers, niet alleen de huidig ​​aantal aandelen dat de gebruikers, wat portfolio is voor. Dus we zijn het bijhouden van de gebruiker die is het kopen of verkopen, of deze bijzondere transactie een aankoop of een te verkopen, het symbool dat wordt gekocht of verkocht, het aantal aandelen dat wij het kopen of verkopen, de prijs van een aandeel dat wordt gekocht of verkocht, en tenslotte de tijd dat deze kopen of verkopen optreedt. En dat is alles van de geschiedenis informatie die we nodig hebben om bij te houden. Dus toen we keken naar sell, zagen we dat we werden ingevoegd in de geschiedenis te verkopen, als of we kopen of verkopen, de huidige tijd-stempel, en de huidige gebruiker, het symbool dat wordt verkocht, het aantal aandelen die zijn worden verkocht, en de prijs van de voorraad op dit moment. Op dezelfde manier in te kopen, het zal zien er bijna hetzelfde. Het enige verschil is in plaats verkopen, kopen we. Dus in het verkopen en kopen, we inbrengen in tabel geschiedenissen alle koopt en verkoopt die gebeuren. Dus alles history.PHP moet doen is grijper de informatie van de geschiedenis tafel, zorg ervoor dat het gelukt, en maken deze informatie. Dus kijken naar de history.PHP sjabloon, de interessante informatie is hier. We looping over alle transacties, afdrukken of deze was een kopen of verkopen, opmaak datum tijd dat we deze transactie. Onthoud moeten we htmlspecialchars gebruiken de symbool, voor het geval. Tenslotte formatteren aantal aandelen die werden gekocht en de prijs van een aandeel op dat moment. En dat geeft alle van de geschiedenis informatie die we nodig hebben. En dat is het voor deze PSET. Mijn naam is Rob, en dit was CS50 Financiën.