2015年3月2日月曜日

PEAR成功…?でも使わないかも

試行錯誤して、やっとPEARを動かすのに成功しました。
ターミナルからPEARと使うライブラリを入れなおして
「php.ini」ファイル を編集して・・・
結局何が問題だったのかは分かっていない・・・。



 「pear list」と打ち込んで、ライブラリの一覧も表示されました。
サンプルのソースが動かなかったのは、PEARのあるフォルダへのパスが間違っていたのが問題でした。
「bin」と「lib」を間違っていたり。

ここまで辿りつけたのも、何人もの先人がネットに対処方法を書き込んでくれていたおかげ。
インターネットに感謝です。
一番お世話になったのはこちらの記事。
 ・[php] xampp for macでPEARのMDB2を使う方法まとめ

そもそもPEARって何?

PEARは PHP Extension and Application Repository の略です。どんなものかというと、PHP4からおまけで付いてくるよーになったクラスライブラリ集です。クラスライブラリ、と言われてもピンと来ないと思いますが、つまり、よく使う機能を「クラス」としてまとめたものです。
この「クラス」というのはPHPで書かれた1まとまりのコードです。例えば、データベースの操作をしてくれるクラス、テーブルの表組みをしてくれる クラス、フォーム処理をしてくれるクラスなどなど・・・。しょっちゅう使う、毎回書くのが面倒、などのスクリプトを、どっかの誰かが楽チンに記述できるよ うに汎用的にして書いてくれてあるのです。書いてくれた人に感謝です。

参照元:PHPスクリプト講座:PEARのインストール | そふぃのphp入門

javascriptのjQueryみたいなものでしょうか。
PEARの本体(?)も基本機能をいろいろ持っているし、
必要があれば公式サイトから様々なライブラリをインストールすることもできる。

PHPからデータベースを操作したり、
XMLをいじったり、APIを呼び出したり。


結局使わないかも


薄々気づいていましたが、
PEARで検索して出てくる情報が、みんな古い。 
2008年とか、2010年とか。
そもそも使ってる参考書の初版が2008年!

やはり、PEARを学んでもあまり良いことがないかもしれない。
 データベースとのやり取りも、PDOを使えばいいし・・・。
通り過ぎるだけで使わない可能性が大です。


2015年2月25日水曜日

MySQLのテーブル作成関連・復習


前回に引き続き、DB復習+PEAR入門。

XAMMPをインストールできたので、データベースを作っていきます。



※これから勉強する人は、このブログを参考にしないことをお薦めします・・・

ついこの間までPEARの読み方を「パール」だと思っていて、
「パールが!パールが!」と友人に話していました。恥ずかしすぎる。
それPealだから。違うプログラミング言語だから。


さて、参照している本のXAMMPのバージョンは0.7.4。
インストールしたXAMMPのバージョンは5.6.3

めちゃくちゃ進化してる。
無事に終えられる気がしません・・・。
MySQLの画面も、テキストと全く異なります。

自分のMac環境+PEARでググると、「PEARは元から入っている」みたいな情報も???
よく分からないので、とりあえず先に進みたい。
何も設定しなくても使えるのか・・・?
(※後で分かったけど全然使えない)



phpMyAdminを使っていきます。横着してターミナルではなくブラウザから。



無事にXAMMP for Macが立ち上がり、
おなじみのphpMyAdmin画面。

適当にデータベース、テーブルを作りました。


今日の復習。フィールドの各設定項目など。

null」 →空の値を許可するかどうか
「not null」(チェックしなければ)だと必ず値を入れなければならなくなる。

 「A_I」チェックボックス→「auto increment」。
INT型のフィールドを作り、この項目をONにしておくと、レコードに自動的に番号がふられる。

インデックス」→あるフィールドを使って頻繁に検索をかける場合、インデックスを設定しておくと高速化する。

インデックスって何だろう?と思っていたのですっきり。
使うかどうかは置いておいて。



XAMMPのphpMyAdminのセキュリティ関連はこちらを参考にしました。

2015年2月18日水曜日

MacにXAMPPをインストールしたのでメモ





Macの開発環境にXAMPPを入れることにしました。

うちには2011年製のMac(メモリ4GB,当時の型落ち)と、
友人に組んでもらった怪しいWindows があります。

Macの開発環境としてMAMPを入れて使っていたのですが、
ちょっと調子に乗ってPEARをインストールしたら、
MAMPのMySQLが起動しなくなりました・・・。

いろいろ対策を調べて試しましたが、動く気配なし。
 ("killall -9 mysqld"とか)
この一件でターミナル触るのトラウマです。

一晩格闘して疲れたので・・・
MAMPとおさらばしてXAMPPデビューを企てました。

XAMPPザンプ)とは、ウェブアプリケーションの実行に必要なフリーソフトウェアパッケージとしてまとめたもので、apachefriends.orgから提供されている。主として開発用あるいは学習用ではあるが、イントラネットなどにおいて実運用環境として使われることもある。
※Wikipedia:XAMPPより引用

