1 00:00:00,000 --> 00:00:03,000 [Powered by Google Translate] [Soluzione Problema Set 7] 2 00:00:03,000 --> 00:00:04,400 [Zamyla Chan] [Harvard University] 3 00:00:04,400 --> 00:00:07,640 [Questo è CS50] [CS50.TV] 4 00:00:07,640 --> 00:00:12,090 >> Ciao a tutti, e benvenuti a Walkthrough 7, CS50 Finanza. 5 00:00:12,090 --> 00:00:15,090 Ora siamo ufficialmente fatto con tutti i pset in CS50, 6 00:00:15,090 --> 00:00:19,380 e siamo appena lasciato con un altro che sta per essere una implementazione divertente 7 00:00:19,380 --> 00:00:23,770 di un sito web in cui gli utenti possono accedere a CS50 Finanza 8 00:00:23,770 --> 00:00:25,830 e comprare e vendere azioni. 9 00:00:25,830 --> 00:00:32,280 >> Oggi, stiamo andando ad avere un paio di strumenti a nostra disposizione. 10 00:00:32,280 --> 00:00:34,320 Stiamo per parlare di autorizzazioni. 11 00:00:34,320 --> 00:00:36,380 Ogni volta che si dispone di una cartella web, 12 00:00:36,380 --> 00:00:40,800 si sta andando a voler consentire agli utenti di eseguire alcuni file 13 00:00:40,800 --> 00:00:42,500 ma anche appena letto gli altri, 14 00:00:42,500 --> 00:00:45,150 quindi dovremo esaminare i permessi e come impostare quelli. 15 00:00:45,150 --> 00:00:49,630 Quindi stiamo andando a guardare in PHP, HTML e il codice SQL. 16 00:00:49,630 --> 00:00:51,990 >> In primo luogo, le autorizzazioni. 17 00:00:51,990 --> 00:00:56,060 Quando sei nel terminale in una determinata directory, 18 00:00:56,060 --> 00:01:00,430 allora ciò che si vuole fare è che si desidera eseguire il comando chmod. 19 00:01:00,430 --> 00:01:03,750 Questo è seguito da lettere o numeri 20 00:01:03,750 --> 00:01:08,100 corrispondente a quello che, fondamentalmente, che il mondo a vedere, 21 00:01:08,100 --> 00:01:09,830 ti a vedere, ecc 22 00:01:09,830 --> 00:01:13,350 Ad esempio, ogni volta che si dispone di una cartella, 23 00:01:13,350 --> 00:01:15,560 poi si vuole quella cartella essere eseguibile da tutti che lo vede, 24 00:01:15,560 --> 00:01:19,500 così quello che si potrebbe fare è è possibile eseguire il comando chmod a + x 25 00:01:19,500 --> 00:01:21,050 e poi il nome della cartella. 26 00:01:21,050 --> 00:01:28,110 Quando si dispone di un file, ad esempio file CSS o file immagine - 27 00:01:28,110 --> 00:01:33,060 come JPEG e bitmap, cose del genere, o altri codici JavaScript - 28 00:01:33,060 --> 00:01:36,440 si vuole che per essere leggibile da tutti, 29 00:01:36,440 --> 00:01:39,880 Allora quello che fai è è possibile utilizzare il carattere jolly - 30 00:01:39,880 --> 00:01:41,650 che è un asterisco - 31 00:01:41,650 --> 00:01:46,190 per indicare fondamentalmente nella cartella CSS - tutto in quella cartella - 32 00:01:46,190 --> 00:01:48,740  Io vado a dire che che sta per essere leggibile da tutti. 33 00:01:48,740 --> 00:01:54,220 Con le autorizzazioni, quando usiamo le lettere, 34 00:01:54,220 --> 00:01:57,610 possiamo anche usare numeri al posto. 35 00:01:57,610 --> 00:02:00,900 Quindi, vedete che alla fine quando si desidera qualcosa in eseguibile - 36 00:02:00,900 --> 00:02:02,810 che è rappresentata dal numero 1 - 37 00:02:02,810 --> 00:02:08,340 qualcosa che deve essere leggibile è il numero 4 e poi - 38 00:02:08,340 --> 00:02:10,590 scrivibile è il numero 2 - 39 00:02:10,590 --> 00:02:13,670 e quindi in sostanza quando si vuole una combinazione di questi, poi vengono aggiunti. 40 00:02:13,670 --> 00:02:15,860 Se volete qualcosa di essere leggibile, scrivibile ed eseguibile, 41 00:02:15,860 --> 00:02:21,970 allora si dovrebbe aggiungere fino 4, 2, e 1 e che vuoi dare a 7, 42 00:02:21,970 --> 00:02:26,230 allora ogni volta che si dispone di una cartella che si desidera che, per essere eseguibile da tutti - 43 00:02:26,230 --> 00:02:31,380 così come di lettura e scrittura - poi fai che il 7, 1, 1. 44 00:02:31,380 --> 00:02:38,140 Sarebbe 7 per voi, quindi 1 per le altre persone. 45 00:02:38,140 --> 00:02:42,870 Quando hai le specifiche, sarà in realtà specificare quali cartelle e quali file 46 00:02:42,870 --> 00:02:45,040 devono essere chmod-ed in particolare. 47 00:02:45,040 --> 00:02:47,920 Per esempio, quando si dispone di cartelle - questi sono 7-1-1 - 48 00:02:47,920 --> 00:02:52,690 quando si hanno immagini o HTML, CSS, JavaScript, 49 00:02:52,690 --> 00:02:55,870 poi quelli stanno per essere 6, 0, 4 - o 6, 4, 4 - 50 00:02:55,870 --> 00:03:00,030 e poi i file PHP saranno 6, 0, 0. 51 00:03:00,030 --> 00:03:04,940 L'idea alla base è che gli utenti non dovrebbero effettivamente vedere il codice PHP, 52 00:03:04,940 --> 00:03:08,370 ma solo essere in grado di vedere l'output. 53 00:03:08,370 --> 00:03:11,030 >> Fantastico! Spostamento in PHP. 54 00:03:11,030 --> 00:03:18,850 Semplicemente, ogni volta che si desidera un file PHP, il suffisso del file è. Php. 55 00:03:18,850 --> 00:03:22,000 È inoltre possibile combinare HTML con codice PHP. 56 00:03:22,000 --> 00:03:24,880 Se si dispone di un file HTML, per esempio, 57 00:03:24,880 --> 00:03:32,520 allora si può racchiudere con l'angolo a sinistra, punto interrogativo, php - 58 00:03:32,520 --> 00:03:39,320 inserire il codice php - e chiudere che con un altro punto interrogativo e di un angolo retto. 59 00:03:39,320 --> 00:03:45,020 Le variabili in PHP sono molto più facili da gestire rispetto alle variabili in C. 60 00:03:45,020 --> 00:03:50,310 Qualsiasi variabile inizia proprio con il simbolo del dollaro di fronte ad essa, e sono debolmente tipizzato. 61 00:03:50,310 --> 00:03:53,470 Ciò significa che non c'è bisogno di preoccuparsi di impostare qualcosa 62 00:03:53,470 --> 00:03:55,020 uguale a una stringa o un numero intero. 63 00:03:55,020 --> 00:03:57,710 Si può semplicemente dire, questo è il mio nome della variabile 64 00:03:57,710 --> 00:04:00,390 e allora questo è il suo valore, 65 00:04:00,390 --> 00:04:03,280 in modo che sarà più facile da affrontare lì. 66 00:04:03,280 --> 00:04:08,220 >> Un'altra cosa è che PHP permette di utilizzare gli array associativi. 67 00:04:08,220 --> 00:04:11,330 Si può semplicemente definire un array, come si farebbe in C 68 00:04:11,330 --> 00:04:14,900 dicendo, segno del dollaro-il nome del tuo array è uguale, 69 00:04:14,900 --> 00:04:22,600 e poi in parentesi quadre hanno fondamentalmente solo l'elenco dei valori di tutti gli elementi della matrice. 70 00:04:22,600 --> 00:04:27,160 Ma, in PHP quello che si può anche fare è specificare sostanzialmente - 71 00:04:27,160 --> 00:04:31,050 è un po 'come una funzione di hash. 72 00:04:31,050 --> 00:04:34,410 È possibile specificare l'indice - che cosa avete intenzione di chiamarlo - 73 00:04:34,410 --> 00:04:37,030 e che corrisponde ad un valore. 74 00:04:37,030 --> 00:04:42,880 Se effettivamente passare a = 1, b = 2, c = 3, 75 00:04:42,880 --> 00:04:50,820 poi l'array a un indice vuoi dare a 1. 76 00:04:50,820 --> 00:04:56,600 Questo pset vi riscalderà con un po 'di PHP in una sezione di domande, 77 00:04:56,600 --> 00:04:59,240 e poi tuffarsi in CS50 Finanza. 78 00:04:59,240 --> 00:05:02,650 >> Abbiamo un paio di - abbiamo alcune funzionalità, in fondo, 79 00:05:02,650 --> 00:05:05,130 di attuare in questo sito. 80 00:05:05,130 --> 00:05:10,440 Vogliamo consentire agli utenti di registrarsi nel nostro sito web con un nome utente e una password. 81 00:05:10,440 --> 00:05:13,670 Vogliamo permettere loro di cercare un preventivo, 82 00:05:13,670 --> 00:05:19,330 e poi ci sarebbe stampare il nome di tale offerta e il prezzo attuale che è a. 83 00:05:19,330 --> 00:05:26,830 Vogliamo permettere loro di vedere un portafoglio di tutte le azioni che hanno acquistato finora. 84 00:05:26,830 --> 00:05:34,240 Vogliamo anche per consentire loro di acquistare azioni e li vendono. 85 00:05:34,240 --> 00:05:37,540 E poi finalmente, vogliamo permettere loro di vedere la storia 86 00:05:37,540 --> 00:05:39,490 di tutte le operazioni che hanno fatto. 87 00:05:39,490 --> 00:05:41,540 Poi, finalmente, dopo aver realizzato tutto questo, 88 00:05:41,540 --> 00:05:45,110 poi sei libero di implementare una caratteristica in più. 89 00:05:45,110 --> 00:05:46,610 Andremo in quelle. 90 00:05:46,610 --> 00:05:51,330 Questi possono essere sia consentendo agli utenti di ottenere denaro extra mediante il deposito di denaro extra, 91 00:05:51,330 --> 00:05:54,550 o si potrebbe consentire loro di modificare la propria password, o qualcosa del genere, 92 00:05:54,550 --> 00:06:00,590 mandarle via email una ricevuta quando acquistare o vendere un titolo. 93 00:06:00,590 --> 00:06:05,370 C'è un elenco limitato di caratteristiche che è possibile farsi realizzare, 94 00:06:05,370 --> 00:06:08,340 quindi questo è l'ultimo lì. 95 00:06:08,340 --> 00:06:13,430 >> Poiché si tratta di un sito web, voi ragazzi hanno anche un sacco di libertà per personalizzarlo. 96 00:06:13,430 --> 00:06:20,960 Facciamo fornire po 'di codice CSS, ma tu sei sicuramente libero di modificarlo, 97 00:06:20,960 --> 00:06:26,680 farlo sembrare più bello, ma alla base si tratta di una funzionalità di base 98 00:06:26,680 --> 00:06:30,310 in modo da fare sempre riferimento alle specifiche di quello che hai veramente bisogno di includere lì. 99 00:06:30,310 --> 00:06:39,940 In seguito le specifiche, abbiamo intenzione di utilizzare l'apparecchio come un server. 100 00:06:39,940 --> 00:06:43,910 E 'intenzione di ospitare il nostro sito web per noi, sul proprio server locale. 101 00:06:43,910 --> 00:06:49,750 Se si seguono queste istruzioni e decomprimere il codice pset 7 Distribuzione 102 00:06:49,750 --> 00:06:53,500 nel vostro host virtuale / cartella locale di accoglienza, 103 00:06:53,500 --> 00:07:02,470  allora si può solo visitare http://localhost/ in Google Chrome all'interno dell'apparecchio, 104 00:07:02,470 --> 00:07:09,120 e quindi si raggiungerebbe il codice in cui hai scritto pset 7. 105 00:07:09,120 --> 00:07:14,490 >> Pset 7 viene fornito con un mucchio di codice di distribuzione, 106 00:07:14,490 --> 00:07:18,330 e si spera we've - attraverso tutti i pset prima di questo - 107 00:07:18,330 --> 00:07:21,700 ci ha abituati a leggere tramite il codice di distribuzione, 108 00:07:21,700 --> 00:07:25,650 capire quali funzioni sono già previste, e di come potremmo essere in grado di utilizzare 109 00:07:25,650 --> 00:07:29,470 questi e le altre funzioni che stiamo andando a essere di applicazione. 110 00:07:29,470 --> 00:07:31,570 In questo caso, ci sono 3 cartelle. 111 00:07:31,570 --> 00:07:36,350 Abbiamo una cartella HTML, include una cartella e una cartella dei modelli. 112 00:07:36,350 --> 00:07:40,630 Quello che stiamo andando a fare con questo pset è una specie di separare il pensiero - 113 00:07:40,630 --> 00:07:45,580 il pensiero di programmazione - del codice PHP con l'attuale aspetto visivo. 114 00:07:45,580 --> 00:07:52,690 Avremo un file PHP che fa tutto il pensiero, si legge nel database, 115 00:07:52,690 --> 00:07:55,620 stampa le cose, è se le dichiarazioni - cose del genere - 116 00:07:55,620 --> 00:08:02,140 e poi che ti passare i dati nel nostro file di modello - o file template.php. 117 00:08:02,140 --> 00:08:05,710 Quello che voglio fare è leggere i dati e poi lo stampa. 118 00:08:05,710 --> 00:08:09,550 >> Siamo in grado di trattare i modelli come "muto", in quanto in realtà non li vogliono 119 00:08:09,550 --> 00:08:12,370 di fare un sacco di lavoro nel calcolo le cose. 120 00:08:12,370 --> 00:08:16,330 Vogliamo che i nostri controller per farlo. 121 00:08:16,330 --> 00:08:21,610 Un po 'su questo - diamo uno sguardo ad alcune del codice di distribuzione. 122 00:08:21,610 --> 00:08:28,250 Qui abbiamo il nostro file index.html, ed è quasi vuoto. 123 00:08:28,250 --> 00:08:34,429 In sostanza ciò che fa - dice, bene, ho intenzione di richiedere il file configuration.php. 124 00:08:34,429 --> 00:08:40,120 Noi non vediamo che proprio lì, ma è fondamentalmente chiamando il file configuration.php, 125 00:08:40,120 --> 00:08:42,240 ed eseguire tale. 126 00:08:42,240 --> 00:08:45,130 Dopo lo fa, sta andando a rendere il portafoglio. 127 00:08:45,130 --> 00:08:49,310 Rendering è una funzione, quindi ogni volta che siamo in un controllore, 128 00:08:49,310 --> 00:08:56,490 chiameremo render, faremo di il file e quindi i dati che stiamo passando in, 129 00:08:56,490 --> 00:09:04,570 in modo che chiameremo in portfolio.php--tipo di passaggio in quanto i dati in modo che il portafoglio in grado di gestire questo. 130 00:09:04,570 --> 00:09:10,540 >> Ed ora, qui, abbiamo il nostro modulo login.php. 131 00:09:10,540 --> 00:09:17,540  Questo è il controller che si occupa della pratica Logging in 132 00:09:17,540 --> 00:09:29,090 Qui, controlla se un modulo è stato inviato a questo file e si occupa con la convalida della presentazione. 133 00:09:29,090 --> 00:09:31,990 Vedremo in questa funzione scusarsi. 134 00:09:31,990 --> 00:09:35,100 Quando si desidera stampare un messaggio di errore, 135 00:09:35,100 --> 00:09:39,550 usiamo scusiamo e che reindirizza l'utente a una pagina specifica 136 00:09:39,550 --> 00:09:42,530 che stampa il messaggio di errore specifico che ci indicano. 137 00:09:42,530 --> 00:09:47,860 Proseguendo, si interrogare il database - we'll entrare in più di questo in seguito. 138 00:09:47,860 --> 00:09:54,180 Poi si vede che qui, se un modulo non è stato presentato, quindi rende una forma. 139 00:09:54,180 --> 00:10:01,360 Ciò significa che va a login_form.php, quindi diamo un'occhiata a questo. 140 00:10:01,360 --> 00:10:09,400 >> Login.php è in realtà dove si vede la si occupano HTML con l'attuale aspetto visivo. 141 00:10:09,400 --> 00:10:15,130 Qui abbiamo un tag input per il nome utente, un ingresso per la password, 142 00:10:15,130 --> 00:10:16,630 così come un pulsante di invio. 143 00:10:16,630 --> 00:10:22,660 Questo è in realtà dove l'aspetto visivo e il modulo HTML sta per essere tenuto. 144 00:10:22,660 --> 00:10:27,550 Qui, si dice che sta per essere presentata da un certo metodo, chiamato post. 145 00:10:27,550 --> 00:10:30,190 Vedremo le differenze tra i metodi - 146 00:10:30,190 --> 00:10:33,240 inviare vs arrivare, c'è anche una cosa chiamata put - 147 00:10:33,240 --> 00:10:36,160 ci arriveremo in quei metodi più tardi, ma per l'interesse di questo pset, 148 00:10:36,160 --> 00:10:37,810 Vorrei consigliamo vivamente di usare il post. 149 00:10:37,810 --> 00:10:42,210 >> Sappiamo che, in fondo una volta che questo modulo viene inviato - 150 00:10:42,210 --> 00:10:44,650 da login_form.php-- 151 00:10:44,650 --> 00:10:50,850 poi andrà all'azione - login.php-- 152 00:10:50,850 --> 00:10:56,070 sostanzialmente passare tutti quei parametri di quelle forme in login.php. 153 00:10:56,070 --> 00:11:04,900 I risultati di tale modulo sono contenuti all'interno di questo array associativo messaggio. 154 00:11:04,900 --> 00:11:11,710 Gli indici dei diversi elementi della matrice posta 155 00:11:11,710 --> 00:11:15,290 sono esattamente quello che si specifica qui. 156 00:11:15,290 --> 00:11:19,240 Lei dice che il nome di questo ingresso è nome utente. Il nome di questo è la password. 157 00:11:19,240 --> 00:11:26,840 Allo stesso modo, si vede il nome utente come l'indice della matrice associativa lì. 158 00:11:26,840 --> 00:11:35,110 Se andiamo alla cartella includes, abbiamo questo file funzioni che sta per essere molto utile. 159 00:11:35,110 --> 00:11:37,570 >> Tutte queste funzioni sono implementate per voi. 160 00:11:37,570 --> 00:11:41,870 Non è necessario implementare in particolare uno di questi te stesso, 161 00:11:41,870 --> 00:11:43,140 ma andranno a molto utile. 162 00:11:43,140 --> 00:11:49,450 Abbiamo scusiamo, che come ho detto prima, sarà essenzialmente stampare un messaggio di errore 163 00:11:49,450 --> 00:11:52,920 per voi su una specifica pagina - apology.php. 164 00:11:52,920 --> 00:11:59,890 Poi abbiamo discarica, quindi se chiami dump e poi passare nella variabile, 165 00:11:59,890 --> 00:12:04,930 poi vi porterà a una pagina che verrà visualizzata quella variabile per voi. 166 00:12:04,930 --> 00:12:09,950 Poi abbiamo il logout, che sarà essenzialmente terminare la sessione di un determinato utente di. 167 00:12:09,950 --> 00:12:12,240 Ricerca sta per essere utile. 168 00:12:12,240 --> 00:12:15,870 Dal momento che abbiamo a che fare con le citazioni e le scorte, si sta andando ad essere in grado - 169 00:12:15,870 --> 00:12:17,650 ed è sostanzialmente in tempo reale. 170 00:12:17,650 --> 00:12:21,380 Abbiamo bisogno di sapere che cosa questi valori azionari sono, 171 00:12:21,380 --> 00:12:28,210 così abbiamo la funzione di ricerca che si occupa di documentazione di Yahoo degli stock. 172 00:12:28,210 --> 00:12:37,700 Una volta che si cerca un certo simbolo di uno stock, tornerà a voi il simbolo di borsa 173 00:12:37,700 --> 00:12:41,480 così come il nome e il prezzo corrente di tale stock. 174 00:12:41,480 --> 00:12:44,330 Questa è la funzione di ricerca. 175 00:12:44,330 --> 00:12:48,350 >> Quindi abbiamo a che fare con mySQL, 176 00:12:48,350 --> 00:12:53,970 quindi abbiamo intenzione di voler eseguire determinate query sul nostro database SQL. 177 00:12:53,970 --> 00:12:58,890 Abbiamo a che fare domanda - al tipo di qualche astratto di che fuori. 178 00:12:58,890 --> 00:13:03,200 Stiamo andando a passare nella stringa tutta la nostra query SQL - 179 00:13:03,200 --> 00:13:05,360 e tutte le variabili che vanno in esso - 180 00:13:05,360 --> 00:13:09,480 e ciò che questo non è in realtà l'esecuzione che per noi. 181 00:13:09,480 --> 00:13:15,070 Invece di dover scrivere tutto questo fuori ogni volta che si desidera eseguire una query - 182 00:13:15,070 --> 00:13:21,740 da ottenere tutti i risultati di quella query - 183 00:13:21,740 --> 00:13:24,740 allora si può solo chiamare la funzione di interrogazione, e tornerà a voi - 184 00:13:24,740 --> 00:13:28,750 a seconda di ciò che si sta utilizzando per la tua ricerca - 185 00:13:28,750 --> 00:13:33,000 probabilmente una fila di tutti i risultati che corrispondono alla query o simili. 186 00:13:33,000 --> 00:13:34,690 Più su che più tardi però. 187 00:13:34,690 --> 00:13:41,200 >> Infine, abbiamo redirect che, come suggerisce il nome, si viene reindirizzati a una pagina diversa. 188 00:13:41,200 --> 00:13:46,280 E poi abbiamo render, che abbiamo intenzione di chiamare un paio di volte. 189 00:13:46,280 --> 00:13:51,010 Quando sei in un controller, è necessario chiamare il rendering nella pagina del modello 190 00:13:51,010 --> 00:13:55,390 e poi passare i valori che il modello verrà poi affrontare. 191 00:13:55,390 --> 00:13:59,540 Tali valori sono probabilmente andando a che fare con il tipo di output che si desidera 192 00:13:59,540 --> 00:14:01,050 per essere visualizzata sulla pagina del modello. 193 00:14:01,050 --> 00:14:09,370 Va bene. Queste sono le funzioni, e c'è molto più da questo codice di distribuzione. 194 00:14:09,370 --> 00:14:12,930 Vi incoraggio a passare attraverso questa ed esplorare da soli. 195 00:14:12,930 --> 00:14:17,050 Inoltre, la specifica probabilmente si cammina attraverso alcuni altri elementi del codice di distribuzione. 196 00:14:17,050 --> 00:14:27,360 Ecco un riassunto delle funzioni che si trovano in functions.php. 197 00:14:27,360 --> 00:14:31,710 >> Va bene. Il primo compito è quello di consentire agli utenti di registrarsi al sito. 198 00:14:31,710 --> 00:14:34,860 In questo momento, c'è un modulo di login sul sito web, 199 00:14:34,860 --> 00:14:40,080 e si sono dotati di alcuni utenti con password. 200 00:14:40,080 --> 00:14:42,130 È possibile utilizzare i nomi utente e accedere, 201 00:14:42,130 --> 00:14:45,140 ma si vuole permettere alle persone di fare i loro nomi propri 202 00:14:45,140 --> 00:14:47,390 e si aggiungono al sito. 203 00:14:47,390 --> 00:14:53,070 Il layout per la registrazione è abbastanza simile al modulo di login, 204 00:14:53,070 --> 00:14:56,340 tranne il nome utente non è pre-esistente, 205 00:14:56,340 --> 00:14:59,430 e l'utente deve anche fornire una nuova password, 206 00:14:59,430 --> 00:15:02,440 e quindi tipicamente abbiamo una conferma password. 207 00:15:02,440 --> 00:15:06,580 Una volta che l'utente immette tutti di tali informazioni, 208 00:15:06,580 --> 00:15:10,620 vogliamo aggiungere alla nostra database di utenti. 209 00:15:10,620 --> 00:15:12,970 Stiamo per avere un database - un database SQL - 210 00:15:12,970 --> 00:15:14,470 che stiamo andando fare riferimento. 211 00:15:14,470 --> 00:15:18,140 In tale database, avremo una tabella con tutti gli utenti 212 00:15:18,140 --> 00:15:23,850 contenente il nome utente, la password, e anche quanti soldi hanno. 213 00:15:23,850 --> 00:15:28,480 >> Nel registro, vogliamo permettere loro di inserire tali informazioni. 214 00:15:28,480 --> 00:15:29,740 Vogliamo mostrare che la forma. 215 00:15:29,740 --> 00:15:32,210 Vogliamo fare in modo che la loro password - 216 00:15:32,210 --> 00:15:37,490 che sono entrati, e poi anche che le password corrispondano quando lo inserisci due volte. 217 00:15:37,490 --> 00:15:42,240 Dopo tutto ciò che viene fatto - supponendo che tali errori vengono controllati - 218 00:15:42,240 --> 00:15:45,120 poi vogliamo aggiungere gli utenti al nostro database. 219 00:15:45,120 --> 00:15:49,630 Infine, una volta che ti sei registrato, è abbastanza conveniente se non è necessario eseguire nuovamente 220 00:15:49,630 --> 00:15:51,000 una volta effettuata la registrazione, 221 00:15:51,000 --> 00:15:54,000 in modo che andremo per accedere in al sito web se sono registrati con successo. 222 00:15:54,000 --> 00:16:00,360 >> Il primo compito è quello di visualizzare la forma, e questo è in realtà sta per essere - 223 00:16:00,360 --> 00:16:04,920 questo processo di registrazione intero sta per essere modellato molto da vicino dopo il login 224 00:16:04,920 --> 00:16:10,510 tranne che invece di login.php si potrebbe avere register.php. 225 00:16:10,510 --> 00:16:14,300 Invece di login_form.php--che è il modello - 226 00:16:14,300 --> 00:16:16,030 avrete registrare il modulo. 227 00:16:16,030 --> 00:16:19,680 Ti consigliamo di aggiungere un altro campo - un campo di conferma password - 228 00:16:19,680 --> 00:16:23,450 invece di uno solo il nome utente e una password. 229 00:16:23,450 --> 00:16:28,120 Avanti, vogliamo verificare se le password corrispondono o sono vuoti. 230 00:16:28,120 --> 00:16:38,560 Abbiamo il controller - register.php--che sta andando a prendersi cura di fare questi controlli. 231 00:16:38,560 --> 00:16:41,690 Quando un modulo viene inviato tramite il metodo post, 232 00:16:41,690 --> 00:16:47,050 allora tutte queste variabili sono contenute all'interno della matrice post. 233 00:16:47,050 --> 00:16:52,280 Si vuole fare in modo che la matrice valore posto a indice la password 234 00:16:52,280 --> 00:16:58,080 corrisponde all'elemento di conferma. 235 00:16:58,080 --> 00:16:59,410 Si vuole fare in modo che essi non sono vuote, 236 00:16:59,410 --> 00:17:01,650 e si vuole fare in modo che siano la stessa cosa. 237 00:17:01,650 --> 00:17:05,960 >> Una cosa comoda di PHP è che non abbiamo bisogno di usare le stringhe confrontare più. 238 00:17:05,960 --> 00:17:08,410 Possiamo usare l'uguale-uguale operatore 239 00:17:08,410 --> 00:17:11,470  verificare se le stringhe sono uguali tra loro. 240 00:17:11,470 --> 00:17:14,960 Per la gestione degli errori, ti consigliamo di chiedere scusa. 241 00:17:14,960 --> 00:17:17,150 Per scusarsi, è sufficiente chiamare la funzione 242 00:17:17,150 --> 00:17:21,910  e quindi specificare un tipo di messaggio che si desidera trasmettere. 243 00:17:21,910 --> 00:17:24,630 Quindi si desidera aggiungere l'utente al database. 244 00:17:24,630 --> 00:17:30,880 Fino ad ora, tutto quello che abbiamo fatto è solo scambi a livello locale con i risultati del modulo. 245 00:17:30,880 --> 00:17:33,940 Ora, vogliamo davvero per aggiungerli al nostro database. 246 00:17:33,940 --> 00:17:38,890 Per questo, per prima cosa vuole fare in modo che il nome utente non è vuoto. 247 00:17:38,890 --> 00:17:44,550 Capire che su un sito web, non si può avere più utenti con lo stesso nome utente, 248 00:17:44,550 --> 00:17:50,010 quindi ti consigliamo di fare in modo che quando si inserisce qualcosa nel database - 249 00:17:50,010 --> 00:17:56,650 inserire un nuovo utente - allora non si ottiene una collisione tra un pre-nome utente esistente 250 00:17:56,650 --> 00:17:59,150 e il nome utente che un utente sta cercando di presentare. 251 00:17:59,150 --> 00:18:02,250 Per questo, una volta che si esegue una query - 252 00:18:02,250 --> 00:18:08,760 l'inserimento di un determinato utente con la propria password e di un importo iniziale di cassa - 253 00:18:08,760 --> 00:18:15,140 una volta che si chiama query, quindi mySQL effettivamente restituire false se fallisce. 254 00:18:15,140 --> 00:18:21,050 >> La struttura di utenti è tale che l'utente è un valore unico, 255 00:18:21,050 --> 00:18:22,540 così non si può avere più di una. 256 00:18:22,540 --> 00:18:30,080 Quando si tenta di inserire una nuova riga con un nome utente già esistente, 257 00:18:30,080 --> 00:18:34,470 che sta per restituire false - come un booleano-valore falso. 258 00:18:34,470 --> 00:18:45,320 Una cosa difficile è che si desidera controllare se il risultato è il risultato della query. 259 00:18:45,320 --> 00:18:52,320 Se fallisce, allora ti consigliamo di controllare con la tripla-operatore di uguaglianza. 260 00:18:52,320 --> 00:18:55,420 Questo è in realtà andando a verificare se vi sia un errore o meno, 261 00:18:55,420 --> 00:19:02,760 considerando che, in un semplice uguale-uguale, sarebbe vero se la riga era vuota. 262 00:19:02,760 --> 00:19:06,000 Il risultato di un guasto se c'è una collisione tra il nome utente 263 00:19:06,000 --> 00:19:10,350 è il valore effettivo false. 264 00:19:10,350 --> 00:19:15,230 >> Ecco come si dovrebbe inserire in un database. 265 00:19:15,230 --> 00:19:19,220 Ecco la query che si sarebbe rigorosamente in SQL. 266 00:19:19,220 --> 00:19:25,750 Una cosa è che si può effettivamente andare al sito web che gestisce il database SQL 267 00:19:25,750 --> 00:19:31,070 e giocare lì inserendo manualmente sia i valori o righe. 268 00:19:31,070 --> 00:19:34,540 Il risultato sarà quello che è l'uscita SQL. 269 00:19:34,540 --> 00:19:38,870 È inoltre possibile eseguire comandi SQL all'interno del database 270 00:19:38,870 --> 00:19:42,200  e poi vedere che cosa la sintassi potrebbe essere, 271 00:19:42,200 --> 00:19:46,790 e poi tradurlo in funzione di query che abbiamo in pset 7, 272 00:19:46,790 --> 00:19:51,120 che sta per essere molto simile a le query che effettivamente eseguiti. 273 00:19:51,120 --> 00:19:54,570 >> Se volessi inserire una nuova riga nella mia tabella di utenti, 274 00:19:54,570 --> 00:20:01,240 allora vorrei precisare inserto in utenti, che è il nome del mio tavolo. 275 00:20:01,240 --> 00:20:06,870 Poi vorrei specificare i nomi delle colonne. 276 00:20:06,870 --> 00:20:13,230 Poi vorrei fornire i valori insieme con la mia password. 277 00:20:13,230 --> 00:20:17,080 Password in nostro tavolo gli utenti non vengono memorizzate come solo la stringa. 278 00:20:17,080 --> 00:20:19,440 Essi vengono memorizzati come versione cifrata, 279 00:20:19,440 --> 00:20:24,560 quindi ti consigliamo di eseguire la funzione cripta la password attuale, 280 00:20:24,560 --> 00:20:29,680 e che vi darà il tipo corretto di memoria per l'array utenti. 281 00:20:29,680 --> 00:20:34,960 L'esecuzione di questo si inserisce una nuova riga nella tabella degli utenti. 282 00:20:34,960 --> 00:20:39,020 >> Per affrontare con la funzione di interrogazione, 283 00:20:39,020 --> 00:20:43,100 prima in C abbiamo usato il segno di percentuale come segnaposto. 284 00:20:43,100 --> 00:20:47,670 Analogamente, lo stesso concetto di un segnaposto applica qui. 285 00:20:47,670 --> 00:20:50,720 Con la query è necessario specificare l'intera query, 286 00:20:50,720 --> 00:20:55,510 tranne quando hai a che fare con le variabili come ingresso nella query, 287 00:20:55,510 --> 00:21:00,490 allora invece di effettivamente mettere dentro - come quando abbiamo avuto istruzioni printf in C. 288 00:21:00,490 --> 00:21:03,740 Ci avrebbe messo la stringa e poi hanno un segnaposto lì, e poi dopo ogni 289 00:21:03,740 --> 00:21:06,990 virgola, specificare quale variabile che abbiamo avuto. 290 00:21:06,990 --> 00:21:14,480 Qui, abbiamo intenzione di utilizzare il segno punto interrogativo come il nostro segnaposto 291 00:21:14,480 --> 00:21:21,670 e quindi passare in ciascuna variabile, rispettivamente in ordine, per i segnaposto - 292 00:21:21,670 --> 00:21:24,420 in cui queste variabili dovrebbe andare. 293 00:21:24,420 --> 00:21:29,470 Quindi, ecco, il primo punto interrogativo sarà sostituito dal nome utente reale 294 00:21:29,470 --> 00:21:33,610 quindi il punto interrogativo seconda la password. 295 00:21:33,610 --> 00:21:37,000 >> Poi, finalmente, una volta che li hai registrato e aggiunto al database, 296 00:21:37,000 --> 00:21:40,510 poi si vuole accedere al loro sito web. 297 00:21:40,510 --> 00:21:45,320 Abbiamo una specie di super-globale variabile di sessione chiamata. 298 00:21:45,320 --> 00:21:48,160 Sessione prende un certo id, 299 00:21:48,160 --> 00:21:51,750 e che id corrisponde all'utente che è attualmente loggato 300 00:21:51,750 --> 00:21:56,380 Che cosa si vorrà fare è trovare quale sia il loro ID utente è 301 00:21:56,380 --> 00:22:03,710 e quindi impostare che id di sessione che come id dell'utente specifico. 302 00:22:03,710 --> 00:22:07,560 Una funzione che si desidera utilizzare: ecco un comando SQL 303 00:22:07,560 --> 00:22:15,150 che recupererà l'ultimo numero ID inserito dalla tabella. 304 00:22:15,150 --> 00:22:24,560 Poi righe chiamerà - it'll chiamare il id - it'll assegnare un nome al numero che restituisce. 305 00:22:24,560 --> 00:22:27,900 Sarà chiamano id. 306 00:22:27,900 --> 00:22:33,370 Ora che abbiamo finito di registrare, e possiamo andare avanti a citare. 307 00:22:33,370 --> 00:22:36,610 >> Cita permette all'utente di inserire il nome di un determinato, 308 00:22:36,610 --> 00:22:41,940 e poi tornerò le qualità di tale stock. 309 00:22:41,940 --> 00:22:48,410 Che cosa si vorrà fare qui è di avere un controller e alcuni modelli. 310 00:22:48,410 --> 00:22:53,380 In questo caso, stiamo andando ad avere un controller che sta andando a fare tutto il pensiero per noi. 311 00:22:53,380 --> 00:23:01,210 E 'intenzione di cercare il simbolo e poi passare i valori ai modelli che stampano fuori. 312 00:23:01,210 --> 00:23:03,060 Stiamo per avere 2 modelli qui. 313 00:23:03,060 --> 00:23:07,260 Stiamo per avere 1 modello che fornisce la forma in cui gli utenti stanno per 314 00:23:07,260 --> 00:23:09,920 inserire il nome del titolo - il nome della condivisione. 315 00:23:09,920 --> 00:23:16,030 Poi stiamo anche andando a voler un altro modello che visualizza tali valori. 316 00:23:16,030 --> 00:23:27,450 È possibile guardare in di accesso per un esempio di come si dovrebbe avere una forma che accetta l'input, 317 00:23:27,450 --> 00:23:30,060 tranne qui, vogliamo solo 1 campo. 318 00:23:30,060 --> 00:23:31,630 Non vogliamo un nome utente e un campo di password. 319 00:23:31,630 --> 00:23:37,110 Vogliamo solo 1 campo di testo che permette all'utente di inserire il nome di un determinato. 320 00:23:37,110 --> 00:23:40,110 Poi si desidera inviare i dati - una volta che avete guardato tale stock - 321 00:23:40,110 --> 00:23:45,550 a quote_form.php. 322 00:23:45,550 --> 00:23:50,780 Di ricerca restituirà il simbolo di un titolo, il nome, e un prezzo. 323 00:23:50,780 --> 00:23:53,910 Coloro che sono contenuti all'interno di un array associativo. 324 00:23:53,910 --> 00:24:01,390 Cercare la funzione di ricerca all'interno del functions.php per maggiori informazioni 325 00:24:01,390 --> 00:24:04,010 sui tipi di ritorno di quelli. 326 00:24:04,010 --> 00:24:08,520 >> Fantastico! Allora finalmente, ti consigliamo di visualizzare le informazioni sulle azioni. 327 00:24:08,520 --> 00:24:14,110 Ti consigliamo di visualizzare probabilmente - hai desidera accedere a queste variabili. 328 00:24:14,110 --> 00:24:17,610 Una volta che hai il prezzo in una variabile - 329 00:24:17,610 --> 00:24:20,860 così come il nome e il simbolo - 330 00:24:20,860 --> 00:24:25,550 allora ti consigliamo di visualizzare quelli nella vostra pagina del modello. 331 00:24:25,550 --> 00:24:31,540 Questo modello di pagina potrebbe essere chiamato show_quote.php o qualcosa del genere. 332 00:24:31,540 --> 00:24:39,660 La tua pagina quote.php renderebbe citazione spettacolo e quindi passare in tutti quei valori. 333 00:24:39,660 --> 00:24:47,170 Poi, nella pagina php, in realtà stampare quei valori all'aspetto HTML della pagina. 334 00:24:47,170 --> 00:24:53,800 Basta utilizzare la funzione di stampa e passare nel prezzo. 335 00:24:53,800 --> 00:24:57,990 Ci sono 2 modi - si può decidere di concatenare con l'operatore punto, 336 00:24:57,990 --> 00:25:02,230 o utilizzare un segnaposto. 337 00:25:07,580 --> 00:25:12,750 >> Gli utenti alla fine saranno acquistare e vendere azioni. 338 00:25:12,750 --> 00:25:18,450 Vogliamo permettere loro un modo di vedere tutti i titoli che attualmente hanno. 339 00:25:18,450 --> 00:25:21,350 Stiamo andando a chiamare il loro portafoglio. 340 00:25:21,350 --> 00:25:26,180 Portafoglio avrebbe, presumibilmente per ogni utente, contiene un gruppo di righe 341 00:25:26,180 --> 00:25:31,760 elenco del tipo di azione che hanno e quindi come molti di quelli che hanno. 342 00:25:31,760 --> 00:25:36,500 La nostra tabella esistente - in questo momento abbiamo una tabella di utenti nel nostro database. 343 00:25:36,500 --> 00:25:41,780 Che contiene nome di un utente e la loro password e quanti soldi hanno. 344 00:25:41,780 --> 00:25:50,390 Non c'è modo vero di memorizzare tutti i loro titoli all'interno di questo. 345 00:25:50,390 --> 00:25:58,010 Non è che possiamo inserire nuove colonne per ogni azione. 346 00:25:58,010 --> 00:26:03,650 Questa sarebbe una fila molto, molto a lungo perché abbiamo una quantità infinita 347 00:26:03,650 --> 00:26:06,200 dei tipi di titoli che si potrebbero avere. 348 00:26:06,200 --> 00:26:09,150 Così, invece quello che faremo è all'interno dello stesso database, 349 00:26:09,150 --> 00:26:15,000 avremo una tabella utenti, ma poi ci sarà anche un tavolo portafoglio. 350 00:26:15,000 --> 00:26:18,430 La tabella portafoglio sarà sicuramente collegata alla tabella degli utenti, 351 00:26:18,430 --> 00:26:24,600 ma invece la struttura della tabella portafoglio avrà le informazioni sulle azioni, 352 00:26:24,600 --> 00:26:27,780 il numero di azioni di tale archivio, l'utente ha 353 00:26:27,780 --> 00:26:31,620 di un utente così come il numero id particolare. 354 00:26:31,620 --> 00:26:34,620 Hai la tabella utenti, che ha un id e il nome utente, l'hash - 355 00:26:34,620 --> 00:26:40,130 che è la password, la password cifrata - 356 00:26:40,130 --> 00:26:42,130 e quindi la quantità di denaro che hanno. 357 00:26:42,130 --> 00:26:47,900 Il numero ID sarà legato al numero ID del portafoglio. 358 00:26:47,900 --> 00:26:52,490 Il portafoglio sarebbe solo il simbolo del titolo, nonché delle azioni - 359 00:26:52,490 --> 00:26:55,410 il numero di azioni di tale stock che l'utente ha. 360 00:26:55,410 --> 00:26:58,520 In quel tavolo portafoglio si sarebbe sostanzialmente 361 00:26:58,520 --> 00:27:03,760 tutte le azioni possedute da tutti gli utenti sul tuo sito. 362 00:27:03,760 --> 00:27:10,550 In seguito, specificare solo parti di un utente di certo - solo il loro portafoglio - 363 00:27:10,550 --> 00:27:15,360 si dovrebbe recuperare i valori dalla tabella del vostro portafoglio in modo tale che 364 00:27:15,360 --> 00:27:19,930 il numero ID è specifico per l'utente. 365 00:27:26,520 --> 00:27:34,890 >> Quando si visualizza il portafoglio, ti consigliamo di segnalare ciascuno dei titoli del portafoglio di un utente. 366 00:27:34,890 --> 00:27:41,670 Ti consigliamo di segnalare il numero di azioni e il valore attuale di tali azioni. 367 00:27:41,670 --> 00:27:45,950 Tale valore corrente di tali parti non è memorizzato nella tabella di portafoglio 368 00:27:45,950 --> 00:27:51,640 perché sta per essere aggiornato - al minimo - ogni giorno da Yahoo. 369 00:27:51,640 --> 00:27:58,550 Per ottenere queste informazioni, non è possibile fare riferimento che dalla query SQL. 370 00:27:58,550 --> 00:28:02,400 Quale funzione prevede che, per noi? Quale funzione avrà il prezzo? 371 00:28:02,400 --> 00:28:09,110 E 'di ricerca, in modo da utilizzare ricerca su un particolare simbolo vi darà un sacco di informazioni. 372 00:28:09,110 --> 00:28:13,710 Vi darà 3 pezzi di informazione - il nome, il simbolo, così come il prezzo. 373 00:28:13,710 --> 00:28:17,490 Una volta che un certo simbolo di ricerca, allora si può ottenere il prezzo, 374 00:28:17,490 --> 00:28:20,460 e quindi è possibile utilizzare il prezzo da visualizzare nel vostro portafoglio. 375 00:28:20,460 --> 00:28:26,190 >> Il portfolio dovrebbe anche visualizzare saldo corrente di cassa dell'utente. 376 00:28:26,190 --> 00:28:30,310 Tale campo viene memorizzato all'interno della vostra tabella utenti. 377 00:28:30,310 --> 00:28:33,400 Allora ricordando come stiamo praticamente dover - 378 00:28:33,400 --> 00:28:36,850 stiamo avendo diversi tipi di file PHP. 379 00:28:36,850 --> 00:28:40,160 Stiamo per avere un controller che sostanzialmente fa tutto il pensiero per voi. 380 00:28:40,160 --> 00:28:45,940 E poi abbiamo un modello in cui il modello si occupa di output dei dati. 381 00:28:45,940 --> 00:28:50,790 Bisogna pensare a quali variabili del controllore dovrà tenere trovi 382 00:28:50,790 --> 00:29:01,630 Se abbiamo a che fare con un portafoglio che trasmette ogni nome, il simbolo e il numero di parti, 383 00:29:01,630 --> 00:29:03,730 così come il prezzo corrente di un titolo, 384 00:29:03,730 --> 00:29:06,950 allora ti consigliamo di trovare un modo per passare sostanzialmente in - 385 00:29:06,950 --> 00:29:12,070 è possibile passare una matrice di valori che corrispondono a questo. 386 00:29:15,250 --> 00:29:24,360 >> Andiamo in un esempio di come è possibile recuperare tutti i titoli 387 00:29:24,360 --> 00:29:26,210 di proprietà di un utente particolare. 388 00:29:26,210 --> 00:29:31,400 Questo non ha a che fare - ancora - con il prezzo del titolo. 389 00:29:31,400 --> 00:29:33,520 Ciò dovrebbe fare è eseguire una query. 390 00:29:33,520 --> 00:29:37,070 Sarebbe ottenere il simbolo e le azioni da - 391 00:29:37,070 --> 00:29:42,770 Chiamo questa tabella, ma in questo caso, quale sarebbe? 392 00:29:42,770 --> 00:29:49,400 Qual è il nome della tabella che abbiamo a che fare con il simbolo che ha e condivide 393 00:29:49,400 --> 00:29:52,280 per un utente particolare? 394 00:29:52,280 --> 00:29:56,410 Si tratta di utenti o di portafoglio. 395 00:29:56,410 --> 00:29:57,820 Portfolio. 396 00:29:57,820 --> 00:30:03,220 Che questo sarebbe fare è portafoglio di query per i simboli e le quote di 397 00:30:03,220 --> 00:30:04,920 per un particolare utente. 398 00:30:04,920 --> 00:30:09,260 Ecco, dico, (Selezionare il simbolo, azioni da tbl - 399 00:30:09,260 --> 00:30:12,280 ma invece di tavolo, si sta andando a sostituire quella con il portafoglio. 400 00:30:12,280 --> 00:30:15,220 'Dove' è fondamentalmente la mia condizione. 401 00:30:15,220 --> 00:30:21,050 Sto dicendo che vogliono solo gli array associativi che corrispondono 402 00:30:21,050 --> 00:30:23,850  a questa condizione segue - id pari. 403 00:30:23,850 --> 00:30:27,600  Poi sto mettendo un segnaposto lì e poi id di sessione. 404 00:30:27,600 --> 00:30:36,720 Che questo sarebbe fare è dire che per ogni riga in righe. 405 00:30:36,720 --> 00:30:40,940 Questo è un modo pulito, invece di dover per impostare un ciclo for 406 00:30:40,940 --> 00:30:47,450 che scorre su tutti gli indici, poi in PHP si può avere un ciclo for-each. 407 00:30:47,450 --> 00:30:53,520 >> Se si dispone di un dato array, allora si può dire che ho intenzione di chiamare ogni elemento successivo - 408 00:30:53,520 --> 00:30:57,930 Vado a chiamare ogni elemento questo nome. 409 00:30:57,930 --> 00:31:02,780 Quindi, per ognuno di questi elementi, ho intenzione di chiamarli questo, 410 00:31:02,780 --> 00:31:04,500 allora posso farlo. 411 00:31:04,500 --> 00:31:10,370 In questo per ogni, si dispone di righe come la matrice reale, e ogni riga che si vuole chiamare riga. 412 00:31:10,370 --> 00:31:12,420 Ogni volta che si esegue il corpo, 413 00:31:12,420 --> 00:31:16,960 che andrà su e sarà aggiornare la riga all'elemento successivo in fila. 414 00:31:18,900 --> 00:31:25,260 >> Ora, in termini di acquisto di azioni, 415 00:31:25,260 --> 00:31:29,500 quello che vogliamo fare è ottenere il titolo che l'utente vuole acquistare 416 00:31:29,500 --> 00:31:35,300 e la quantità di azioni che l'utente vuole comprare, e poi - se vogliono - 417 00:31:35,300 --> 00:31:38,120 aggiungere che le azioni al loro portafoglio. 418 00:31:38,120 --> 00:31:40,310 Ovviamente, se stanno comprando qualcosa, che sta andando a diminuire 419 00:31:40,310 --> 00:31:43,520 la quantità di denaro che hanno, in modo che sta andando a diminuire il loro denaro. 420 00:31:43,520 --> 00:31:48,380 Stiamo andando a che fare con l'aggiornamento del portafoglio, nonché la tabella utenti, 421 00:31:48,380 --> 00:31:50,300 che contiene la cassa. 422 00:31:50,300 --> 00:31:54,920 Ma in primo luogo, è necessario per ottenere lo stock effettivo e la quantità di azioni che l'utente desidera. 423 00:31:54,920 --> 00:32:00,010 Per questo, avrete bisogno di un modulo HTML che chiederà per il simbolo dello stock 424 00:32:00,010 --> 00:32:03,360 che si desidera acquistare e il numero di azioni. 425 00:32:03,360 --> 00:32:08,300 Allora ti consigliamo di aggiungere. 426 00:32:08,300 --> 00:32:13,750 Ti consigliamo di selezionare certi valori. 427 00:32:13,750 --> 00:32:19,670 Abbiamo attraversato questo un po 'già, ma quando si sta cercando di ottenere alcune righe - 428 00:32:19,670 --> 00:32:22,020 recuperare alcune righe dalla tabella SQL, 429 00:32:22,020 --> 00:32:24,290 questa è la seguente sintassi. 430 00:32:24,290 --> 00:32:28,400 Hai selezionare, e quindi se si specifica una stella, 431 00:32:28,400 --> 00:32:31,830 che ti sostanzialmente riportare l'intero, intera riga per voi. 432 00:32:31,830 --> 00:32:36,890 Poi di nuovo, si ha la condizione in cui, e poi si specifica - 433 00:32:36,890 --> 00:32:39,990 Voglio solo il nome utente sia uguale alla mail-in, 434 00:32:39,990 --> 00:32:46,660 così sarà solo recuperare la riga in utenti che corrisponde alla mail-in. 435 00:32:46,660 --> 00:32:52,860 >> Quando un utente vuole aggiungere una quota di un portafoglio, 436 00:32:52,860 --> 00:32:54,400 è necessario verificare la presenza di alcuni errori. 437 00:32:54,400 --> 00:32:57,680 Si vuole fare in modo che l'utente può effettivamente permettersi il brodo, 438 00:32:57,680 --> 00:33:00,810 quindi ti consigliamo di controllare il loro denaro. 439 00:33:00,810 --> 00:33:05,810 Prima, abbiamo usato stella per recuperare una riga intera da una tabella SQL. 440 00:33:05,810 --> 00:33:08,930 Ma qui, si può in realtà solo specificare che io voglio solo 1 valore - 441 00:33:08,930 --> 00:33:10,080 Voglio solo contanti. 442 00:33:10,080 --> 00:33:17,970 Così qui, che sarebbe tornato il denaro per l'utente con il numero ID 1. 443 00:33:17,970 --> 00:33:25,940 Se un utente ha già acquistato un determinato titolo, ma poi compra più di detto stock, 444 00:33:25,940 --> 00:33:30,440 poi nel vostro portafoglio - non si vuole una linea separata, 445 00:33:30,440 --> 00:33:34,770 un'altra riga che contiene tale nuova transazione. 446 00:33:34,770 --> 00:33:37,950 In realtà si desidera aggiornare la quantità. 447 00:33:37,950 --> 00:33:42,530 Tutto ciò che sta cambiando veramente è la quantità di azioni che l'utente possiede. 448 00:33:42,530 --> 00:33:47,730 Se si utilizza la query INSERT INTO - quindi è sufficiente inserire nel vostro portafoglio tutti questi valori - 449 00:33:47,730 --> 00:33:51,710 l'utente numero ID e il simbolo dello stock che stanno comprando 450 00:33:51,710 --> 00:33:57,750 e le azioni, allora dovrete anche specificare, beh, se mi imbatto in una chiave duplicata - 451 00:33:57,750 --> 00:34:00,750 in questo caso, il duplicato della chiave non è solo id dell'utente, ma anche il simbolo stock - 452 00:34:00,750 --> 00:34:08,340 perché si può avere solo - la nostra premessa è che si può avere solo 1 riga 453 00:34:08,340 --> 00:34:10,699  che corrisponde a uno specifico simbolo. 454 00:34:10,699 --> 00:34:13,659 Così, sulla chiave duplicata - se si esegue in una collisione lì - 455 00:34:13,659 --> 00:34:18,520 si sta solo andando ad aggiornare azioni per il suo nuovo valore. 456 00:34:18,520 --> 00:34:23,290 Azioni pari a tutto quello che avevamo prima, più il numero di azioni che l'utente sta acquistando. 457 00:34:27,790 --> 00:34:31,090 >> Ora che abbiamo aggiornato la tabella di portafoglio, 458 00:34:31,090 --> 00:34:34,730 dobbiamo provare a aggiornare contanti dell'utente. 459 00:34:34,730 --> 00:34:40,300 Questo è nella tabella utenti, in modo che andremo ad essere sottraendo una certa quantità di denaro. 460 00:34:40,300 --> 00:34:46,270 Presumibilmente, sta andando in contanti pari a meno di cassa - e quindi una certa quantità. 461 00:34:46,270 --> 00:34:50,560 Per aggiornare il denaro, si farebbe - 462 00:34:50,560 --> 00:34:55,699 se volevo portare via i soldi dalla posta-in, quindi vorrei eseguire questa query - 463 00:34:55,699 --> 00:35:00,220 "Utenti" di aggiornamento e quindi impostare la colonna denaro in contanti - 464 00:35:00,220 --> 00:35:07,300 >> Vorrei rimuovere dollari 9999 solo se il nome utente è uguale alla posta-in. 465 00:35:07,300 --> 00:35:12,020 Ma, in questo caso, non vogliamo sottrarre 9999 specificamente. 466 00:35:12,020 --> 00:35:17,610 Vogliamo precisare, beh, vogliamo sottrarre il prezzo corrente del titolo 467 00:35:17,610 --> 00:35:22,400 moltiplicato per il numero di azioni che stanno comprando. 468 00:35:25,260 --> 00:35:29,910 >> Ora abbiamo permesso loro di vedere tutti i titoli che hanno, 469 00:35:29,910 --> 00:35:33,080 nonché acquistare più azioni. 470 00:35:33,080 --> 00:35:37,430 Abbiamo inoltre già permesso loro di cercare il prezzo corrente di un titolo. 471 00:35:37,430 --> 00:35:40,030 Qui vogliamo consentire loro di venderli. 472 00:35:40,030 --> 00:35:42,160 Per prima cosa desidera visualizzare in fondo - 473 00:35:42,160 --> 00:35:45,270 vogliamo consentire loro di vedere tutti i titoli che hanno, 474 00:35:45,270 --> 00:35:53,170 ecco si desidera visualizzare tutte le righe dal portafoglio. 475 00:35:53,170 --> 00:35:56,650 Se scelgono di vendere un determinato titolo, 476 00:35:56,650 --> 00:35:59,140 poi andremo a supporre che essi vogliono vendere tutto. 477 00:35:59,140 --> 00:36:04,350 Essi non sono solo andando a vendere il 50% delle loro azioni, che stanno andando a vendere il 100% di esso. 478 00:36:04,350 --> 00:36:08,630 Possiamo solo cancellare l'intera riga di portafoglio. 479 00:36:08,630 --> 00:36:17,520 Siamo in grado di eliminare le azioni della determinato utente del simbolo certa. 480 00:36:17,520 --> 00:36:21,410 C'è la sintassi per questo. 481 00:36:21,410 --> 00:36:22,710 >> Poi vogliamo aggiornare il denaro. 482 00:36:22,710 --> 00:36:30,930 Stiamo per essere aggiunta in denaro pari all'importo delle azioni che stanno vendendo 483 00:36:30,930 --> 00:36:34,640 moltiplicato per il prezzo corrente del titolo - 484 00:36:34,640 --> 00:36:38,610 non è il prezzo a cui l'hanno comprato, ma il prezzo a cui sono - 485 00:36:38,610 --> 00:36:40,500 il prezzo corrente quando lo stanno vendendo. 486 00:36:40,500 --> 00:36:43,660 Per fare riferimento al prezzo corrente di un titolo, 487 00:36:43,660 --> 00:36:49,120 si desidera utilizzare di ricerca, che vi darà il prezzo di un titolo 488 00:36:50,030 --> 00:36:52,650 al momento attuale. 489 00:36:52,650 --> 00:36:55,930 >> Ora ci ritroviamo con la storia, 490 00:36:55,930 --> 00:37:00,170 cui si desidera consentire a un utente di tenere traccia di tutte le loro operazioni - 491 00:37:00,170 --> 00:37:03,040 vuole vedere ogni volta che hanno venduto qualcosa, ogni volta che ha acquistato uno stock. 492 00:37:03,040 --> 00:37:08,870 Vogliamo specificare il momento in cui hanno fatto che, oltre a quanti hanno acquistato 493 00:37:08,870 --> 00:37:11,650 e ciò che lo stock era. 494 00:37:11,650 --> 00:37:17,800 Non abbiamo alcuna corrente, struttura esistente che specifica che? 495 00:37:17,800 --> 00:37:25,230 Bene, abbiamo portafoglio che visualizza i titoli che il numero di un utente 496 00:37:25,230 --> 00:37:26,470 per una determinata quota. 497 00:37:26,470 --> 00:37:34,060 Ma stiamo strutturando portafoglio nel modo in cui si aggiorna quando compriamo di più, 498 00:37:34,060 --> 00:37:40,190 mentre la storia dovrebbe - se si compra Apple, 10 parti di esso, e poi in seguito vendere 5, 499 00:37:40,190 --> 00:37:44,040 allora si vorrebbe vedere quelle separatamente come azioni separate, righe separate. 500 00:37:44,040 --> 00:37:48,520 Considerando che l'azione di visualizzare che nel nostro portfolio table 501 00:37:48,520 --> 00:37:52,540 sarebbe solo un aggiornamento di quella riga particolare, 502 00:37:52,540 --> 00:37:55,740  quindi probabilmente stai andando a voler un altro tavolo. 503 00:37:55,740 --> 00:38:00,460 Nella nostra banca dati, abbiamo la nostra tabella degli utenti, abbiamo il nostro portfolio table, 504 00:38:00,460 --> 00:38:04,090 e adesso ci vorrà probabilmente una tabella cronologica. 505 00:38:04,090 --> 00:38:08,070 Questa tabella la storia può tenere traccia della data corrente, 506 00:38:08,070 --> 00:38:12,800 nonché il simbolo di borsa particolare, così come il numero di azioni, 507 00:38:12,800 --> 00:38:15,410 e poi che l'azione che è - 508 00:38:15,410 --> 00:38:18,800 se si stavano comprando le azioni o se li stavano vendendo. 509 00:38:20,660 --> 00:38:25,720 >> Per far fronte a oggi, ci sono un paio di modi in cui si può fare questo. 510 00:38:25,720 --> 00:38:28,820 PHP ha un modo di tenere traccia della data, che è possibile cercare da soli. 511 00:38:28,820 --> 00:38:33,990 In SQL è anche possibile utilizzare né ora o data e ora corrente. Dipende da voi. 512 00:38:33,990 --> 00:38:40,720 Basta fare in modo che ogni volta che un utente acquista o vende, sarai aggiornato il loro denaro 513 00:38:40,720 --> 00:38:46,750 nella tabella utenti, è Aggiorneremo le righe nella tabella portafogli, 514 00:38:46,750 --> 00:38:50,900 allora si dovrà anche essere l'aggiornamento della storia, 515 00:38:50,900 --> 00:38:56,260 quindi ci saranno 3 query SQL separati sarai chiamata lì. 516 00:38:58,640 --> 00:39:01,530 Abbiamo un sacco di funzionalità ora. 517 00:39:01,530 --> 00:39:10,600 >> Solo un paio di promemoria che nel tuo file di indice, si desidera collegare ad almeno il tuo - 518 00:39:10,600 --> 00:39:15,550 ma ti consigliamo di consentire a un utente di collegare alla pagina buy.php. 519 00:39:15,550 --> 00:39:23,560 Che sta per consentire a un utente - buy.php è il controller, in modo che sta andando a uno 520 00:39:23,560 --> 00:39:29,170 inviare a - che sta per inviare al modulo che ti permette di guardare le cose. 521 00:39:29,170 --> 00:39:34,420 Abbiamo la storia. Abbiamo il logout, ottenere un preventivo e poi vendere. 522 00:39:34,420 --> 00:39:37,350 Questi sono al minimo ciò che si vuole mostrare. 523 00:39:37,350 --> 00:39:43,640 Per quanto riguarda il portafoglio, il portafoglio è realmente visibile nella pagina di indice. 524 00:39:43,640 --> 00:39:52,050 Se vai all'indice, qui vediamo che rende portfolio.php 525 00:39:52,050 --> 00:40:00,050 e passa in array associativo - in pratica il titolo è uguale a portafoglio. 526 00:40:00,050 --> 00:40:02,610 Quindi, questo è il controllore. 527 00:40:02,610 --> 00:40:08,000 Se andiamo al modello di portfolio.php, 528 00:40:08,000 --> 00:40:18,060 poi tutto quello che ha è - mostra fondamentalmente un quadro che dice, oh, questo sito è in fase di allestimento. 529 00:40:18,060 --> 00:40:23,810 Più tardi, una volta che si passa a - hai essere di passaggio di informazioni sostanzialmente più specifico. 530 00:40:23,810 --> 00:40:27,400 Invece di solo il titolo, probabilmente sarete passaggio in più cose. 531 00:40:27,400 --> 00:40:32,010 Una volta che hai quei valori, allora portfolio.php può trattare con quei valori 532 00:40:32,010 --> 00:40:34,490 e li stampa in qualsiasi tipo di ordine. 533 00:40:34,490 --> 00:40:41,660 >> Una volta implementato tutti coloro, è inoltre necessario implementare funzionalità di altri 1. 534 00:40:41,660 --> 00:40:44,890 Questo può essere che permette a un utente di modificare la propria password, 535 00:40:44,890 --> 00:40:50,110 per reimpostare la password, se l'hanno dimenticato - così per la reimpostazione della password, quindi 536 00:40:50,110 --> 00:40:54,560 probabilmente anche voler modificare registrare in modo che permette loro di specificare una e-mail, 537 00:40:54,560 --> 00:40:57,910 quindi se si dimentica la password, poi si può ottenere che. 538 00:40:57,910 --> 00:41:02,870 Si può probabilmente inserire nel proprio nome utente, quindi una e-mail sarà inviata a loro 539 00:41:02,870 --> 00:41:06,180 con un link per poter reimpostare la propria password. 540 00:41:06,180 --> 00:41:10,980 Si può avere qualcosa che permette agli utenti di ottenere le ricevute 541 00:41:10,980 --> 00:41:12,380 ogni volta che acquistare o vendere qualcosa, 542 00:41:12,380 --> 00:41:19,910 e poi finalmente, permettere loro di aggiungere denaro al loro sito web. 543 00:41:19,910 --> 00:41:24,970 Giusto per tornare al concetto di controller e modelli un po '. 544 00:41:24,970 --> 00:41:31,170 Avrete qualcosa di simile a una - così avrai un controller qui. 545 00:41:31,170 --> 00:41:35,080 In questo momento, stiamo guardando l'esempio login.php. 546 00:41:35,080 --> 00:41:38,220 Quando si dispone di un controller, in fondo si sta andando a prendere 2 casi. 547 00:41:38,220 --> 00:41:42,090 Quando abbiamo controller, siamo in questo pezzo che siamo anche un po 'di trattare con 548 00:41:42,090 --> 00:41:43,880 quando abbiamo forme pure. 549 00:41:43,880 --> 00:41:47,500 Il controller, fondamentalmente, sono azioni separate - 550 00:41:47,500 --> 00:41:53,880 uno se una forma è già stata presentata, e poi due se l'utente è in arrivo a quella pagina 551 00:41:53,880 --> 00:41:56,870 per la prima volta e deve ancora input forma. 552 00:41:56,870 --> 00:42:02,820 >> Ho intenzione di passare a quel primo caso, prima di salire al primo caso di avere il modulo trovi 553 00:42:02,820 --> 00:42:12,640 Qui si dice, se il modulo è stato inviato con il metodo POST - 554 00:42:12,640 --> 00:42:13,580 non ti preoccupare che un po '. 555 00:42:13,580 --> 00:42:19,780 Non preoccuparti troppo, ma capisco che in fondo questa funzione si occupa di 556 00:42:19,780 --> 00:42:22,430 se un modulo è stato inviato o meno. 557 00:42:22,430 --> 00:42:25,640 Questa condizione è vera se un utente ha inviato il modulo. 558 00:42:25,640 --> 00:42:45,940 In caso contrario, si sta andando a voler chiamare login_form.php rendering, e quindi passare nel titolo. 559 00:42:45,940 --> 00:42:48,010 Questo titolo è solo in fondo andando a comparire nell'intestazione. 560 00:42:48,010 --> 00:42:54,990 Quello che fa è fondamentalmente dice, va bene - beh, se un utente va a login.php 561 00:42:54,990 --> 00:43:00,310 e non ha fatto il log in, poi voglio inviarli alla pagina che ha quella forma 562 00:43:00,310 --> 00:43:03,160 che permette loro di immettere il nome utente e la password. 563 00:43:03,160 --> 00:43:07,590 Poi vado a login_form, e poi che ha la forma vera e propria. 564 00:43:07,590 --> 00:43:13,750 Poi, una volta che l'utente invia quella forma, che stanno andando a presentarla al login.php 565 00:43:13,750 --> 00:43:15,840 con il post metodo. 566 00:43:15,840 --> 00:43:21,560 Poi ho in realtà sta per entrare in questa sezione del mio if-else loop. 567 00:43:21,560 --> 00:43:29,560 Allora è qui che abbiamo a che fare con i valori inseriti nel modulo. 568 00:43:29,560 --> 00:43:32,800 E 'qui che abbiamo a che fare con quelli. 569 00:43:32,800 --> 00:43:40,860 >> Poi una volta che avete a che fare con quei valori - se hai a che fare con - 570 00:43:40,860 --> 00:43:46,640 dire che abbiamo a che fare con la pagina quote.php dove qualcuno può inserire un titolo che 571 00:43:46,640 --> 00:43:49,950 vogliono guardare in alto, e poi vedere che il display - 572 00:43:49,950 --> 00:43:52,850 che una specie di simile qui. 573 00:43:52,850 --> 00:43:56,070 Qui abbiamo un form di login - you'd probabilmente una forma preventivo - 574 00:43:56,070 --> 00:44:00,290 ma poi una volta che l'utente ha effettivamente presentato tali informazioni, 575 00:44:00,290 --> 00:44:04,810 allora ti consigliamo il controller per passare in un altro modello 576 00:44:04,810 --> 00:44:07,430 che mostrerà loro che informazioni reali. 577 00:44:07,430 --> 00:44:11,250 E allora proprio da queste parti, allora probabilmente - 578 00:44:11,250 --> 00:44:18,830 verso la fine della sua condizione qui - il se il metodo è uguale a post - 579 00:44:18,830 --> 00:44:22,520 allora probabilmente si vorrà rendere un'altra pagina - la citazione show - 580 00:44:22,520 --> 00:44:28,040 che ti manda a questa pagina - show_quote.php-- 581 00:44:28,040 --> 00:44:34,120 e poi in quel file si riferimento a tali valori. 582 00:44:34,120 --> 00:44:36,480 Ha senso? 583 00:44:36,480 --> 00:44:40,390 >> Abbiamo un controller che si occupa prevalentemente di 2 casi - 584 00:44:40,390 --> 00:44:42,710 se hai inserito un modulo o meno. 585 00:44:42,710 --> 00:44:43,950 Se non è stato inserito un modulo, 586 00:44:43,950 --> 00:44:47,300 allora si viene reindirizzati a quella forma, che poi rimesso a quella pagina. 587 00:44:47,300 --> 00:44:54,020 Poi, una volta che si dispone di informazioni nel controllore, tale organismo si occuperà di 588 00:44:54,020 --> 00:44:59,750 informazione se necessario - a cercare i valori per lo stock, 589 00:44:59,750 --> 00:45:04,150 e poi una volta che è guardato questi valori e li ha in una matrice ben formattata, 590 00:45:04,150 --> 00:45:08,180 allora può passare questo array nella pagina del modello 591 00:45:08,180 --> 00:45:10,330  che si occupa di emettere tali informazioni. 592 00:45:10,330 --> 00:45:14,680 >> Anche in questo caso, dal momento che sul Web, che sta per essere divertente. 593 00:45:14,680 --> 00:45:20,310 Siamo al di fuori di C, quindi non si è limitati a ASCII e che il terminale di uscita, 594 00:45:20,310 --> 00:45:21,800 così divertirsi con questo. 595 00:45:21,800 --> 00:45:24,920 È possibile rendere il più visivo come si desidera. 596 00:45:24,920 --> 00:45:31,860 È possibile consentire agli utenti di ingresso milioni di dollari alla volta, 597 00:45:31,860 --> 00:45:34,730 o li limitare e significa veramente essere e permettere loro di entrare solo 1 centesimo alla volta 598 00:45:34,730 --> 00:45:36,330 o qualcosa del genere. 599 00:45:36,330 --> 00:45:38,550 Sicuramente essere sicuri di divertirsi con questo. 600 00:45:38,550 --> 00:45:47,030 >> Codice PHP è un po 'più semplice, in quanto è un po' più facile per tracciare il vostro pseudocodice 601 00:45:47,030 --> 00:45:50,070 l'attuazione nella prassi. 602 00:45:50,070 --> 00:45:56,320 Quindi, sicuramente divertirsi con questo, perché in realtà è il nostro ultimo pezzo CS50. 603 00:45:56,320 --> 00:46:01,150 Con questo, questo era Scenario 7. 604 00:46:01,150 --> 00:46:04,640 Una volta che hai finito di vedere la procedura dettagliata e finito il tuo pset, 605 00:46:04,640 --> 00:46:09,590 allora questi erano anche pset, e ora siamo al prodotto finale - 606 00:46:09,590 --> 00:46:12,330 dopo che otteniamo attraverso quiz 1. 607 00:46:12,330 --> 00:46:16,200 Poi si spera è possibile utilizzare gli strumenti che hai imparato dai pset - 608 00:46:16,200 --> 00:46:21,980 non solo la sintassi, ma più la nozione astratta di come prendere una certa - 609 00:46:21,980 --> 00:46:24,950 piace, io voglio fare questo e poi effettivamente attuazione di tale. 610 00:46:24,950 --> 00:46:28,740 Imparare a lottare con la sintassi e il codice di distribuzione. 611 00:46:28,740 --> 00:46:33,020 Lettura codice di altre persone, e quindi l'interpretazione che l'utilizzo di preesistenti funzioni. 612 00:46:33,020 --> 00:46:37,360 >> Quindi, buona fortuna con il pset ultimo. 613 00:46:37,360 --> 00:46:39,930 E 'stato un piacere guidare le procedure dettagliate. 614 00:46:39,930 --> 00:46:40,940 Spero che sono stati utili per voi. 615 00:46:40,940 --> 00:46:46,560 Questi erano Procedure dettagliate, e grazie mille. 616 00:46:52,580 --> 00:46:56,200 [CS50.TV]