1 00:00:00,000 --> 00:00:03,000 [Powered by Google Translate] [ウォークスルーの問題セット7] 2 00:00:03,000 --> 00:00:04,400 [Zamylaチャン] [ハーバード大学] 3 00:00:04,400 --> 00:00:07,640 [これはCS50です] [CS50.TV] 4 00:00:07,640 --> 00:00:12,090 >> みなさん、こんにちは、そしてチュートリアル7、CS50ファイナンスへようこそ。 5 00:00:12,090 --> 00:00:15,090 今我々は正式に、CS50でのpsetのすべてで行われて 6 00:00:15,090 --> 00:00:19,380 そして我々はちょうど楽しみの実装であることを行っているもう一つが残っている 7 00:00:19,380 --> 00:00:23,770 ユーザーはCS50ファイナンスにログインすることができ、ウェブサイトの 8 00:00:23,770 --> 00:00:25,830 や株式を売買する。 9 00:00:25,830 --> 00:00:32,280 >> 今日、私達は私達の処分で、いくつかのツールを持っているとしている。 10 00:00:32,280 --> 00:00:34,320 私たちは、権限の話をすることになるだろう。 11 00:00:34,320 --> 00:00:36,380 あなたは、Webフォルダがあるとき、 12 00:00:36,380 --> 00:00:40,800 ユーザーが特定のファイルを実行できるようにするつもりだ 13 00:00:40,800 --> 00:00:42,500 だけでなく、ただ、他のものを読んで 14 00:00:42,500 --> 00:00:45,150 ので、我々は権限に見ていきますと、あなたはそれらを設定する方法について説明します。 15 00:00:45,150 --> 00:00:49,630 その後、我々は、PHP、HTML、およびSQLコードに見ていくつもりです。 16 00:00:49,630 --> 00:00:51,990 >> まず、パーミッション。 17 00:00:51,990 --> 00:00:56,060 あなたが特定のディレクトリ内に端末にいるとき、 18 00:00:56,060 --> 00:01:00,430 次にあなたが何をしたいあなたは、chmodコマンドを実行したいです。 19 00:01:00,430 --> 00:01:03,750 文字または数字のいずれかが続くだ 20 00:01:03,750 --> 00:01:08,100 あなたは基本的に世界が見たいものに対応し、 21 00:01:08,100 --> 00:01:09,830 あなたに会うと自分など 22 00:01:09,830 --> 00:01:13,350 たとえば、フォルダを持っているときはいつでも、 23 00:01:13,350 --> 00:01:15,560 次にそのフォルダが、それを見て誰もが実行できるようにしたい 24 00:01:15,560 --> 00:01:19,500 そう、何をするだろうすると、コマンドはchmod + xを実行する可能性がある 25 00:01:19,500 --> 00:01:21,050 してから、フォルダの名前です。 26 00:01:21,050 --> 00:01:28,110 あなたは、このようなCSSファイルや画像ファイルなどのファイルを持っている場合 - 27 00:01:28,110 --> 00:01:33,060 - JPEGやビットマップ、そのようなこと、または任意のJavaScriptコードのような 28 00:01:33,060 --> 00:01:36,440 あなたは、誰もが読めるようにすることを望む 29 00:01:36,440 --> 00:01:39,880 それでは、あなたが何をするか、ワイルドカードを使用することができます - 30 00:01:39,880 --> 00:01:41,650 これはアスタリスクです - 31 00:01:41,650 --> 00:01:46,190 そのフォルダ内のすべてのもの - - 基本的にはCSSのフォルダ内に示す 32 00:01:46,190 --> 00:01:48,740  私はそれがすべての人が読めるようになるだろうと言うつもりです。 33 00:01:48,740 --> 00:01:54,220 権限を持つ、我々は文字を使用する場合、 34 00:01:54,220 --> 00:01:57,610 我々はまた、代わりに番号を使用することができます。 35 00:01:57,610 --> 00:02:00,900 だから、あなたは最終的にあなたが実行可能であるために何かをしたいときがわかり - 36 00:02:00,900 --> 00:02:02,810 - 番号1で表されるということ 37 00:02:02,810 --> 00:02:08,340 読み出しを可能にするには何かが数字の4、その後です - 38 00:02:08,340 --> 00:02:10,590 書き込みは数2である - 39 00:02:10,590 --> 00:02:13,670 ので、本質的にはそれらの組み合わせをしたい場合、あなたはそれらを追加します。 40 00:02:13,670 --> 00:02:15,860 あなたは、読み込み、書き込み、実行可能であるために何かをしたい場合は、 41 00:02:15,860 --> 00:02:21,970 その後、あなたは4、2、1を追加することになり、それはあなたに7を与えるだろう 42 00:02:21,970 --> 00:02:26,230 その後、あなたが誰でも実行できるようにすることを目的のフォルダがあるとき - 43 00:02:26,230 --> 00:02:31,380 同様に読み書き可能 - 次にその7、1、1を加える。 44 00:02:31,380 --> 00:02:38,140 それはその後、他の人のための1あなたのための7となります。 45 00:02:38,140 --> 00:02:42,870 あなたがスペックを持っている場合、実際には、どのフォルダを指定して、どのファイルがあります 46 00:02:42,870 --> 00:02:45,040 具体的にします。chmod-EDにする必要があります。 47 00:02:45,040 --> 00:02:47,920 例えば、あなたがフォルダを持っているとき - それらは7-1-1です - 48 00:02:47,920 --> 00:02:52,690 あなたは、画像、または、HTML、CSS、JavaScriptを、持っているとき 49 00:02:52,690 --> 00:02:55,870 または6、4、4 - それらは、6、0、4になるだろうしている - 50 00:02:55,870 --> 00:03:00,030 その後PHPファイルは、6、0、0になるだろうしている。 51 00:03:00,030 --> 00:03:04,940 背後にある考え方は、ユーザーが実際にあなたのPHPコードを見てはいけないということです、 52 00:03:04,940 --> 00:03:08,370 しかし単に出力を見ることができ。 53 00:03:08,370 --> 00:03:11,030 >> すばらしい! PHPに移動。 54 00:03:11,030 --> 00:03:18,850 単に、あなたがPHPファイルを必要なときに、ファイルの拡張子は。phpの。 55 00:03:18,850 --> 00:03:22,000 また、PHPのコードとHTMLを混在させることができます。 56 00:03:22,000 --> 00:03:24,880 例えば、あなたがHTMLファイルがある場合 57 00:03:24,880 --> 00:03:32,520 その後、左の角には、疑問符は、phpとそれを囲むことができます - 58 00:03:32,520 --> 00:03:39,320 あなたのPHPコードを入れる - そして、もう一つの疑問符と直角であることを閉じます。 59 00:03:39,320 --> 00:03:45,020 PHPでは変数は、C言語の変数より対処する方がずっと楽アール 60 00:03:45,020 --> 00:03:50,310 すべての変数はそれの前にドル記号で始まり、それらが弱く型付けしている。 61 00:03:50,310 --> 00:03:53,470 それはあなたが何かを設定することを心配する必要がないことを意味します 62 00:03:53,470 --> 00:03:55,020 文字列または整数に等しい。 63 00:03:55,020 --> 00:03:57,710 あなたはただ単に言うことができる、これは変数の私の名前です 64 00:03:57,710 --> 00:04:00,390 そして、これは、その値である 65 00:04:00,390 --> 00:04:03,280 ので、そこに対処しやすくなるだろう。 66 00:04:03,280 --> 00:04:08,220 >> もう一つは、PHPは連想配列を使用することができるということです。 67 00:04:08,220 --> 00:04:11,330 あなたはただ単にあなたがC言語の場合と似た配列を定義することができます 68 00:04:11,330 --> 00:04:14,900 あなたのサイン名配列と等しいドル、言って、 69 00:04:14,900 --> 00:04:22,600 その後角括弧内は、基本的には、配列内のすべての要素の値のリストだけを持っています。 70 00:04:22,600 --> 00:04:27,160 しかし、PHPで何も出来ることは基本的に指定されている - 71 00:04:27,160 --> 00:04:31,050 それは、ハッシュ関数のような種類の一つだ。 72 00:04:31,050 --> 00:04:34,410 あなたは、インデックスを指定することができます - あなたがそれを呼び出すうとしているもの - 73 00:04:34,410 --> 00:04:37,030 そして、その値に対応する。 74 00:04:37,030 --> 00:04:42,880 あなたは実際に、B = 2、C = 3、a = 1を渡した場合 75 00:04:42,880 --> 00:04:50,820 その後、インデックスであなたの配列を使用すると、1を与えるだろう。 76 00:04:50,820 --> 00:04:56,600 このpsetには、質問の部分でいくつかのPHPであなたを暖めます 77 00:04:56,600 --> 00:04:59,240 それから私達はCS50ファイナンスに飛び込む。 78 00:04:59,240 --> 00:05:02,650 >> 私達はのカップルを持っている - 私たちは、基本的には、いくつかの機能を持っている、 79 00:05:02,650 --> 00:05:05,130 このウェブサイトで実装します。 80 00:05:05,130 --> 00:05:10,440 我々は、ユーザーがユーザー名とパスワードを使用して私達のウェブサイトに登録できるようにしたい。 81 00:05:10,440 --> 00:05:13,670 我々は、彼らが引用符をルックアップするようにしたい 82 00:05:13,670 --> 00:05:19,330 それから私達はその引用の名前だけでなく、それが時だと、現在の価格をプリントアウトするだろう。 83 00:05:19,330 --> 00:05:26,830 我々は、彼らがこれまでに購入した株式の全部のポートフォリオを参照できるようにしたい。 84 00:05:26,830 --> 00:05:34,240 我々はまた、彼らは株を買うだけでなく、それらを販売することを許可する。 85 00:05:34,240 --> 00:05:37,540 そして最後に、我々は彼らの履歴を参照できるようにしたい 86 00:05:37,540 --> 00:05:39,490 彼らが作ってきたすべてのトランザクションの。 87 00:05:39,490 --> 00:05:41,540 そして、最後に、あなたはそれのすべてを実装した後、 88 00:05:41,540 --> 00:05:45,110 それから1つの余分な機能を実装することは自由です。 89 00:05:45,110 --> 00:05:46,610 我々は、それらに行くつもりです。 90 00:05:46,610 --> 00:05:51,330 これらは、ユーザーが余分な現金を堆積させることによって、余分な現金を得るのを許容することができるか、 91 00:05:51,330 --> 00:05:54,550 またはあなたは、彼らが自分のパスワード、またはそのような何かを変更する可能性があります 92 00:05:54,550 --> 00:06:00,590 彼らが株式を売買領収書を電子メールで送信します。 93 00:06:00,590 --> 00:06:05,370 あなたは自分自身を実装できる機能の制限されたリストは、あります 94 00:06:05,370 --> 00:06:08,340 そう、そこは最後の一つだ。 95 00:06:08,340 --> 00:06:13,430 >> これはウェブサイトですので、皆さんもそれを自由にカスタマイズする事がたくさんある。 96 00:06:13,430 --> 00:06:20,960 、我々はいくつかのCSSコードを提供していますか、あなたは間違いなくそれを微調整することは自由です 97 00:06:20,960 --> 00:06:26,680 それは見た目が良くなりますが、それの基礎となる基本的な機能である 98 00:06:26,680 --> 00:06:30,310 ので、常にあなたが実際にそこに含まれるように必要なものについて仕様を参照してください。 99 00:06:30,310 --> 00:06:39,940 スペックに続いて、我々はサーバーとしてもアプライアンスを使用することになるだろう。 100 00:06:39,940 --> 00:06:43,910 それはローカルサーバー上で、私たちのために私達のウェブサイトをホストすることになるだろう。 101 00:06:43,910 --> 00:06:49,750 あなたは、これらの指示に従ってくださいとPSET 7流通コードを解凍した場合 102 00:06:49,750 --> 00:06:53,500 あなたの仮想ホスト/ローカルホストのフォルダに、 103 00:06:53,500 --> 00:07:02,470  あなただけの、アプライアンスでGoogle Chromeでhttp://localhost/を訪問することができます 104 00:07:02,470 --> 00:07:09,120 その後、あなたはPSET 7を書いたするコードに達するだろう。 105 00:07:09,120 --> 00:07:14,490 >> PSET 7は、流通コードの束が付属しています 106 00:07:14,490 --> 00:07:18,330 うまくいけば、we've - この前のpsetのすべてを通して - 107 00:07:18,330 --> 00:07:21,700 ディストリビューションのコードを通して読むことに慣れている私たちを、 108 00:07:21,700 --> 00:07:25,650 機能がすでに提供しているかを理解して、そして我々は使用することができるかもしれない方法 109 00:07:25,650 --> 00:07:29,470 それらと我々が実装されようとしていることを他の機能。 110 00:07:29,470 --> 00:07:31,570 この場合において、我々は3フォルダーがあります。 111 00:07:31,570 --> 00:07:36,350 私たちは、HTMLフォルダ、フォルダが含まれており、テンプレートフォルダを持っています。 112 00:07:36,350 --> 00:07:40,630 我々はこのPSETでやってことになるだろうと思考を分離の一種である - 113 00:07:40,630 --> 00:07:45,580 プログラミングの考え方 - 実際の視覚的な側面を持つPHPコード。 114 00:07:45,580 --> 00:07:52,690 我々は、思考のすべてを行いつのPHPファイルを持っているデータベースに読み込みます 115 00:07:52,690 --> 00:07:55,620 物事をプリントアウトし、if文を持っています - そのようなもの - 116 00:07:55,620 --> 00:08:02,140 やtemplate.php - そして、それは我々のテンプレート·ファイルにデータを渡します。 117 00:08:02,140 --> 00:08:05,710 何をするかは、データを読み取られ、それをプリントアウトします。 118 00:08:05,710 --> 00:08:09,550 >> 我々は、我々が実際にそれらをしたくないという点で、 "ダム"としてテンプレートを扱うことができます 119 00:08:09,550 --> 00:08:12,370 物事を計算する際に多くの作業を行うことができる。 120 00:08:12,370 --> 00:08:16,330 私たちは、コントローラがそれをやってみたい。 121 00:08:16,330 --> 00:08:21,610 少し上の - のは、ディストリビューションのコードの一部を見てみましょう。 122 00:08:21,610 --> 00:08:28,250 ここに私達は私達のindex.htmlファイルを持っている、それはかなり空です。 123 00:08:28,250 --> 00:08:34,429 本質的にそれが何をするか - それは言う、まあ、私はconfiguration.phpファイルを必要とするつもりです。 124 00:08:34,429 --> 00:08:40,120 、我々はすぐそこにあることを見ることはありませんが、それは基本的にconfiguration.phpファイルを呼び出している 125 00:08:40,120 --> 00:08:42,240 とすることを実行する。 126 00:08:42,240 --> 00:08:45,130 それはそれをした後、それはポートフォリオをレンダリングするために起こっている。 127 00:08:45,130 --> 00:08:49,310 レンダリングとは、我々がコントローラにいるときはいつでも、関数である 128 00:08:49,310 --> 00:08:56,490 我々はレンダリングと呼ぶことにします、我々はそれをファイルを与えるでしょうし、我々はで渡しているデータ、 129 00:08:56,490 --> 00:09:04,570 そのポートフォリオはそれに対処できるように、そのデータを渡すのportfolio.phpオンリーで呼ぶことにしますように。 130 00:09:04,570 --> 00:09:10,540 >> そして今、ここで、我々は考えられる理由フォームを持っています。 131 00:09:10,540 --> 00:09:17,540  これは、基本的にインチロギングの世話をするコントローラである 132 00:09:17,540 --> 00:09:29,090 フォームがサブミットの検証を使用してこのファイルやお得な情報に提出された場合、ここでは、それはチェックします。 133 00:09:29,090 --> 00:09:31,990 我々は、この謝罪する機能に見ていきます。 134 00:09:31,990 --> 00:09:35,100 我々は、エラーメッセージを出力したい場合は、 135 00:09:35,100 --> 00:09:39,550 我々は謝罪を使用して、その特定のページにユーザーをリダイレクトします 136 00:09:39,550 --> 00:09:42,530 それは我々が示していることを具体的なエラーメッセージを出力します。 137 00:09:42,530 --> 00:09:47,860 に引き続き、データベースにクエリを送信します - we'llは後で、より入る。 138 00:09:47,860 --> 00:09:54,180 その後、フォームが送信されなかった場合はここでダウン、それがフォームをレンダリングすることがわかります。 139 00:09:54,180 --> 00:10:01,360 それはlogin_form.phpに行くことを意味し、その結果を見てみましょう。 140 00:10:01,360 --> 00:10:09,400 >> 我々は実際の視覚的な側面を持つHTML取引を参照してくださいどこに考えられる理由は、実際には。 141 00:10:09,400 --> 00:10:15,130 ここでは、ユーザー名の入力タグは、パスワードの入力を持っている 142 00:10:15,130 --> 00:10:16,630 同様にsubmitボタンとして。 143 00:10:16,630 --> 00:10:22,660 視覚的な側面とHTMLフォームが開催されようとしている場所、それは実際にあります。 144 00:10:22,660 --> 00:10:27,550 ここでは、それがポストと呼ばれる特定の方法により提出することになるだろうと述べている。 145 00:10:27,550 --> 00:10:30,190 我々は方法の違いに買ってあげる - 146 00:10:30,190 --> 00:10:33,240 投稿に対してGET、PUTと呼ばれるものもあります - 147 00:10:33,240 --> 00:10:36,160 我々は、後でそれらのメソッドに入るが、このpsetの利益のためによ 148 00:10:36,160 --> 00:10:37,810 私は非常には、ポストを使用することを勧めます。 149 00:10:37,810 --> 00:10:42,210 >> 私たちは基本的に一度このフォームが送信されることを知っている - 150 00:10:42,210 --> 00:10:44,650 からlogin_form.php- - 151 00:10:44,650 --> 00:10:50,850 それはアクションに行きます - 。へ戻る- - 152 00:10:50,850 --> 00:10:56,070 基本的に考えられる理由にそれらのフォームからのすべてのそれらのパラメータを渡します。 153 00:10:56,070 --> 00:11:04,900 そのフォームからの結果は、この後の連想配列内に含まれています。 154 00:11:04,900 --> 00:11:11,710 ポスト·アレイ内の異なる要素のインデックス 155 00:11:11,710 --> 00:11:15,290 ここで指定するかを正確にされています。 156 00:11:15,290 --> 00:11:19,240 この入力の名前がユーザ名であると言う。この1つの名前がパスワードです。 157 00:11:19,240 --> 00:11:26,840 同様に、あなたはそこに連想配列のインデックスとしてユーザ名を参照してください。 158 00:11:26,840 --> 00:11:35,110 我々は含まれていたフォルダに移動した場合、我々は非常に有用であることを行っているこの関数のファイルがあります。 159 00:11:35,110 --> 00:11:37,570 >> これらの機能はすべて実装されます。 160 00:11:37,570 --> 00:11:41,870 あなたは、具体的には、これらを自分のいずれかを実装する必要はありません 161 00:11:41,870 --> 00:11:43,140 しかし、彼らは非常に便利になるだろう。 162 00:11:43,140 --> 00:11:49,450 我々は、私が前に言ったように、基本的にエラーメッセージが出力されている、謝罪しました 163 00:11:49,450 --> 00:11:52,920 apology.php - 特定のページのあなたのために。 164 00:11:52,920 --> 00:11:59,890 その後、我々は、あなただけのダンプを呼び出すそうだとすれば、ダンプを持っているし、変数を渡す 165 00:11:59,890 --> 00:12:04,930 それはあなたのために、その変数を表示するページが開きます。 166 00:12:04,930 --> 00:12:09,950 その後、我々は基本的に特定のユーザーのセッションを終わるか、ログアウトしています。 167 00:12:09,950 --> 00:12:12,240 ルックアップは便利になるだろう。 168 00:12:12,240 --> 00:12:15,870 我々は、引用符や株式を扱っているので、我々はできるようにするつもりだ - 169 00:12:15,870 --> 00:12:17,650 そして、それは本質的にはリアルタイムです。 170 00:12:17,650 --> 00:12:21,380 我々は、これらの株式価値が何であるかを知っておく必要があり、 171 00:12:21,380 --> 00:12:28,210 ので、我々は株式のYahooのドキュメントを扱うルックアップ機能を持っています。 172 00:12:28,210 --> 00:12:37,700 あなたが一定の株式のシンボルを検索したら、それはあなたの銘柄記号に戻ります 173 00:12:37,700 --> 00:12:41,480 同様に名前と、その株式の現在の価格として。 174 00:12:41,480 --> 00:12:44,330 ことは、ルックアップ関数です。 175 00:12:44,330 --> 00:12:48,350 >> その後、我々は、MySQLを扱っている 176 00:12:48,350 --> 00:12:53,970 だから我々はSQLデータベースに特定のクエリを実行したいということになるだろう。 177 00:12:53,970 --> 00:12:58,890 我々は対処するクエリがある - そのうちのいくつかの抽象の種類に。 178 00:12:58,890 --> 00:13:03,200 私たちは、SQLクエリの全体の文字列を渡すことになるだろう - 179 00:13:03,200 --> 00:13:05,360 そしてそれに行くすべての変数 - 180 00:13:05,360 --> 00:13:09,480 そしてこれは何、実際には私たちのためにそれを実行することです。 181 00:13:09,480 --> 00:13:15,070 代わりに照会したいたびにアウトこれのすべてを記述しなければならない - 182 00:13:15,070 --> 00:13:21,740 そのクエリーの結果のすべてを取得することで - 183 00:13:21,740 --> 00:13:24,740 次に、あなただけのクエリ関数を呼び出すことができ、そしてそれはあなたに戻ります - 184 00:13:24,740 --> 00:13:28,750 あなたのクエリに使用しているものに応じて - 185 00:13:28,750 --> 00:13:33,000 おそらく、クエリまたは類似と一致する結果のすべての行。 186 00:13:33,000 --> 00:13:34,690 それについては後述しますが。 187 00:13:34,690 --> 00:13:41,200 >> 最後に、我々はその名が示すように、別のページにリダイレクトされ、リダイレクトされています。 188 00:13:41,200 --> 00:13:46,280 そして、我々は、我々は数回呼び出すことになるだろうレンダリングを持っています。 189 00:13:46,280 --> 00:13:51,010 あなたはコントローラにいるときには、テンプレートのページにレンダリング呼び出す 190 00:13:51,010 --> 00:13:55,390 その後テンプレートがその後に対処する値を渡します。 191 00:13:55,390 --> 00:13:59,540 これらの値は、おそらくあなたがしたい出力のタイプを扱うことにしようとしている 192 00:13:59,540 --> 00:14:01,050 テンプレートのページに表示されます。 193 00:14:01,050 --> 00:14:09,370 オーケー。それらは関数であり、このディストリビューション·コードにもっとたくさんあり​​ます。 194 00:14:09,370 --> 00:14:12,930 私はあなたがこれを通過し、それを自分で探索することをお勧めします。 195 00:14:12,930 --> 00:14:17,050 また、仕様はおそらく流通コードのいくつかの他の要素を見ていきます。 196 00:14:17,050 --> 00:14:27,360 ここのfunctions.phpで見つかる機能の概要です。 197 00:14:27,360 --> 00:14:31,710 >> オーケー。最初のタスクは、ユーザーがウェブサイトに登録できるようにすることです。 198 00:14:31,710 --> 00:14:34,860 現時点では、ウェブサイト上のログインフォームは、があります 199 00:14:34,860 --> 00:14:40,080 、あなたがパスワードを持つ少数のユーザーに提供されています。 200 00:14:40,080 --> 00:14:42,130 あなたは、それらのユーザー名を使用してログインできます 201 00:14:42,130 --> 00:14:45,140 しかし、あなたは人々が自分のユーザー名を作成することを許可する 202 00:14:45,140 --> 00:14:47,390 とウェブサイトに自分自身を追加します。 203 00:14:47,390 --> 00:14:53,070 登録のためのレイアウトは、ログインフォームにかなり似ていますが、 204 00:14:53,070 --> 00:14:56,340 ユーザ名は、既存のではない場合を除き、 205 00:14:56,340 --> 00:14:59,430 そしてまた、ユーザーは、新しいパスワードを提供する必要があります 206 00:14:59,430 --> 00:15:02,440 その後、我々は一般的にパスワードの確認を持っています。 207 00:15:02,440 --> 00:15:06,580 一度ユーザが入力する情報のすべて、 208 00:15:06,580 --> 00:15:10,620 我々は、ユーザーの私達のデータベースに追加したいと考えています。 209 00:15:10,620 --> 00:15:12,970 SQLデータベース - 我々は、データベースを持っているつもりです - 210 00:15:12,970 --> 00:15:14,470 我々は、参照しようとしている。 211 00:15:14,470 --> 00:15:18,140 そのデータベースでは、すべてのユーザーを持つテ​​ーブルがあるでしょう 212 00:15:18,140 --> 00:15:23,850 自分のユーザー名、そのパスワード、また、どのくらいの現金は持っているが含まれている。 213 00:15:23,850 --> 00:15:28,480 >> レジスタでは、我々は彼らがその情報を入力できるようにしたい。 214 00:15:28,480 --> 00:15:29,740 我々は、フォームを表示したい。 215 00:15:29,740 --> 00:15:32,210 我々は、自分のパスワードを確認したい - 216 00:15:32,210 --> 00:15:37,490 ことを彼らは2回入力したときに、パスワードが一致していることも、1つに入った、と。 217 00:15:37,490 --> 00:15:42,240 すべてのことをした後に行われます - これらのエラーがチェックされていることを仮定して - 218 00:15:42,240 --> 00:15:45,120 それから私達は私達のデータベースにそれらのユーザーを追加したい。 219 00:15:45,120 --> 00:15:49,630 ご登録を行った後で、再度ログインする必要がない場合は、最後に、それはかなり便利だ 220 00:15:49,630 --> 00:15:51,000 一度、登録した 221 00:15:51,000 --> 00:15:54,000 ので、我々は彼らが正常に登録されている場合のウェブサイトにログインしようとしている。 222 00:15:54,000 --> 00:16:00,360 >> 最初のタスクは、フォームを表示することであり、これは実際にあることを行っている - 223 00:16:00,360 --> 00:16:04,920 この全体の登録プロセスは、ログイン後にかなり密接にモデル化されようとしている 224 00:16:04,920 --> 00:16:10,510 代わりに考えられる理由を除いては、register.phpがあるかもしれません。 225 00:16:10,510 --> 00:16:14,300 代わりにlogin_form.php-そのうちテンプレートです - 226 00:16:14,300 --> 00:16:16,030 あなたは、フォームを登録する必要があります。 227 00:16:16,030 --> 00:16:19,680 パスワード確認フィールド - あなたはもう一つのフィールドを追加したいと思う - 228 00:16:19,680 --> 00:16:23,450 1つだけでなく、ユーザ名とパスワードの1。 229 00:16:23,450 --> 00:16:28,120 次に、我々は、パスワードが一致するか、空白かどうかを確認したいと思います。 230 00:16:28,120 --> 00:16:38,560 これらのチェックを行うの世話をするために起こっているregister.php- - 私たちは、コントローラーを持っている。 231 00:16:38,560 --> 00:16:41,690 フォームがPOSTメソッドで送信されると、 232 00:16:41,690 --> 00:16:47,050 その後、それらのすべての変数がポスト配列内に含まれています。 233 00:16:47,050 --> 00:16:52,280 あなたは、インデックスパスワードでポスト配列の値ことを確認したい 234 00:16:52,280 --> 00:16:58,080 確認の要素と一致します。 235 00:16:58,080 --> 00:16:59,410 あなたは、彼らが空白でないことを確認したい 236 00:16:59,410 --> 00:17:01,650 そしてあなたは彼らが同じだということを確認する必要があります。 237 00:17:01,650 --> 00:17:05,960 >> PHPに関する一つの便利なところは、もはや比較する文字列を使用する必要がないことです。 238 00:17:05,960 --> 00:17:08,410 我々は等しく、等しい演算子を使用できます 239 00:17:08,410 --> 00:17:11,470  文字列が互いに同等であるかどうかをチェックします。 240 00:17:11,470 --> 00:17:14,960 エラー処理のために、あなたは謝罪したいと思う。 241 00:17:14,960 --> 00:17:17,150 謝罪するには、単に関数を呼び出す 242 00:17:17,150 --> 00:17:21,910  してから、出力したいメッセージのタイプを指定します。 243 00:17:21,910 --> 00:17:24,630 その後、データベースにユーザを追加したいと思います。 244 00:17:24,630 --> 00:17:30,880 今まで、我々が行ってきたすべてがちょうどフォームの結果を使用してローカルに扱っている。 245 00:17:30,880 --> 00:17:33,940 今、私たちは、実際に私たちのデータベースに追加したいと思います。 246 00:17:33,940 --> 00:17:38,890 このため、我々は最初のユーザ名が空白でないことを確認したい。 247 00:17:38,890 --> 00:17:44,550 ウェブサイト上では、同じユーザー名を持つ複数のユーザーを持つことができないことを理解し、 248 00:17:44,550 --> 00:17:50,010 ので、あなたはあなたのデータベースに何かを挿入したときにあることを確認したいと思う - 249 00:17:50,010 --> 00:17:56,650 新しいユーザを追加 - その後は、既存のユーザ名との衝突を得ることはありません 250 00:17:56,650 --> 00:17:59,150 そしてユーザーが送信しようとしているユーザ名。 251 00:17:59,150 --> 00:18:02,250 このため、一度クエリを実行 - 252 00:18:02,250 --> 00:18:08,760 個人のパスワードとキャッシュの初期量を持つ特定のユーザを挿入する - 253 00:18:08,760 --> 00:18:15,140 それが失敗した場合、一度そのクエリを呼び出す場合、mysqlは実際にはfalseを返します。 254 00:18:15,140 --> 00:18:21,050 >> ユーザーの構造は、ユーザ名は一意の値であるようなものである 255 00:18:21,050 --> 00:18:22,540 ので、複数を持つことはできません。 256 00:18:22,540 --> 00:18:30,080 あなたがしようとするとすでに存在するユーザー名で新しい行を挿入すると、 257 00:18:30,080 --> 00:18:34,470 ブール値がfalseのように - それはfalseを返すようになるだろう。 258 00:18:34,470 --> 00:18:45,320 ここでトリッキーなことは、結果は、クエリの結果であるかどうかをチェックしたいと思うということです。 259 00:18:45,320 --> 00:18:52,320 それが失敗した場合は、三重イコール演算子を使用して確認するとよいでしょう。 260 00:18:52,320 --> 00:18:55,420 実際に故障かどうかは、そこにあるかどうかを確認するつもりだ 261 00:18:55,420 --> 00:19:02,760 単なる内のequals-等しく、一方行が空であった場合、それは本当だろう。 262 00:19:02,760 --> 00:19:06,000 ユーザ名の間に衝突があった場合の失敗の結果 263 00:19:06,000 --> 00:19:10,350 実際の偽の値である。 264 00:19:10,350 --> 00:19:15,230 >> ここでは、データベースに挿入する方法である。 265 00:19:15,230 --> 00:19:19,220 ここでは、SQLで厳密に実行するクエリです。 266 00:19:19,220 --> 00:19:25,750 一つのことは、あなたが実際にあなたのSQLデータベースを管理するウェブサイトに行くことができるということです 267 00:19:25,750 --> 00:19:31,070 手動で値または行のいずれかを入力して、そこに遊んでみましょう。 268 00:19:31,070 --> 00:19:34,540 これは、SQL出力が何であるかを出力します。 269 00:19:34,540 --> 00:19:38,870 また、データベース内のSQLコマンドを実行することができます 270 00:19:38,870 --> 00:19:42,200  その後、構文が何であるかを参照してください 271 00:19:42,200 --> 00:19:46,790 その後、我々はPSET 7に持っているquery関数に変換 272 00:19:46,790 --> 00:19:51,120 それはあなたが実際に実行したクエリと非常によく似ているために起こっている。 273 00:19:51,120 --> 00:19:54,570 >> 私はusersテーブルに新しい行を挿入したい場合は、 274 00:19:54,570 --> 00:20:01,240 その後、私はテーブルの名前ですユーザ、INSERT INTOを指定することになります。 275 00:20:01,240 --> 00:20:06,870 それから私は、列名を指定することになります。 276 00:20:06,870 --> 00:20:13,230 それから私は自分のパスワードと一緒に値を提供するであろう。 277 00:20:13,230 --> 00:20:17,080 私たちのユーザテーブル内のパスワードは単なる文字列として格納されません。 278 00:20:17,080 --> 00:20:19,440 彼らは、暗号化されたバージョンとして保存されている 279 00:20:19,440 --> 00:20:24,560 ので、実際のパスワードに関数cryptを実行したいと思う 280 00:20:24,560 --> 00:20:29,680 それはあなたのユーザアレイ用のストレージの正しい型を与える。 281 00:20:29,680 --> 00:20:34,960 これを実行すると、usersテーブルに新しい行を挿入します。 282 00:20:34,960 --> 00:20:39,020 >> クエリ機能に対処するために、 283 00:20:39,020 --> 00:20:43,100 Cの前に我々は、プレースホルダとしてパーセント記号を使用していました。 284 00:20:43,100 --> 00:20:47,670 同様に、プレースホルダの同じ概念はここに適用されます。 285 00:20:47,670 --> 00:20:50,720 クエリを使用すると、クエリ全体を指定 286 00:20:50,720 --> 00:20:55,510 クエリに入力変数として扱っているたびに、を除いて、 287 00:20:55,510 --> 00:21:00,490 その後、代わりに実際に内部に置くこと - 私たちは、C言語でprintf文を持っていたときのように 288 00:21:00,490 --> 00:21:03,740 私たちは、それぞれの後に、文字列を配置し、そこにプレースホルダーを持っているでしょう、そして、 289 00:21:03,740 --> 00:21:06,990 カンマは、私たちが持っていた変数を指定します。 290 00:21:06,990 --> 00:21:14,480 ここでは、私たちのプレースホルダとして疑問符記号を使用するつもりだ 291 00:21:14,480 --> 00:21:21,670 その後のプレースホルダを、順番にそれぞれ、各変数を渡す - 292 00:21:21,670 --> 00:21:24,420 どこでこれらの変数は行く必要があります。 293 00:21:24,420 --> 00:21:29,470 そこでここでは、最初の疑問符は、実際のユーザ名に置き換えられます 294 00:21:29,470 --> 00:21:33,610 パスワードによる次に2番目の疑問符。 295 00:21:33,610 --> 00:21:37,000 >> そして最後に、一度あなたがそれらを登録し、それをデータベースに追加しました 296 00:21:37,000 --> 00:21:40,510 その後、あなたがウェブサイトにそれらを記録したい。 297 00:21:40,510 --> 00:21:45,320 我々は、スーパーグローバル変数と呼ばれるセッションの種類を持っている。 298 00:21:45,320 --> 00:21:48,160 セッションは、特定のIDを取得 299 00:21:48,160 --> 00:21:51,750 そのidは、現在ログインしているユーザに対応 300 00:21:51,750 --> 00:21:56,380 自分のユーザーIDとは何かを見つけることですあなたがやりたいよ何 301 00:21:56,380 --> 00:22:03,710 その後、その特定のユーザのIDと、そのセッションIDを設定します。 302 00:22:03,710 --> 00:22:07,560 ここで使用したくなる関数はSQLコマンドです 303 00:22:07,560 --> 00:22:15,150 それはあなたのテーブルから最後に挿入されたID番号を取得します。 304 00:22:15,150 --> 00:22:24,560 その後、行が呼び出します - it'llがidを呼び出す - it'llが返す番号に名前を割り当てます。 305 00:22:24,560 --> 00:22:27,900 それは、そのidを呼ぶことにします。 306 00:22:27,900 --> 00:22:33,370 今、私たちは、登録が完了してきたが、我々は、引用することで移動することができます。 307 00:22:33,370 --> 00:22:36,610 >> 引用は、ユーザーが特定の株式の名前を入力することができます 308 00:22:36,610 --> 00:22:41,940 そしてそれはその株式の資質を返しています。 309 00:22:41,940 --> 00:22:48,410 ここでの操作したいと思うことは、コントローラといくつかのテンプレートを持っていることです。 310 00:22:48,410 --> 00:22:53,380 この場合、私たちは私たちのための思考のすべてをやろうとすると、コントローラを持っているつもりです。 311 00:22:53,380 --> 00:23:01,210 これは、シンボルをルックアップし、プリントアウトしますテンプレートに値を渡すことになるだろう。 312 00:23:01,210 --> 00:23:03,060 私たちはここで2のテンプレートを持っているつもりです。 313 00:23:03,060 --> 00:23:07,260 我々は、ユーザーがに行くされているフォームが用意されています1テンプレートを持っているつもりです 314 00:23:07,260 --> 00:23:09,920 株式の入力名 - 共有の名前。 315 00:23:09,920 --> 00:23:16,030 その後、我々はまた、それらの値を表示し、別のテンプレートをするつもりだ。 316 00:23:16,030 --> 00:23:27,450 あなたが入力を受け付けるフォームを持っているであろう方法の例については、ログインに見ることができ、 317 00:23:27,450 --> 00:23:30,060 ここ以外では、我々は1つのフィールドのみを求めています。 318 00:23:30,060 --> 00:23:31,630 我々は、ユーザ名とパスワードのフィールドを望んでいない。 319 00:23:31,630 --> 00:23:37,110 我々だけで、ユーザーが入力、特定の株式の名前をすることができます1のテキストフ​​ィールドを求めています。 320 00:23:37,110 --> 00:23:40,110 かつては、その株式を見上げている - そして、あなたはそのデータを送信したい - 321 00:23:40,110 --> 00:23:45,550 quote_form.phpへ。 322 00:23:45,550 --> 00:23:50,780 Lookupは、株式のシンボル、名前、および価格を返します。 323 00:23:50,780 --> 00:23:53,910 それらは連想配列内に含まれています。 324 00:23:53,910 --> 00:24:01,390 詳細はfunctions.phpに内部ルックアップ機能を見上げて 325 00:24:01,390 --> 00:24:04,010 それらの戻り値の型に。 326 00:24:04,010 --> 00:24:08,520 >> すばらしい!それでは最後に、株式情報を表示したいと思う。 327 00:24:08,520 --> 00:24:14,110 おそらく、表示したいと思う - you'llは、これらの変数にアクセスしたい。 328 00:24:14,110 --> 00:24:17,610 一度は、変数内の価格を持っている - 329 00:24:17,610 --> 00:24:20,860 同様に名前とシンボルとして - 330 00:24:20,860 --> 00:24:25,550 次にあなたのテンプレートのページでそれらを表示したいと思う。 331 00:24:25,550 --> 00:24:31,540 そのテンプレートのページはshow_quote.phpか何かを呼び出すことができます。 332 00:24:31,540 --> 00:24:39,660 あなたのquote.phpページはショーの引用をレンダリングしてから、それらの値のすべてに渡すことになります。 333 00:24:39,660 --> 00:24:47,170 それをあなたのPHPページでは、実際にはページのHTML側面にそれらの値をプリントアウトする。 334 00:24:47,170 --> 00:24:53,800 あなただけの印刷機能を使用し、価格を渡します。 335 00:24:53,800 --> 00:24:57,990 2つの方法があります - あなたはどちらか、ドット演算子とそれを連結することができます 336 00:24:57,990 --> 00:25:02,230 またはプレースホルダを使用しています。 337 00:25:07,580 --> 00:25:12,750 >> ユーザが最終的に株式を売買しようとしている。 338 00:25:12,750 --> 00:25:18,450 我々は、彼らが現在持っている株式のすべてを見ていくつかの方法を許可したい。 339 00:25:18,450 --> 00:25:21,350 我々は彼らのポートフォリオを呼び出すことになるだろう。 340 00:25:21,350 --> 00:25:26,180 ポートフォリオは、おそらくすべてのユーザーに対して、列の束を含んでいるでしょう 341 00:25:26,180 --> 00:25:31,760 彼らが持っているし、それらがどのように持っているそれらの多くが共有の種類が一覧表示されます。 342 00:25:31,760 --> 00:25:36,500 当社の既存のテーブルには - 今私達は私達のデータベースにusersテーブルを持っています。 343 00:25:36,500 --> 00:25:41,780 それは、ユーザのユーザ名だけでなく、そのパスワードとどのくらいの現金は持っているが含まれています。 344 00:25:41,780 --> 00:25:50,390 その内に彼らの株式のすべてを格納する本当の方法はありません。 345 00:25:50,390 --> 00:25:58,010 我々は、すべての株式の新しい列を挿入することができますようにそうではありません。 346 00:25:58,010 --> 00:26:03,650 私たちは無限の量を持っているので、それは非常に、非常に長い行であろう 347 00:26:03,650 --> 00:26:06,200 彼らが持っている可能性が株式の種類。 348 00:26:06,200 --> 00:26:09,150 だから、代わりに私たちが何をしようとし、同じデータベース内にある 349 00:26:09,150 --> 00:26:15,000 我々はユーザーのテーブルを持っていますが、その後、我々はまた、ポートフォリオテーブルがあるでしょう。 350 00:26:15,000 --> 00:26:18,430 ポートフォリオテーブルは間違いなく、usersテーブルにリンクされます 351 00:26:18,430 --> 00:26:24,600 その代わりポートフォリオテーブル構造は、株式情報を持っています 352 00:26:24,600 --> 00:26:27,780 ユーザーが持っている株式の株式数は何株、 353 00:26:27,780 --> 00:26:31,620 同様に、ユーザーの特定のID番号。 354 00:26:31,620 --> 00:26:34,620 あなたがIDを持っていてusersテーブルと同様に、ユーザー名、ハッシュ値を持っている - 355 00:26:34,620 --> 00:26:40,130 パスワードは、暗号化パスワードはどちらです - 356 00:26:40,130 --> 00:26:42,130 その後現金の金額は、彼らが持っている。 357 00:26:42,130 --> 00:26:47,900 ID番号は、ポートフォリオからのID番号にリンクされます。 358 00:26:47,900 --> 00:26:52,490 ポートフォリオは、単に株式のシンボルとしてだけでなく、株式を持っているだろう - 359 00:26:52,490 --> 00:26:55,410 ユーザーが持っているその株式の数。 360 00:26:55,410 --> 00:26:58,520 そのポートフォリオの表では、基本的に持っているであろう 361 00:26:58,520 --> 00:27:03,760 全株式は、サイト上のすべてのユーザーが持っている。 362 00:27:03,760 --> 00:27:10,550 その後、唯一の特定のユーザの共有を指定する - だけ彼らのポートフォリオ - 363 00:27:10,550 --> 00:27:15,360 あなたはそのようなあなたのポートフォリオのテーブルから値を取得するであろう 364 00:27:15,360 --> 00:27:19,930 ID番号は、そのユーザーに固有のものです。 365 00:27:26,520 --> 00:27:34,890 >> あなたがポートフォリオを表示するときは、ユーザーのポートフォリオの株式をそれぞれ報告したいと思う。 366 00:27:34,890 --> 00:27:41,670 あなたは株式の数とそれらの株式の現在の値を報告したいと思う。 367 00:27:41,670 --> 00:27:45,950 これらの株式の現在の値は、ポートフォリオ·テーブルに格納されていないこと 368 00:27:45,950 --> 00:27:51,640 最低でも - - 毎日Yahooはそれが更新されようとしているからだ。 369 00:27:51,640 --> 00:27:58,550 その情報を得るために、あなたのSQLクエリーからそれを参照することはできません。 370 00:27:58,550 --> 00:28:02,400 どのような機能は、私たちにそれを提供しています?価格はどのような機能を得るのだろうか? 371 00:28:02,400 --> 00:28:09,110 ルックだので、特定のシンボルにルックアップを使用すると、たくさんの情報を提供します。 372 00:28:09,110 --> 00:28:13,710 名称、記号、ならびに価格 - それはあなたの3情報の断片を与えるでしょう。 373 00:28:13,710 --> 00:28:17,490 あなたが特定のシンボルを検索したら、あなたは、価格を得ることができる 374 00:28:17,490 --> 00:28:20,460 その後、あなたのポートフォリオに表示する価格を使用することができます。 375 00:28:20,460 --> 00:28:26,190 >> ポートフォリオには、ユーザの現在の現金残高が表示されるはずです。 376 00:28:26,190 --> 00:28:30,310 そのフィールドは、ユーザーテーブル内に格納されます。 377 00:28:30,310 --> 00:28:33,400 それでは、我々は基本的にして抱えている思い返す - 378 00:28:33,400 --> 00:28:36,850 我々は、PHPファイルの種類を抱えている。 379 00:28:36,850 --> 00:28:40,160 私たちは基本的にあなたのためのすべての思考を行い、コントローラを持っているつもりです。 380 00:28:40,160 --> 00:28:45,940 そして、我々は、テンプレートが出力するデータを扱っているテンプレートを持っています。 381 00:28:45,940 --> 00:28:50,790 あなたは、コントローラはインチをする必要がある場合、どのような変数を考えなければなら 382 00:28:50,790 --> 00:29:01,630 我々は、すべての名称、記号、および共有番号を出力するポートフォリオを扱っているのなら、 383 00:29:01,630 --> 00:29:03,730 株式だけでなく、現在の価格は、 384 00:29:03,730 --> 00:29:06,950 その後、あなたは基本的に通過するいくつかの方法を見つけたいと思ってます - 385 00:29:06,950 --> 00:29:12,070 あなたはその一致する値の配列を渡すことができます。 386 00:29:15,250 --> 00:29:24,360 >> Let 'sは、あなたが株式のすべてを取得する方法の例に入る 387 00:29:24,360 --> 00:29:26,210 特定のユーザーによって所有されています。 388 00:29:26,210 --> 00:29:31,400 これは、処理していない - まだ - 株式の価格で。 389 00:29:31,400 --> 00:29:33,520 これは何をするだろうと、クエリを実行するだけです。 390 00:29:33,520 --> 00:29:37,070 それはからのシンボルだけでなく、株式を取得することになり - 391 00:29:37,070 --> 00:29:42,770 私はこのテーブルを呼んでいるが、この場合、それは何でしょうか? 392 00:29:42,770 --> 00:29:49,400 我々がシンボルと株式を持つことを扱っているテーブルの名前は何ですか 393 00:29:49,400 --> 00:29:52,280 特定のユーザのために? 394 00:29:52,280 --> 00:29:56,410 これは、ユーザーまたはポートフォリオのいずれかです。 395 00:29:56,410 --> 00:29:57,820 ポートフォリオ。 396 00:29:57,820 --> 00:30:03,220 これは何をするだろうと、シンボルと株式に対するクエリポートフォリオです 397 00:30:03,220 --> 00:30:04,920 特定のユーザーの。 398 00:30:04,920 --> 00:30:09,260 ここでは、私が言うには、(SELECTシンボルは、tblから株式 - 399 00:30:09,260 --> 00:30:12,280 しかし、テーブルの代わりに、あなたはポートフォリオであることを交換するつもりです。 400 00:30:12,280 --> 00:30:15,220 'WHERE'は、基本的に私の条件です。 401 00:30:15,220 --> 00:30:21,050 私は唯一対応するそれらの連想配列を取得したいと言っている 402 00:30:21,050 --> 00:30:23,850  この次の条件に - idは等しくなります。 403 00:30:23,850 --> 00:30:27,600  それから私は、そこにプレースホルダーを入れ、次にセッションIDだ。 404 00:30:27,600 --> 00:30:36,720 これは何をするだろうと、行の行ごとに言うさ。 405 00:30:36,720 --> 00:30:40,940 これはきちんとした方法の代わりに、実際にループ用に設定する必要がある 406 00:30:40,940 --> 00:30:47,450 すべての索引を反復していると、PHPには、for-eachループを持つことができます。 407 00:30:47,450 --> 00:30:53,520 >> あなたは与えられた配列を持っている場合は、私はすべての連続する要素を呼び出すつもりだと言うことができます - 408 00:30:53,520 --> 00:30:57,930 私はすべての要素がこの名前を呼ぶつもりです。 409 00:30:57,930 --> 00:31:02,780 だから、これらの要素のそれぞれについて、私は、それらの本呼び出しするつもりです 410 00:31:02,780 --> 00:31:04,500 それから私はこれを行うことができます。 411 00:31:04,500 --> 00:31:10,370 ごとに、このでは、あなたの実際の配列、あなたが行を呼び出すつもりだとして各行の行があります。 412 00:31:10,370 --> 00:31:12,420 毎回それは、bodyを実行 413 00:31:12,420 --> 00:31:16,960 それは上がるだろうし、それは、行の次の要素に行を更新します。 414 00:31:18,900 --> 00:31:25,260 >> さて、株式を購入の面で、 415 00:31:25,260 --> 00:31:29,500 私たちがやりたいことは、ユーザが購入しようとしている株式を取得することです 416 00:31:29,500 --> 00:31:35,300 その後、ユーザーが購入したい株式の金額、 - 彼らがしたい場合 - 417 00:31:35,300 --> 00:31:38,120 彼らのポートフォリオにその株式を追加します。 418 00:31:38,120 --> 00:31:40,310 彼らが何かを購入している場合、明らかに、その後は減少することになるだろう 419 00:31:40,310 --> 00:31:43,520 彼らが持っているお金の量、それらの現金を減少させるために起こっているそう。 420 00:31:43,520 --> 00:31:48,380 我々は、ポートフォリオだけでなく、ユーザーテーブルを更新を扱うことになるだろう 421 00:31:48,380 --> 00:31:50,300 これは、現金が入っています。 422 00:31:50,300 --> 00:31:54,920 しかし、最初に、ユーザーが望んでいる株式の実際の在庫と金額を取得する必要があります。 423 00:31:54,920 --> 00:32:00,010 そのためには、株式のシンボルを求められますHTMLフォームが必要になります 424 00:32:00,010 --> 00:32:03,360 あなただけでなく、株式数を購入したい。 425 00:32:03,360 --> 00:32:08,300 次に、追加したくなるかもしれません。 426 00:32:08,300 --> 00:32:13,750 あなたは、特定の値を選択するとよいでしょう。 427 00:32:13,750 --> 00:32:19,670 我々はすでに、この少しを経てきましたが、あなたは、特定の行を取得しようとしているとき - 428 00:32:19,670 --> 00:32:22,020 、SQLテーブルから特定の行を取得 429 00:32:22,020 --> 00:32:24,290 これは、次のような構文です。 430 00:32:24,290 --> 00:32:28,400 あなたは星を指定する場合は、次に選択して、き 431 00:32:28,400 --> 00:32:31,830 それは基本的にあなたのための全体、行全体を返しています。 432 00:32:31,830 --> 00:32:36,890 その後、再び、あなたが指定し、次にその条件を持っている - 433 00:32:36,890 --> 00:32:39,990 私は唯一のユーザー名が、メール受信に等しくなるようにしたい 434 00:32:39,990 --> 00:32:46,660 ので、それが唯一のメール受信に対応してユーザーが行を取得します。 435 00:32:46,660 --> 00:32:52,860 >> ユーザーは、ポートフォリオへの共有を追加したいときは、 436 00:32:52,860 --> 00:32:54,400 あなたは、いくつかのエラーをチェックする必要があります。 437 00:32:54,400 --> 00:32:57,680 あなたは、ユーザーが実際に株式を買う余裕ができることを確認したい 438 00:32:57,680 --> 00:33:00,810 ので、彼らの現金を確認したいと思う。 439 00:33:00,810 --> 00:33:05,810 前に、我々は、SQLテーブルから行全体を取得するためにスターを使用していました。 440 00:33:05,810 --> 00:33:08,930 しかし、ここで、私たちは実際にちょうど私が1つだけの値が必要であることを指定することができます - 441 00:33:08,930 --> 00:33:10,080 私は現金のみを求めています。 442 00:33:10,080 --> 00:33:17,970 そこでここでは、ID番号1を持つユーザーのために現金を返すことになります。 443 00:33:17,970 --> 00:33:25,940 ユーザーはすでに、特定の株式を買ったが、その株式の多くを購入している場合 444 00:33:25,940 --> 00:33:30,440 その後、あなたのポートフォリオの中で - あなたは、別の行をしたくない 445 00:33:30,440 --> 00:33:34,770 その新しいトランザクションを含む別の行。 446 00:33:34,770 --> 00:33:37,950 あなたは実際に金額を更新したい。 447 00:33:37,950 --> 00:33:42,530 本当に変化しているすべてのことは、そのユーザが所有している株式の金額です。 448 00:33:42,530 --> 00:33:47,730 あなたは、INSERT INTOクエリを使用する場合 - そうそれはちょうどあなたのポートフォリオにこれらすべての値を挿入している - 449 00:33:47,730 --> 00:33:51,710 ユーザのID番号だけでなく、彼らが買っていることを株式のシンボル 450 00:33:51,710 --> 00:33:57,750 私は重複したキーに実行する場合、及び株式は、その後も、まあ、指定する方が良いでしょう - 451 00:33:57,750 --> 00:34:00,750 この場合、重複キーは、ユーザのIDだけでなく、銘柄記号だけではありません - 452 00:34:00,750 --> 00:34:08,340 あなただけ持つことができるので - 私たちの前提は、あなただけの1行を持つことができるということです 453 00:34:08,340 --> 00:34:10,699  それは、1特定のシンボルに対応する。 454 00:34:10,699 --> 00:34:13,659 だから、重複キーで - あなたがそこに衝突に実行する場合 - 455 00:34:13,659 --> 00:34:18,520 あなただけの新しい値に株式を更新するつもりです。 456 00:34:18,520 --> 00:34:23,290 株式は、我々はユーザが購入されている株式数に加えて前に持っていたものは何でも等しくなります。 457 00:34:27,790 --> 00:34:31,090 >> さてポートフォリオ表を更新しましたことを、 458 00:34:31,090 --> 00:34:34,730 我々は、ユーザーのキャッシュを更新したいと思う。 459 00:34:34,730 --> 00:34:40,300 usersテーブルにだね、私たちは現金から一定の金額を差し引くことになるだろうので。 460 00:34:40,300 --> 00:34:46,270 一定量のその後と - おそらく、それは現金、現金マイナスに等しいことになるだろう。 461 00:34:46,270 --> 00:34:50,560 キャッシュを更新するには、次のように - 462 00:34:50,560 --> 00:34:55,699 私はメール受信からお金を奪うようにしたい場合、その後、私はこのクエリを実行するだろう - 463 00:34:55,699 --> 00:35:00,220 その後 "更新ユーザー 'と現金に現金列を設定 - 464 00:35:00,220 --> 00:35:07,300 >> ユーザー名はメール受信に等しい場合にだけ、私は9999ドルを取り除くでしょう。 465 00:35:07,300 --> 00:35:12,020 しかし、このケースでは、我々は、特に9999減算する必要はありません。 466 00:35:12,020 --> 00:35:17,610 我々は、指定したい、まあ、我々は、株式の現在の価格を減算したい 467 00:35:17,610 --> 00:35:22,400 彼らが買っていることを株式数を乗じた。 468 00:35:25,260 --> 00:35:29,910 >> 今、私たちは、彼らが持っている株式のすべてを見ることができました 469 00:35:29,910 --> 00:35:33,080 だけでなく、より多くの株式を購入する。 470 00:35:33,080 --> 00:35:37,430 我々はまた、以前に彼らは株式の現在の価格を調べることができました。 471 00:35:37,430 --> 00:35:40,030 ここで我々は彼らがそれらを販売できるようにしたい。 472 00:35:40,030 --> 00:35:42,160 まず、基本的に表示したい - 473 00:35:42,160 --> 00:35:45,270 我々は、彼らが持っている株式のすべてを見ることができるようにしたい 474 00:35:45,270 --> 00:35:53,170 そこでここでは、ポートフォリオからすべての行を表示したい。 475 00:35:53,170 --> 00:35:56,650 彼らは、特定の株式を売却することを選択した場合 476 00:35:56,650 --> 00:35:59,140 次に我々は、彼らがそれのすべてを売却したいと仮定するつもりです。 477 00:35:59,140 --> 00:36:04,350 彼らはちょうど彼らの株式の50%を売却するつもりはありません、彼らはそれの100%を売却するつもりです。 478 00:36:04,350 --> 00:36:08,630 私達はちょうどポートフォリオから行全体を削除することができます。 479 00:36:08,630 --> 00:36:17,520 我々は、特定のシンボルの特定のユーザーの共有を削除することができます。 480 00:36:17,520 --> 00:36:21,410 そのための構文があります。 481 00:36:21,410 --> 00:36:22,710 >> その後、我々はキャッシュを更新する必要があります。 482 00:36:22,710 --> 00:36:30,930 我々は、彼らが販売している株式の金額と同額の現金で追加することになるだろう 483 00:36:30,930 --> 00:36:34,640 株式の現在の株価を乗じた - 484 00:36:34,640 --> 00:36:38,610 ではない、彼らはそれを買った価格ではなく、彼らがされる​​ときの価格 - 485 00:36:38,610 --> 00:36:40,500 彼らはそれを販売している現在の価格。 486 00:36:40,500 --> 00:36:43,660 株式の現在の価格を参照するには、 487 00:36:43,660 --> 00:36:49,120 あなたはあなたの株式の価格を与えることとなる、ルックアップを使用したいと思うでしょう 488 00:36:50,030 --> 00:36:52,650 現在の時点で。 489 00:36:52,650 --> 00:36:55,930 >> 今、私たちは、歴史が残されています 490 00:36:55,930 --> 00:37:00,170 どのユーザーが自分の取引のすべてを追跡できるようにしたい - 491 00:37:00,170 --> 00:37:03,040 彼らは株を買ったときに何かを販売したときに見たいと思っています。 492 00:37:03,040 --> 00:37:08,870 我々は、彼らが買ってどのように多くのと同様にすることをやった時刻を指定したい 493 00:37:08,870 --> 00:37:11,650 そしてそれは何株だった。 494 00:37:11,650 --> 00:37:17,800 私たちは、それを指定する任意の現在、既存の構造を持っていますか? 495 00:37:17,800 --> 00:37:25,230 まあ、我々は、ユーザーが持っている数の在庫を表示ポートフォリオを持っている 496 00:37:25,230 --> 00:37:26,470 与えられた共有のため。 497 00:37:26,470 --> 00:37:34,060 しかし、我々は、我々は複数買うとき、それが更新される方法でポートフォリオを構築している 498 00:37:34,060 --> 00:37:40,190 あなたは、Apple、それの10株を購入し、その後に5を販売する場合は、 - 歴史あるべき一方 499 00:37:40,190 --> 00:37:44,040 その後は別々のアクション、別々の行として別にそれらを見たいと思う。 500 00:37:44,040 --> 00:37:48,520 そのアクションは、当社のポートフォリオのテーブルでそれを視覚化するのに対し、 501 00:37:48,520 --> 00:37:52,540 ただ、その特定の行への更新になります 502 00:37:52,540 --> 00:37:55,740  ので、我々はおそらく、別のテーブルをするつもりだ。 503 00:37:55,740 --> 00:38:00,460 私達のデータベースでは、我々のユーザーのテーブルを持って、我々は、我々のポートフォリオテーブルを持っている 504 00:38:00,460 --> 00:38:04,090 そして今我々は、おそらく履歴テーブルを用意すると良いでしょう。 505 00:38:04,090 --> 00:38:08,070 その履歴テーブルは、現在の日付を追跡することができます 506 00:38:08,070 --> 00:38:12,800 同様に特定の銘柄記号と同様、どのように多くの株式、 507 00:38:12,800 --> 00:38:15,410 その後どのようなアクション、それは - 508 00:38:15,410 --> 00:38:18,800 あなたはこれらの株式を買っていたかどうか、あなたがそれらを販売していたかどうかを指定します。 509 00:38:20,660 --> 00:38:25,720 >> 日付を扱うために、あなたがこれを行うことができますいくつかの方法があります。 510 00:38:25,720 --> 00:38:28,820 PHPは、あなたが自分自身を調べることができます日付を追跡する方法を持っています。 511 00:38:28,820 --> 00:38:33,990 SQLでは、あなたも今すぐ、または現在のタイムスタンプのいずれかを使用できます。それはあなた次第です。 512 00:38:33,990 --> 00:38:40,720 ただ毎回、ユーザーが購入または販売していることを確認してください、あなたはそれらの現金を更新することでしょう 513 00:38:40,720 --> 00:38:46,750 usersテーブルには、ポートフォリオのテーブルの行を更新することでしょう、 514 00:38:46,750 --> 00:38:50,900 その後、あなたはまた、履歴の更新されます 515 00:38:50,900 --> 00:38:56,260 そう、あなたがそこに呼び出しするようになると3つの別々のSQLクエリがあるように起こっています。 516 00:38:58,640 --> 00:39:01,530 我々は今の機能の束を持っている。 517 00:39:01,530 --> 00:39:10,600 >> あなたのインデックスファイルには、少なくともあなたにリンクしたいと思うリマインダーだけのカップル - 518 00:39:10,600 --> 00:39:15,550 しかし、あなたは、ユーザーがbuy.phpページにリンクできるようにしたいと思う。 519 00:39:15,550 --> 00:39:23,560 buy.phpはコントローラなので、そのどちらかになるだろう - それは、ユーザーを許可するために起こっている 520 00:39:23,560 --> 00:39:29,170 にあなたを送信する - それは、あなたが物事をルックアップできるようにするためのフォームにあなたを送信するために起こっている。 521 00:39:29,170 --> 00:39:34,420 我々は歴史を持っています。我々は、ログアウト見積もりを取得し、その後販売しています。 522 00:39:34,420 --> 00:39:37,350 それらはあなたが表示したいもの最低でもあります。 523 00:39:37,350 --> 00:39:43,640 ポートフォリオの観点から、ポートフォリオは、実際には索引ページに示されている。 524 00:39:43,640 --> 00:39:52,050 我々がインデックスに行けば、ここで我々はそれがportfolio.phpレンダリングしていることがわかり 525 00:39:52,050 --> 00:40:00,050 と連想配列を渡す - 基本的にはタイトルがポートフォリオに等しい。 526 00:40:00,050 --> 00:40:02,610 だから、これはコントローラです。 527 00:40:02,610 --> 00:40:08,000 我々はportfolio.phpのテンプレートに行けば、 528 00:40:08,000 --> 00:40:18,060 それが持っているすべては - ああ、このサイトは工事中ですが、基本的に言って画像を表示します。 529 00:40:18,060 --> 00:40:23,810 その後、一度に渡す - you'llは、基本的には、より具体的な情報を渡すこと。 530 00:40:23,810 --> 00:40:27,400 だけではなく、タイトルの、おそらくより多くのものを渡すことになります。 531 00:40:27,400 --> 00:40:32,010 あなたはそれらの値を取得したら、次にportfolio.phpは、これらの値を扱うことができます 532 00:40:32,010 --> 00:40:34,490 と秩序の任意の並べ替えでそれらをプリントアウト。 533 00:40:34,490 --> 00:40:41,660 >> 一度あなたがそれらのすべてを実装しました、また、1以上の機能を実装する必要があります。 534 00:40:41,660 --> 00:40:44,890 これは、いずれかのユーザーが自分のパスワードを変更させることができ、 535 00:40:44,890 --> 00:40:50,110 彼らはそれを忘れてしまった場合、そのパスワードをリセットする - ので、パスワードのリセットのために、次に 536 00:40:50,110 --> 00:40:54,560 それは彼らが電子メールを指定することができますように、あなたはおそらく、また、登録を編集したいと思う 537 00:40:54,560 --> 00:40:57,910 彼らは自分のパスワードを忘れた場合はそうだとすれば、彼らはそれを得ることができます。 538 00:40:57,910 --> 00:41:02,870 おそらく彼らは、自分のユーザー名に入力することができますし、電子メールはそれらに送信されます 539 00:41:02,870 --> 00:41:06,180 自分のパスワードをリセットできるようにするリンクが書かれた。 540 00:41:06,180 --> 00:41:10,980 あなたは、ユーザーが領収書を取得することができます何かを持つことができます 541 00:41:10,980 --> 00:41:12,380 彼らは何かを買ったり売ったりするたびに、 542 00:41:12,380 --> 00:41:19,910 そして最後に、彼らは彼らのウェブサイトに現金を追加することができます。 543 00:41:19,910 --> 00:41:24,970 ただコントローラとテンプレート少しのコンセプトに戻ります。 544 00:41:24,970 --> 00:41:31,170 あなたのような何かを持っています - あなたがここにコントローラーを持ってますので。 545 00:41:31,170 --> 00:41:35,080 今、我々は考えられる理由の例を見ている。 546 00:41:35,080 --> 00:41:38,220 我々は、コントローラを持っている場合、基本的には2例を取るつもりです。 547 00:41:38,220 --> 00:41:42,090 我々がコントローラを持っているとき、我々は我々はまた、扱うの一種だということ、この作品にしている 548 00:41:42,090 --> 00:41:43,880 我々としても、フォームを持っているとき。 549 00:41:43,880 --> 00:41:47,500 コントローラーは基本的に別々のアクションを持ちます - 550 00:41:47,500 --> 00:41:53,880 フォームが既に送信された場合、1と入力し、[2ユーザーは、このページに来ている場合 551 00:41:53,880 --> 00:41:56,870 初めてしている場合は、その形式は、入力する必要があります。 552 00:41:56,870 --> 00:42:02,820 >> 私はインチのフォームを持っていることの最初のケースに上がる前に、まずこのような場合にジャンプするつもりです 553 00:42:02,820 --> 00:42:12,640 フォームがPOSTメソッドで送信された場合、ここでは、と言う - 554 00:42:12,640 --> 00:42:13,580 少しそのことについて心配する必要はありません。 555 00:42:13,580 --> 00:42:19,780 あまりにも多くのことを心配するが、基本的にこの関数が扱っていることを理解していない 556 00:42:19,780 --> 00:42:22,430 フォームが送信されたかどうか。 557 00:42:22,430 --> 00:42:25,640 ユーザーがフォームを送信した場合、この条件はtrueになります。 558 00:42:25,640 --> 00:42:45,940 そうでない場合は、次に我々はレンダリングlogin_form.phpを呼び出すことをお勧めしていくつもりですが、その後タイトルに渡す。 559 00:42:45,940 --> 00:42:48,010 このタイトルはちょうど基本的にヘッダに掲載される予定です。 560 00:42:48,010 --> 00:42:54,990 これは何といい、基本的に言っている - まあ、考えられる理由は、ユーザーに送られる場合 561 00:42:54,990 --> 00:43:00,310 そして、実際にログインしていないし、私はそのフォームを持つページにそれらを送りたい 562 00:43:00,310 --> 00:43:03,160 その彼らは、ユーザー名とパスワード入力をすることができます。 563 00:43:03,160 --> 00:43:07,590 それから私はlogin_formに移動し、それが実際の形をしている。 564 00:43:07,590 --> 00:43:13,750 その後、一度ユーザーがフォームを送信すると、彼らは考えられる理由にそれを提出するつもりだ 565 00:43:13,750 --> 00:43:15,840 POSTメソッドを持つ。 566 00:43:15,840 --> 00:43:21,560 その後、私は実際に私のif-elseループのこのセクションに入るつもりです。 567 00:43:21,560 --> 00:43:29,560 それはここではフォームに入力された値を扱うという点でだ。 568 00:43:29,560 --> 00:43:32,800 それは、我々はそれらに対処することをここにあるのです。 569 00:43:32,800 --> 00:43:40,860 >> その後、一度にそれらの値を扱う - あなたが扱っている場合 - 570 00:43:40,860 --> 00:43:46,640 我々は、誰かがその株式を入力することができますquote.phpページで扱っていると言う 571 00:43:46,640 --> 00:43:49,950 彼らは見てみたいし、その表示を見る - 572 00:43:49,950 --> 00:43:52,850 それがここに似たようなのようなものだ。 573 00:43:52,850 --> 00:43:56,070 ここでは、ログインフォームを持っている - you'dはおそらく見積もりフォームを持っている - 574 00:43:56,070 --> 00:44:00,290 しかし、一旦ユーザーが実際にその情報を送信してしまい、 575 00:44:00,290 --> 00:44:04,810 その後、コントローラが別のテンプレートに渡したいと思う 576 00:44:04,810 --> 00:44:07,430 それは、彼らにその実際の情報が表示されます。 577 00:44:07,430 --> 00:44:11,250 この辺りそれでは右、あなたはおそらくう - 578 00:44:11,250 --> 00:44:18,830 ここにあなたの状態の終わり頃 - このメソッドがポストに等しい場合 - 579 00:44:18,830 --> 00:44:22,520 ショーの引用 - あなたはおそらく別のページをレンダリングしたいと思う - 580 00:44:22,520 --> 00:44:28,040 これは、そのページにあなたを送信する - show_quote.php- - 581 00:44:28,040 --> 00:44:34,120 して、そのファイル内のこれらの値を参照します。 582 00:44:34,120 --> 00:44:36,480 お分かりでしょうか? 583 00:44:36,480 --> 00:44:40,390 >> 私たちは基本的に2例を扱うコントローラを持っている - 584 00:44:40,390 --> 00:44:42,710 あなたはでないかのフォームを入力したかどうかを指定します。 585 00:44:42,710 --> 00:44:43,950 あなたは、フォームを入力していない場合は、 586 00:44:43,950 --> 00:44:47,300 それは、そのページに戻され、そのフォームにリダイレクトされます。 587 00:44:47,300 --> 00:44:54,020 その後、一度コントローラの情報を持って、その身体はそれで対処します 588 00:44:54,020 --> 00:44:59,750 必要に応じて情報 - のいずれか、在庫の値をルックアップ 589 00:44:59,750 --> 00:45:04,150 その後、一度は、それらの値を見て、きれいにフォーマットされた配列にそれらを持っている 590 00:45:04,150 --> 00:45:08,180 次に、テンプレートのページにその配列を渡すことができます 591 00:45:08,180 --> 00:45:10,330  その情報を出力すると、その扱っています。 592 00:45:10,330 --> 00:45:14,680 >> 繰り返しますが、それのWebので、それが楽しいものになるだろう。 593 00:45:14,680 --> 00:45:20,310 我々は、ASCIIとその端末出力に限定していないように、我々は、Cの外にいる 594 00:45:20,310 --> 00:45:21,800 ので、この楽しみを持っている。 595 00:45:21,800 --> 00:45:24,920 あなたが望むようにそれが視覚的にすることができます。 596 00:45:24,920 --> 00:45:31,860 一度ドルの入力百万人にユーザーを許可することができ、 597 00:45:31,860 --> 00:45:34,730 またはそれらを制限し、本当に意味し、それらを一度に1ペニーを入力できるようになる 598 00:45:34,730 --> 00:45:36,330 そのような、または何か。 599 00:45:36,330 --> 00:45:38,550 間違いなく、これを楽しんでいるようにしてください。 600 00:45:38,550 --> 00:45:47,030 >> PHPコードは、それがあなたの擬似コードをマップアウトする少し簡単だという点で、もう少し簡単です 601 00:45:47,030 --> 00:45:50,070 実際の実装に。 602 00:45:50,070 --> 00:45:56,320 それはCS50で、実際に私たちの最後の作品であるためこのように、間違いなく、これを楽しんでいる。 603 00:45:56,320 --> 00:46:01,150 ということで、これはチュートリアル7であった。 604 00:46:01,150 --> 00:46:04,640 一度は、チュートリアルを見終えて、あなたのpsetを終了している 605 00:46:04,640 --> 00:46:09,590 次に、これらはまたのpsetたし、今、私たちは最終製品に上にある - 606 00:46:09,590 --> 00:46:12,330 私たちは、クイズ1を介して取得した後。 607 00:46:12,330 --> 00:46:16,200 その後、願わくはあなたがpsetをから学んだことをツールを使用することができます - 608 00:46:16,200 --> 00:46:21,980 構文が、特定をする方法のより抽象的な概念だけではなく - 609 00:46:21,980 --> 00:46:24,950 同じように、私はこれをやってみたいし、実際にあることを実現している。 610 00:46:24,950 --> 00:46:28,740 構文および流通コードを介して闘争する方法を学ぶ。 611 00:46:28,740 --> 00:46:33,020 他の人のコードを読んで、その後、既存の関数を使用している解釈。 612 00:46:33,020 --> 00:46:37,360 >> だから、最後のpsetと幸運。 613 00:46:37,360 --> 00:46:39,930 これは、チュートリアルを導く光栄でした。 614 00:46:39,930 --> 00:46:40,940 私は、彼らはあなたにとって参考にしてきたいと考えています。 615 00:46:40,940 --> 00:46:46,560 これらのチュートリアルであって、非常に感謝しています。 616 00:46:52,580 --> 00:46:56,200 [CS50.TV]