読者です 読者をやめる 読者になる 読者になる

0ぷろ!

PCに対しての知識が0の人間が半年でどこまで成長するかを自分で記録するブログ

めも。phpの改行とechoについて。

 

1〜100をphpで表示させた時のメモ。

 

for($number=1;$number<=100;$number++){

        echo $number."<br/>";

}

 

 

"/n"と"<br/>"の違いについて。

"/n"とした場合にはページ横いっぱいに文字が表示されました。

そして横幅いっぱいになると下の行に改行されました。

例: 1 2 3 4 5 6 7 8 9 10 ........(横幅いっぱいになる

      60 61 62 63 64 .........

という具合の結果になります。

 

それに対して"<br/>"は一つ数字を表記させた後に次の行に数字を表示させます。

例: 1

   2

   3

   4

   5

   6   (下に続いていく

 

 

 

echo と this->set( ) 構文の表記結果が違う!

echo はfor文で1〜100を表示させようとしたら 1〜100全てが表示されます。

 

しかし、this->set( )構文を使ってviewに結果を送った時は違いました。

実際にやってみたのですが、"100"と表示されただけで他は何も表示されませんでした。

 

for文で結果を取得しようとすると、基本的に最後の式のループ結果だけを取得するものだから、ということです。

なのでthis->set( ) 構文を使った時には最後の結果 "100" のみが表示されるのですね。

(もちろん探せば全ての引数を表示させる方法もあるでしょうが...)

 

ではなぜechoを使うと全ての結果が表示されるのでしょうか。

 

echoの特徴

・関数ではなく言語構想という一つ以上の文字列を出力(表示)させるためのものです。

・関数ではないので他関数の中でecho( )のような使い方が出来ないようです。(詰めてないです。すいません。)

・echoは複数の引数を取る事が可能です。

 

三つ目の全ての引数を受け取る事が可能、というところ。

$numberの引数(ループした結果)を全て表示させるので、for文で行ったループ結果を全て表示させる事が出来ます。

 

とりあえずここまで。

 

PHP: for - Manual

PHP: echo - Manual

 

24日目

 

今日はcakephpを使いつつ、for文とswitch文を使ってみました。

switch文は再びフォームと絡めてみました。

var_dump ( ) についても少し調べてきましたので書きます。

 

まずそのvar_dump ( )についてです。

var_dump( )は (  ) に入れたものをechoよりもより詳しく表示する構文です。

例えば

→var_dump ( ' fuga ' ) ; 

    ”fuga” が何かで定義されている文字列である場合、ブラウザ上で string ( 4 )

 表記されます。 string 文字列型という意味で、( 4 ) 文字列のバイト数を   

 示しています。

   " fuga "は全てローマ字で 4 バイトの文字列なので ( 4 ) と表記されます。

     var_dump('fuga') ;  

     → string(4) "fuga"

 

→var_dump ( $a ) ;

 $aという変数があった場合、$aの内容を表示させます。

  var_dump($a) ;

             → array(3){

                         [0]=> array(2){

                              ["drink"]=> array(1)  { ["name"]=> string(4) "coke" }

            ["company"]=> array(1)  { ["company"]=> string(9) "Coka Cola" } }

         [1]=> array(2){

                             ["drink"]=> array(1) { ["name"]=> string(6) "calpis" }

        ["company"]=> array(1) { ["company"]=> string(6) "Calpis" } }

                         [2]=> array(2){

                             ["drink"]=> array(1) { ["name"]=> string(9) "Bireley`s" }          

                             ["company"]=> array(1) { ["company"]=> string(5) "Asahi" } }      

                    }     

色々なものに使えそうなので、これからもちょいちょい使ってみます。

 

PHPを学ぶ時、最初に憶えて欲しいvar_dump | Simple Colors

参考サイト

 

 

 

 for文についてです。

forはforeachと同じく (  )  の中を繰り返し処理をする、という内容の文です。

例を書きます。

  $color=array("red","bule","green","white","black");

     for($i=0;$i<count($color);$i++){

            echo $color[$i] ;

    }

 

$color=array("red","bule","green","white","black");

$colorに対して配列を用意しました。

その下段を見て行きます。

 for($i=0;$i<count($color);$i++){

まず for ( ) 内に $ i = 0 という定義をします。この$ i は任意で決めることができます。

 

; で区切り、$ i<count ( $color ) ;を定義します。

この$ i<count ( $color ) ; は$color内で配数に指定した要素の数を示します。

なので、今回は " 5 " となります。

例えば$color内の要素を一つだけ減らせば " 4 " になります。

なので、$ i<count ( $color ) ;  =  $i< 5 である事がわかると思います。

 

echo $color[ $ i ] ;

で $color の配列を表示します。一番最初であれば、答えは" red "ですね。

 

その後が$ i++ですね。

演算子 ++ を使用しています。これは ○ = ○ + 1 という事を示していますね。

なので、 $i = $i + 1 という事になります。

 

ここで、上から順に処理をしていかないのはおかしい!と思ったのですが。

もうそういうものだと割り切った方がいいようです。

そういう構文なんですw

 

という様に一連の処理を終えたので、$i<count ( $color )を満たすまで

繰り返し文を続けます。

これがfor文のフローです。

 

 

続いてswitch文です。

switch文は if文と同じく条件分岐をする文です。

switch ( 変数 )変数があれば、" case " 値と比較をして、と合ったものを

実行します。

には予め処理内容を記入しておき、breakを使用して式から抜け出します。 

breakに達するまで処理を続けるので処理の複数指定が出来ます。

defaultはどの" case "値にも当てはまらなかった場合に行われます。

必要がなければ(caseに必ず当てはまるのであれば)記入する必要はありません。

 

例: 

   $pref = パン

 switch($pref){

             case '米':

                 print "和食";

                 break;

             case 'パン':

                 print "洋食";

                 break;

             case '麺':

                 ptint "中華?";

                 break;

             default

                    break;  

}

$prefは " パン "という文字列が入っています。

case " 米 "には当てはまらないので、print " 和食 " は表示されず処理は無視されます。

case " パン " が次に出てきて、値が一致するので print " 洋食 " を表示します。

その後に break して式を抜け出します。

 

例えばこれが $pref =" お菓子 "などであったらどの case にもあてはまらないので

defaultbreakされるだけで、何も表示されません。

 

 

ここまでがswith文の説明でした。

今回はこのswitch文に+α フォームを加えて、フォームで選択された答えが

switch文のcase値になり、対応した答えが表示されるようにしてみました。

 

例:

if(isset($_POST['food'])){

          $FFF=$_POST['food'];

 

          switch($FFF){

             case 'kome':

                $talk="和食";

                break;

             case 'pan':

                $talk="洋食";

                break;

             case 'men':

                $talk="中華?";

                break;

          }

     }

     $this->set('food_view',$talk);

 

 

if ( isset ( $_POST['food'] ) ) { }

isset ( ) で ( ) の中に指定した変数が定義されていればTrueを、定義されていなければ

Falseを返します。

なので、$_POST['food']が定義されていればTrueを返し、なければFalseを返す、という事になります。

それにif文を応用すると、意味的には

"もし$_POST ['food'] が定義されていればif文の { } 内の処理を行う"ということになります。

 

$_POST [ ] というのはフォームにデータを引き渡す時の変数で、POSTとGETの二つがあります。

その二つの違いは先日も述べましたが、ctpファイルで<form>タグで指定したメソッド属性により変わります。 //詳細は話が変わりすぎるので割愛します。

ただ一点、$_POSTという形について述べていなかったのはこれは連想配列なんですね。

$_POST っていうのは[ 'food' ]なんだよーってことを配列を連想させる一文でした。

 

$FFF=$_POST [ 'food' ] ;

そのままの意味なのですが$FFFという変数は$_POST [ 'food' ] ; と一緒、ということですね。

 

そしてswitch文に入っていきます。

$FFFとcase値の内容が同じであれば処理を実行するようにしました。

この場合だとcase ' ' と$FFFが同じであれば$talkを定義するようにしました。

定義した後はbreakしてif文を抜け出します。

 

$this->set('food_view',$talk) ;

set文を使うと ( ) 内で指定したデータをViewに渡す事ができます。

set('food_view',$talk) ; というのは 'food_view' = $talk ということを示し、

そして ' food_view ' をViewに送る、ということになります。

$this->は、自身のオブジェクトの事を示しており、" -> "は " 実行する "という事を指す演算子なので形式的に覚えてしましました。

 

 これで、最初に言ったフォームで何かを選択した時にそれに対応する答えが返ってくるようになりました。

 

 

 

forとforeachの違い!switchとifの違い!

そんな変わらないらしいです(笑

基本的な動きは一緒なのであえて、とか無理矢理いうなら...くらいです。

for  ・・・一番基本的なループ文でただのループ文を書く時は楽。

foreach・・・連想配列などを表示させる時に向いている。

 

if         ・・・ 簡単な条件分岐をする際に向いている。

switch ・・・可読性の高さや複数条件がある場合。

 

くらいの気持ちでとりあえず今はやっていようと思います。

もう少し細かいところをわかるようになったら追記します。

23日目

 

cakephpは難しいですが理解してくると何がどう関わってくるのかという所を何となく掴めてきたような気がします。

 

今後書かなくてはいけなくてはいけないところは、

・Controller作成法

・ViewとTemplateの関係性

・Controller内でのフォームの作成

・フォームで受けた情報をif文を使って表示を変える

とかですね。

自分の復習の為にも書きますし、今日やった事などはそれを書かないとわからないことなので...

 

では、本日やったことの内容です。

今日は(連想)配数とforeach文です。

foreach文に関してはまだ詰めれてないところがありますのでそれも今後書いていきたいです。

 

まずは配列です。(連想配列もあるよ!

配列というのは、自分が箱の中に何かモノを入れて自分が好きな時にそれを取り出す事が出来るというものです。

箱Aがあるとします。箱の中に一つしか物(データ)を入れられないのが変数です。

ですが、配列を使う事で複数ものをいれる事が可能になります

配列を使った場合、箱AタンスAに変わります。

タンスAには引き出しa,b,cがあります。引き出しa,b,cには物(データ)を入れることが出来て、好きな時に取り出せます。

さらにこの引き出しa,b,cには小物入れがありました。

引き出しaにはX1,X2

引き出しbにはY1,Y2

引き出しcにはZ1,Z2

という小物入れがそれぞれ付いています。

というように、配列の中に配列を、またその中に配列を...としていくことで膨大な量の情報でも定義できるようになります。

 ---------------------------------

|                    A                       |

|      ↓  ------     ↓     ------- ↓   |

|     a      |       b      |      c        |     こんな感じのイメージです。

--  ↓ -- ↓ -- ↓ --- ↓ --- ↓ --- ↓ --             わかりにくいとか言わないでください(笑)

X1 | X2 |  Y1 | Y2  | Z1 | Z2   |

| -------------------------------  |

 

こうする事で、物をタンスAの中にしまっておける、且つ好きなだけ取り出す事が出来ます。

 

  $A=array(

          0=>array(

               'drink'=>array('name'=>'coke'),

               'company'=>array('CompanyName'=>'Coka Cola')

          ),

          1=>array(

               'drink'=>array('name'=>'calpis'),

               'company'=>array('CompanyName'=>'Calpis')

          ),

          2=>array(

               'drink'=>array('name'=>'Bireley`s'),

               'company'=>array('CompanyName'=>'Asahi')

                  );

 

$Aというのは変数です。上記の例でいうとタンスAのことです。

0、1、2というのは引き出しa、b、cと同じです。

各種drink、companyというのは上記の小物入れX1、X2、Y1、Y2、Z1、Z2のことです。

緑色で指定している('name'= >'coke'),nameはcokeである、という事を定義しています。

('CompanyName'= >'Calpis'),ならCompanyNameはCalpisを定義している、という事です。

” = > ”で定義をして、' name 'だったら' coke 'を、' CompanyName 'なら' Calpis 'という様に

配列を使って言葉を連想させるように定義する事を連想配列といいます。

 

次に array()の動きについてです。

array()は配列を使用する時に最も使われることの多い構文の一つです。

$変数= array()の内容を定義して行きます。

最初では$a=array ( ) で0 , 1 , 2 を定義して、その後にまた array を使う事で、

次は 0 , 1 , 2 配列をすることが出来る、という事です。

 

最後に今回この配列の一部をブラウザに表示させます。

" print_r ( ) " を利用する事で指定したデータを取り出すことが出来ます。

 

print_r($A[0]['company']['CompanyName']);

この文は上記例で最終的に " Coka Cola " を取り出します。

()内の動きを見ていきます。

( $A はデータを取り出したい配列の指定をしています。

   [ 0 ]  はその後の配列の中身を、またその後の [ 'company' ] で取り出すデータを絞って、[ 'CompanyName' ] ); で最後まで指定出来ました。

このデータの取り出し方はディレクトリからファイルを指定する時のパスの指定に似ていますね。(個人的な捉え方ですが...)

ちなみに ; (セミコロン)を忘れるとめちゃくちゃ怒られるので気を付けましょう。

 

 

続いてはforeach文についてです。

はい。先ほどは " print_r " を使うことで一つのデータを取り出しましたが、

今度は " foreach "という構文を使ってデータを取得します。

これは繰り返し文です。配列の例を使いつつ説明します。

 foreach($A as $key1 => $b1){

          foreach($b1 as $key2 => $b2){

                 foreach($b2 as $key3 => $b3){

      echo $key3."  ".$b3."</br>";

       }

   }

 }

foreach (  配列の変数  as  $適当に変数  =>  $何かしら変数  )  { } ;

という形になります。

適当に変数何かしら変数は任意で決めていいです。

foreachの例を見ていきます。

foreach($A as $key1 => $b1){                    //foreach文1(仮)

foreach文は( )を繰り返し処理をする、ということを示しています。

次の行では foreach($b1 as $key2 => $b2){     //foreach文2(仮)

となりました。

これはforeach文1で定義した $b1 を使い、さらにその中にある $key2$b2

定義しています。

foreach($b2 as $key3 => $b3){         //foreach文3(仮)

foreach文2と同じく、$b2を使って$key3$b3を定義しています。

それをechoを使って呼び出します。

echo $key3."  ".$b3."</br>";

となります。

" " (ダブルクォーテーション)内にはスペースが二つ空けてあります。

(表示の都合上見やすかったので...)

 

name  coke

company  Coka Cola

name  calpis

company  Calpis

name Bireley's

company  Asahi

 

結果としてはこのような表記になります。

表示順については自分はなんとなくわかったのですが、(教えてもらったのもあるし)

phpの原則として”上から順に処理をしていく”というのが常ですよね。

なので、配列の例でも[ 0 ]、[ 1 ]、[ 2 ]の順番で処理を行っている

といのが見てわかります。

 

今日はこのくらいでしょうか?

また追記すべき点があればどしどしします〜

22日目。

 

 

進捗というよりはメモに近いでう。

箇条書きになっちゃいます。

 

プロセスとは。

自分のPCで動作してるもの。(プログラムとかアプリとか)

 

sshとは

暗号化の通信のできるSSHプロトコルを使ってリモートサーバに接続するコマンド。

とあります。

コマンドなのですが、sshプロトコルという通信規約があって、それは通信の内容を暗号化しているため他人に把握されないというhttpとはまた違ったプロトコルです。

セキュリティに特化しています。

" -i " のオプションを使うことで公開鍵認証によって接続を可能にします。

 

公開鍵・秘密鍵

公開鍵パブリックキー

パブリックキーで暗号化されたパスワードはプライベートキーでしか複合(再現)

出来ないのでパブリックキーを他人に知られてもセキュリティのレベルには

影響しません。

 

秘密鍵プライベートキー

パブリックキーの暗号を複合するもの。

他人にばれたらやばいす。

 

この二つを合わせてキーペアという。

>今回はアマゾンのサービスのものを使用した。

 

キー チェーンアクセスとは。

パスワードの管理をしてくれる。パスワードを登録しておくと自分がそれをを忘れてしまった時に見る事が出来る。

もちろんキーチェーンアクセス自体のパスワードを設定しておく。

それいけ!cakePHP!

 

これからcakePHPを使った作業になっていくのですが、

今までも何回かcakePHPが!みたいな話をずっとしてました。

それで、説明書きとかもしてたんですが。あくまでWebで取り入れた知識で

自分でcakePHPが何か、何をするものなのか、構造はどうなっているのか、

とか全くといっていいほど説明出来なくて、じゃあ今までやっていた事はなんなのか、と。

じゃあもう一回調べるしかないじゃん!ていうか勉強してんだし理解出来るまでやれよ!って話ですね。

 

間違ってたらすいません。誰か指摘下さい。

 

 

まずcakePHPのことを記述するならわかっていけなきゃいけないことがありました。

フレームワーク

 

で、もうITとか関係なく "フレームワーク" って言葉自体を調べてみました。

問題が何か起きた時に解決するために用意しておく型、流れみたいな意味でした。

 

じゃあITでいうフレームワークは?

例えば、何かのファイルを毎日毎日書かなきゃいけないとして、0から毎日作るのって

すごいめんどくさいし時間がかかるじゃないですか。

短縮出来ないかなーってなるわけです。

毎日同じデザインやらレイアウトだったりしたら、そこのデータだけどこかに保存しておいて次やる時も最初から用意されていればいいなーって。

 

っていうのを準備しておいてくれるのがフレームワークなんです。

もちろんファイルだけの話ではなく、アプリ作成とか、メール送信、ログイン機能等で使われています。

 

ここまでのまとめ。

cakePHPは端的にいうとフレームワークの一種。

フレームワークとは、テンプレートがある程度用意されているもの、なんかしらプログラムなどの枠組み。

 

 

次はフレームワークのメリットとデメリットについてです。

メリット!

・ある程度のテンプレートが用意されているので作業をスムーズに行える。

 上記の内容の事ですね。

複数人で開発をする時にソースコードの書き方やレベルを統一出来る。

 フレームワークにはソースの書き方やデータの保存先などにルールがあるため

 みんなが見た時に理解しやすいんですね。

 例えば僕が書いたソースコードを玄人の人が見たら汚い、と思いますし

 逆に僕が玄人のソースコードを見るとよくわからなくなるような表記の仕方

 をしている時があります。

 そういうのをみんなで統一してたらどちらからでも理解出来るよねって話です。

・バグが少ない。

 やはり人間が1から作りあげるものに、ヒューマンエラーはつきものです。

 その点PCは変わらないものをずっと提供し続けてくれるので

 バグが少なかったり、ゲームであれば消費者の予期してない行動にバグを

 起こす、というのも減らしてくれるようです。

 

デメリット

・ルールを覚えるのが大変

 当たり前ですが、いつもの自分の書き方をフレームワークに咎められたら

 修正しなくてはなりません。

 一度覚えてしまえば早いんだろうけど、慣れない書き方をするというのに

 違和感を覚えることは多いようです。

・新しいプログラムなど、その追記処理をするのが大変

 テンプレートは用意してくれていますが、多少柔軟性に欠けるところがあるようで

 新規プログラムを読み込ませたり、それを反映させるのはなかなか難しいようです。

 

ここまでがフレームワークの話。cakephpはこれを応用したものになります。

 

 

 

MVCフレームワークとは!!

M . . .( Model )   データや処理をする部分(データベースの処理)

V . . .( View )    見た目を司る部分      (HTML出力)

C . . .  ( Controller )    ModelとViewを繋ぐ役目 (設定)

の略称です。

それぞれ役割と働きがあり、関連付けされています。

 

はいじゃあこれがなんの役にたつのか、ということですね。

まず大きなプログラムを作成するとした時に、一つのファイルに内容や見た目、データベースからデータを取り出して...なんて指示するスクリプトを一つのファイルにまとめたりしてしまったらソースコードはぐちゃぐちゃになるし、どこに何を書いたなんか分からなくなるし、それはバグにも繋がってしまいますよね。

だったらそれぞれ別のファイルに作成してそれを寄せ集めたものを一つのプログラムとして成立させればいいんじゃんって。

その為にあるのが MVCフレームワークです!

 

 動き方!

1 . ユーザーのリクエストを Controller がキャッチ。

2 . ControllerModelにどのデータを取り出すかを指示。

3 . Modelがデータベースかデータを取り出す。

4 . CotrollerViewに表現(表示)の指示を出す。

5 . それに応じてViewControllerから情報を取り出す。

6 . Viewがユーザーに見やすいようにまとめて表現(表示)をする。

というフローになっています。

 

cakePHPを開いてみると、たくさんのフォルダの中にViewController

あると思います。

cakephp / src / View ( Controller )

あくまで概念的なものなのか、Modelフォルダは作らないといけないようです。

ですが実際に必要なものはそろっています。

f:id:ysm_0pro:20160414110452p:plain

 

 

 

なので、cakePHPMVCフレームワークである事がわかります。

と、いう感じで、実際の動かし方とかは/14のブログで書けるかなぁ〜

 

 

21日目。

 

正しい情報を正しく捉えて正しく使おう

 

間違いないです。えと、僕のブログはもちろん間違った部分もあるし、インターネットには間違った情報と正しい情報が混在しています。

ので、じゃあ自分にとって何が有益なもので何がそうじゃないかをもっと見極めなくてはならないなぁと痛感させられました。


2016-04-13T07:07:30.883017Z 0 [Note] InnoDB: Check that you do not already have another mysqld process using the same InnoDB data or log files. 2016-04-13T07:07:31.884191Z 0 [ERROR] InnoDB: Unable to lock ./ibdata1 error: 35 2016-04-13T07:07:31.884237Z 0 [Note] InnoDB: Check that you do not already have another mysqld process using the same InnoDB data or log files. 2016-04-13T07:07:32.885429Z 0 [ERROR] InnoDB: Unable to lock ./ibdata1 error: 35 2016-04-13T07:07:32.885498Z 0 [Note] InnoDB: Check that you do not already have another mysqld process using the same InnoDB data or log files. 2016-04-13T07:07:33.886696Z 0 [ERROR] InnoDB: Unable to lock ./ibdata1 error: 35 2016-04-13T07:07:33.886765Z 0 [Note] InnoDB: Check that you do not already have another mysqld process using the same InnoDB data or log files. 2016-04-13T07:07:33.886786Z 0 [Note] InnoDB: Unable to open the first data file 2016-04-13T07:07:33.886847Z 0 [ERROR] InnoDB: Operating system error number 35 in a file operation. 2016-04-13T07:07:33.886879Z 0 [ERROR] InnoDB: Error number 35 means 'Resource temporarily unavailable' 2016-04-13T07:07:33.886893Z 0 [Note] InnoDB: Some operating system error numbers are described at http://dev.mysql.com/doc/refman/5.7/en/operating-system-error-codes.html 2016-04-13T07:07:33.886906Z 0 [ERROR] InnoDB: Cannot open datafile './ibdata1' 2016-04-13T07:07:33.886926Z 0 [ERROR] InnoDB: Could not open or create the system tablespace. If you tried to add new data files to the system tablespace, and it failed here, you should now edit innodb_data_file_path in my.cnf back to what it was, and remove the new ibdata files InnoDB created in this failed attempt. InnoDB only wrote those files full of zeros, but did not yet use them in any way. But be careful: do not remove old data files which contain your precious data! 2016-04-13T07:07:33.886980Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Cannot open a file 2016-04-13T07:07:34.189415Z 0 [ERROR] Plugin 'InnoDB' init function returned error. 2016-04-13T07:07:34.189481Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. 2016-04-13T07:07:34.189530Z 0 [ERROR] Failed to initialize plugins. 2016-04-13T07:07:34.189576Z 0 [ERROR] Aborting 2016-04-13T07:07:34.197299Z 0 [Note] Binlog end 2016-04-13T07:07:34.198795Z 0 [Note] Shutting down plugin 'CSV' 2016-04-13T07:07:34.198864Z 0 [Note] Shutting down plugin 'keyring_file' 2016-04-13T07:07:34.200579Z 0 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete

 

今日表示されたMySQLインストール時のログ記録です。

ログとかは触って来なかったので正直何が何やら...

ストップをかけられたので、もう今は触らないですがいつか治せるようになりたいです。

 

それで似たようなことが恐らくXamppでも起こりそうです...

それならもういっそMacを初期化した方が治すというに関しては早そうですね。

 

 

明日からはcakePHPを本格的に使っていきます。

で。僕はcakePHPの概念といいますか、根本を間違えていたようです。

イメージ的にはphpMyAdminみたいに、” これがphpMyAdminだ! ”

みたいなページがあって、そこでデータベースを扱う、みたいな流れを想像していたのですが。

そういう訳じゃないみたいです。

 

今までcakePHPphp用のフレームワークだーみたいなことを言っていて。

フレームワークは土台だー構造だーって言ってましたけど。

それはなんというか、浅い説明だと指摘を受けました。

 

cakephpは、phpファイル作成時にデータベースからデータを取り出す際に

設定情報を保存しておいて、それを簡単に早く取り出せるようにしたもの、

ではないかというイメージでしょうか。それでもイメージなのですが。

明日から巻き返していきたいです。。。

 

という反省とか確認とかで21日目が終了してしまいました。

すいません...

 

 

 

20日目

 

 

今日はUnityの意味を調べたのと、phpMyAdminMySQLのテーブルに対して検索をかけました。

 

 

Unityとは?

統合開発環境を内蔵していて、複数プラットフォームに対応するゲームエンジンの事。

よくわかんない...

 

統合開発環境 ( IDEIntegrated Development Environment

コンパイラテキストエディタデバッグ作業を支援するプログラムであるデバッガを一つの環境下に統合する事でそれをGUIから動かすことが出来るもの。

 

は?

 

コンパイラ・・・

人間が理解しやすい言語をコンピュータが理解できるようにしたもの

テキストエディタ・・・

テキストファイルを作成、編集、保存するためのソフトウェア

デバッガ・・・

簡単にいうと、動作中のプログラムのどこにバグがあるのかを調べたり発見しやすくするために用いるもの。

デバッグ・・・

自分の仕様通りにプログラムが動いているかを確認、修正する作業のこと。

 

で、IDEはこれらを一つの環境でGUIから動かせるようにまとめたもの。

 

 

それでUnityの説明に戻りますが、

プラットフォーム・・・

ソフトウェアやハードウェアを動かすために必要な基盤となるハードやOS、ミドルウェアのこと、とあります。

逆にソフトウェアが色々なプラットフォームに対応している場合のことを ” マルチプラットフォーム対応 “という様です。 

 

なのでつまりIDEとは

開発環境サイドで使われて、様々なPCからでもデバッグなどの作業をやりやすくしたゲームエンジン、という意味になりそうです。

 

 

 

SELECT文を使ってみる

 

データの取得 - MySQLの使い方

MySQLを学べる記事まとめ | TechAcademyマガジン

逆引きSQL構文集 - レコードを検索する

Webブラウザで気軽に学ぶ実践SQL講座(3):まずはここから! 基本的なSELECT文から始めよう - @IT

参考サイト

 

まずテーブルの縦の列をカラム (calm) と呼び、横の列をレコード( record )と呼びます。 

 

SELECT文というのはMySQLからデータを表示させる際に使われるものです。

基本的な構成としては

 

SELECT  (  )  FROM  自分が表示したいテーブル名  WHERE 条件式

 

となります。

・SELECTはカラムに対して

・FROMはどのテーブルからか、という

・WHEREはどのような条件でレコードを(時々カラム)検索するかという

それぞれこのような意味となっています。

 

以下をやります。

・テーブルデータの全件取得
・id10を表示させる
・id5~8を限定表示させる
・男だけの数表示
・30以上の女
・年齢の高い順
・年齢の低い順
・年齢の高い順にデータを並び替えて10件だけデータ取得
・年齢の低い順にデータを並び替えて11件目〜20件目のデータ取得
・何種類の年齢の人がいるのか検索
・年齢毎に人数をカウントして年齢の高い順に表示

 

注 : 今回使用したのは " member " というテーブルです。

  1000件の個人の名簿が入っています。(ランダム) 

   id、lastname、firstname、sex、ageの情報が記載されています。

 

 

 

・テーブルデータの全件取得

 

SELECT*  FROM  member 

 

これは  "  memberというテーブルの中のカラムを全て表示しろ  "  という

SQL文です。

レコードに対しての検索条件を指定しない場合はWHERE句を省くことが出来ます。

*(アスタリスクはSELECTにかけられているもので、

この場合は ” 全ての” という意味です。

 f:id:ysm_0pro:20160413011055p:plain

 これはほんの一部の抜粋でもっとあります(だって1000件あるし...)

 

 

 

・id10を表示させる

id10には 

f:id:ysm_0pro:20160412190046p:plain

このようなデータが入っています。

これを表示させる為には

 

SELECT*  FROM  `member` WHERE id=10

 

これを打ちます。

これは、 " memberというテーブルの中から全てのカラムを引き出し、id 10だけ

を表示しなさい " というSQL文です。

今度はWHERE句を使用しました。レコードに対して" id=10 "という

条件をつけるためにです。

 " = " というのは比較演算子で、WHERE句では様々な比較演算子を使用することが出来ます。いつか画像載せてましたね。

 使う機会があればその都度載せていきます。

 

 

 

・id 5 〜 8 だけを表示させる

f:id:ysm_0pro:20160412190651p:plain

id 5 〜 8 だけを表示させるSQL文は

 

SELECT* FROM `member` WHERE id BETWEEN 5 and 8

 

となります。

〜 WHERE カラム    BETWEEN A and B 

で ” AとBの間のカラムをだけを表示させろ” という意味になります

 

 

 

・男だけの数を表示させる

 

SELECT COUNT( sex ) FROM `member` WHERE sex=`男`

 

WHERE句でカラムに対して条件を付けています。

WHERE sex='男'で、
指定したカラムのsexは男、という意味で、女の表記はいらないのでこのような指定をしています。

 

f:id:ysm_0pro:20160413013600p:plain

 

 

 

・年齢の低い順、高い順で表示させる

まずは低い方から。

SELECT* FROM  ` member `  ORDER   BY   age

” 〜 ORDER  BY  カラム  ” で " カラムを数値的に低い順で表示させろ " 、という意味になります。

 

f:id:ysm_0pro:20160413012418p:plain

 

 

 

・逆に高い順にしたい場合は

末尾にDESCを付けます。

なので

SELECT* FROM  ` member `  ORDER   BY   age DESC

” 〜 ORDER  BY  ○○  DESK” で " ○○を高い順で表示させろ " 、という意味になります。

 

f:id:ysm_0pro:20160413012442p:plain

f:id:ysm_0pro:20160413012442p:plain

 

...低い順も高い順も実際にはちゃんと出来るのですが件数大杉内で

全部20歳と80歳しか表示出来なかったですw

 

 

 

・年齢の高い順にデータを並び替えて10件だけデータ取得する

 

f:id:ysm_0pro:20160412192432p:plain

 これは

 

SELECT*  FROM  ` member ` ORDER  BY  age  DESC  LIMIT  10

 

 " 〜 ORDER  BY   AAA  DESC  LIMIT  ○○ " で、AAAを高い順で○○まで表示させろ

という意味になります。

先ほど使ったORDER  BY  AAA  DESCの応用でこれは高い順で表示させる、という意味

なのでここでいう10番目までの表示というのは " LIMIT  10 " の部分となります

 

 

・何種類の人間がいるか検索

SELECT  COUNT( age )  FROM  ` member `  GROUP  BY  age

〜 GROUP  BY  ○○  ”で種類別で表示、という意味になります。

 

 

まだ自分で気になる所が出てきてしまったので調べ直すのと、書ききれてない部分がありますので後ほど追記します...

すいません...