[Powered by Google Translate] [8週目は、続く] [デビッド·J·マラン] [ハーバード大学] [これはCS50です。] [CS50.TV] これはCS50であるので、これはここに8週目の終わりです。 もちろん我々は、今週初めにハリケーンのビットを持っていた だから今は、この講義室では本当にあなたと私ですが、 しかし、今日我々は、PHPについての私達の会話を続ける やWebプログラミングに関するより一般的に、我々はまた、アイデアをご紹介 特にデータベース、このごろかなり普及しているMySQLのと呼ばれるもの、の なぜなら、そのスケーラビリティだけでなく、そのはフリーでオープンソースであるため、大部分インチ しかし、最初に、我々は前回中断したところを見てみ。 、我々はいくつかの新入生IMSの例を見ていたことを思い出してください そして、これは私が約15年以上前に思い付いたことを恐ろしい形だった 新入生学内スポーツのためのキャンパス·レジスタの学生を持っているために、 実際にウィグルスワースにヤードを越えもはやトレッキングにせずに いくつかの試験監督官のドアの下に用紙の物理ピースをスライドさせます。 代わりに、私たちはオンラインですべてのものを移動したが、我々が利用するために必要なことを行うには いくつかの技術のため、1、私たちは、HTML、ハイパーテキストマークアップ言語を、必要に応じて それは再びあなたが構造的にWebページを構成していると、このマークアップ言語です。 カスケーディングスタイルシート、これらの日CSSのビットを使用して、 我々はわずかに異なる構文を使用して、Webページのstylizationsを使用することにより、 HTMLのに対し、その構造についてのすべてだった。 我々はまた、Webプログラミング言語を導入する必要があります。 この場合において、我々はPHPを使用しますと、PHPは私達を許可するように起こっている 動的にコンテンツを出力するには、だけでなく、同​​じようにプログラム的なことを行う 電子メールを送信する、など我々は先週のノート上のケースだった。 このためのコードは2つの部分にあったことを思い出してください。 一、私たちはfroshims3.phpを持っていた、 これは主として、それの内部のHTMLフォームをマークアップであった、 style属性でここまでのCSSをほんの少し フォーム自体は、ページ上のが、それを越えて中心となるように 我々はいくつかの代表的なフォーム入力テキストフ​​ィールド、チェックボックスをオンにし、持っていた いくつかのラジオボタン、セレクトメニュー、submitボタン。 そして、このフォームを使用して、我々は、明らかにregister3.phpと呼ばれていたファイルに提出 それ自体は、このような少し何かを見た。 さて、register3.php、リコール、内のコードのほとんどは、メールに関するすべてだった。 それは確認するために提出されたフォームのバリデーションを少しやった フィールドが実際に期待されていたが提供されていること。 その後、我々は、少し新しい構文を使用して、いくつかのPHP関数と呼ばれる それがCから借りているにもかかわらず、 この矢印演算子は、私たちは、オブジェクト指向プログラミングと呼ばれるものを利用することができます。 我々はここでは詳細に入ることが、今のところわかりません それは、オブジェクトに関連付けられた機能を持っていることの方法だ 我々はCで見たように、これは、構造の特殊なタイプです しかし、今のところ、ちょうどこれは、使用するための正しい構文であるという信仰を取る このphpmailerのライブラリのようなライブラリを使用する場合。 そして、このファイルの終わりまでに、我々は動的に電子メールを生成した 私jharvard@cs50.netアカウントに送信されてしまっている 私jharvard@cs50.netアカウントから、 そして我々は彼らがこのスポーツのために登録されていたことに応じてユーザーに通知した。 それは一年生のIMSサイトはすべてのそれらの年前にやったことはかなりある 私はそれを実装した場合、付与されて、別の言語で、 しかし、それはおそらくあなたが持っているパワーをあなたに示している 今、あなただけではなく、プログラムで自分を表現することができること Cのような言語の低レベルではなく、はるかに高いレベルで 実際に解決するために、電子メールのような、これらの非常に現実世界のアプリケーションと いくつかの現実世界の問題。 さて、もちろん、私はこのスクリプトは一部を生成するために使用する場合でも 確かにアカウントですjharvard@cs50.netから動的に電子メール 私はへのアクセス権を持っていることを、送信するには非常に注意が必要です だけ実際にあなた自身のあるアカウントからのメール、 物事ないように生活の中でお湯のビットであなたを得る。 ということで、まったく別の問題を解決するための移行今してみましょう、 保持状態のこと。 さて、これが実際に何を意味するのか? HTTP、このハイパーテキスト転送プロトコル、 実際にステートレスなプロトコルであり、この手段があることは何ですか あなたはGoogle.comのようなものをアップしてからエンターキーを押したとき 通常お使いのブラウザはその次に紡績アイコンのいくつかの種類を持っている いくつかのWebページでの結果は、ダウンロードされる そして、その小さなアイコンの回転が止まり、実際に示唆している HTTPは、サーバへの接続のいくつかの種類を完了したし、それはそれだと。 HTTPは、それを維持しないという意味でステートレスです スカイプと同じ方法でサーバーへの持続的接続 またはGchatは、HTTPで行いますので、 仮定は、一度それのWebページをフェッチしていることです。 さて、FacebookやGoogleマップなどのサイト上で、現実には、これらの日 やTwitterなどは、より多くの活力はありせ そのアイコンの回転が停止した後も、あなたは、実際に複数の更新プログラムを取得することができます サーバー、もっとツイート、Facebook上でそれ以上のステータスアップデートなどから。 しかし、我々は2週間で約話そうという技法を用いていること AjaxはJavaScriptのと呼ばれる言語を使用しているものとして知られている、 しかし、一日の終わりに、HTTPは依然としてステートレスです。 そしてまだあなたが何らかの形でユーザーについてのことを覚えておきたい場合 彼らはあなたのサーバーから切断した後でも PHPは、あなたにこれを行う手段を余裕ない 我々は前回見たように、PHPは、スーパーグローバルの数を持っています、ので、 スーパーグローバル変数とは、再度、特別なグローバル変数である それは、WebサーバとPHP自体があなたに手渡されている。 あなたはそれに値を置くために何もする必要はありません 我々はこれまで見てきたスーパーグローバルのうち、GETとPOSTです フォーム·フィールドがあなたのために自動的に置かれている場所である、 同様に、我々はまだ見ていない他のカップル。 $ _SERVERの内側には、サーバー自体に関連するいくつかの特別な変数です。 プロトコルは、HTTPまたはHTTPSを使用すると、使用していたのか何のIPアドレスは、何ですか 、どのようなリクエストメソッドを使用およびのようなので、いくつかの興味深いのはそこでした ジューシーなサーバーに関する詳細、および実際には、そこでのユーザーだけでなく。 これらの事はクッキーが保存されていると呼ばれて$ _COOKIEは、ありません。 我々は、今日のクッキー上で自分自身を時間をかけません しかしクッキーは単なる情報の小片であることを今のところ知っている Webサーバーは、Webブラウザ上に植えることができます とでそのRAMまたはそのコンピュータのハードドライブを回す 例えば、自分のユーザー名をユーザーに関する情報を保存する 彼らはそれを入力するたびにログインした時間またはいくつかを持っていないので そのユーザー固有の番号またはID あなたはについての質問の同じ種類とそれらをせがむする必要がないように 将来的には好みですが、興味のある最も 今は$ _SESSIONです。 他の人のように、PHPが自動的に渡され、このスーパーグローバル変数 あなたは、PHPベースのWebサイトを書いているときに あなたが欲しいもの、文字列、整数を格納することができます 浮動小数点、値、配列、オブジェクト、 本当に、好きなもの、それはあなたがそのような方法でそれを保存することができます ユーザーが今してあなたを訪れても、その 分は、今か今から5分のために戻ってくるから 彼らは他のいくつかのリンクをクリックする前に自分の時間を取る PHPは、そのセッションのスーパーグローバル変数に入れてどんなことを保証します 分または5分前にまだそこにユーザが戻ってくるときになるでしょう。 とフードの下には、このスーパーグローバルを介して実装されています それらのものは、クッキーと呼ばれるが、今のところ、それだけで抽象化だ それによって、それは、ショッピングカートのプログラムと等価なものだ。 何でも、それに入れプログラマ、 スーパーグローバル連想配列がある分後のいくつかの数になるでしょう あなたはそれを削除するまで、またはユーザーが完全に彼または彼女のブラウザを終了するまで。 のは、このことが実際に使用される方法の例を見てみましょう。 コー​​ドの今日の作品のうち、counter.phpで 我々は、次の行を持っている。 このファイルの先頭に、我々は今のつまらない青コメントの束を持っている。 しかし、13行目で我々は、新しい行を持っている にsession_start、それは実際にそれが言う正確に行います。 これは、セッションを開始します。 それは大きなスーパーグローバル$ _SESSIONを使用することができ、それはそれと同じくらい簡単です。 我々は16行目を見て進みさて、もし、このウェブページは何をするつもりなのかを理解しようとしてみましょう。 (どうかの判断($ _SESSION ["カウンター"])その後、先に行く カウンタ変数は、小文字のカウンターで、店舗、 $ _SESSION ["カウンター"]。 これは、カウンタと呼ばれるローカル変数を宣言しているように見える それは、スーパーグローバルの内部にある何のコピーを入れている内部が 場所でのセッションと呼ばれる "カウンター"。 そうでなければ、明らかに、この小さなローカル変数カウンタは、0に初期化されます。 しかし、その後の数行後26予告でそのカウンタのセッションのコピー、 その鍵は、その現在の値に1を加えている割り当てられた新しい値を持っています。 要するに、このファイルには、更新しているように見える セッションスーパーグローバルの内部に格納されているカウンタ 1で、それを増やすことによって、それは、最初に以前の値のコピーを保持し ローカル変数に格納することにより、$カウンタと呼ばれる その後ダウンしてここに残っているのか見てみましょう。 それはかなりちょうどHTMLだと判明。 このページの一番下に、我々は、私がこのサイトを訪れていることを37行目に表示 回数カウンタ番号、カップルの興味深い機能がここにありそう。 一つは、これは明らかに可変であるが、それだけで置くために十分ではありません あなたのHTMLのため、もちろんボディの$カウンター それはあなたのHTML、PHPの間だけあったらちょうどHTMLだと仮定しようとしている。 あなたは文字通り、画面上に出力されるカウンタ$を求めています。 しかし、その代わりにPHPモードにドロップすることで、 構文のこの作品で我々は、動的にここに値を挿入することができます 我々は前回やったことと基本的に変わるところは非常によく似 文字列に値を挿入する。 実際には、これは、文字通りこのような何かを言うための簡単​​な表記法である プリント(カウンタ$)または偶数のprintf(%sは、カウンタ)のようなもの、 あるいは、あなたがオンラインまたは教科書で見たことがあるかもしれないので、 エコーと呼ばれるPHPの関数があり これは同じことをやって、それらのすべては、ちょうど長いったらしい方法です というのは<?=。 この1ケースでは、配置する必要はありません 疑問符の後に単語のPHP。 これは、我々はちょっと前に見たものを、再び、の簡略表記である これは、いくつかの値をエコーされています。 これの最終的な結果が実際に何であるか見てみましょう。 、私たちのcounter.phpファイルに渡って行こう そして我々はデビッドはただそこにコードを使用して再生することにより、ミスを犯したことがわかります。 彼がしくじっどんな修正を手放すの、 とエラーが37行で、そこに行っているようだ。 このページのトップによると、私はこのサイトを0回訪問しています。 さて、今度は、先に行くと、ブラウザの上部にあるをクリックしてみましょう 、アイコンをリロードし、私はリロード]をクリックします そして今私は、サイト1時間、2、3、4、5、6、7、8を訪れました。 我々はこのページのソースを見てみると確かに、実際のソースコードは、変化している そして、任意のPHPの完全な欠如に気づく、それがためだ PHPコードは、サーバー側の評価または解釈され、 と、PHPスクリプトの出力は最終的にブラウザに送信されているものであることを意味するように、 この場合には、いくつかのraw HTMLおよびいくつかの生のテキストはある。 ここで何が起こっているのでしょうか? まあ、比較的少ない行数のコードで私は保存することができるよ しつこく数秒かけて、または私達は十分な長さ待っていた場合、 数分、数時間、HTTPを作る方法には、いくつかの値 我々が保持したかのように、ステートフルに見える このサーバへの接続と、それはちょうど私がそれを言った最後の時間を覚えている、 しかし、現実には複雑さの全体の束は、フードの下にそこに起こっているの PHPは私にこのような錯覚を与えるために有効のクッキーを含む このショッピングカートのような機能の。 今のところ、我々は単なる整数値を格納している簡単な例を示し、 しかし、その機能は非常に価値があると戻ってくるだろう 我々は、より複雑なプロジェクトについて話し始めるとき 中でも問題は7に設定してください。 これはCS50で設定されたあなたの非常に最後の問題です。 私が知っている、それはとても悲しいことだが、どのようなあなたが見つけることは、私たちが結論になるだろうということです 実際に遷移させることによって学期のこの部分 確かにCのコンテクストからPHPのコンテキストに しかし、非常に同じ基礎の一部を使用しながら、 我々はしばらくの間話をしました。 PSET 7との目的は、CS50ファイナンスを実施することである YahooファイナンスやGoogleファイナンスの独自のバージョンはどれですか あなたが能力を持っていることによって、あるいはEtrade.com 与えられたシンボルのために株価をルックアップしますが、それよりももっと あなたは株を "買い"と "売り"する能力を持っている そのためには、このホーム·ページなど、様々な証券取引所で取引されている ここは本当に私たちが始めている程度である、を示唆している あなたのための問題セットは、ユーザー名とパスワードの入力を求めるのログインフォームを持っています。 我々は最終的にわかるように、それは、その後、送信ボタンを持っていますが、 本当にためにまだフードの下で起こってそこには何もありません 新規ユーザを登録する機能を実装するために、残っている 、株式を売却し、株式を購入する能力 実際に現在の株価を検索します。 私たちがやったので、実際、これは可能な限り現実の世界のようになります。 単一の機能を許可するようなコードのビットを含む 素晴らしく可能な空きデータを使用できるようにYahooファイナンスを照会する 株式シンボルまたはティッカーシンボルに基づいて株価を検索するための、 そして、一日の現在の株価を取り戻す。 この特定のpset内、あなたが実際に見ているデータは次のようになります 現実の世界のようにについて、それはあなたが実際にインタフェースしているように得ることができるように 現実世界の株式、現実世界の物価と そして我々はあなたが多分することができますどのくらいのお金を参照しなければならない あなた自身の問題セットで遊んで、次の数日間。 しかしレッツは、最初確かにもっと複雑な何かを設計する方法のための段階を設定 counter.phpよりも、それは、これまで新入生のIMSの例のいずれかよりも複雑だ そして私達を許可することで、ここでいくつかのパラダイムを紹介してみましょう psetの7のそして多分あなたの最終的なプロジェクトのためにあなたが基づいて何かのWebを行う場合は、両方の 自分が正気を保つために、あなたのコードはよく整理しておくためには、 そして、協働に向けて一歩を踏み出すためにCS50の最終的なプロジェクトに関わら またはあなたが将来的に何かをプログラムし続ければ向こう。 この一般的な設計パラダイムはあり より一般的にはコンピュータサイエンスとソフトウェア開発における MVCは、モデルビューコントローラとして知られている これは、非常にいいアイデアを説明する愚かな頭字語である それは、プログラムの様々な側面の分離である 具体的に別のロジックやWebサイトのビジネスロジックを維持 のようなものが含まれているので、何も 関数を呼び出すと、データベースを照会するなど あなたのHTMLの中で起こりません むしろ別々のファイルにし、実際に、この1つのファイルはあり 通常、コントローラと呼ばれていること それは本当に操作の背後にある脳だし、我々は例が表示されます 一瞬でこの。 コー​​ドをプログラミングされているモデルがあります そのデータベースに話して、それがYahooファイナンス等に協議を行い、 その後、MVCのVは、ビューは、そこ 美学に関連しているものはすべて、実際に含まれているファイル あなたのHTML、多分あなたのCSSなど。 ここでの考え方は、この写真が示すように、つまりコントローラ 我々はすぐにわかるように、あなたが特にPSET 7で説明するように、ファイルであり、 世界が自分のWebブラウザを経由して通信するということ。 それは、公共のインターネット上で訪問されるファイルです。 しかし、コントローラは、潜在的にモデルに話しかける これは、データに関連するコードを含む1つ以上の他のファイルであり、 コー​​ドは、データベース等に関連しており、それはに話しかける 景色として知られているコントローラは、1つ以上の他のファイル、 Webページの美学、一種のテンプレートは、どのアール 入力として、いくつかのデータを取るかもしれないが、一日の終わりに ビューの内側の論理だけでは、そのデータをレンダリングする必要があります ループを反復すると、実際にいくつかを吐き出す PDFのようなHTMLベースの演出はそのまた更に何か。 何MVCについて素敵なのは、異なる見解を持つことができるということです それは、実際にファイル形式の種類に基づいて、デバイスのタイプに基づい ユーザに見せたいと思います。 のは、いくつか次第に複雑でよくデザインされた例を見てみましょう ここでバージョン0で最初の起動で。 私が先に行くと、今日の我々のMVCのディレクトリで開くみよう ディレクトリ0のindex.phpというファイルを作成します。 これは超簡単で、非常にがっかりウェブサイトであることに気づく CS50のためのホームページのバージョン0のものの並べ替え、 そして我々は講演会へのリンクを持っている様子がわかり、私たちは、シラバスへのリンクを持っている と私は、講義の通知へのリンクに従っている場合、そのURL アップトップはlectures.phpに変更する予定です。 私はその後、第1週の通知へのリンクをたどる場合、そのweek1.phpへのURLが変更されます。 ここではかなり単純な階層構造があるように思われる。 、のはこれがレイアウトされている方法で、ボンネットの下に簡単に見てみましょう 私はindex.phpを見れば、実際に、それは非常に簡単です。 実際、私はこのPHPファイルと呼ばれるにもかかわらず、実際のプログラミング·コードはありません。 私は、ユーザーがそれを見て終わらないだけので、PHPでここに書いたコメントがあります。 PHPタグの間にあるのはもちろん、以前のように、何 それはコメントだし、コメントを解釈する場合であっても、解釈される 一日の終わりにそれを捨てることを意味するだけではなく、実際に それをブラウザに送信するので、ここですべてが美学です。 私は同様にlectures.php開く場合、これはあまりにも単なるハードコーディングされたファイルです。 それは何かと呼ばれるようなことが起こる。phpは、 しかし、それは本当にわずかです。html、およびweek1.php、week2.php 同様にマークアップだけなので、この設計の欠点の束があります。 一つは、それがコピー/貼り付けの膨大な量だ。 これらのファイルの間で変化している唯一のものは順不同リストであるにもかかわらず、 liタグは、私はそれにもかかわらず、文書型定義、HTML、頭部を持っている タイトル、クローズボディ、近くにHTMLともっと すべての単一のファイルで、それは私が今までにしたい場合に再構築することを意味します このWebページまたは私は行くと変更する必要があり、それをrestylize すべてのこれらのファイルを手動で、またはいくつかの大規模とは、検索と置換。 のヒアバージョン1に賢く、長く考える設計に向けてのステップを見てみましょう それによって、私たちがあなたと一緒に遊ぶことができるように用意しましたことを私に読んで当たり 我々がここにあることを家庭の通知では、これらのよりのんびり このサイトのバージョン1のファイルの要約、 そしてそれは自分自身が睨む時に私はそれを撮影したと思われる いくつかの一般的なコード、header.phpのとfooter.php。 まあ、のはそれらの最初の中身を見てみましょう。 header.phpのは、見慣れ しかし、それがカットされないところに気づく? 右の19行目の後に、一般的であったすべてのものだそう ファイルindex.phpを、lectures.phpから 週1と前の例からweek2.php。 私が何をしたか、コピーし、これらすべてのファイルに共通であったカットすべてだった 別のヘッダ·ファイルに入れて、同様にfooter.phpで それによってのみ興味深い行私は、同じ原則を適用しなかった footer.phpにこれらの2、近い身体と密接なHTMLがあります。 しかし、どのようなこれが今意味することは、新しいバージョンになっている index.phpの通知の方法をはるかに簡単に、それは得ることができます。 確かに、もう少し不可解探し、少し直感的 上から下に従うことが、私の神は、その冗長性のすべてがもうなくなっている。 我々は、文字通りトップを必要とするというPHPの関数を使用する必要が 非常に想起すべきは、C年代の#は機構を含んで、思い出す。 我々は、最上部にあるheader.phpを必要とします。 我々は、最下部にfooter.phpを必要とし、唯一異なる点 またはこのファイルに関する特別はそれに固有であることを意味しているコンテンツです。 私はその後、lectures.php、言う、に行けば、同じ原則が適用されます。 繰り返しになりますが、いくつかのトップアップのコメントが、その後私は、ヘッダーを必要とする、フッターが必要、 との間に、それは実際に変わった内容だ。 我々は第1週と第2週に見た場合、我々は参照してくださいね 同じ原理がそこに適用されていること。 まあ、我々は非常にそこで行われていない。 のは、同様の構造を有しているバージョン2を見て、見てみましょう しかし、私は何か他のものを導入しました今気付く。 10行目では、私は、helpers.phpを導入しました これは明らかに、ヘルパー関数が含まれています。 ヘルパー関数は、一般的に比較的短い関数です あなたは、様々な場所で、あなたを手助けするために作成する とhelpers.phpの中身を見てみましょう。 それは2つの機能を持っているように、このケースでは、それが見えます。 私たちのキューブの例で、他の日を思い出してください あなたは、PHPで独自の関数を定義し、どのような私が今やったことは私がしたあることができます フッターをレンダリングしてヘッダーをレンダリングと呼ばれる定義された関数、 データと呼ばれるパラメータをとるのは、まず、 デフォルト値はそこ示唆したように、空の配列であり、 そして我々は、実際にPHPの最新のバージョンであっても、より簡潔に記述することができます 開き角括弧を言って、角括弧を閉じた。 それは、サイズ0の空の配列が、それにもかかわらず、配列を意味します。 この抽出機能という点で少し特殊です 何をするかと、それはその引数として連想配列を受け取りです それは、0個以上のキーと値のペアを持って、あなたはfooのキーを持っている場合 とbarの値抽出関数 、11行目のように、ここで、すぐに状況を作成 あなたは値バーは$ fooと呼ばれるローカル変数を持っています。 そして、あなたはデータ配列に複数のキーと値を持つ場合、 同様に彼らはローカルスコープに抽出される または名前空間となるようにfooter.php ので、ここで同じアイデアダウンそのheader.phpの これらの変数にアクセスすることができます。 実際に、私は再びheader.phpを開くことができ そして今では、このバージョンではどのようなものかに注意を喚起する。 むしろハードのすべてのページのタイトルとしてCS50をコーディングするよりも ことができるようになりましたダイナミズムに注目してください。 5行目では、私は、title変数をエコーし​​ている しかし最初に私はデータを元に戻し呼び出された関数に、そのタイトルの変数を渡している。 関数の愚かな名前は、それがあるが、限り、それは実際にそれが言うことを行います。 これは、任意の特殊文字があることを保証 に渡された文字列では正しく表示されているHTMLエスケープされます。 これは、クロスサイトスクリプティング攻撃と呼ばれる、実際に何かを回避するための方法です それによって誰かが故意または偶然にでき あなたのウェブサイトに自分のHTMLを挿入 いくつかのフォームに貼り付けることにより、例えば、 あなたは非常に期待していなかったことが何か、特にJavaScriptコード、 我々は、週または2つの時間で約話をしようとして。 この今ではheader.phpの、それは、ビューの それはあなたが美的にいくつかのデータ·セットの内容を表示することができますという意味で。 しかし、より具体的には、テンプレートです。 これは、今我々は、すべてのページのヘッダーには、次のようになりたいものの青写真のようなものです しかし、我々はタイトルが動的に挿入されるようにするという点で、いくつかのダイナミズムはあり title変数に基づいて 我々が呼び出されたときに、そのは、再度、抽出した レンダーヘッダー関数。 今、私たちは、レンダーフッターを見た場合、実際にははるかに今その権利を使用しないあり footer.phpに一切ダイナミズムがないため。 、があるが、現時点でそれは2つのタグのハードコードされたリストの可能性 実際に理由を示唆しているように、同じ考え方が適用されます 我々は、レンダリングのヘッダーとフッターのレンダリング機能を持った時間を無駄にしたのですか? 、私はバージョン3になりました代わりに行こう とヘルパーのバージョン3で私はさらにそれを単純化することを決めた。 私は1 render関数を持ってみましょう。 私はそれが別の引数を取ることがありましょうが、今回は、テンプレートと呼ばれる これらは、テンプレートの名前であることが意味されます その後僭越連結します。phpを、その変数の値に、 そしてそれはFoo.php、またはBar.phpがheader.phpのとfooter.phpを、存在する場合 その後、私は先に行くと、変数のデータを抽出するつもりです して、そのパスを必要とします。 私はindex.phpを開く場合は、他の言葉で、今ではこれを使用する 私はもうヘッダーをレンダリング呼び出さないことに注意してください。 私はちょうどレンダリング呼ぶが、私は引用符で囲まれたヘッダの値を渡す 明確にするために、どのテンプレート私は実際にロードしたい。 それからこっち私がやっていることに気づく。 私はタイトルの動的にキーを渡すんだけど、 あまりにCS50の値、この、我々は前に見たように、 PHPの最新バージョンではより簡潔に作ることができる ここで私は、角括弧で配列関数を置き換えることができます どの私も読みやすく、確かに提案する 少し、入力も簡単。 そしてもちろん、下部にフッターのレンダリングの呼び出しで、 我々は、すべてでは第二引数には全く連想配列を渡していない気にしないでください そのフッターの何もダイナミック内部はそこだから。 これはHTMLのためのちょうどいくつかの終了タグです。 良い、我々は、本当にここに物事をクリーンアップに向けてのステップを取っている が、私は最後の2例を開くことができます。 この1、数字の4、私は今、意識的な決断をしましたという通知 ついに私のファイルにいくつかの階層を使用して以前の例に基づいて改善する。 この要約では、この私を読んで、私が導入していることに注目してください ディレクトリとtemplatesディレクトリが含まれています その内容は私が入れたいものになるだろうしている と私は、それぞれレンダリングするテンプレート。 これは、肛門や物事を整理しようとしている本当の私です 一緒に関連するファイルを保持しませんが、結末 我々は今少し整然とセットアップを持っていますが、我々は今覚えておかなければならないということです で、例えば、index.phpを 我々は、ファイルhelpers.phpを必要とするとき 私たちは/ helpers.phpを含む介してそれを今必要としなければならない 今ではサブディレクトリに実際だからだけではなくhelpers.phpを言う。 さて、余談ですが、あなたは、これらの例といくつか他の人にわかります 必要とするような関数は、一度必要です。 そこ自体は含まれて呼び出された関数は、実際にだ、と彼らはすべて若干異なる動作をします。 ここで私は、私が唯一それらたいスーパーを明確にするために一度必要と言う ヘルパーは、かつての私のプロジェクトに含まれています。 しかし、私は実際に適切に私のロジックを介して考えている場合、私は慎重だとした場合 それはトップを必要とすると言ってもわずかで十分です 限り私自身が誤って別の場所に同じファイルを必要としない。 実際には、これは使用した後のことをやって、もう少し効率的な方法です 一度必要とする、私はちょうど必要とするようにそれを縮小しますので。 のはさらに一歩考えてみましょう。 この最後の例は、現在、バージョン5は、よりクリーンにフォルダ階層を持っています。 この最終版で私を読み取るごとに、私はここで何をやったかに注目してください 私は、私はすべてのこの時間を持っていた、これ私のHTMLディレクトリを持つようになりました しかし内部のそこのは、今だけのindex.php、lectures.phpです week1.phpとweek2.php。 ディレクトリは現在、HTMLディレクトリの横に住んで含まれています そう兄弟と同じレベルで、いわば。 だから、テンプレートフォルダがありません。 ここで重要なの持ち帰りは、私はもう少し構造を導入しましたです しかし、主要な機能は、現在、そのファイルだけです 公的にアドレス、ウェブからアクセスできなければいけないこと 公共のインターネット上のURLで私のHTMLディレクトリにあります。 一方、他のファイル、helpers.php、footer.php、 間違いなく多分もっと敏感であるheader.phpの、 多分ヘルパーは実際にいくつかのユーザー名とパスワード、またはいくつかの知的所有権を持つ 私の財産、私は実際にも誤っている場合、世界が見たいと思っていない機能。 それは公共のHTMLディレクトリの外に置くことは、良い習慣です 任意のパブリックであることが自分自身を必要としないファイル。 あなたが見たときに、例えば、この場合にしなければならないすべては、 HTMLディレクトリのindex.phpファイル、 我々だけが必要なときにもう少し注意しなければなら気付く または一度このファイルを必要とします。 私は最初に行う必要があります..親ディレクトリに移動するには、 / /次にhelpers.phpを含んでください 私は気にしているファイルを取得するには戻ってダウン中にダイブする。 その後のMVCについてのご質問 またはそれらのこの比較的単純な化身? そして、私は我々がかなり集中していることを明確にしましょう ここで、V、ビュー、およびこれらのテンプレートのうちファクタリング。 私たちは本当にただまだCからMを区別していませんでした。 実際には、実際にはここでM、さらには我々のCが存在しない、 コントローラは、実際にはそれほどやっていないが、あなたは多くを得るでしょう MVCからこれらの2文字の両方に精通し、 あるいはむしろ、あなたはCとはるかに慣れるよ MVCでの問題のために7を設定し、その結果のよりは地平線上にあり。 質問はありますか? ここに誰も実際にありません。 さて、それでは今日の第二と最終的な話題に移りましょう。 つまり、データベースの導入である。 この時点まで、我々はデータを格納するのにはいくつかの方法を持っていた。 我々は変数を使用してきました。 戻って我々のCファイルでは、I / Oの議論を我々はテキストフ​​ァイルを使用して開始 その後fprintfのようなファイルを使って、我々も開始 CSV形式の話をすると、少し、コンマで区切られた値を、ファイル ので、これらのすべては、私たちが保存されたデータを持つことができ どちらか非永続的にまたは永続的に。 しかし、CSVを、検索には本当に助長ではありません そして挿入、削除。 それはちょうど実際にコンマで区切られた愚かなテキストフ​​ァイルです あなたがしたいのであれば、行ごとで行ごとに、 あなたが本当にできる最善は線形探索であるファイルを検索します。 あなたは、全体を読み込み、ファイルの先頭で開始する必要があります と興味のあるいくつかの値を探します。 あなたがそこに挿入したい場合は、同じことをしなければならない 、それを反復処理し、特定の場所に挿入する そして実際には、検索ロジックを自分のすべてを行う必要があります。 あなたは自分でコードを書いていない限り、CSVファイル上にマッチング巧妙なパターンを行うことはできません。 あなたは、CSVファイルのろ過を行うことはできません しない限り、あなたは自分でコードを記述します 他の誰かが努力のすべてに置けばそれがいいと思いませんか 実際に簡単かつ容易に検索できるように挿入する および削除などの更新や? これはデータベースがまさにそれだ。 SQLは、構造化照会言語は、まだ別の言語です 、我々は今日ここで紹介しているが、これもかなりアクセス可能であること そして、私たちが本当にやろうとしていることはただの最も顕著な一部のそれを引き抜くされている psetの7の特性ので、あなたはウェブベースの何かを行う場合、 あなたの最終的なプロジェクトは、あなた自身を表現する能力を持っている データクエリの条件インチ あなたは少しを保存する機能や、大量のデータを持っている 一日の終わりになり、はるかに構造化された方法で SQLを使用して、あなた自身を表現することができますので、あなたの人生が容易になり より正確に、はるかに念入りに順番に データの大きなコーパスからのデータのサブセットを取り戻す。 あなたは本当にExcelなどのデータベース、この場合には、SQLデータベースと考えることができます またはそれは、スプレッドシートの数字、 または多分複数のスプレッドシート、そしてもちろん、スプレッドシート、 行と列があり、それがためだ SQLデータベースは、ある意味でリレーショナル、リレーショナルアール 彼らは、これらのテーブルの条件でデータを格納すること 行と列。 彼らは、スプレッドシートのようなものよりも高いパフォーマンスがよい およびスプレッドシートは、人間が使用することを意図されています。 データベースは、プログラマによって使用されるように意図され それに対するコードを記述するため、データベースのインカネーション いずれかのコマンドラインになるだろう。 そこに最も人気のあるリレーショナルデータベースの一つは、再び、MySQLです これは、非常に高いパフォーマンスを素晴らしく自由であり、これは何であるか Facebookは今日でも非常に早く、ある程度使用 その大量のデータを格納するため、我々はすぐに説明します 比較的単純なコマンドを使用して、その 我々は、データ、データの挿入、更新データを、選択することができます データ等を削除し、ありがたいことに、よりユーザーフレンドリーなインターフェースがあり ちょうどここに、黒と白のプロンプトで入力するよりも。 我々は、pset 7用とphpMyAdminというフリーツールを超えて使用します。 名前は偶然の一致によるものです。 このツールは、PHPで実装されるようなことが起こる それは根本的に無関係です。 phpMyAdminに何についての有用なのは、それがWebベースのユーティリティであるということです。 私たちは、あなたのためのアプライアンスでそれをプリインストールしました そして、これを指定することにより、データベース内のテーブルを作成することができます あなたは、データを挿入するデータを削除し、一般的に見ることができます かなりユーザーフレンドリーな環境で、あなたのデータ。 ユーザーはphpMyAdminを使用するつもりはありません。 これは本当に単なる管理または開発者のツールです を参照し、データ周りをウロウロすると、それを構造化する方法を考え出すいると、 ずっとあなたのように自分でExcelまたは番号を使用する場合があります それはフードの下で何が起こっているかを視覚化するのに最適な方法になるだろう ので、そんなに解決しない興味深い問題に焦点を当てることができます 難解なコマンドについて。 レッツtabularly格納される可能性のあるデータの例を見てみましょう リレーショナルデータベースに保存されます。 ここではその一例だ。 さて、残念なことに、phpMyAdminは、多くの言葉はあまりにも投げ道の側で誤りを犯した そしてあなたにグラフィックが、あなたは上だけで磨く場合 ID列は、ユーザー名の列、ハッシュカラム、 これは、事実上のスプレッドシートですが、それは断片であることを起こる アプライアンスの内部テーブルの 我々は問題セット7のを提供したファイルを使用して。 特に、我々はあなたに表すファイルを与える ユーザのテーブル、3つの列を持つユーザーを含むので、スプレッドシート、 の一つは、1から始まり、その後インクリメントされる固有のIDです。 第二列には、ユーザー名であり、ハッカーをしたあなたの人々の psetの2のハッカー版は、少なくともこれらのユーザ名の一部を認識することがあります。 右側のパスワードですが、彼らは文字通りのパスワードがわからない。 彼らは、それらのハッシュだので、それが判明 データベースにパスワードを格納することは本当に悪い考えであること。 あなたは、おそらくすべてのいくつかのウェブサイトのいくつかの時点で読んだ またはいくつかの会社のデータベースが危険にさらされているし、次にあなたがする必要はあり パスワードを変更するには、物事に払い戻しを取得する必要があります いくつかの悪い男は、実際には結果としてあなたのアカウントに侵入したためである。 クリアテキストでパスワードを格納する、データベース内の暗号化されていない 完全に愚かであり、まだそれは非常に面白いです その後、いくつかの非常によく知られている会社について読むために 時々マスコミでそのデータベースが危険にさらされ、 そしてその部分は面白いではありませんが、データベースが含まれているという事実は、暗号化されていない パスワードには、1行のコードであるため、文字通りばかげている あなたは、その特定の脅威から守ることができ、そしてそれは我々がここで何をやったかだ。 でも、私達の偽の少しCS50ファイナンスバージョン用 私達はちょうど良い測定のためのパスワードを暗号化して、事実アール これらのパスワードのすべてが$ 1 $で始まるだけの慣習です。 ただ、それらは暗号化されているか、実際にハッシュ化されていることを意味 これは一方向の暗号化機能のようなものです それによってあなたは、MD5と呼ばれるもので、その効果を元に戻すことはできません。 50はそのあとであるということは、塩の値 50のうちの1つを除き、これらのすべてのパスワードをハッシュ化するために使用された。 鉱山は、もちろん、あなたはそこに見ることができるように、HA、 別の塩を使用していたので、少し引っかかってしまったあなたの人々の 多分ハッカー2に、それは私たちの使用した結果だったかもしれない 他とは異なるハッシュ私のパスワードは実際には同じであるため、 そこにいくつかの他のユーザーとしてログオンします。 あなたが待っていた場合、実際には、すべてのこれらの週は見つけるために ここにあなたがチャレンジしたことパスワードは何それらのパスワードであった 問題のハッカー版でクラックするので、どれもあまりにもトリッキー、2を設定します。 実際には、マランのは、jharvardと同じであった 我々は戻ってしまったら、彼らは違って見えた。 彼らは異なっていたので塩漬け真紅でjharvardに焦点を当てる。 アルゴリズムはそのように乱された 値ハッシュ、暗号化された値が少し違って見える 入力はわずかに異なっていたが、ボンネットの下にパスワードがないため それでも最終的には真っ赤だった。 さて、誰がこれを気に? まあ、我々は、サンプルのユーザー名は、サンプルユーザをご提供している とそのパスワードのハッシュは、あなたが実際にいくつかを持っているように、 CS50ファイナンスの顧客最初にあなたのコードで地面を下車。 あなたが内部データベースから、MySQLの内部で複数のテーブルを実装する必要があります。 あなたが効果的に、より多くのスプレッドシートを作成する必要がありますが、我々はあなたにこの1を与えることを決めた あなたが始めるために、あなたはその問題セットの仕様が表示されます このテーブルをインポートするプロセスを、順を追って説明 また、特性のいくつかが何であるかを説明する そしてあなたはまた、我々がコードを提供していることがわかります ハッシュまたはこれらのパスワードの暗号化を処理するため、 ので、あなたは、MD5等はすべて約実際に何であるかについてはあまり心配する必要はありません。 したがって、SQL、構造化照会言語。 これは、非常に単純に、我々はPSET 7で使用して開始されようとしている言語です。 そしておそらくいくつかのデータベースからデータを要求するを超えています。 データは、再び、これらのリレーショナルテーブル、列、および行にtabularly格納されている しかし、削除のようないくつかの比較的単純な構文を使用して、 挿入、更新、および選択し、我々はまさにそれを行うことができます。 我々は、挿入、データベースから削除することができます 、データベースからデータを取得されたデータだけでなく、選択を更新します。 我々はこれを行う方法を教えてください。 私はアプライアンスに先んじて行ってみよう。 、私はhttp://localhostをプルアップしてみましょう れ、再度、ローカルアプライアンス自体である。 ことは、そのデフォルトのニックネームです。 そして、私は/ phpmyadminのに行くことができます。 これは、アプライアンスが理解するように事前設定されている特殊なURLであることを起こる それはすぐにユーザー名とパスワードの入力を求めるプロンプトが表示されます。 いつものように、私はjharvardと真紅を入力するつもりだ しかし、コンピュータの管理者アカウントだと認識しています。 それはCS50ファイナンスのために登録jharvardもあるということは単なる偶然です。 Jharvard、深紅色、エンターは私たちが見たユーザー·インターフェースを提供します 瞬間を垣間見る前に、それは、最初は少し圧倒的だ しかし安心は、このツールでほとんどのリンクをクリックする必要がありますするつもりはありませんしている。 あなたは、スーパーに役立ちます小さなサブセットを使用して終了します そのうちの第一は、ここでデータベースをバックアップしています。 私はデータベースまで行けば、私がデータベースを作成するよう求めていることに気付く。 これは事実上、新しいExcelファイルを作成することとほぼ同じです。 私は先に行くとこの講義を呼び出すつもりだ、と私はちょうどそこにフィールド、照合を無視するつもりです。 それは、その中にデータの表現に関係しています 私が作成を手放すようにと私が作成をクリックして、今気付くするつもり それはデータベースを言っていない左側に 私はすぐに講義データベースが表示されるはずです。 私は今、左側に講義データベース]をクリックした場合 私のタブが少し変更に気づく。 私は構造、SQL、エクスポート、インポート、およびいくつかの他のものを持っている。 構造はかなり空白になっています。 それはここで言うようにテーブルは、データベース内に見つからない それでは、テーブルを作成してみましょう、とみましょう先に行くと、テーブルを作成する 生徒が好きで、私たちはどのように多くの列をしたいですか? すべての学生のために、これはシンプルにしてみましょう、としましょう​​記録 ID番号、名前、電子メールアドレスを入力します。 我々はそのようなそれをシンプルに保つため、3列、行くつもりです。 ここで表示されるフォームには、今少し乱雑と圧倒的である しかし、我々は単に行によってそれの行を通過する必要がありますので、本当にすぐのを与えてみましょう このデータベースの一意の識別子のためのIDの名前の最初の列。 それは整数になります。私は実際の長さと値を無視することができます。 intは32ビットで、あなたがそこに入力何であることを行っているので、空白のままにしておきましょう。 定義されたデフォルト値は、私は、それがnullで作ることができます。 私は放っておくつもりです。デフォルト値については心配しないでおきましょう。 右、属性にこっちにスクロールしましょう​​。 これは興味深いです。 レッツは、先に行くと、やや恣意IDは符号なしである必要がありますと言う。 の任意の負の数を無駄にしないようにしましょう​​。 のは、0から4000000000を行く与えるか見てみましょう、 その後のあそこにはまだこれらのフィールドのいずれかには触れないようにしましょう​​、 しかし、その後、私がダウンしてここに名前を入力しましょう その後、他の電子メールだった、キャッチはメールですので、 と名前、明らかにしない整数なので、別のフィールドに、これらの設定を変更してみましょう。 これは、varchar型、可変長charを、判明 SQLデータベース内の文字列のようなものです しかし、可変長、あなたは実際に、事前にそれを伝えなければなりません 文字列の最大長は、ので、私は多少恣意的に行ってきます 慣例により、最大255文字を入力します。 私は完全に32を言うことができます。私は千を言うことができる。 あなたあなたの人口統計に基づいて自分で決める必要性の種類が何であるか 最長の学生の名前と、その番号または少し大きめで行く、 しかし、何varchar型の良いのは、それが無駄にするつもりはないです すべての生徒の名前の上に255バイト。 それはDavidさんの場合、それは、全体の255バイトを使用するつもりはない しかし、それが上限なので、私は単に慣例により255と行くよ しかし、我々はいくつかの低い値であることがその議論、および電子メールアドレスのために可能性 ちょうど255一貫性があるようにしたが、再び、我々は同じ議論を持つことができます。 しかし、私は右側に、ここを介して1つの他の事をするつもりです。 どのデータベースに関する強力なのは、それが重い物を持ち上げるの多くを行うことができるということです あなたのために、または複雑な作業。 特に、私は本当に私の学生のID番号が何であるかを気にしない。 それはちょうど、データベース内で一意の識別子であることを意味している ので、私はその学生の32ビットの簡潔な表現を持っている ので、私はそれらを一意に識別するための何らかの方法を持っていること クラス内のインスタンスの場合は2ダーヴィッツ、そこにあるといけないので。 実際に、私はこのAIボックス、オートインクリメントを、チェックするつもりだ データベースは、MySQLは、割り出しように 何ごとに新しく挿入された学生のIDがあることを行っている。 私も、私のコードでそれを気にする必要はありません そして私はまた、インデックスメニューの下に何かを選択するつもりです。 インデックスがユニークな、プライマリ持ってここにドロップダウンし、 インデックスおよびフルテキスト。 あなたは多分、これらの物事のカップルが何であるかを推測することができます それはリレーショナル·データベースに判明 あなたプログラマやデータベース管理者が先制に着く どのような分野へとしてデータベースにヒントを与える テーブルに少し特殊です。 例えば、この場合、私はそのIDを言おうとしてる そうでなければ、主キーとして知られているプラ​​イマリ·インデックス、になるだろう。 これが何を意味すると定義により今後そのIDです 唯一、このテーブル内の学生を識別します。 私は、この制約またはこのインデックスを課しているので、どの生徒も同じIDを持ちません。 また、これは何を私のために何をしようとしていると、それは言うために起こっている MySQLは、そのIDは特別である。 私はID​​について特に気にしますので、先に行くとあなたの空想のデータ構造のマジックを行い、 木のいくつかの種類を構築します。 我々は数週間前に見なかったBツリーと呼ばれ、通常、それは何か、 それはバイナリツリーとその精神においては似た別のそのようなデータ構造だ そして我々が見たことしようとしますが、それは言おうとしている データベースには、このフィールドには、非常に重要なことを私はおそらくです その上で検索できるようにする、先に行くと、いくつかの空想を構築 メモリ内のデータ構造は、検索を迅速に処理するように理想的に 彼らは一定時間だか、少なくともその可能な限り近くに配置し それは線形探索に委譲することがないように、それはあることを行っていません 最もパフォーマンスの高いアプローチ。 これとは対照的に、電子メールアドレスは、プライマリキーだったかもしれない。 あなたには、いくつかのアカウントを共有している限り、理論的には、すべての人のメールアドレスは、一意であること、 しかし、それは文字列のようなものを使用することも大抵は良い考えではありません プライマリキーとして生活の中で、その目的は、一意に識別するためにあるかのため 最大255バイトを使用する理由は、テーブル内の行をありません あなただけの4バイトで済むこともあれば一意に誰かを識別する または、32ビットint。 一般的には、主キーは短く、簡潔であるべき 理想的には整数または64ビットであることを起こる大きなint型のようなもの。 しかし、電子メールアドレスは一意でなければ、あまりにもデータベースの特徴の一つべき 私のために一意性を強制することです。 メールアドレスの横のここにユニークな選択することによって、自分自身を電子メールであっても 画面をオフにスクロールされて、私はデータベースに言っている 私を信用していない。 私はデータベースに挿入させてはいけない 私はバカだとわからない場合でも、二度同じメールアドレス、 私のIFSとelse ifや実際のPHPコードと非常に良い そして、私は誤って、ユーザーが既存のメールアドレスを使って登録できる データベースがまだ正しさのための防御の別のレベルである その重複したメールアドレスがテーブル内に終わらないことを確認します。 さて、これとは対照的に、名前としては、おそらくそのユニークをしたくない その後、例えば、2デービズまたは2マイク·スミスが存在することができませんでしたので、 あなたのデータベースにするため、1台の我々は言葉だけ残しておきます。 私は、先に行くと、右下にある[保存]をクリックするつもりです すべてが良いように見えますが、ここまで気付く これが今の我々はあまりにも多くの時間を費やすしないという部分です 構文は少し複雑であり、我々は、テーブルを作成する必要がないため、 すべてのことが多いが、SQL自体は言語であり、 の構文は、私が強調したことをまさにここです。 何phpMyAdminは本当に行うのは、それはあなたのためのWebベースのGUIを作成している あなたは時間を節約し、手動で入力する必要はありませんするために使用できる そのようなかなり長いSQLクエリ。 あなたがしたい場合は、他の言葉では、手動で、このテーブルを作成する phpMyAdminにも、その黒と白のプロンプトまたはいずれかで この他のタブを使用して、このSQL]タブでは、任意のSQLクエリで入力することができます あなたは、これが私の分を取ったでしょう、率直に言って欲しい 実際に全体の構文を覚えて、そしてその時でさえ、私はおそらく持っているであろう いくつかのタイプミスをしたので、このツールはそのようなもののために有用であり、それはまた有益だ。 あなたは、構文が何であるかを推測するために始めることができます ちょうどいい色でそのphpMyAdminが追加されているコーディング 私たちの視覚的な便宜のために。 しかし、今は代わりにこれを実行してみましょう。 私は上部の[挿入]タブに移動して、私が先に行くと、例えば挿入できましょう レッツのIDが実際に言う、私は気にしないでください。 それは、自動インクリメントになるだろう。私はこれでデータベースの契約をさせるつもりだ。 しかし、私はデビッドなければならない、と私のメールはmalan@harvard.eduでなければなりません。 のがここで先に行くと、別の一人としてマイク·スミスに入れましょう。 私だけでなく、自分自身の姓をあげる そして我々は、彼がsmith@example.comことがあるでしょう その後次はどこへ? まあ、それは外出先でクリックするためのボタンであるように見えて、ほら。 挿入された上部の2行に注目してください。 これは実際のSQLクエリです。 それは、私のために実行phpMyAdminのツールだ 私は今、[参照]タブに行けば、最終的な結果であり、事前の通知、 審美的に非常に連想させる、この表の2行を確認することです 我々はPSET 7からユーザーの皆様のために、前に見た表の、 の一つは、デビッドマラン、今やマイク·スミスである人の一つです。 しかし、単に明確にするために、私は、phpMyAdminを使用する必要はありません そして実際に、あなたはすぐにpsetの7のコードを書くことになるだろう つまり、行などを、行を追加する行を削除、更新するプロセスを自動化する ので、ここまで私が代わりにSQL]タブに移動してみましょう 学生はどこからセレクトしています*とタイプ 電子メールには、= "malan@harvard.edu。" 言い換えれば、今あなたが持っていると仮定 他のフィールドの間でいくつかのHTMLフォーム、およびその電子メールアドレスにユーザタイプ、 そして目標は、今ではバックエンドのコードにPHPで書かれて 実際にそのユーザーの他の詳細をルックアップします。 あなたのフルネームは何ですか?あなたのID番号とは何ですか? あなたはこのようなSQLクエリを書くことができ、学生からの*を選択 先の電子メール= "malan@harvard.edu。" そして私は、[Go]をクリックしたら、私は、実際に私は、ちょうど1つの行を戻して入手できますかと言うことに気がつく。 マイクは、行の集まりとして、この結果セットから省略されている 彼は私と同じメールアドレスを持っていないので、一般的に呼ばれています。 さて、もう一度、ここのpset 7のためには、管理ツールとしてphpMyAdminを使用します あなたの方法を学び、教育的なツール SQLの世界中のですが、一日の終わりに あなたは、実際のP​​HPのコード内でこれらのクエリを記述することになるだろう など特にZamylaのチュートリアルで、ご期待 あなたはこの問題セットの配布コードのツアーを買ってあげるところ 我々は、ログインページの美学だけでなく、あなたを与えてくれた場所 素敵なセクシーCS50ファイナンスを言うロゴが、我々はまた、あなたを与えてくれた あなたの人生が少し楽になる機能の束。 我々はまた、あなたのためのpsetの一部を書きました 特にそれのログイン部分、あなたの代表的デザインの感覚を与えるために 実際に、例えば、index.phpをコントローラを使用している、 次に考えられる理由などが挙げられ、あなたは、psetもtemplatesディレクトリを持って表示されます それは、美学のすべてをあなたのすべてのビューを持っています。 などのpset 7の全体的なワークフローがあることになるだろう ユーザーがブラウザでURLを介してコントローラにアクセスしてください。 そのコントローラは、あなたが書いたPHPのコードが含まれており、内部のPHPコードの SQLのいくつかの行は二重引用符の間にネストする可能性があり とクエリと呼ばれる我々が書いた関数に渡さ そのようなものを使用せずにデータベースに話すのに役立ちます phpMyAdminのような管理ツール。 あなたは、PHPコード内でSQL文を記述することができるでしょう と、結果セットのPHPの配列を取り戻す 実際にそのクエリに一致する行数。 と同様にして、挿入または削除を行うことができるでしょう または更新など、かなり似ているための構文、 そしてあなたは、ディストリビューション·コードから、いくつかのオンライン参考文献から表示されます とPSETから正確にどのようにそれをやって行くために自分自身を詰める。 最終的に我々が本当にちょうどSQLの表面に傷をつけている実感 とMySQLのが、それのパワーは本当にそれはあなたを解放することにある あなたが解決したい問題に焦点を当てることが、ユースケースあなたは実装したい 少なくとも初期の段階で、全く同じくらい気にせず、 どこで、どのようにあなたのデータベースを格納および検索するには、約 Facebook自身がそのスタートを切ったところ、これは文字通りです MySQLを使用してから、次に複数のMySQLサーバと複数のMySQLサーバを使用して 彼らはその後、実際にする方法について真剣に考え始めなければならなかったまで、ずっと前 さらに効率的に物事を格納する方法データを格納、 事実を当然のことと私たちは取るよそうでも、そのインデックスと一意性制約 などだけで非常に面白い会話がある仕事 これはすべて、最終的につながることができますので、我々だけで表面を傷つけていることを実感 ものの最終的には、あなたやあなたのプロジェクトでは、ビッグデータのかなりになる可能性があるため。 そうは言っても、のはここで終わらせて、来週お会いしましょう​​。 [CS50.TV]