そもそも、Mac環境=MAMPと思い込んでいて、
MacでもXAMPPが使えるってことを知りませんでした。


DL→インストールまでは10分程。



そして「php.ini」の書き換え。訓練でやったような。
[アプリケーション→xampp→xamppfiles→etc→php.ini]

 参照していた本では
「magic_quotes_gpc=On」を「Off」に書き換えると書いてます。
他にもいろいろあるのだろうけど、とりあえずここまで。


そして・・・
あれ?
どうやって起動するの?

アプリケーションフォルダの「XAMMP」フォルダ内に、アプリケーションのアイコンがない・・・。

参照していた本では、
ターミナルを起動し、[sudo su]と入力。
パスワードを(決めて)入力。
「 /Applications/xampp/xamppfiles/mampp start」と入力で起動する、とあります。

結果→sh: /Applications/xampp/xamppfiles/mampp: No such file or directory

起動しない。そしてなぜmampp??







XAMMP起動
よく見たらあやしいアイコンがありました。
名前は「manager-osx.app」。
どうやらアイコンが違うだけで、こいつがXAMMPらしい。

どうしてこんな設定ファイルのようなアイコンなのだろう?
なぜ名前を「xammp.app」にしてくれなかったのか。


クリックしたらXAMMP画面が開きました。
分かりにくいのでは・・・?





アプリケーション起動ぐらい普通にやりたい。
 「他の子どもはちゃんとできてるのに、ウチの子(XAMMP)はできてない」みたいな心境。
今後この子とやっていけるのか、しょっぱなから不安がよぎりました。

この資料ではっきりわかりました。


「いきなりはじめるPHP ワクワク・ドキドキの入門教室という書籍の補足。
・XAMPPのインストールでお困りのMacユーザーの皆さんへ
ありがたや。
今度書店に行ったら手にとってみようと思います。

この解説PDF、画像もテキストもすごくわかりやすい。
著者がしっかり読者の気持ちを汲んで書いているのを感じます。
未経験のときにこの本に出会いたかった。

そんなこんなで、今日はひとまず起動まで。

2015年1月18日日曜日

その後の状況

訓練が修了し、3ヶ月経過しました。

受けた会社:3社
採用いただいた会社:2社

いずれもハローワーク経由。
担当職員さんからの紹介です。

いずれも、職務経歴書と履歴書を持参して面接。
面接1回で採用・不採用が決まりました。

ダメだった会社は、完全に即戦力の人を探しているとはっきり言われました。
(人事の方とても良い印象でした)

採用はいただきましたが、まだ求職活動を続けています。
給与・立地・勤務時間などを詳しく聞いて、
とても心苦しく思いましたが、辞退しました。

会社側も時間を割いてくれているわけなので、申し訳ないです。

自分のキャリア的にも、次の職場は長く(5年くらいは)居たいと考えています。
ちょっと貪欲に探します。



プログラムですが、しばらくエディタを売っていないと本当に忘れてしまいます。

今日はこの本で復習。


イラストでよくわかるJavaScript Ajax・jQuery・HTML5/CSS3のキホン

2014年11月11日火曜日

?日目 PHP SQL 「PDO」でデータベースへ接続する

とても眠い!!が、今日の授業メモ。


  • PDO(ピーディーオー)

昨今ではDBに対して"PDO"で接続することを推奨している。

クラス構造になっている??
PDO = PHP Data Object

http://php.net/manual/ja/book.pdo.php

MySQLの版権を持つメーカーオラクル。

しばらく無償でを提供すると言っているが、将来有償化することも起こりえる。
そのとき、今まで使っていた関数 mysql~が使えなくなる?!

そこでPDOを導入。
このクラスのオブジェクトを生成すると、
宣言(接続の定義)さえすれば、
指定したDBに対して自動的に接続してくれる。
長い目で見て継続するサービスはPDOにした方がいいかも。

○特徴:セキュア

プレースホルダー
sprintfを使って個別にサニタイズしていたが(mysql_real_string...とかで)
その必要がなくなる。

○postgreSQL
 (ポストグレ エスキューエル)
 PCUNIX上で動作するオープンソースのデータベース

○MySQLはオラクルが版権を握ってしまった。

○つなぎ方
$dsn="mysql:dbname=foods;host=localhost"
 
 3つのデータを入れる
 使うDB名、DBネーム(goodsとか)、サーバー名(sakuraとか)

  • try 例外処理

try{
     &pdo=new PDO($dsn,$user,$password);
}$catch(PDOException $e){
     print("接続失敗".$e->getMessage());
     exit();
}

