[GIOCO MUSICA] ROB BOWDEN: Ciao. Io sono Rob, e spero che tu sei pronto di mettere in azione questa soluzione. Per prima cosa, diamo un'occhiata a registro. Quindi ricorda che qui stiamo controllando per vedere se un modulo fosse inviato a questa pagina. Quindi prima cosa che andremo da fare è andare al resto. E stiamo andando a rendere il modulo di registrazione. Così il modulo di registrazione sta andando Per rispondere alla register.php. E che cosa sta andando per inviare? E 'intenzione di inviare un nome utente che la utente sta per compilare, una password, e una conferma - la password digitata nuovamente. Così ora quando quella forma viene registrata register.php ci eseguiamo questo caso. Guardando a questo se, siamo i primi andando a convalidare l'input. Vogliamo fare in modo che il nome utente e la password non erano vuoti e che la conferma effettivamente corrisponde alla password. Una volta che abbiamo verificato che possiamo effettivamente registrare l'utente. Che cosa vuol dire? Beh, vogliamo inserire la utente nel nostro database. Ed è così che lo faremo. Quindi andremo ad inserire nel utenti tabella il nome utente campi, hash, e denaro contante. Il valore predefinito di denaro contante sta per essere 10.000. E stiamo andando a passare come username, nome utente, attraverso il super POST globale che è presentata dalla forma. E stiamo andando a crittografare la password. Quindi, se questo è riuscito, poi i risultati sarà non-falsa. Se non è riuscito, poi abbiamo Voglio scusarmi. Qualcosa è andato storto. E che cosa poteva andare storto? Beh, ci deve essere un nome utente univoco. E così la query avrebbe fallito se il nome utente già esisteva nella tabella. Quindi, ammesso che fosse un nome utente univoco, allora stiamo andando a interrogare per afferrare il ID di quell'utente. Ricordate che l'ID è incremento automatico. E così, se questo accade a fallire per qualche ragione, allora vogliamo chiedere scusa che non abbiamo potuto afferrare l'ID. Ma supponendo che non ha mancato, poi afferriamo l'ID da quello della query restituito, conservare che nella nostra sessione - quindi vogliamo accedere l'utente da parte di memorizzare l'ID della sessione super-globale, e, infine, reindirizzare al nostro portafoglio. E questo è tutto per il registro. Ora stiamo andando a passare al preventivo. Così preventivo sta per avere un set up molto simile. Vediamo qui che questo è il codice che stiamo andando da eseguire quando un modulo è inviato a questa pagina. Ma prima realtà abbiamo per rendere tale forma. Quindi, dare un'occhiata a forma di citazione, quali campi ci sono? Vediamo che tutti citazione ha è una sola casella di testo con il simbolo nome. E così quando la forma preventivo viene inviato a quote.PHP ora stiamo andando a eseguire questo codice. E l'unica variabile nella nostra POST super- globale sta per essere simbolo. Controlliamo che fare in modo che in realtà pubblicato il simbolo. E se così non fosse, diciamo che deve fornire un simbolo. Supponendo che hanno fornito un simbolo, guardiamo a quel simbolo. Ora ricordare che cerca fino potrebbe avere fallito poiché, beh, forse non era un simbolo valido per cominciare. Quindi, se questo look up return false, vogliamo chiedere scusa che il simbolo non è stato trovato. Una volta abbiamo trovato il simbolo, ora ci può rendere il modello quote.PHP. Che cosa assomiglia? Questo è solo andare in stampa che una quota di qualunque sia il nome scorte era vale qualunque sia il prezzo dell'azione è. Ora, perché usiamo questo htmlspecialchars funzionare? Questo perché il nome del titolo e il simbolo potrebbe effettivamente contenere speciale personaggi che non dovrebbe essere interpretato come HTML. Va bene, allora questo è tutto per la citazione. Ora vogliamo guardare index.php e di portafoglio. Ma prima abbiamo effettivamente bisogno di costruire la tabella portafogli. Ecco come stiamo andando a fare. Quindi, diamo uno sguardo alla struttura. E vediamo che i portafogli tavolo sta per avere un ID. Quindi, che sta per essere l'utente del ID che è l'inserimento delle azioni. Abbiamo un simbolo, che sta per essere il simbolo della società che siamo inserendo le azioni per. E poi le azioni è il numero di azioni che viene inserito. Quindi ricorda che per le specifiche pset, si precisa che ID e il simbolo - noi verifichiamo indici, ID e simbolo è la chiave primaria. Così un ID utente e il simbolo di accoppiamento dovrebbe apparire un solo tempo in questa tabella. Ora diamo un'occhiata al codice. Così ora index.php sta per afferrare tutti delle nostre informazioni portafoglio e visualizzare all'utente. Quindi in primo luogo, stiamo andando a prendere il denaro che l'utente ha attualmente dalla Tavolo in contanti. Ricordate, che la query è andando sempre per restituire un array di array. Quindi, anche se abbiamo selezionato solo contanti da una singola riga, abbiamo ancora bisogno di afferrare quel denaro indicizzando in Indice zeroth di righe e di afferrare il indice di liquidità. Così ora vogliamo selezionare tutte le informazioni dalla tabella portafogli che è rilevante per il momento utente connesso. Abbiamo ovviamente bisogno di confermare che che effettivamente riuscita, che abbiamo dovrebbe sempre fare ogni volta che ci interroghiamo. Una volta che abbiamo tutte queste informazioni, spec pset ci informa che siamo dovrebbe fare questo al fine di conservare bene tutte le informazioni contenute in questo posizioni array. Quindi stiamo ciclo su tutto il Informazioni portafoglio, cercando il magazzino associato ad ogni riga del Informazioni portafoglio, e quindi memorizzare nell'array posizione il nome, prezzo, azioni e simboli tutti associato a tale stock. E, infine, stiamo andando a rendere portfolio.PHP, passando per un importo di denaro contante al momento non abbiamo, il posizioni array che abbiamo appena costruito, e il titolo di questo La pagina che sarà portafoglio. Diamo uno sguardo a portfolio.PHP. E vediamo che la maggior interessante parte è questo ciclo. Quindi stiamo loop sulle posizioni matrice, creando un tavola, dove quel tavolo - stiamo popolando ogni riga con il informazioni che abbiamo messo dentro l' posizioni array. Ancora una volta, abbiamo bisogno di usare htmlspecialchars nel caso in cui questo simbolo o sul nome contenere caratteri HTML. E qui stiamo moltiplicando il prezzo e la quantità di azioni che abbiamo al fine di ottenere quanto questo è attualmente un valore per l'utente. E questo è tutto per il portafoglio. Ora daremo uno sguardo a vendere. Così sell sta per tornare al formato che abbiamo avuto in register.php. Vediamo che una forma sta per essere pubblicato a questa pagina. Ma prima, quando si carica la pagina, stiamo andando a fare questo. Così che cosa sta facendo questo? Beh, potremmo avere la pagina di vendita avere una casella di testo che l'utente entra in questo simbolo che vogliamo vendere. Ma stiamo andando ad essere un po 'più intelligente e stiamo andando ad avere un calo stabilisce che permette all'utente di selezionare simboli reali che già hanno. Quindi stiamo ottenendo portafoglio dell'utente. Stiamo andando a scegliere tra portafogli tutti i simboli che l'utente attualmente ha, attualmente utente connesso. Assicurarsi che che è riuscito. E ora stiamo andando a cappio sopra la restituito informazioni, basta afferrare ogni simbolo, e riporlo in questo array simboli. E ora stiamo andando a il rendering del modulo di vendita. Così la forma di vendita sta andando solo un menu a discesa, selezionare una. E ogni opzione nel modulo di vendita è andare in stampa appena fuori il simbolo che abbiamo preso dal Tavolo portafogli. Così la forma di vendita sta andando presentare torna a sell.PHP. Guardando sell.PHP, questo è il codice che sta per eseguire quando ci sottomettiamo a questa pagina. Vogliamo verificare che l'utente effettivamente inserito un simbolo. Ora, supponendo che hanno fatto - quindi ora vogliamo determinare quanti condivide l'utente è in realtà la vendita e quanto denaro l'utente dovrebbe ottenere per la vendita che molte azioni. Quindi noi afferriamo il numero di azioni l'utente ha per questo simbolo. Stiamo guardando in portafoglio per il dato utente e il simbolo dato. Ora assicuratevi che che in realtà restituita una riga. Perché se così non fosse, l'utente non effettivamente quel simbolo di vendere. Supponendo che essi hanno quel simbolo, vogliamo prendere il numero di azioni che hanno. Ed ora vogliamo cercare come tanto ogni azione vale la pena. Così abbiamo usato la funzione di guardare in alto. Stiamo cercando il valore del simbolo. Supponendo che il look up è riuscito, adesso stiamo andando ad aggiornare in realtà tutti le informazioni. Quindi vogliamo eliminare dalla portafogli le azioni che stiamo vendendo. Vogliamo aggiornare l'utente del quantità di denaro. E stiamo aggiornarlo per azioni volte il prezzo magazzino - così che è quanti soldi l'utente appena fatto. E ora vogliamo aggiornare la nostra storia. Quindi non abbiamo dato un'occhiata ad ancora al tavolo storia. Così torneremo a questo. Ora finalmente stiamo andando a reindirizzare tornare al portafoglio. Ora diamo uno sguardo a buy. Quindi, acquistare dovrebbe essere abbastanza simile a vendere. Vediamo che stiamo di nuovo andando controllare per vedere se siamo presentazione a questa pagina. Supponendo che non stiamo, siamo andando a caricare il modulo di acquisto. Così che cosa il modulo buy assomiglia? Vediamo qui è solo un normale formano che sta per presentare torna a buy.PHP. E sta andando ad avere un simbolo che l'utente immette il numero di azioni che l'utente vuole acquistare di quel simbolo, e il gioco è fatto. Così, quando ci sottomettiamo torna a buy.PHP, siamo ora di andare a eseguire questo codice. Abbiamo ancora una volta vogliamo confermare che l' utente ha immesso qualcosa di valido. Così qui stiamo facendo in modo che effettivamente inserito un simbolo. Qui stiamo facendo in modo che essi azioni effettivamente iscritti. E qui stiamo facendo in modo che essi inserito un numero intero di azioni, così non stanno cercando di acquistare azioni ABC. Ora vogliamo cercare il prezzo del simbolo così sappiamo quanti soldi ci devono sottrarre l'utente. Ora selezioneremo quanti soldi l'utente ha e fare in modo che effettivamente che è riuscito. Qui stiamo afferrando il denaro. E ora qui, stiamo facendo in modo che l'utente ha abbastanza denaro. Quindi, se il numero di azioni dell'utente vuole comprare volte il prezzo di ogni di tali azioni è superiore alla quantità di denaro che abbiamo, allora l' utente non può permettere. Supponendo che l'utente ha abbastanza denaro, ora vogliamo inserire nel portafoglio dell'utente. Beh, ci inseriamo nella all'utente di portafoglio se questo sembra essere il prima volta che l'utente sta acquistando quel particolare simbolo. Ma cosa succede se già accadono per avere qualche azione Apple? Bene, ora stiamo facendo uso del su duplicare istruzione di aggiornamento chiave. Quindi questo è il motivo per cui in precedenza abbiamo specificato che ID e simbolo dovrebbe essere un giunto chiave primaria, in modo che se cerchiamo di inserire un ID e simbolo che sono già lì, ci limiteremo a aggiorniamo il azioni per includere le nuove azioni che l'utente sta acquistando. Ora vogliamo aggiornare la quantità di denaro che l'utente disponga, poiché appena speso dei soldi per tali azioni. E, infine, ci aggiorniamo la tabella della cronologia di nuovo. Il che, ancora una volta, vedremo a in un secondo. E infine ci reindirizziamo tornare alla portfolio.PHP. Quindi, diamo uno sguardo a tabella della cronologia. Ora ricordate che la tabella la storia è dovrebbe tenere traccia di tutte le compra e vende che tutti gli utenti fanno, non solo il attuale numero di azioni che l' gli utenti hanno, che è ciò portafoglio è per. Quindi stiamo tenere traccia degli utenti che è di acquistare o vendere, se questa particolare operazione è un acquisto o una vendita, il simbolo che viene acquistati o venduti, il numero di azioni che stiamo acquisto o la vendita, l' prezzo di una singola azione che viene acquistato o venduto, e, infine, il tempo che tale acquisto o vendita si sta verificando. E questo è tutto della storia informazioni di cui abbiamo bisogno per tenere traccia dei. Così, quando abbiamo esaminato la vendita, abbiamo visto che siamo stati inseriamo nella storia vendere, come se stiamo acquistare o vendere, il timestamp corrente e la utente corrente, il simbolo che viene venduti, il numero di azioni che sono essere venduto, e il prezzo di lo stock in questo momento. Allo stesso modo, in vendita, sarà guardare quasi lo stesso. L'unica differenza è invece di vendita, stiamo comprando. Così nel vendere e comprare, stiamo inserendo in la tabella storie tutte le compra e vende che stanno accadendo. Quindi tutto history.PHP deve fare è afferrare le informazioni dalla storia tavolo, assicurarsi che riuscì, e rendere tali informazioni. Così guardando il modello history.PHP, le informazioni interessanti è proprio qui. Stiamo looping su tutto il operazioni, la stampa se questo era un acquistare o vendere, la formattazione di data e ora che abbiamo fatto questa transazione. Ricordate abbiamo bisogno di usare htmlspecialchars sulla Simbolo, per ogni evenienza. E, infine, il numero di formattazione azioni che sono stati acquistati e il prezzo di una sola azione in quel momento. E che visualizza tutta la storia informazioni di cui abbiamo bisogno. E questo è tutto per questa pset. Il mio nome è Rob, e questo era CS50 Finanza.