2013年2月10日日曜日

ドットインストール MySQLの基礎 4

  1. レコードの総件数を調べる
    select count(*) from users;

    チームというフィールドにはどのような値が入っているのか、重複なしで調べる
    select distinct team from users;

    数値に関しては最大値もとれる
    select max(score) from users;

    平均を取る時はこれ
    select avg(score) from users;

    合計はこれ
    select sum(score) from users;

    ある項目で指定した値に一致するもの同士の他のフィールド値の合計
    select round();
    乱数を表示 ランダムに抽出する

    select * from users orders by round() limit1;
    適当に並び替えてそのうち一人だけ持ってきなさい

    型を明示的に表示する→typeof(フィールド名)
    select name, typeof(name) from users

    select email, length(email) from users;
    選んだフィールドのある各項目の長さ

    select concat(name, '(',team,')') from users;
    文字や項目を連結して表示できる

    select concat(name, '(',team,')') as label from users;
    とすると項目名がlabelと表示される

    select name, substring(team, 1,1) from users;
    ここではチーム名の一文字目から一文字だけ引っ張ってくるように指示している

    現在時刻を求めたい時は
    select now();

    select name, month(created) from users; dagediff
    日付の差分を日数で求める

    select name, datediff(now(), created) from users;
    で現在と作られた日の差分が求められる

    selsect!!!!!!!!!!!!!!!!!!!!!!!
    リファレンスの関数と演算しというところに情報があるのでみてください
  2.  

ドットインストール PHPの基礎③


三項演算子(条件演算子)

まず普通に条件分岐を書くと

$age = 20;

if ($age > 20) {
    $massage = “大人”;
} else {
    $massage = “子供”;
}
   となるのですが

   同じことを三項演算子を用いて書くと

    $message = ($age > 20) ? “大人” : “子供” ;
   となるので便利です