○クエリの実行もメソッド
PDOオブジェクトが持っているクエリというメソッドを使って
引数としてSQL文を渡す。
$stmt = $pdo->query("set names utf8;");
$stmt =$pdo->prepare("select * from データベース名where フィールド名1=? and フィールド名2=?");
$stmt->execute(array(2,"%テキスト%"));
while($row=$stmt->fetch(PDO::FETCH_ASSOC)){
     print("<p>".$row["item_name"]."☆".$row["price"]."</p>";
}
$pdo=null;
?>


     $stmt(ステートメント)
     上で予約、下で値を入れる
     prepare...sprintfに該当するもの。
     executeメソッドで値をバインド!!(代入)
     「?」に値をもたせられる。

     単純にテキストが入るのではなく、コンパイルされている。


※$eというオブジェクトが持っているgetMessage()というメソッドが使える
 例外を検知したときは$eというオブジェクトとして取り扱う
 foreachみたいなもの。
 例外が発生したら、$eというオブジェクトが持っているgetMessage()というメソッドを実行。


(PDO::FETCH_ASSOC)
 突然のダブルコロン→PDOのプロパティ
アロー演算を使って呼び出してくる筋の物

オブジェクトを生成しなくても静的に呼び出せる。
newしなくってもメソッドを呼び出せる。

$pdo=null; でサーバー上のメモリを削除する。
 これをしないとずっとプールし続ける。

2014年11月5日水曜日

80日目?|htmlの定義リスト

今日も引き続き課題を進めました。
最終日にプレゼンをやるそうで、プレシャーだと嘆いている人もいれば、
良いプレゼンをやりたいと意気込んている人も。

今日学んだこと


  • <dl>定義リストいろいろ使えるので便利。
    先生は<li>のリストよりもこちらをよく使う。
     
  • CSSを使えば横並びにできる







CSSでの注意点。
「float:left」を使うことになるので、次の要素がきたときにはcrear(解除するプロパティ)を忘れないこと。
「clear:left;」で上の要素の「left」を解除する。
また、「clear:both」ならば上下左右すべてのfloatを解除する。

ラインがそろっている →親子関係もわかりやすくなる。

・ 汎用性の高い横並びdlリストを作る

・ HTML要素 コンテンツのグループ化 dl 要素dl要素(html5.jp)
ここのこの記述、何度読んでもちょっと謎・・・。
もし dl 要素が 1 つ以上の dt 要素を子に持ちながらも、dd 要素を子に持たなければ、それは、名前はあるけれども値がないひとつのグループから構成されることになります。
もし dl 要素が 1 つ以上の dd 要素を子に持ちながらも、dt 要素を子に持たなければ、それは、値はあるけれども名前がないひとつのグループから構成されることになります。
dl 要素の最初の子は dt 要素か dd 要素となりますが、それが dd 要素なら、その最初のグループはそれに対応する名前を持ちません。
dl 要素の最後の子は dt 要素か dd 要素となりますが、それが dt 要素なら、その最後のグループはそれに対応する値を持ちません。

2014年11月2日日曜日

メモ・foreach

連日PHPを勉強しています。

「foreach」と仲良くなれない。
何だっけ?と思い出して、昔のメモを読んで理解したような気になって、また忘れる・・・。


書き方

     -1- foreachi(配列名 as $key=>$val){
             処理
         }

     -2- foreachi(配列名 as $val){
             処理;
         }



  • $key →配列のキー(インデックス)
  • $val →配列の値。別にどんな単語でも良いけどvalを使うのが基本
  • =>(ダブルアロー)配列のキーと値を関連付ける特殊記号。
      
    javascriptのドットと同じ。親要素と子要素をつなぐ。



Foreach文 - Wikipedia [はてなブックマークで表示]ja.wikipedia.org/wiki/Foreachforeach文(フォーイーチぶん)とはプログラミング言語においてリストやハッシュテーブルなどのデータ構造の各要素に対して与えられた文の実行を繰り返すというループを記述するための文である。foreach文はしばしばfor文の一部という位置付けにある。for文と ...

たどり着いた解説が分かりやすかったので引用。
こんな風にユーモアを交えて解説できる人は天才だと思う。
公式のマニュアルも読むけど、今の自分にはまだ難しいのです。

・foreachの使い方がよくわからないので教えてください - PHPプロ!Q&amp;A掲示板

【質問】
今独学でPHPを勉強してるんですけどforeachの使い方がよくわかりません。foreachはどんな時に使えるのか教えてください(for文とは違うんですよね?)。特に$key(一時変数?)と書いてありますけど配列のキーが入ってそれをどういう風に使えるのかがよくわかりません。あまりに抽象的な質問ですみませんが教えてください。

【回答】 
配列全部に対して処理を行う時に一番良く使うのがforeach。
$aa[0]='(゚Д゚ )';$aa[1]='( ・∀・)';という配列があったとき
foreach ($aa as $value){ echo $value."ゴルァ";}とやると、$aa[0],$aa[1]の2回分ブロック内が処理される。そのとき$aaの中身が$valueに入って処理される。

この場合結果は
(゚Д゚ )ゴルァ( ・∀・)ゴルァ
すっきり。
foreachは配列を取り出すのに使うループ処理の文。
配列の中に存在するデータの数だけ自動ループ…ということかな。
配列だけではなくてオブジェクトにも使えるらしい。

練習でforeachが出てきたのは「フォームからPOSTされたデータを取り出す」ところでした。

<?php
foreach($_POST["test"] as $val){
$val=intval($val);       ←この処理を$_POST["test"]にある数だけ回す
print($val. "です");      
}
?>