1 00:00:00,000 --> 00:00:03,000 [Powered by Google Translate] [Problème Procédure pas à pas Set 7] 2 00:00:03,000 --> 00:00:04,400 [Zamyla Chan] [Université de Harvard] 3 00:00:04,400 --> 00:00:07,640 [C'est CS50] [CS50.TV] 4 00:00:07,640 --> 00:00:12,090 >> Bonjour à tous et bienvenue dans Procédure pas à pas 7, CS50 Finances. 5 00:00:12,090 --> 00:00:15,090 Maintenant, nous sommes officiellement fait avec tous les psets en CS50, 6 00:00:15,090 --> 00:00:19,380 et nous vient de partir avec un autre qui va être mise en œuvre plaisir 7 00:00:19,380 --> 00:00:23,770 d'un site Web où les utilisateurs peuvent se connecter à CS50 Finance 8 00:00:23,770 --> 00:00:25,830 et acheter et vendre des actions. 9 00:00:25,830 --> 00:00:32,280 >> Aujourd'hui, nous allons avoir quelques outils à notre disposition. 10 00:00:32,280 --> 00:00:34,320 Nous allons parler de permissions. 11 00:00:34,320 --> 00:00:36,380 Chaque fois que vous avez un dossier Web, 12 00:00:36,380 --> 00:00:40,800 vous allez vouloir pour permettre aux utilisateurs d'exécuter certains fichiers 13 00:00:40,800 --> 00:00:42,500 mais aussi il suffit de lire les autres, 14 00:00:42,500 --> 00:00:45,150 donc nous allons regarder dans les autorisations et comment vous pouvez définir ceux-ci. 15 00:00:45,150 --> 00:00:49,630 Ensuite, nous allons examiner en PHP, HTML et du code SQL. 16 00:00:49,630 --> 00:00:51,990 >> Premièrement, les permissions. 17 00:00:51,990 --> 00:00:56,060 Lorsque vous êtes dans le terminal dans un répertoire donné, 18 00:00:56,060 --> 00:01:00,430 alors ce que vous voulez faire, c'est que vous voulez exécuter la commande chmod. 19 00:01:00,430 --> 00:01:03,750 Cela est suivi par des lettres ou des numéros 20 00:01:03,750 --> 00:01:08,100 correspondant à ce que vous voulez essentiellement le monde de voir, 21 00:01:08,100 --> 00:01:09,830 vous-même pour voir, etc 22 00:01:09,830 --> 00:01:13,350 Par exemple, quand vous avez un dossier, 23 00:01:13,350 --> 00:01:15,560 alors vous voulez ce dossier pour être exécutable par tout le monde qu'il voit, 24 00:01:15,560 --> 00:01:19,500 si ce que vous faites est que vous pouvez exécuter la commande chmod a + x 25 00:01:19,500 --> 00:01:21,050 puis le nom de votre dossier. 26 00:01:21,050 --> 00:01:28,110 Lorsque vous avez un fichier comme les fichiers CSS ou les fichiers image - 27 00:01:28,110 --> 00:01:33,060 comme les fichiers JPEG et bitmap, des choses comme ça, ou tout autre code JavaScript - 28 00:01:33,060 --> 00:01:36,440 vous voulez que ce soit lisible par tout le monde, 29 00:01:36,440 --> 00:01:39,880 oui, alors ce que vous faites, c'est que vous pouvez utiliser le joker - 30 00:01:39,880 --> 00:01:41,650 qui est un astérisque - 31 00:01:41,650 --> 00:01:46,190 essentiellement à indiquer dans le dossier CSS - tout dans ce dossier - 32 00:01:46,190 --> 00:01:48,740  Je vais dire que ça va être lisible par tout le monde. 33 00:01:48,740 --> 00:01:54,220 Avec les autorisations, lorsque nous utilisons les lettres, 34 00:01:54,220 --> 00:01:57,610 Nous pouvons également utiliser des chiffres à la place. 35 00:01:57,610 --> 00:02:00,900 Donc, vous voyez que finalement quand vous voulez quelque chose pour le rendre exécutable - 36 00:02:00,900 --> 00:02:02,810 qui est représentée par le nombre 1 - 37 00:02:02,810 --> 00:02:08,340 quelque chose pour être lisible est le numéro 4, puis - 38 00:02:08,340 --> 00:02:10,590 écriture est le numéro 2 - 39 00:02:10,590 --> 00:02:13,670 et si essentiellement lorsque vous voulez une combinaison de ceux-ci, puis vous les ajoutez. 40 00:02:13,670 --> 00:02:15,860 Si vous voulez quelque chose pour être lisible, inscriptible et exécutable, 41 00:02:15,860 --> 00:02:21,970 alors vous ajouterez une hausse de 4, 2 et 1 et qui vous donnerait 7, 42 00:02:21,970 --> 00:02:26,230 puis quand vous avez un dossier que vous voulez que ce soit exécutable par tout le monde - 43 00:02:26,230 --> 00:02:31,380 ainsi que lecture et écriture - alors que vous faites 7, 1, 1. 44 00:02:31,380 --> 00:02:38,140 Ce serait 7 pour vous, puis 1 pour les autres personnes. 45 00:02:38,140 --> 00:02:42,870 Lorsque vous avez la spécification, il va effectivement spécifier les dossiers et les fichiers qui 46 00:02:42,870 --> 00:02:45,040 doivent être chmod-ed spécifiquement. 47 00:02:45,040 --> 00:02:47,920 Par exemple, lorsque vous avez des dossiers - ceux qui sont 7-1-1 - 48 00:02:47,920 --> 00:02:52,690 lorsque vous avez des images ou HTML, CSS, JavaScript, 49 00:02:52,690 --> 00:02:55,870 puis ceux vont être 6, 0, 4 - ou 6, 4, 4 - 50 00:02:55,870 --> 00:03:00,030 puis les fichiers PHP vont être de 6, 0, 0. 51 00:03:00,030 --> 00:03:04,940 L'idée derrière cela est que les utilisateurs ne devraient pas voir réellement votre code PHP, 52 00:03:04,940 --> 00:03:08,370 mais juste être en mesure de voir le résultat. 53 00:03:08,370 --> 00:03:11,030 >> Super! S'engager dans PHP. 54 00:03:11,030 --> 00:03:18,850 Simplement, quand vous voulez un fichier PHP, le suffixe est. Php. 55 00:03:18,850 --> 00:03:22,000 Vous pouvez également mélanger HTML avec du code PHP. 56 00:03:22,000 --> 00:03:24,880 Si vous avez un fichier HTML, par exemple, 57 00:03:24,880 --> 00:03:32,520 alors vous pouvez le joindre à l'angle gauche, point d'interrogation, php - 58 00:03:32,520 --> 00:03:39,320 mettre votre code php - puis fermez ce avec un autre point d'interrogation et un angle droit. 59 00:03:39,320 --> 00:03:45,020 Les variables en PHP sont beaucoup plus faciles à traiter que les variables en C. 60 00:03:45,020 --> 00:03:50,310 Toute variable commence juste avec un signe de dollar en face d'elle, et ils sont faiblement typé. 61 00:03:50,310 --> 00:03:53,470 Cela signifie que vous n'avez pas besoin de vous soucier de mettre quelque chose 62 00:03:53,470 --> 00:03:55,020 égal à une chaîne ou à un nombre entier. 63 00:03:55,020 --> 00:03:57,710 Vous pouvez tout simplement dire, c'est mon nom de la variable 64 00:03:57,710 --> 00:04:00,390 et alors c'est sa valeur, 65 00:04:00,390 --> 00:04:03,280 donc ça va être plus facile à traiter là-bas. 66 00:04:03,280 --> 00:04:08,220 >> Une autre chose est que PHP vous permet d'utiliser les tableaux associatifs. 67 00:04:08,220 --> 00:04:11,330 Vous pouvez simplement définir un tableau comme vous le feriez en C 68 00:04:11,330 --> 00:04:14,900 en disant, le signe du dollar, le nom de votre tableau-égaux, 69 00:04:14,900 --> 00:04:22,600 puis entre crochets ont fondamentalement juste la liste des valeurs de tous les éléments du tableau. 70 00:04:22,600 --> 00:04:27,160 Mais, en PHP ce que vous pouvez faire est de spécifier aussi fondamentalement - 71 00:04:27,160 --> 00:04:31,050 c'est un peu comme une fonction de hachage. 72 00:04:31,050 --> 00:04:34,410 Vous pouvez spécifier l'index - ce que vous allez l'appeler - 73 00:04:34,410 --> 00:04:37,030 puis qui correspond à une valeur. 74 00:04:37,030 --> 00:04:42,880 Si vous avez réellement passer a = 1, b = 2, c = 3, 75 00:04:42,880 --> 00:04:50,820 alors votre tableau à l'index vous donnera un 1. 76 00:04:50,820 --> 00:04:56,600 Cette pset vous réchauffer avec un peu de PHP dans une section de questions, 77 00:04:56,600 --> 00:04:59,240 et ensuite nous plonger dans CS50 Finances. 78 00:04:59,240 --> 00:05:02,650 >> Nous avons quelques - nous avons certaines fonctionnalités, essentiellement, 79 00:05:02,650 --> 00:05:05,130 à mettre en œuvre dans ce site web. 80 00:05:05,130 --> 00:05:10,440 Nous voulons permettre aux utilisateurs de s'inscrire sur notre site avec un nom d'utilisateur et un mot de passe. 81 00:05:10,440 --> 00:05:13,670 Nous voulons leur permettre de consulter un devis, 82 00:05:13,670 --> 00:05:19,330 puis nous imprimer le nom de cette citation ainsi que le prix actuel que ça se passe. 83 00:05:19,330 --> 00:05:26,830 Nous voulons leur permettre de voir un portefeuille de toutes les actions qu'ils ont acheté à ce jour. 84 00:05:26,830 --> 00:05:34,240 Nous voulons également leur permettre d'acheter des actions, ainsi que de les vendre. 85 00:05:34,240 --> 00:05:37,540 Et puis enfin, nous voulons leur permettre de voir l'histoire 86 00:05:37,540 --> 00:05:39,490 de toutes les opérations qu'ils ont effectuées. 87 00:05:39,490 --> 00:05:41,540 Puis, enfin, une fois que vous avez mis en place tout cela, 88 00:05:41,540 --> 00:05:45,110 alors vous êtes libre de mettre en œuvre une fonctionnalité supplémentaire. 89 00:05:45,110 --> 00:05:46,610 Nous irons dans ceux-ci. 90 00:05:46,610 --> 00:05:51,330 Ceux-ci peuvent être soit des utilisateurs permettant d'obtenir de l'argent supplémentaire en déposant de l'argent supplémentaire, 91 00:05:51,330 --> 00:05:54,550 ou vous pouvez leur permettre de modifier leur mot de passe, ou quelque chose comme ça, 92 00:05:54,550 --> 00:06:00,590 les envoyer par courriel un reçu lors de l'achat ou la vente d'un stock. 93 00:06:00,590 --> 00:06:05,370 Il ya un nombre limité de fonctionnalités que vous pourriez vous mettre en œuvre, 94 00:06:05,370 --> 00:06:08,340 de sorte que c'est la dernière là-bas. 95 00:06:08,340 --> 00:06:13,430 >> Comme il s'agit d'un site web, vous les gars ont aussi beaucoup de liberté pour le personnaliser. 96 00:06:13,430 --> 00:06:20,960 Nous offrons un peu de code CSS, mais vous êtes certainement libre de le modifier, 97 00:06:20,960 --> 00:06:26,680 faire plus joli, mais il sous-jacent est une fonctionnalité de base 98 00:06:26,680 --> 00:06:30,310 il faut donc toujours se référer à la spécification de ce que vous avez réellement besoin d'inclure là-bas. 99 00:06:30,310 --> 00:06:39,940 Suite à la spécification, nous allons utiliser l'appareil comme un serveur aussi. 100 00:06:39,940 --> 00:06:43,910 Ça va être accueilli notre site pour nous, sur son serveur local. 101 00:06:43,910 --> 00:06:49,750 Si vous suivez ces instructions et décompressez le code pset de distribution 7 102 00:06:49,750 --> 00:06:53,500 dans votre dossier d'hôte virtuel hôte / local, 103 00:06:53,500 --> 00:07:02,470  alors vous pouvez simplement visiter http://localhost/ dans Google Chrome dans l'appareil, 104 00:07:02,470 --> 00:07:09,120 et puis vous atteignez le code dans lequel vous avez écrit pset 7. 105 00:07:09,120 --> 00:07:14,490 >> Pset 7 est livré avec un tas de code de distribution, 106 00:07:14,490 --> 00:07:18,330 et nous espérons que we've - à travers toutes les psets avant cela - 107 00:07:18,330 --> 00:07:21,700 nous a habitués à la lecture par code de répartition, 108 00:07:21,700 --> 00:07:25,650 comprendre quelles fonctions sont déjà prévus, et comment nous pourrions être en mesure d'utiliser 109 00:07:25,650 --> 00:07:29,470 ceux-ci et les autres fonctions que nous allons être mise en œuvre. 110 00:07:29,470 --> 00:07:31,570 Dans ce cas, nous avons 3 dossiers. 111 00:07:31,570 --> 00:07:36,350 Nous avons un dossier de HTML, un dossier comprenant, et un dossier de modèles. 112 00:07:36,350 --> 00:07:40,630 Ce que nous allons faire avec ce pset est une sorte de séparation de la pensée - 113 00:07:40,630 --> 00:07:45,580 la pensée de programmation - du code PHP avec l'aspect visuelle réelle. 114 00:07:45,580 --> 00:07:52,690 Nous allons avoir un fichier PHP qui fait tout de la pensée, se lit dans la base de données, 115 00:07:52,690 --> 00:07:55,620 imprime les choses, a if - des choses comme ça - 116 00:07:55,620 --> 00:08:02,140 et puis ça va passer des données dans notre fichier de modèle - ou le fichier template.php. 117 00:08:02,140 --> 00:08:05,710 Qu'est-ce qui va faire est de lire les données, puis ce sera l'imprimer. 118 00:08:05,710 --> 00:08:09,550 >> Nous pouvons traiter modèles comme "stupide" car nous ne les voulez vraiment 119 00:08:09,550 --> 00:08:12,370 à faire beaucoup de travail dans le calcul de choses. 120 00:08:12,370 --> 00:08:16,330 Nous voulons que nos contrôleurs de le faire. 121 00:08:16,330 --> 00:08:21,610 Un peu sur ce point - nous allons jeter un coup d'oeil à une partie du code de la distribution. 122 00:08:21,610 --> 00:08:28,250 Ici, nous avons notre fichier index.html, et il est assez vide. 123 00:08:28,250 --> 00:08:34,429 Essentiellement, ce qu'il fait - il dit, eh bien, je vais exiger que le fichier configuration.php. 124 00:08:34,429 --> 00:08:40,120 Nous ne voyons pas ce droit, mais il s'agit essentiellement d'appeler le fichier configuration.php, 125 00:08:40,120 --> 00:08:42,240 et l'exécution de ce. 126 00:08:42,240 --> 00:08:45,130 Après avoir fait cela, ça va rendre le portefeuille. 127 00:08:45,130 --> 00:08:49,310 Rendering est une fonction, donc chaque fois que nous sommes dans un contrôleur, 128 00:08:49,310 --> 00:08:56,490 nous appellerons rendu, nous allons lui donner le fichier et ensuite les données que nous en passant, 129 00:08:56,490 --> 00:09:04,570 de sorte qu'il va appeler portfolio.php--type de passage dans ces données afin que le portefeuille peut régler ce problème. 130 00:09:04,570 --> 00:09:10,540 >> Et maintenant, ici, nous avons notre formulaire de login.php. 131 00:09:10,540 --> 00:09:17,540  C'est le contrôleur qui prend essentiellement en charge de l'exploitation forestière po 132 00:09:17,540 --> 00:09:29,090 Ici, il vérifie si un formulaire a été soumis à ce fichier et traite de la validation de la soumission. 133 00:09:29,090 --> 00:09:31,990 Nous allons examiner cette fonction apologize. 134 00:09:31,990 --> 00:09:35,100 Quand on veut imprimer un message d'erreur, 135 00:09:35,100 --> 00:09:39,550 nous utilisons des excuses et qui va rediriger l'utilisateur vers une page spécifique 136 00:09:39,550 --> 00:09:42,530 qui permet d'imprimer le message d'erreur spécifique que nous indiquons. 137 00:09:42,530 --> 00:09:47,860 Poursuivant, il interroge la base de données - nous allons vous donner plus de cela plus tard. 138 00:09:47,860 --> 00:09:54,180 Alors, vous voyez que ici si un formulaire n'a pas été soumis, il rend un formulaire. 139 00:09:54,180 --> 00:10:01,360 Cela signifie qu'il va login_form.php, nous allons donc examiner cette question. 140 00:10:01,360 --> 00:10:09,400 >> Login.php est en fait où nous voyons le traitant HTML avec l'aspect visuelle réelle. 141 00:10:09,400 --> 00:10:15,130 Ici, nous avons une balise d'entrée pour le nom d'utilisateur, une entrée pour le mot de passe, 142 00:10:15,130 --> 00:10:16,630 ainsi que d'un bouton submit. 143 00:10:16,630 --> 00:10:22,660 C'est effectivement là où l'aspect visuel et le formulaire HTML qui va avoir lieu. 144 00:10:22,660 --> 00:10:27,550 Ici, il est dit que ça va être soumise par une certaine méthode, appelée post. 145 00:10:27,550 --> 00:10:30,190 Nous allons entrer dans les différences entre les méthodes - 146 00:10:30,190 --> 00:10:33,240 poster par rapport à vous, il ya aussi quelque chose qui s'appelle mettre - 147 00:10:33,240 --> 00:10:36,160 nous allons entrer dans les méthodes tard, mais pour l'intérêt de cette pset, 148 00:10:36,160 --> 00:10:37,810 Je vous encourage fortement à utiliser des post. 149 00:10:37,810 --> 00:10:42,210 >> Nous savons que, fondamentalement, une fois que ce formulaire est soumis - 150 00:10:42,210 --> 00:10:44,650 de login_form.php-- 151 00:10:44,650 --> 00:10:50,850 puis il ira à l'action - login.php-- 152 00:10:50,850 --> 00:10:56,070 essentiellement passer tous les paramètres de ces formes dans login.php. 153 00:10:56,070 --> 00:11:04,900 Les résultats de cette forme sont contenus dans ce tableau après associatif. 154 00:11:04,900 --> 00:11:11,710 Les indices des différents éléments dans le tableau après 155 00:11:11,710 --> 00:11:15,290 sont exactement ce que vous indiquez ici. 156 00:11:15,290 --> 00:11:19,240 Vous dites que le nom de cette entrée est le nom d'utilisateur. Le nom de celui-ci est mot de passe. 157 00:11:19,240 --> 00:11:26,840 De même, vous voyez le nom d'utilisateur que l'indice du tableau associatif là. 158 00:11:26,840 --> 00:11:35,110 Si nous allons vers le dossier comprend, nous avons ce fichier fonctions qui va être très utile. 159 00:11:35,110 --> 00:11:37,570 >> Toutes ces fonctions sont mises en œuvre pour vous. 160 00:11:37,570 --> 00:11:41,870 Vous n'avez pas besoin de mettre en œuvre spécifiquement l'un de ces soi-même, 161 00:11:41,870 --> 00:11:43,140 mais ils vont très utile. 162 00:11:43,140 --> 00:11:49,450 Nous avons des excuses, qui, comme je l'ai déjà dit, sera essentiellement d'imprimer un message d'erreur 163 00:11:49,450 --> 00:11:52,920 pour vous sur une page spécifique - apology.php. 164 00:11:52,920 --> 00:11:59,890 Ensuite, nous avons décharge, donc si vous appelez de vidage et passent ensuite dans la variable, 165 00:11:59,890 --> 00:12:04,930 alors il vous amènera à une page qui affichera cette variable pour vous. 166 00:12:04,930 --> 00:12:09,950 Puis nous avons déconnexion, qui sera essentiellement arrêter une session utilisateur en particulier de. 167 00:12:09,950 --> 00:12:12,240 Recherche va être utile. 168 00:12:12,240 --> 00:12:15,870 Étant donné que nous avons affaire avec des citations et des stocks, nous allons être en mesure - 169 00:12:15,870 --> 00:12:17,650 et c'est essentiellement en temps réel. 170 00:12:17,650 --> 00:12:21,380 Nous avons besoin de savoir ce que les valeurs boursières sont, 171 00:12:21,380 --> 00:12:28,210 nous avons donc la fonction de recherche qui traite de la documentation de Yahoo des stocks. 172 00:12:28,210 --> 00:12:37,700 Une fois que vous regardez un certain symbole d'un stock, il vous reviendra le symbole 173 00:12:37,700 --> 00:12:41,480 ainsi que le nom et le prix actuel de ce stock. 174 00:12:41,480 --> 00:12:44,330 C'est la fonction de recherche. 175 00:12:44,330 --> 00:12:48,350 >> Ensuite, nous avons affaire à mySQL, 176 00:12:48,350 --> 00:12:53,970 Nous allons donc faire défaut à exécuter certaines requêtes sur notre base de données SQL. 177 00:12:53,970 --> 00:12:58,890 Nous avons requête à traiter - à une sorte de résumé de cela. 178 00:12:58,890 --> 00:13:03,200 Nous allons passer à la chaîne entière de notre requête SQL - 179 00:13:03,200 --> 00:13:05,360 et toutes les variables qui vont dans le - 180 00:13:05,360 --> 00:13:09,480 et ce que cela ne se fait que pour nous exécuter. 181 00:13:09,480 --> 00:13:15,070 Au lieu d'avoir à écrire tout cela à chaque fois que vous voulez interroger - 182 00:13:15,070 --> 00:13:21,740 en obtenant tous les résultats de cette requête - 183 00:13:21,740 --> 00:13:24,740 alors vous pouvez simplement appeler la fonction de requête, et il va revenir à vous - 184 00:13:24,740 --> 00:13:28,750 en fonction de ce que vous utilisez pour votre requête - 185 00:13:28,750 --> 00:13:33,000 probablement une rangée de l'ensemble des résultats correspondant à la requête ou similaire. 186 00:13:33,000 --> 00:13:34,690 Plus sur cela plus tard cependant. 187 00:13:34,690 --> 00:13:41,200 >> Enfin, nous avons redirection qui, comme son nom l'indique, vous redirige vers une autre page. 188 00:13:41,200 --> 00:13:46,280 Et puis nous avons rendu, que nous allons appeler une couple de fois. 189 00:13:46,280 --> 00:13:51,010 Lorsque vous êtes dans un contrôleur, vous appelez rendre dans le modèle de page 190 00:13:51,010 --> 00:13:55,390 et ensuite passer dans les valeurs que le modèle sera ensuite traiter. 191 00:13:55,390 --> 00:13:59,540 Ces valeurs vont probablement avoir affaire avec le type de sortie que vous souhaitez 192 00:13:59,540 --> 00:14:01,050 à faire figurer sur votre page de modèle. 193 00:14:01,050 --> 00:14:09,370 D'accord. Ce sont les fonctions, et il ya beaucoup plus à ce code de distribution. 194 00:14:09,370 --> 00:14:12,930 Je vous encourage à parcourir et d'explorer ce vous-même. 195 00:14:12,930 --> 00:14:17,050 En outre, la spécification va probablement vous guidera à travers d'autres éléments de la clé de répartition. 196 00:14:17,050 --> 00:14:27,360 Voici un résumé des fonctions trouvées dans functions.php. 197 00:14:27,360 --> 00:14:31,710 >> D'accord. La première tâche est de permettre aux utilisateurs de s'inscrire sur le site. 198 00:14:31,710 --> 00:14:34,860 À l'heure actuelle, il ya un formulaire de connexion sur le site, 199 00:14:34,860 --> 00:14:40,080 et vous sont fournis avec quelques utilisateurs avec des mots de passe. 200 00:14:40,080 --> 00:14:42,130 Vous pouvez utiliser ces noms d'utilisateur et vous connecter, 201 00:14:42,130 --> 00:14:45,140 mais vous voulez permettre aux gens de faire leurs propres noms d'utilisateur 202 00:14:45,140 --> 00:14:47,390 et ajouter eux-mêmes sur le site. 203 00:14:47,390 --> 00:14:53,070 La mise en page d'inscription est assez similaire au formulaire de login, 204 00:14:53,070 --> 00:14:56,340 sauf le nom d'utilisateur n'est pas préexistante, 205 00:14:56,340 --> 00:14:59,430 et l'utilisateur doit également fournir un nouveau mot de passe, 206 00:14:59,430 --> 00:15:02,440 puis nous avons généralement une confirmation mot de passe. 207 00:15:02,440 --> 00:15:06,580 Une fois que l'utilisateur saisit tous de cette information, 208 00:15:06,580 --> 00:15:10,620 nous voulons les ajouter à notre base de données d'utilisateurs. 209 00:15:10,620 --> 00:15:12,970 Nous allons avoir une base de données - une base de données SQL - 210 00:15:12,970 --> 00:15:14,470 que nous allons faire référence. 211 00:15:14,470 --> 00:15:18,140 Dans cette base de données, nous aurons une table avec tous les utilisateurs 212 00:15:18,140 --> 00:15:23,850 contenant leur nom d'utilisateur, son mot de passe, et aussi combien d'argent dont ils disposent. 213 00:15:23,850 --> 00:15:28,480 >> Dans le registre, nous voulons leur permettre d'entrer cette information. 214 00:15:28,480 --> 00:15:29,740 Nous souhaitons afficher cette forme. 215 00:15:29,740 --> 00:15:32,210 Nous voulons faire en sorte que leur mot de passe - 216 00:15:32,210 --> 00:15:37,490 qu'ils sont entrés, et puis aussi que les mots de passe correspondent quand ils y entrent deux fois. 217 00:15:37,490 --> 00:15:42,240 Après tout cela se fait - en supposant que ces erreurs sont vérifiées - 218 00:15:42,240 --> 00:15:45,120 alors nous voulons ajouter à ces utilisateurs de notre base de données. 219 00:15:45,120 --> 00:15:49,630 Enfin, une fois que vous avez enregistré, c'est assez pratique si vous n'avez pas besoin de vous connecter à nouveau 220 00:15:49,630 --> 00:15:51,000 une fois que vous avez enregistré, 221 00:15:51,000 --> 00:15:54,000 donc nous allons les identifier sur le site si ils ont enregistré avec succès. 222 00:15:54,000 --> 00:16:00,360 >> La première tâche consiste à afficher le formulaire, et ce qui se passe réellement être - 223 00:16:00,360 --> 00:16:04,920 ce processus d'inscription entier va être modélisé assez près après la connexion 224 00:16:04,920 --> 00:16:10,510 sauf qu'au lieu d'login.php vous pourriez avoir register.php. 225 00:16:10,510 --> 00:16:14,300 Au lieu de login_form.php--qui est le modèle - 226 00:16:14,300 --> 00:16:16,030 vous aurez vous inscrire formulaire. 227 00:16:16,030 --> 00:16:19,680 Vous souhaitez ajouter un autre champ - un champ de confirmation mot de passe - 228 00:16:19,680 --> 00:16:23,450 au lieu de simplement le nom d'utilisateur et le mot de passe une personne. 229 00:16:23,450 --> 00:16:28,120 Ensuite, nous voulons vérifier si les mots de passe correspondent ou sont vides. 230 00:16:28,120 --> 00:16:38,560 Nous avons le contrôleur - register.php--qui va prendre soin de faire ces vérifications. 231 00:16:38,560 --> 00:16:41,690 Lorsqu'un formulaire est soumis via la méthode post, 232 00:16:41,690 --> 00:16:47,050 puis toutes ces variables sont contenues dans la matrice après. 233 00:16:47,050 --> 00:16:52,280 Vous voulez vous assurer que la valeur d'un tableau poste de passe index 234 00:16:52,280 --> 00:16:58,080 correspond à l'élément de confirmation. 235 00:16:58,080 --> 00:16:59,410 Vous voulez vous assurer qu'ils ne sont pas vides, 236 00:16:59,410 --> 00:17:01,650 et que vous voulez vous assurer que ce sont les mêmes. 237 00:17:01,650 --> 00:17:05,960 >> Une chose pratique sur PHP, c'est que nous n'avons pas besoin d'utiliser comparaison de chaîne plus. 238 00:17:05,960 --> 00:17:08,410 Nous pouvons utiliser l'opérateur est égal à égale- 239 00:17:08,410 --> 00:17:11,470  pour vérifier si les chaînes sont égales les unes aux autres. 240 00:17:11,470 --> 00:17:14,960 Pour la gestion des erreurs, vous aurez envie de s'excuser. 241 00:17:14,960 --> 00:17:17,150 Pour s'excuser, il vous suffit d'appeler la fonction 242 00:17:17,150 --> 00:17:21,910  puis spécifiez un type de message que vous voulez à la sortie. 243 00:17:21,910 --> 00:17:24,630 Vous devez ensuite ajouter l'utilisateur à la base de données. 244 00:17:24,630 --> 00:17:30,880 Jusqu'à présent, tout ce que nous avons fait est juste pour des transactions locales avec les résultats de la forme. 245 00:17:30,880 --> 00:17:33,940 Maintenant, nous voulons effectivement les ajouter à notre base de données. 246 00:17:33,940 --> 00:17:38,890 Pour cela, nous voulons d'abord assurez-vous que le nom d'utilisateur n'est pas vide. 247 00:17:38,890 --> 00:17:44,550 Comprenez que sur un site Web, vous ne pouvez pas avoir plusieurs utilisateurs avec le même nom d'utilisateur, 248 00:17:44,550 --> 00:17:50,010 de sorte que vous aurez envie de vous assurer que lorsque vous insérez quelque chose dans votre base de données - 249 00:17:50,010 --> 00:17:56,650 insérer un nouvel utilisateur - alors vous ne recevez pas une collision entre un nom d'utilisateur préexistant 250 00:17:56,650 --> 00:17:59,150 et le nom d'utilisateur que l'utilisateur essaie de se soumettre. 251 00:17:59,150 --> 00:18:02,250 Pour cela, une fois que vous exécutez une requête - 252 00:18:02,250 --> 00:18:08,760 l'insertion d'un certain utilisateur avec leur mot de passe et un montant initial de trésorerie - 253 00:18:08,760 --> 00:18:15,140 une fois que vous appelez cette requête, alors MySQL va réellement retourner false si elle échoue. 254 00:18:15,140 --> 00:18:21,050 >> La structure d'utilisateurs est telle que le nom d'utilisateur est une valeur unique, 255 00:18:21,050 --> 00:18:22,540 de sorte que vous ne pouvez pas avoir plus d'un. 256 00:18:22,540 --> 00:18:30,080 Lorsque vous essayez d'insérer une nouvelle ligne avec un nom d'utilisateur qui existe déjà, 257 00:18:30,080 --> 00:18:34,470 qui va retourner faux - comme une valeur booléenne false valeur. 258 00:18:34,470 --> 00:18:45,320 Une chose difficile ici, c'est que vous aurez envie de vérifier si le résultat est le résultat de votre requête. 259 00:18:45,320 --> 00:18:52,320 Si elle échoue, alors vous aurez envie de vérifier auprès de l'opérateur triple égal à égal. 260 00:18:52,320 --> 00:18:55,420 Cela va vraiment vérifier s'il ya une panne ou non, 261 00:18:55,420 --> 00:19:02,760 alors que dans un simple équivaut-égaux, il serait vrai si la ligne était vide. 262 00:19:02,760 --> 00:19:06,000 Le résultat d'un échec s'il ya une collision entre noms d'utilisateurs 263 00:19:06,000 --> 00:19:10,350 est la valeur réelle faux. 264 00:19:10,350 --> 00:19:15,230 >> Voici comment vous insérer dans une base de données. 265 00:19:15,230 --> 00:19:19,220 Voici la requête que vous souhaitez exécuter strictement SQL. 266 00:19:19,220 --> 00:19:25,750 Une chose est que vous pouvez réellement aller sur le site qui gère votre base de données SQL 267 00:19:25,750 --> 00:19:31,070 et de jouer là-bas en entrant manuellement soit des valeurs ou des lignes. 268 00:19:31,070 --> 00:19:34,540 Il va afficher ce que la sortie est SQL. 269 00:19:34,540 --> 00:19:38,870 Vous pouvez également exécuter des commandes SQL dans votre base de données 270 00:19:38,870 --> 00:19:42,200  et puis voir ce que la syntaxe pourrait être, 271 00:19:42,200 --> 00:19:46,790 et ensuite traduire cela dans la fonction d'interrogation que nous avons en pset 7, 272 00:19:46,790 --> 00:19:51,120 qui va être très similaires aux requêtes que vous avez réellement exécutées. 273 00:19:51,120 --> 00:19:54,570 >> Si je voulais insérer une nouvelle ligne dans ma table utilisateurs, 274 00:19:54,570 --> 00:20:01,240 alors je vous spécifiez insert into utilisateurs, ce qui est le nom de ma table. 275 00:20:01,240 --> 00:20:06,870 Ensuite, je voudrais spécifier les noms de colonnes. 276 00:20:06,870 --> 00:20:13,230 Ensuite, je voudrais fournir les valeurs avec mon mot de passe. 277 00:20:13,230 --> 00:20:17,080 Les mots de passe des utilisateurs dans notre tableau ne sont pas stockés en tant que juste la chaine. 278 00:20:17,080 --> 00:20:19,440 Elles sont stockées en tant que version cryptée, 279 00:20:19,440 --> 00:20:24,560 si vous voulez exécuter la fonction crypt sur le mot de passe actuel, 280 00:20:24,560 --> 00:20:29,680 et qui vous donnera le bon type de stockage pour l'ensemble des utilisateurs. 281 00:20:29,680 --> 00:20:34,960 L'exécution de ce insère une nouvelle ligne dans votre table d'utilisateurs. 282 00:20:34,960 --> 00:20:39,020 >> Pour faire face à la fonction de requête, 283 00:20:39,020 --> 00:20:43,100 avant dans C, nous avons utilisé le signe pour cent d'espace réservé. 284 00:20:43,100 --> 00:20:47,670 De même, le concept même d'un espace réservé s'applique ici. 285 00:20:47,670 --> 00:20:50,720 Avec requête, vous spécifiez la requête entière, 286 00:20:50,720 --> 00:20:55,510 sauf lorsque vous avez affaire à des variables comme entrée dans la requête, 287 00:20:55,510 --> 00:21:00,490 alors au lieu de les mettre réellement à l'intérieur - comme lorsque nous avions printf en C 288 00:21:00,490 --> 00:21:03,740 Nous mettrions la chaîne, puis un espace réservé là-bas, et puis après chaque 289 00:21:03,740 --> 00:21:06,990 virgule, spécifier les variables que nous avions. 290 00:21:06,990 --> 00:21:14,480 Ici, nous allons utiliser le signe de point d'interrogation que notre espace réservé 291 00:21:14,480 --> 00:21:21,670 et ensuite passer à chaque variable, respectivement dans l'ordre, pour les marqueurs - 292 00:21:21,670 --> 00:21:24,420 où ces variables devrait aller. 293 00:21:24,420 --> 00:21:29,470 Donc, ici, le premier point d'interrogation sera remplacé par le nom d'utilisateur réel 294 00:21:29,470 --> 00:21:33,610 puis le point d'interrogation seconde par le mot de passe. 295 00:21:33,610 --> 00:21:37,000 >> Puis, finalement, une fois que vous les avez enregistrées et les ajouter à la base de données, 296 00:21:37,000 --> 00:21:40,510 alors vous voulez le connecter sur le site. 297 00:21:40,510 --> 00:21:45,320 Nous avons une sorte de super-globale session appelée variable. 298 00:21:45,320 --> 00:21:48,160 Session ait une certaine id, 299 00:21:48,160 --> 00:21:51,750 et en ce que N correspond à l'utilisateur qui est actuellement connecté 300 00:21:51,750 --> 00:21:56,380 Ce que vous voulez faire est de trouver ce que leur nom d'utilisateur est 301 00:21:56,380 --> 00:22:03,710 puis définissez l'identifiant de session en tant que id utilisateur particulier. 302 00:22:03,710 --> 00:22:07,560 Une fonction que vous souhaitez utiliser ici est une commande SQL 303 00:22:07,560 --> 00:22:15,150 qui permet de récupérer le numéro d'identification dernier inséré à partir de votre table. 304 00:22:15,150 --> 00:22:24,560 Puis rangées appellera - physique, fera appeler l'id - physique, fera attribuer un nom au numéro qu'elle retourne. 305 00:22:24,560 --> 00:22:27,900 Il va appeler cet id. 306 00:22:27,900 --> 00:22:33,370 Maintenant que nous avons terminé vous inscrire, et nous pouvons passer à citer. 307 00:22:33,370 --> 00:22:36,610 >> Citation permet à un utilisateur d'entrer le nom d'un certain stock, 308 00:22:36,610 --> 00:22:41,940 puis il retournera les qualités de ce stock. 309 00:22:41,940 --> 00:22:48,410 Ce que vous voulez faire ici est d'avoir un contrôleur et certains modèles. 310 00:22:48,410 --> 00:22:53,380 Dans ce cas, nous allons avoir un contrôleur qui va faire toute la pensée pour nous. 311 00:22:53,380 --> 00:23:01,210 Il va rechercher le symbole, puis transmettre des valeurs aux modèles qui seront imprimées sur. 312 00:23:01,210 --> 00:23:03,060 Nous allons avoir 2 modèles ici. 313 00:23:03,060 --> 00:23:07,260 Nous allons avoir 1 modèle qui fournit la forme sous laquelle les utilisateurs vont 314 00:23:07,260 --> 00:23:09,920 saisissez le nom de l'action - le nom de l'action. 315 00:23:09,920 --> 00:23:16,030 Ensuite, nous allons aussi veulent un autre modèle qui affiche ces valeurs. 316 00:23:16,030 --> 00:23:27,450 Vous pouvez regarder dans de connexion pour un exemple de la façon dont vous avez un formulaire qui accepte une entrée, 317 00:23:27,450 --> 00:23:30,060 sauf ici, nous voulons seulement 1 terrain. 318 00:23:30,060 --> 00:23:31,630 Nous ne voulons pas d'un nom d'utilisateur et un champ de mot de passe. 319 00:23:31,630 --> 00:23:37,110 Nous voulons juste 1 champ texte qui permet à l'utilisateur d'entrer le nom d'un certain stock. 320 00:23:37,110 --> 00:23:40,110 Alors, vous voulez envoyer ces données - une fois que vous avez regardé ce stock - 321 00:23:40,110 --> 00:23:45,550 à quote_form.php. 322 00:23:45,550 --> 00:23:50,780 Lookup retourne le symbole d'un titre, le nom, et un prix. 323 00:23:50,780 --> 00:23:53,910 Celles-ci sont contenues dans un tableau associatif. 324 00:23:53,910 --> 00:24:01,390 Recherchez la fonction de recherche dans le functions.php pour plus d'informations 325 00:24:01,390 --> 00:24:04,010 sur les types de retour des personnes. 326 00:24:04,010 --> 00:24:08,520 >> Super! Alors finalement, vous souhaitez afficher les informations boursières. 327 00:24:08,520 --> 00:24:14,110 Vous voulez sans doute afficher - Vous aurez souhaitez accéder à ces variables. 328 00:24:14,110 --> 00:24:17,610 Une fois que vous avez le prix dans une variable - 329 00:24:17,610 --> 00:24:20,860 ainsi que le nom et le symbole - 330 00:24:20,860 --> 00:24:25,550 alors vous aurez envie d'afficher celles de votre modèle de page. 331 00:24:25,550 --> 00:24:31,540 Cela page modèle pourrait être appelé show_quote.php ou quelque chose. 332 00:24:31,540 --> 00:24:39,660 Votre page quote.php rendrait citation spectacle et passent ensuite dans l'ensemble de ces valeurs. 333 00:24:39,660 --> 00:24:47,170 Ensuite, dans votre page php, vous avez réellement imprimer ces valeurs à l'aspect HTML de la page. 334 00:24:47,170 --> 00:24:53,800 Il suffit d'utiliser la fonction d'impression et de passer dans le prix. 335 00:24:53,800 --> 00:24:57,990 Il ya 2 façons - vous pouvez soit le concaténer avec l'opérateur point, 336 00:24:57,990 --> 00:25:02,230 ou utiliser un espace réservé. 337 00:25:07,580 --> 00:25:12,750 >> Les utilisateurs sont finalement va être l'achat et la vente d'actions. 338 00:25:12,750 --> 00:25:18,450 Nous voulons leur permettre une certaine façon de voir la totalité des actions qu'ils ont actuellement. 339 00:25:18,450 --> 00:25:21,350 Nous allons appeler que leur portefeuille. 340 00:25:21,350 --> 00:25:26,180 Portefeuille serait, sans doute pour tous les utilisateurs, contient un tas de lignes 341 00:25:26,180 --> 00:25:31,760 indiquant le type d'action qu'ils ont et combien de ceux dont ils disposent. 342 00:25:31,760 --> 00:25:36,500 Notre table existante - en ce moment, nous avons une table users dans notre base de données. 343 00:25:36,500 --> 00:25:41,780 Qui contient le nom d'utilisateur d'un utilisateur ainsi que leur mot de passe et combien d'argent ils disposent. 344 00:25:41,780 --> 00:25:50,390 Il n'y a pas de véritable moyen de stocker l'ensemble de leurs actions dans ce. 345 00:25:50,390 --> 00:25:58,010 Ce n'est pas comme on peut insérer de nouvelles colonnes pour chaque stock. 346 00:25:58,010 --> 00:26:03,650 Ce serait une ligne très, très longtemps parce que nous avons une quantité infinie 347 00:26:03,650 --> 00:26:06,200 des types d'actions qu'ils pourraient avoir. 348 00:26:06,200 --> 00:26:09,150 Ainsi, au lieu que nous allons faire est dans la même base de données, 349 00:26:09,150 --> 00:26:15,000 nous aurons une table utilisateurs, mais nous aurons aussi une table de portefeuille. 350 00:26:15,000 --> 00:26:18,430 Le tableau portefeuille sera certainement liée à la table des utilisateurs, 351 00:26:18,430 --> 00:26:24,600 mais au lieu de la structure de la table portefeuille auront les informations boursières, 352 00:26:24,600 --> 00:26:27,780 le nombre d'actions de ce stock, l'utilisateur dispose d' 353 00:26:27,780 --> 00:26:31,620 ainsi que d'un numéro d'identification de l'utilisateur particulier. 354 00:26:31,620 --> 00:26:34,620 Vous avez la table users qui a un id ainsi que le nom d'utilisateur, le hachage - 355 00:26:34,620 --> 00:26:40,130 qui est le mot de passe, le mot de passe crypté - 356 00:26:40,130 --> 00:26:42,130 puis le montant des liquidités dont ils disposent. 357 00:26:42,130 --> 00:26:47,900 Le numéro d'identification serait lié au numéro d'identification du portefeuille. 358 00:26:47,900 --> 00:26:52,490 Le portefeuille aurait juste le symbole de l'action ainsi que les actions - 359 00:26:52,490 --> 00:26:55,410 le nombre d'actions de ce stock que l'utilisateur possède. 360 00:26:55,410 --> 00:26:58,520 Dans ce portfolio table que vous auriez essentiellement 361 00:26:58,520 --> 00:27:03,760 toutes les actions possédées par tous les utilisateurs sur votre site. 362 00:27:03,760 --> 00:27:10,550 Plus tard, pour préciser que des actions d'un utilisateur de certains - que leur portefeuille - 363 00:27:10,550 --> 00:27:15,360 vous pouvez extraire les valeurs de la table de votre portefeuille de telle sorte que 364 00:27:15,360 --> 00:27:19,930 le numéro d'identification est spécifique à l'utilisateur. 365 00:27:26,520 --> 00:27:34,890 >> Lorsque vous affichez le portefeuille, vous aurez envie de rapporter chacune des actions en portefeuille d'un utilisateur. 366 00:27:34,890 --> 00:27:41,670 Vous aurez envie de rapporter le nombre d'actions et la valeur actuelle de ces actions. 367 00:27:41,670 --> 00:27:45,950 Cette valeur actuelle de ces actions ne sont pas stockées dans la table de portefeuille 368 00:27:45,950 --> 00:27:51,640 parce que cela va être mise à jour - au minimum - tous les jours par Yahoo. 369 00:27:51,640 --> 00:27:58,550 Pour obtenir ces informations, vous ne pouvez pas faire référence à ce à partir de votre requête SQL. 370 00:27:58,550 --> 00:28:02,400 Quelle est la fonction prévoit que pour nous? Quelle est la fonction va obtenir le prix? 371 00:28:02,400 --> 00:28:09,110 C'est de recherche, donc l'utilisation de recherche sur un symbole particulier vous donnera beaucoup d'informations. 372 00:28:09,110 --> 00:28:13,710 Ça va vous donner 3 éléments d'information - le nom, le symbole, ainsi que le prix. 373 00:28:13,710 --> 00:28:17,490 Une fois que vous rechercher un certain symbole, alors vous pouvez obtenir le prix, 374 00:28:17,490 --> 00:28:20,460 et puis vous pouvez utiliser le prix à afficher dans votre portefeuille. 375 00:28:20,460 --> 00:28:26,190 >> Le portefeuille devrait également afficher solde de trésorerie de l'utilisateur actuel. 376 00:28:26,190 --> 00:28:30,310 Ce champ est stockée dans la table des utilisateurs. 377 00:28:30,310 --> 00:28:33,400 Alors se rappeler comment nous sommes fondamentalement d'avoir à - 378 00:28:33,400 --> 00:28:36,850 nous allons avoir différents types de fichiers PHP. 379 00:28:36,850 --> 00:28:40,160 Nous allons avoir un contrôleur qui, fondamentalement, fait tout le penser pour vous. 380 00:28:40,160 --> 00:28:45,940 Et puis nous avons un modèle dans lequel le modèle traite de sortie des données. 381 00:28:45,940 --> 00:28:50,790 Vous devez penser à ce que les variables du contrôleur aurez besoin de prendre po 382 00:28:50,790 --> 00:29:01,630 Si nous avons affaire à un portefeuille qui sort de tout nom, le symbole et le nombre d'actions, 383 00:29:01,630 --> 00:29:03,730 ainsi que le prix actuel d'une action, 384 00:29:03,730 --> 00:29:06,950 alors vous aurez envie de trouver un moyen de passer au fond - 385 00:29:06,950 --> 00:29:12,070 vous pouvez passer un tableau de valeurs qui correspondent. 386 00:29:15,250 --> 00:29:24,360 >> Allons dans un exemple de la façon dont vous pouvez récupérer la totalité des actions 387 00:29:24,360 --> 00:29:26,210 appartenant à un utilisateur particulier. 388 00:29:26,210 --> 00:29:31,400 Ce ne traite pas - encore - avec le prix de l'action. 389 00:29:31,400 --> 00:29:33,520 Que ce serait faire est de lancer une requête. 390 00:29:33,520 --> 00:29:37,070 Il serait d'obtenir le symbole ainsi que les actions de - 391 00:29:37,070 --> 00:29:42,770 J'appelle ce tableau, mais dans ce cas, quel serait-il? 392 00:29:42,770 --> 00:29:49,400 Quel est le nom de la table que nous avons affaire avec ce symbole a et des actions 393 00:29:49,400 --> 00:29:52,280 pour un utilisateur particulier? 394 00:29:52,280 --> 00:29:56,410 C'est utilisateurs ou de portefeuille. 395 00:29:56,410 --> 00:29:57,820 Portefeuille. 396 00:29:57,820 --> 00:30:03,220 Que ce serait faire est de portefeuille de requête pour les symboles et les actions 397 00:30:03,220 --> 00:30:04,920 pour un utilisateur particulier. 398 00:30:04,920 --> 00:30:09,260 Ici, je dis, (symbole SELECT FROM tbl, les actions - 399 00:30:09,260 --> 00:30:12,280 mais au lieu de la table, vous allez le remplacer par portefeuille. 400 00:30:12,280 --> 00:30:15,220 «Où» est fondamentalement mon état. 401 00:30:15,220 --> 00:30:21,050 Je dis que je veux seulement obtenir ces tableaux associatifs qui correspondent 402 00:30:21,050 --> 00:30:23,850  à cette condition suivante - id égal à égal. 403 00:30:23,850 --> 00:30:27,600  Alors je vais mettre un espace réservé là-bas et ensuite l'identifiant de session. 404 00:30:27,600 --> 00:30:36,720 Que ce serait faire est de dire pour chaque ligne en rangées. 405 00:30:36,720 --> 00:30:40,940 C'est une belle façon au lieu d'avoir à mettre en place une boucle for 406 00:30:40,940 --> 00:30:47,450 qui se répète sur tous les index, puis en PHP, vous pouvez avoir une boucle for-each. 407 00:30:47,450 --> 00:30:53,520 >> Si vous avez un tableau donné, alors vous pouvez dire que je vais appeler tous les éléments successifs - 408 00:30:53,520 --> 00:30:57,930 Je vais appeler tous les éléments de ce nom. 409 00:30:57,930 --> 00:31:02,780 Ainsi, pour chacun de ces éléments, je vais les appeler ainsi, 410 00:31:02,780 --> 00:31:04,500 alors je peux le faire. 411 00:31:04,500 --> 00:31:10,370 Dans cette opération pour chaque, vous avez rangées comme votre véritable tableau, et chaque ligne que vous allez appeler la ligne. 412 00:31:10,370 --> 00:31:12,420 Chaque fois qu'il exécute le corps, 413 00:31:12,420 --> 00:31:16,960 il va monter et il mettra à jour la ligne à l'élément suivant en rangées. 414 00:31:18,900 --> 00:31:25,260 >> Maintenant, en ce qui concerne l'achat d'actions, 415 00:31:25,260 --> 00:31:29,500 ce que nous voulons faire est d'obtenir le stock que l'utilisateur veut acheter 416 00:31:29,500 --> 00:31:35,300 et le nombre d'actions que l'utilisateur souhaite acheter, puis - si elles veulent - 417 00:31:35,300 --> 00:31:38,120 ajouter ce stock à leur portefeuille. 418 00:31:38,120 --> 00:31:40,310 Évidemment, si ils achètent quelque chose, alors cela va diminuer 419 00:31:40,310 --> 00:31:43,520 la quantité d'argent qu'ils ont, ce qui va diminuer leur argent. 420 00:31:43,520 --> 00:31:48,380 Nous allons avoir affaire à la mise à jour du portefeuille ainsi que la table des utilisateurs, 421 00:31:48,380 --> 00:31:50,300 qui contient de l'argent. 422 00:31:50,300 --> 00:31:54,920 Mais d'abord, vous avez besoin pour obtenir le stock réel et le montant des actions que l'utilisateur souhaite. 423 00:31:54,920 --> 00:32:00,010 Pour cela, vous aurez besoin d'un formulaire HTML qui vous demandera le symbole de l'action 424 00:32:00,010 --> 00:32:03,360 que vous voulez acheter ainsi que le nombre d'actions. 425 00:32:03,360 --> 00:32:08,300 Ensuite, vous aurez envie d'ajouter. 426 00:32:08,300 --> 00:32:13,750 Vous devrez sélectionner certaines valeurs. 427 00:32:13,750 --> 00:32:19,670 Nous avons traversé cela un peu petite déjà, mais quand vous essayez d'obtenir certaines lignes - 428 00:32:19,670 --> 00:32:22,020 récupérer certaines lignes de la table SQL, 429 00:32:22,020 --> 00:32:24,290 c'est la syntaxe suivante. 430 00:32:24,290 --> 00:32:28,400 Vous avez sélectionner, puis si vous spécifiez une étoile, 431 00:32:28,400 --> 00:32:31,830 qui va fondamentalement retourner l'ensemble, rangée entière pour vous. 432 00:32:31,830 --> 00:32:36,890 Là encore, vous avez la condition où, et puis vous spécifiez - 433 00:32:36,890 --> 00:32:39,990 Je veux seulement le nom d'utilisateur pour être égale à la poste, 434 00:32:39,990 --> 00:32:46,660 de sorte qu'il ne récupérer la ligne dans les utilisateurs qui correspond à la poste. 435 00:32:46,660 --> 00:32:52,860 >> Quand un utilisateur veut ajouter une part d'un portefeuille, 436 00:32:52,860 --> 00:32:54,400 vous devez vérifier quelques erreurs. 437 00:32:54,400 --> 00:32:57,680 Vous voulez vous assurer que l'utilisateur peut se permettre le stock, 438 00:32:57,680 --> 00:33:00,810 de sorte que vous aurez envie de vérifier leur argent. 439 00:33:00,810 --> 00:33:05,810 Avant, nous avons utilisé étoile pour récupérer toute une rangée d'une table SQL. 440 00:33:05,810 --> 00:33:08,930 Mais ici, nous pouvons simplement préciser que je ne veux valeur 1 - 441 00:33:08,930 --> 00:33:10,080 Je veux seulement en espèces. 442 00:33:10,080 --> 00:33:17,970 Donc, ici, il serait de retour l'argent pour l'utilisateur avec numéro d'identification 1. 443 00:33:17,970 --> 00:33:25,940 Si un utilisateur a déjà acheté un certain stock, mais achète alors plus de ce stock, 444 00:33:25,940 --> 00:33:30,440 puis dans votre portefeuille - vous ne voulez pas une ligne distincte, 445 00:33:30,440 --> 00:33:34,770 une autre ligne qui contient cette nouvelle transaction. 446 00:33:34,770 --> 00:33:37,950 En fait, vous voulez mettre à jour la quantité. 447 00:33:37,950 --> 00:33:42,530 Tout ce qui change vraiment, c'est la quantité d'actions que cet utilisateur possède. 448 00:33:42,530 --> 00:33:47,730 Si vous utilisez l'insert dans la requête - si c'est juste insérer dans votre portefeuille toutes ces valeurs - 449 00:33:47,730 --> 00:33:51,710 numéro d'identification de l'utilisateur ainsi que le symbole de l'action qu'ils achètent 450 00:33:51,710 --> 00:33:57,750 et les actions, alors vous aurez également besoin de préciser, eh bien, si je rencontre un double de la clé - 451 00:33:57,750 --> 00:34:00,750 dans ce cas, le double de la clé n'est pas seulement l'utilisateur Identifiant mais aussi le symbole de l'action - 452 00:34:00,750 --> 00:34:08,340 parce que vous ne pouvez avoir - notre postulat est que vous ne pouvez avoir 1 rangée 453 00:34:08,340 --> 00:34:10,699  qui correspond à 1 symbole spécifique. 454 00:34:10,699 --> 00:34:13,659 Ainsi, sur le double de la clé - si vous avez une collision il ya - 455 00:34:13,659 --> 00:34:18,520 vous allez juste de mettre à jour des actions à sa nouvelle valeur. 456 00:34:18,520 --> 00:34:23,290 Actions est égal à ce que nous avions avant, plus le nombre d'actions que l'utilisateur achète. 457 00:34:27,790 --> 00:34:31,090 >> Maintenant que nous avons mis à jour la table de portefeuille, 458 00:34:31,090 --> 00:34:34,730 Nous allons mettre à jour trésorerie de l'utilisateur. 459 00:34:34,730 --> 00:34:40,300 C'est dans la table des utilisateurs, donc nous allons être retranchant un certain montant d'argent. 460 00:34:40,300 --> 00:34:46,270 Vraisemblablement, il va être en espèces est moins en espèces - et puis un certain montant. 461 00:34:46,270 --> 00:34:50,560 Pour mettre à jour l'argent, vous le feriez - 462 00:34:50,560 --> 00:34:55,699 si je voulais prendre de l'argent de la poste, alors je exécuter cette requête - 463 00:34:55,699 --> 00:35:00,220 «Utilisateurs» de mise à jour, puis définissez la colonne de cash à cash - 464 00:35:00,220 --> 00:35:07,300 >> Je voudrais supprimer 9.999 dollars seulement si le nom d'utilisateur est égale à la poste. 465 00:35:07,300 --> 00:35:12,020 Mais, dans ce cas, nous ne voulons pas de soustraire 9.999 spécifiquement. 466 00:35:12,020 --> 00:35:17,610 Nous voulons préciser, eh bien, nous voulons soustraire le prix actuel de l'action 467 00:35:17,610 --> 00:35:22,400 multiplié par le nombre d'actions qu'ils achètent. 468 00:35:25,260 --> 00:35:29,910 >> Maintenant, nous avons permis de voir tous les stocks dont ils disposent, 469 00:35:29,910 --> 00:35:33,080 ainsi que d'acheter plus de stocks. 470 00:35:33,080 --> 00:35:37,430 Nous avons également déjà permis de regarder le prix actuel d'une action. 471 00:35:37,430 --> 00:35:40,030 Ici, nous voulons leur permettre de les vendre. 472 00:35:40,030 --> 00:35:42,160 D'abord nous voulons afficher en gros - 473 00:35:42,160 --> 00:35:45,270 nous voulons leur permettre de voir tous les stocks dont ils disposent, 474 00:35:45,270 --> 00:35:53,170 alors voici nous voulons afficher toutes les lignes du portefeuille. 475 00:35:53,170 --> 00:35:56,650 S'ils choisissent de vendre un certain stock, 476 00:35:56,650 --> 00:35:59,140 alors nous allons supposer qu'ils veulent vendre la totalité de celui-ci. 477 00:35:59,140 --> 00:36:04,350 Ils ne vont pas se vendre 50% de leurs actions, ils vont vendre 100% de celui-ci. 478 00:36:04,350 --> 00:36:08,630 Nous ne pouvons tout simplement supprimer la ligne entière de portefeuille. 479 00:36:08,630 --> 00:36:17,520 Nous pouvons supprimer les actions de la utilisateur donné du symbole certaine. 480 00:36:17,520 --> 00:36:21,410 Il ya la syntaxe pour cela. 481 00:36:21,410 --> 00:36:22,710 >> Ensuite, nous voulons mettre à jour la trésorerie. 482 00:36:22,710 --> 00:36:30,930 Nous allons ajouter dans la caisse égale à la quantité d'actions qu'ils vendent 483 00:36:30,930 --> 00:36:34,640 multiplié par le prix actuel de l'action - 484 00:36:34,640 --> 00:36:38,610 pas le prix auquel ils l'ont acheté, mais le prix auquel ils sont - 485 00:36:38,610 --> 00:36:40,500 le prix actuel quand ils le vendent. 486 00:36:40,500 --> 00:36:43,660 Pour référencer le prix actuel d'une action, 487 00:36:43,660 --> 00:36:49,120 vous souhaitez utiliser de recherche, qui vous donnera le prix d'une action 488 00:36:50,030 --> 00:36:52,650 à l'heure actuelle. 489 00:36:52,650 --> 00:36:55,930 >> Maintenant, on se retrouve avec l'histoire, 490 00:36:55,930 --> 00:37:00,170 laquelle vous voulez permettre à un utilisateur de garder une trace de toutes leurs transactions - 491 00:37:00,170 --> 00:37:03,040 veut voir quand ils ont vendu quelque chose, quand ils ont acheté un stock. 492 00:37:03,040 --> 00:37:08,870 Nous voulons préciser la date à laquelle ils l'ont fait aussi bien que combien ils ont acheté 493 00:37:08,870 --> 00:37:11,650 et ce stock était. 494 00:37:11,650 --> 00:37:17,800 Avons-nous, de la structure existante qui précise que? 495 00:37:17,800 --> 00:37:25,230 Eh bien, nous avons portefeuille qui affiche les stocks nombre que l'utilisateur a 496 00:37:25,230 --> 00:37:26,470 pour une action donnée. 497 00:37:26,470 --> 00:37:34,060 Mais nous structuration de portefeuille dans la façon dont il met à jour lorsque nous achetons multiple, 498 00:37:34,060 --> 00:37:40,190 tandis que l'histoire devrait - si vous achetez Apple, 10 actions de celui-ci, et puis plus tard sur la vente 5, 499 00:37:40,190 --> 00:37:44,040 alors vous voulez voir ceux séparément comme des actions distinctes, des lignes séparées. 500 00:37:44,040 --> 00:37:48,520 Attendu que l'action de visualiser que dans notre portfolio table 501 00:37:48,520 --> 00:37:52,540 serait tout simplement une mise à jour de cette ligne particulière, 502 00:37:52,540 --> 00:37:55,740  donc nous allons probablement vouloir une autre table. 503 00:37:55,740 --> 00:38:00,460 Dans notre base de données, nous avons notre table des utilisateurs, nous avons notre table de portefeuille, 504 00:38:00,460 --> 00:38:04,090 et maintenant nous allons probablement besoin d'un tableau de l'histoire. 505 00:38:04,090 --> 00:38:08,070 Ce tableau histoire peut garder la trace de la date du jour, 506 00:38:08,070 --> 00:38:12,800 ainsi que le symbole boursier particulier, ainsi que le nombre d'actions, 507 00:38:12,800 --> 00:38:15,410 et puis quelle mesure il est - 508 00:38:15,410 --> 00:38:18,800 si vous achetiez ces actions ou si vous les vendez. 509 00:38:20,660 --> 00:38:25,720 >> Pour faire face à ce jour, il ya un couple de façons que vous pouvez faire cela. 510 00:38:25,720 --> 00:38:28,820 PHP dispose d'un moyen de garder la trace de ce jour, que vous pouvez regarder vous-même. 511 00:38:28,820 --> 00:38:33,990 En SQL, vous pouvez également utiliser maintenant ou timestamp courant. C'est à vous. 512 00:38:33,990 --> 00:38:40,720 Assurez-vous que chaque fois qu'un utilisateur achète ou vend, vous serez la mise à jour de leur trésorerie 513 00:38:40,720 --> 00:38:46,750 dans la table des utilisateurs, vous serez mise à jour des lignes dans la table portefeuilles, 514 00:38:46,750 --> 00:38:50,900 alors vous aurez également la mise à jour de l'histoire, 515 00:38:50,900 --> 00:38:56,260 donc il va y avoir 3 différentes requêtes SQL que vous serez y faisant escale. 516 00:38:58,640 --> 00:39:01,530 Nous avons un tas de fonctionnalités maintenant. 517 00:39:01,530 --> 00:39:10,600 >> Juste quelques rappels dans votre fichier d'index, vous aurez envie de mettre un lien vers au moins votre - 518 00:39:10,600 --> 00:39:15,550 mais vous voulez permettre à un utilisateur d'un lien vers la page buy.php. 519 00:39:15,550 --> 00:39:23,560 Cela va permettre à un utilisateur - buy.php est le contrôleur, donc qui va soit 520 00:39:23,560 --> 00:39:29,170 vous envoyez à - ça va vous envoyer à la forme qui vous permet de regarder les choses en place. 521 00:39:29,170 --> 00:39:34,420 Nous avons une histoire. Nous avons la déconnexion, obtenir un devis pour les revendre ensuite. 522 00:39:34,420 --> 00:39:37,350 Ce sont au minimum ce que vous voulez montrer. 523 00:39:37,350 --> 00:39:43,640 En termes de portefeuille, le portefeuille est effectivement indiqué dans la page d'index. 524 00:39:43,640 --> 00:39:52,050 Si nous passons à l'index, nous voyons ici qu'il rend portfolio.php 525 00:39:52,050 --> 00:40:00,050 et passe dans le tableau associatif - en gros le titre est égal portefeuille. 526 00:40:00,050 --> 00:40:02,610 Donc, c'est le contrôleur. 527 00:40:02,610 --> 00:40:08,000 Si nous allons au modèle de portfolio.php, 528 00:40:08,000 --> 00:40:18,060 alors tout ce qu'il a est - essentiellement affiche une image qui dit, oh, ce site est en construction. 529 00:40:18,060 --> 00:40:23,810 Plus tard, une fois que vous passez - vous en aurez sera de passage dans l'information fondamentalement plus spécifique. 530 00:40:23,810 --> 00:40:27,400 Au lieu de simplement le titre, vous serez probablement en passant plus de choses. 531 00:40:27,400 --> 00:40:32,010 Une fois que vous avez ces valeurs, alors portfolio.php peut faire face à ces valeurs 532 00:40:32,010 --> 00:40:34,490 et de les imprimer dans un ordre quelconque. 533 00:40:34,490 --> 00:40:41,660 >> Une fois que vous avez appliqué l'ensemble de ceux-ci, vous devez également mettre en œuvre option 1 plus. 534 00:40:41,660 --> 00:40:44,890 Cela peut être permettant à un utilisateur de changer son mot de passe, 535 00:40:44,890 --> 00:40:50,110 de réinitialiser leur mot de passe si ils l'ont oublié - si le nouveau mot de passe, puis 536 00:40:50,110 --> 00:40:54,560 vous voudrez probablement aussi d'éditer vous inscrire afin que cela leur permet de spécifier un email, 537 00:40:54,560 --> 00:40:57,910 donc si ils oublient leur mot de passe, ils peuvent l'obtenir. 538 00:40:57,910 --> 00:41:02,870 Ils peuvent probablement entrer son nom d'utilisateur, puis un email vous sera envoyé pour les 539 00:41:02,870 --> 00:41:06,180 avec un lien pour être en mesure de réinitialiser leur mot de passe. 540 00:41:06,180 --> 00:41:10,980 Vous pouvez avoir quelque chose qui permet aux utilisateurs d'obtenir des reçus 541 00:41:10,980 --> 00:41:12,380 chaque fois qu'ils achètent ou vendent quelque chose, 542 00:41:12,380 --> 00:41:19,910 et enfin, leur permettre d'ajouter de l'argent à leur site Web. 543 00:41:19,910 --> 00:41:24,970 Pour en revenir à la notion de contrôleurs et des modèles un peu. 544 00:41:24,970 --> 00:41:31,170 Vous aurez quelque chose comme un - si vous avez un contrôleur ici. 545 00:41:31,170 --> 00:41:35,080 À l'heure actuelle, nous nous penchons sur l'exemple login.php. 546 00:41:35,080 --> 00:41:38,220 Lorsque nous avons un contrôleur, fondamentalement, il va prendre 2 cas. 547 00:41:38,220 --> 00:41:42,090 Lorsque nous avons des contrôleurs, nous sommes dans cette pièce que nous sommes aussi un peu face à 548 00:41:42,090 --> 00:41:43,880 lorsque nous avons des formes aussi. 549 00:41:43,880 --> 00:41:47,500 Le contrôleur avez essentiellement des actions distinctes - 550 00:41:47,500 --> 00:41:53,880 un si un formulaire a déjà été soumis, puis deux, si l'utilisateur arrive à cette page 551 00:41:53,880 --> 00:41:56,870 pour la première fois et reste à cette forme d'entrée. 552 00:41:56,870 --> 00:42:02,820 >> Je vais passer directement à la première affaire avant de monter dans le premier cas, d'avoir la forme po 553 00:42:02,820 --> 00:42:12,640 Ici nous disons, si le formulaire a été soumis avec la méthode POST - 554 00:42:12,640 --> 00:42:13,580 ne vous inquiétez pas à ce sujet un peu. 555 00:42:13,580 --> 00:42:19,780 Ne vous inquiétez pas trop, mais comprenez que, fondamentalement, cette fonction traite 556 00:42:19,780 --> 00:42:22,430 si un formulaire a été envoyé ou non. 557 00:42:22,430 --> 00:42:25,640 Cette condition est vraie si un utilisateur a soumis le formulaire. 558 00:42:25,640 --> 00:42:45,940 Si non, alors nous allons vouloir appeler login_form.php rendu, puis passer dans le titre. 559 00:42:45,940 --> 00:42:48,010 Ce titre est en fait juste va apparaître dans l'en-tête. 560 00:42:48,010 --> 00:42:54,990 Que cela ne se dit essentiellement, d'accord - ainsi, si un utilisateur se rend à login.php 561 00:42:54,990 --> 00:43:00,310 et n'a pas effectivement connecté, alors je veux pas les renvoyer à la page qui a cette forme 562 00:43:00,310 --> 00:43:03,160 ce qui leur permet d'entrer le nom d'utilisateur et le mot de passe. 563 00:43:03,160 --> 00:43:07,590 Ensuite je vais à login_form, puis qui a la forme réelle. 564 00:43:07,590 --> 00:43:13,750 Puis, une fois que l'utilisateur envoie cette forme, ils vont le soumettre à login.php 565 00:43:13,750 --> 00:43:15,840 avec le poste de procédé. 566 00:43:15,840 --> 00:43:21,560 Ensuite, je vais en fait entrer dans cette section de mon if-else boucle. 567 00:43:21,560 --> 00:43:29,560 Alors, c'est ici que nous traitons avec les valeurs entrées dans le formulaire. 568 00:43:29,560 --> 00:43:32,800 C'est ici que nous traitons avec ceux-ci. 569 00:43:32,800 --> 00:43:40,860 >> Puis, une fois que vous infligez avec ces valeurs - si vous faites affaire avec - 570 00:43:40,860 --> 00:43:46,640 dire que nous avons affaire à la page quote.php où quelqu'un peut entrer un stock qui 571 00:43:46,640 --> 00:43:49,950 ils veulent regarder, et puis voir ce que l'affichage - 572 00:43:49,950 --> 00:43:52,850 c'est le genre de semblable ici. 573 00:43:52,850 --> 00:43:56,070 Ici, nous avons un formulaire de connexion - it! Probablement un formulaire de devis - 574 00:43:56,070 --> 00:44:00,290 mais une fois que l'utilisateur a fait valoir que l'information, 575 00:44:00,290 --> 00:44:04,810 alors vous voudrez le contrôleur de passer dans un autre modèle 576 00:44:04,810 --> 00:44:07,430 que va leur montrer que l'information réelle. 577 00:44:07,430 --> 00:44:11,250 Donc, puis à droite ici, alors vous aurez sans doute - 578 00:44:11,250 --> 00:44:18,830 vers la fin de votre état ici - le cas la méthode equals post - 579 00:44:18,830 --> 00:44:22,520 alors vous aurez probablement envie de restituer une autre page - la citation show - 580 00:44:22,520 --> 00:44:28,040 qui vous envoie vers cette page - show_quote.php-- 581 00:44:28,040 --> 00:44:34,120 puis en ce que le fichier se référencer ces valeurs. 582 00:44:34,120 --> 00:44:36,480 Est-ce logique? 583 00:44:36,480 --> 00:44:40,390 >> Nous avons un contrôleur qui traite essentiellement avec les 2 cas - 584 00:44:40,390 --> 00:44:42,710 si vous avez entré un formulaire ou non. 585 00:44:42,710 --> 00:44:43,950 Si vous n'avez pas entré un formulaire, 586 00:44:43,950 --> 00:44:47,300 alors il vous redirigera vers cette forme, ce qui vous mettrons ensuite revenir à cette page. 587 00:44:47,300 --> 00:44:54,020 Puis, une fois que vous avez des informations sur le contrôleur, ce corps sera face à cette 588 00:44:54,020 --> 00:44:59,750 informations nécessaires - soit à la recherche des valeurs pour le stock, 589 00:44:59,750 --> 00:45:04,150 et puis une fois qu'il a regardé ces valeurs et les a dans un tableau bien formaté, 590 00:45:04,150 --> 00:45:08,180 alors peut passer ce tableau dans la page de modèle 591 00:45:08,180 --> 00:45:10,330  qui traite de la sortie que de l'information. 592 00:45:10,330 --> 00:45:14,680 >> Encore une fois, depuis son web, ça va être amusant. 593 00:45:14,680 --> 00:45:20,310 Nous sommes à l'extérieur de C, de sorte que nous ne sommes pas limités à l'ASCII et que la borne de sortie, 594 00:45:20,310 --> 00:45:21,800 alors amusez-vous avec cela. 595 00:45:21,800 --> 00:45:24,920 Vous pouvez le faire aussi visuelle que vous le souhaitez. 596 00:45:24,920 --> 00:45:31,860 Vous pouvez autoriser les utilisateurs à des millions de dollars d'entrée à la fois, 597 00:45:31,860 --> 00:45:34,730 ou de les limiter et être vraiment dire et de leur permettre seulement de saisir 1 penny à un moment 598 00:45:34,730 --> 00:45:36,330 ou quelque chose comme ça. 599 00:45:36,330 --> 00:45:38,550 Certainement assurez-vous d'avoir du plaisir avec ça. 600 00:45:38,550 --> 00:45:47,030 >> Le code PHP est un peu plus simple en ce qu'elle est un peu plus facile de tracer votre pseudo 601 00:45:47,030 --> 00:45:50,070 dans la mise en œuvre effective. 602 00:45:50,070 --> 00:45:56,320 Donc, certainement s'amuser avec cela parce que c'est en fait notre dernière pièce CS50. 603 00:45:56,320 --> 00:46:01,150 Avec ça, c'était Procédure pas à pas 7. 604 00:46:01,150 --> 00:46:04,640 Une fois que vous avez fini de regarder la procédure pas à pas et terminé votre pset, 605 00:46:04,640 --> 00:46:09,590 alors ceux-ci étaient également psets, et maintenant nous sommes sur le produit final - 606 00:46:09,590 --> 00:46:12,330 après que nous obtenons grâce quiz 1. 607 00:46:12,330 --> 00:46:16,200 Alors j'espère que vous pouvez utiliser les outils que vous avez tirés des psets - 608 00:46:16,200 --> 00:46:21,980 non seulement la syntaxe, mais plus la notion abstraite de la façon de prendre un certain - 609 00:46:21,980 --> 00:46:24,950 veux, je veux faire ça et puis effectivement mise en œuvre de ça. 610 00:46:24,950 --> 00:46:28,740 Apprendre à lutter à travers la syntaxe et le code de distribution. 611 00:46:28,740 --> 00:46:33,020 Lecture code d'autres personnes, puis l'interprétation que l'utilisation de fonctions pré-existantes. 612 00:46:33,020 --> 00:46:37,360 >> Alors, bonne chance avec le pset dernier. 613 00:46:37,360 --> 00:46:39,930 Cela a été un plaisir de diriger les procédures pas à pas. 614 00:46:39,930 --> 00:46:40,940 J'espère qu'ils ont été utiles pour vous. 615 00:46:40,940 --> 00:46:46,560 Ceux-ci étaient Procédures pas à pas, et merci beaucoup. 616 00:46:52,580 --> 00:46:56,200 [CS50.TV]