条件分岐(switch
 選択肢があらかじめ決まっていて条件に応じて振り分けたい場合に使う

 〜書き方〜
case 条件:
 命令文
break;

 因にdefaultは例外処理

 〜例〜
 $signal(ここでは信号の色)が
 赤だったら「止まれ」
 緑なら「進め」
 黄色なら「注意」
 を表示する命令を書いている。
 caseの後ろに変数の値の条件を書き、
 コロンからbreakまでを実行する。
 
  $signal = "green";
   switch($signal){
               case "red" :
               echo "止まれ";
               break;
               case "blue" :
               case "green":  //条件が二つある時はcaseを二つ並べてから命令
               echo "進め";
               break;
               case "yellow" :
               echo "注意";
               break;   default :
               echo "わからない";
               break;
  }               


文字列に関する関数
 printf() -> フォーマット化された文字列を返す

  〜例〜
  we have 40 bananas for $5.23と表示させたい場合

   $s = "banana";
   $n = 40;
   $p = 5.30;

  printf("we have %d %ss for $%f", $n, $s, $p);
  “%”オプション“で変数を代入できる

  オプションの意味は

   %d -> 整数値
   %ss -> 文字列
   %f -> 小数値

  さらにオプションと%の間に数字を入れることで桁数を指定できる
   %.2f 小数点以下に桁
   %5d  五桁
   %05d 5桁だけれども5桁に見た無い場合は0で埋めてくれる
 関数sprintf() -> 機能はprintf()と同じだけど、値を返してくれる
                 $変数名 = sprintf()
                 という風に変数に格納することもできる

配列に関する関数
 array(“要素”,”要素”,”要素”) -> 配列を格納する
 count(変数名) -> 配列の要素数を返してくれる
 sort(変数名) -> 配列をアルファベット順に並べてくれる
 in_array("要素", "配列を格納した変数名”) -> 配列に要素があるか判定
 implode(“区切り文字”, 配列変数名) -> 配列を区切り文字を使って表示
  explode("区切り文字", 文字列変数名) -> 文字列を特定の文字で区切って配列に変換

 〜例〜
  $members = array("tanaka", "Sasaki", "kuma", "yoshida", "uchida");

  //count 要素の数を返してくれる
  echo count($members);

  //sort アルファベット順に並べてくれる
  sort($members);
  var_dump($members);

  //in_array 配列にはいっているかどうか調べる
  if (in_array("tanaka", "$members)){
                echo "Bingo!"
  };

  //implode 配列の中身を何らかの区切り文字を使って表示したい
  //explode何かの文字で区切って配列にする
  $atstr = implode("@", $members);
  var_dump(explode("@", $atstra));

日付や時間に関する関数
  unixタイムスタンプ
  (1970/1/1 00:00:00からの経過秒数)

  time() -> 現在時刻のユニックスタイムスタンプ
   mktime(,,,,,) ->特定日付のユニックスタイムスタンプ
   strtotime() ->日付っぽい文字列からタイムスタンプを作ってくれる
              例 strtotime("last Sunday")
   echo date("フォーマット", タイムスタンプ") ->タイムスタンプを特定のフォーマットに直す
 

ファイルの読み書き

 test.dat
 パーミッション 
 読み書く×3
 <?php


 $testFile = "test.dat";
 $contents = "こんにちは";

 if(is_writable($testFile)){ //書き込み可能かチェック
 //ファイルをオープンできたか? fopenopen aは今あるファイルの末尾にデータを加える
 //ファイルポインタリソースが帰ってくる
 //整理券みたいなもの
 if(!$fp= fopen($testFile, "a")){//fpがフォルスだったら
 echo "could not open";
 exit;
 }
 //書き込めたか??

 if(fwrite($fp, $contents)===false){//===は型も値も同じ
 echo "could not write";
 exit;
 }
 echo "success";
 fclose($fp);
 }else{
 echo "could not writable";//書き込み可能でなければexit

 exit;
 }

ファイルからデータを読み出そう
 $testFile = "test.dat";

 if(!$fp = fopen($testFile, "r")){
                echo "could not open";
                exit;
 }

 $contents = fread($fp, filesize($testFile));

 var_dump($contents);

 fclose($fp);


もっと簡単にできる

 $testFile = "test.dat";

 $contents = file_get_contents(ファイル名); //ファイルの中身を読み込む
 $contents = file_get_contents("URL");//ソースコードをとってくる
 $contents = file($testFile);//ファイルの中身をよみこんで一行ごとに入れに突っ込む
 var_dump($contents);

フォームからのデータを受け取ろう

 <?php

 $birthday =$_POST['birthday']

 $youbi = date("l", strtotime($birthday));

 ?>

 <!DOCTYPE html>
 <html lang="ja">
 <head>
 <meta charset="UTF-8" />
 <title>PHPの練習</title>
 </head>
 <body>
 <h1>PHPの練習</h1>
 <p><?php echo htmlspecialchars($youbi); ?></p>
 </body>
 </html>

 index.htmlソース
 <!DOCTYPE html>
 <html lang="ja">
 <head>
 <meta charset="UTF-8" />
 <title>PHPの練習</title>
 </head>
 <body>
 <h1>phpの練習</h1>
 <form action ="get_info.php" method = "post">
 <input type="text" name="birthday" value ="">
 <input type="submit" value="送信">
 </form>
 </body> 
 </html>

2013年2月2日土曜日

ドットインストール PHPの基礎②


ループの抜け方


break,←ループを終了
continue.←ループをスキップ

for ($i = 0; $i < 10; $i++) {
                if ($i > 5) {
                break;
                }
                echo $i;
}

for ($i = 0; $i < 10; $i++) {
                if ($i % 2 == 0 ) {
                continue;
                }
                echo $i;
}


配列


似たようなデータをグループ化できる

$youbi = array(“Sun”, “Mon”, “Tue”);
echo $youbi[0];

$配列名[番号];で呼び出せる

追加の仕方
$配列名[] = “追加したい値”;
で配列の末尾 追加したい値が追加される

var_dump($配列名);←全ての配列を表示する関数

$変数名[番号] = “更新後の値”;
で更新できる

要素を削除したい場合
unset($配列名[削除したい要素番号]);


連想配列


要素のラベルを番号ではなく文字にすることもできる
$sales = array (“tanaka”=>150, “tagichi”=>200);

echo $sales[“tanaka”];

配列をループさせる
$youbi = array (“sun”, “mon”, “tue”);
$sales = array (“tanaka”=>150, “taguchi” => 500);

foreach ( $youbi as $y){
                echo $y;
}

foreach ($sales as $name => $amount){
                echo $name, $amount;
}


関数


function sayHi(){
echo “hi”;
}

sayHi();

function 関数名($引数名=初期値){
命令 $引数名
}

関数名(引数)
で引数を含んだ命令を実行できる

関数名()とすると
初期値で命令を実行してくれる

命令中にreturnとすると値を返してくれる


ローカル変数


ローカル変数とは関数内でのみ有効な変数

function sayHi($引数 = 初期値){
                $ローカル変数 =”php”;
                return “hi! $引数 from $ローカル変数”;
}

echo sayHi();
echo $ローカル変数;←これはエラーが返される

 

あらかじめ用意されている関数を使ってみよう



$x = 5.2
echo ceil($x).””;
echo floor($x);
echo round($x);
echo pi($x);
echo rand(1, 100);
echo mt_rand(1, 100);

2013年1月30日水曜日

ドットインストール PHPの基礎①


<?php?>で挟まれていればhtml中のどこにでも入れることができる

echo:文字列を表示させる為の命令。文字列は””でくくり、終了は;

変数:値につけるラベル $変数名」で定義、変更可能
      $変数名=hogehogeを変数名に代入!
      ルール
   1. $から始まる
   2. “_”も使える
      3. $の後は数字はダメ
   4. 英語の大文字小文字は区別される

扱えるデータ型
文字列:” ” or ’ ’
数値:(整数、小数)
理論値:(true/false
null:何も無いという意味

定数:変更不可、通例で定数は大文字で書くことが多い
   define(“ADMIN_EMAIL”, example@example.com);
      define(“LIST_COUNT”, “14”);

演算子
代入演算子 
x=5;←代入
数値に関するもの
%=余
文字列の連結演算子
.
echo “hello”.”world”

単項演算子:++, -- など
$x++;  ← X = X + 1という意味
++$x

代入を伴う演算子
$x +=5; //$x = $x + 5という意味
$x *=5; //$x = $x*5という意味

文字列の表現の仕方
変数とエスケープ文字を展開する
」変数とエスケープ文字を展開しない
$name = “hoge”;
echo “hello $name”;//こうするとhello hogeと表示される
echo ‘hello $name’ // こうするとhello $nameと表示される
特殊文字(\nなど)こういったものを使う場合はを使う

条件分岐(if
if(条件){

}
論理演算子 &&(AND) ||(or)

分岐の書き方
パターン1
if(): 命令 ;
elseif():              命令 ;
else :命令;
endif;

パターン2
if ( ) {
  命令;
} elseif ( ) {
  命令;
} else {
  命令;
}

2012年10月18日木曜日

ドットインストール Google Feed APIの基礎

Google Feed API

*概要
RSS/ATOM -> JSON/XML

*公式サイト
Google feed API


①以下、URLを知っている場合のfeedの引っ張り方

<!DOCTYPE html>
<html lang="ja">
<head>
       <meta charset="utf-8">
       <title>Google Feed APIの練習</title>
       <script src="https://www.google.com/jsapi"></script>
       <script>
            google.load("feeds", "1");//実際にロードする
         
            function initialize(){       //設定
                 var feed = new google.feeds.Feed('http://www.ideaxidea.com/feed');              //何のfeedが読み込まれるかをURLで指定
                 feed.load(function(result){          
           //設定ができたら読み込む,
           //読み込んだ後に何を実行するかを関数で指定
                         if (!result.error){
                                 //console.log(result);
           //resultの中身を表示
                                 var container = document.getElementById('feed');
                 //表示領域を指定
                                 for(var i = 0; i < result.feed.entries.length; i++){
                 //ループをまわしていく                              //エントリー数だけループをまわしていく
                                      var entry = result.feed.entries[i];
                 //いったんエントリーという変数に入れておく
                                      var link = document.createElement("a");
                 //リンクを作っていく、a要素を作る
                                      link.href = entry.link;
                 //リンクのhref属性にリンクをくっつける
                                      link.appendChild(document.createTextNode(entry.title));
                 //リンクテキストをつける。
                 //appendChildでテキストをつける
                                      var li = document.createElement("li");//リスト要素を作っている
                                      li.appendChild(link);
                                      container.appendChild(li);
               
                                 }
                         }
                  });
            }

            google.setOnLoadCallback(initialize);
        //initializeをページが読み込まれた時にを実行するか??
</script>
</head>
<body>
  <ul id = "feed"></ul> <!--表示する場所を指定 リスト要素に変更-->
</body>
</html>

②以下feedの検索機能の使い方
<!DOCTYPE html>
<html lang="ja">
<head>
     <meta charset="utf-8">
     <title>Google Feed APIの練習</title>
     <script src="https://www.google.com/jsapi"></script>
     <script>
          google.load("feeds", "1");

         function initialize(){
            var query = "ドットインストール";
         //何らかに関して取り上げているフィードの一覧が欲しい
            google.feeds.findFeeds(query, function(result){
         //第一引数=検索、第二引数=コールバック関数
               if (!result.error){//resultがエラーでなければ
                 console.log(result);
              }
         });
    }
   google.setOnLoadCallback(initialize);
  </script>
  <body>
     <ul id="feed"></ul>
  </body>
  </html>

2012年10月13日土曜日

ドットインストール MySQLの基礎 3

  1. データの挿入
    desc users; (usersはテーブル名)
    でテーブルの構造がみられる

    レコードを挿入する
    insert into users (name,email,password,score,memo,created) values ('taguchi','taguchi@gmail.com','XXX',5.5,'memomemo','2012-06-12 11:00:00');

    データの中身をみる場合は select * from users;
  2. レコードを抽出してみよう

    users からすべてのフィールドを引っ張ってきなさい
    select * from users;
     //usersはデータベース名

    users テーブルから名前とアドレスを引っ張ってきなさい
    select name, email from users;

    フィールドが多すぎる時は ユーザーごとにまとめて表示
    select * from users \G
  3. 条件付きの抽出

    select * from users where score >= 5.0;
    スコアが5以上の人を抽出

    select * from users where score = 5.5;
    スコアが5.5の人を抽出

    select * from users where score != 5.5;
    スコアが5.5以外の人を抽出

    select * from users where team <> 'red';
    チームがレッドじゃない人を抽出

    select * from users where created > '2011-06-01 11:00:00';
    この日付以降に登録した人

    select * from users where email like '%@dotinstall.com';
    このドメインを持っているひと

    select * from users where email like '%@dotinstall.__';
    @dotinstall.の後に二文字だけくるものを検索

    select * from users where score between 5.0 and 8.0
    スコアが5.0と8.0の間に入るもの  

    in チームがレッドかイエローのものを選ぶ
    select * from users where team in ('red', 'yellow');

    select * from users where score >= 4.0 and team = 'blue';
    and とorでつなげることもできる

    select * from users order by score;
    users のフィールドをscore順に並べ替える

    select * from users order by score desc;
    descとつけると大きい順に並べ替えてくれる
    文字列にも使える

    件数の制限をする
    例えば上から3つしか表示させない場合
    select * from users limit 3;

    開始位置を指定することも可能です
    開始位置はゼロから始まる
    ナンバー2から始まる二つのデーターをとってきたい場合
    select * from users limit 2, 2;

ドットインストール SQLiteの基礎 1

公式サイトはSQLite.orgです
リファレンス的に使うのはSQL syntaxの項目

とりあえず
$yum install sqlite  
でインストール

$sqlite -version
でバージョン確認

$sqlite3 ファイル名.sqlite3
でsqlite開始

>.exit
でSQLite終了

>create table users(name);
でテーブルを作る

>.tables
テーブル一覧が見られる

>.schema テーブル名
テーブル内のカラム構成がみられる

>alter table テーブル名 rename to 新しいテーブル名
で名前の変更

sqlite> alter table テーブル名 add column カラム名;
で絡むの追加

〜SQLiteで指定できるデータ型〜
NULL
INTEGER 整数値
REAL   小数の入った数値
TEXT   文字列
BLOB   Binary Large OBject

*データ型は指定できるけど必須ではない

−指定の仕方
create table users (name text, email text);

*データ型を指定するとそれになるように努力するけど確約しない