Home > PHP Archive

PHP Archive

【CakePHP】SQL文を実行する

  • Posted by: Keisuke
  • 2010年1月17日 12:52
CakePHPはSQL文を書かなくても、決まりに沿ってコードを書けば、データを取ってこれるのですが、やっぱりSQL書きたい!と思ったのでやってみた。

1.モデルの作成
 app/models/に適当な名前のモデルを作成(Test.php)

 Test.php
--------------------------------------
<?php
 class Test extends AppModel{
  var $name = 'Test';
  function findNow(){
   $sql = "select now()";
   return $this->query($sql)
  }
 }
?>
-------------------------------------

ここのモデル名はテーブル名と連動しているので、これを動かすには"tests"というテーブルが必要。
作成したSQLをqueryメソッドに投げるだけ。

2.コントローラからの呼び出し
 コントローラからは以下のようにして呼び出す
-------------------------------------
$this->Test->findNow()
-------------------------------------

結果はこんなかんじ↓
Array ( [0] => Array ( [0] => Array ( [now()] => 2010-01-17 13:02:01 ) ) )


だんだん、CakePHPにも慣れてきたな。

【CakePHP】Hello World!

  • Posted by: Keisuke
  • 2010年1月17日 00:05
フレームワークってのは、しっかり構造を理解しないとなかなか使いこなせない。
とりあえず、HelloWorld!

1.コントローラを作る
 app/controllers/にtest_controller.phpを作る

test_controller.php
---------------------------------------
<?php
 class TestController extends AppController{
  var $name = 'Test';
  var $uses = null;
  
  function index(){
   echo "Hello World!"
  }
 }
?>
----------------------------------------

$nameにはコントローラ名を入れる
$usesはまずはModelを使わないので、nullにしておく。

2.http://localhost/testにアクセスすると"Hello World!"と表示される。

CakePHPの使用としてURLは
 http://localhost/コントローラ名/アクション名/パラメーター
となっている。

3.コントローラに対するビューを作成する
 app/views/にtestフォルダを作成し、index.thtmlを作成
 
コントローラに対するビューは
 app/views/コントローラ名/アクション名.thtml
となる。

これで、とりあえず基本的な表示はOK。

【CakePHP】データベースに接続

  • Posted by: Keisuke
  • 2010年1月16日 23:16
CakePHPでデータベースに接続します。

1.app/config/の中のdatabase.php.defaultをdatabase.phpにリネーム
2.以下のように設定
var $default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'ホスト名',
'login' => 'ユーザー名',
'password' => 'パスワード',
'database' => 'データベース名',
'prefix' => '',
);
3.CakePHPのwelcomeページで
 [Cake is able to connect to the database.]
 となればOK


【Windows】PHP開発環境の構築(XAMPP+EclipsePDT+CakePHP)

  • Posted by: Keisuke
  • 2010年1月16日 20:57
XAMPP+EclipsePDT+CakePHPの環境を、64bitのWindowsVistaに構築していきます。

1.XAMPPのインストール

 ・http://www.apachefriends.org/jp/xampp-windows.htmlからXAMPP Windows版をダウンロード
   (自己解凍型RAR アーカイブ)をダウンロードしました。
 ・Cドライブ直下に保存。(C:\xampp)
 ・XAMPP Control Panelを起動し、Apacheを起動する。
 ・http://localhost/ にアクセスし、正常にインストールされたか確認する。

2.Eclipse PDTのインストール
 ・http://www.eclipse.org/pdt/downloads/から[PDT2.1 SR-1 All in Ones / Eclipse PHP Pacage]の[All-In-One Windows 32-bit]をダウンロード
 ・解凍して、Cドライブ直下に保存。(c:\eclipse)
 ・c:\eclipse\eclipse.exeからeclipseを起動。
 ・メニューの[Window]→[Preferences]を開く
 ・[PHP]→[PHP Executables]を開き、Addをクリック
 ・以下のように設定
   Name:任意の名前
   Executable path:C:\xampp\php\php.exe
   PHP ini file:C:\xampp\php\php.ini

3.CakePHPのインストール

 ・http://cakephp.jp/からcake_1.2.5.zipをダウンロード
  ・ファイルを解凍し、C:\xampp\htdocsに任意のディレクトリ名で保存(C:\xampp\htdocs\test)
  ・http://localhost/testでCakePHPがインストールされていることを確認。


やっと環境が整った。
これからだな。

【PHP】標準クラスのstdClass

  • Posted by: Keisuke
  • 2009年5月12日 19:06
PHPの標準クラス stdClass の使い方メモ

$hogeArr = array();

$a = new stdClass();
$a->name = "大塚愛";
$a->sex = "女";
$a->age = "26";

array_push($hogeArr,$a);

print_r($hogeArr);

-----------------------------------
(出力結果)
Array
(
    [0] => stdClass Object
        (
            [name] => 大塚愛
            [sex] => 女
            [age] => 26
        )
)


【PHP】fgetcsvと改行コード

  • Posted by: Keisuke
  • 2009年1月30日 21:27
ある案件で、CSVデータをアップロードして、DBに保存するというプログラムをPHPで作りました。

何回も、テストして完璧に作ったつもりなのに、なぜか先方から送られたcsvファイルのみ
アップロードできなかったのです。

原因は、改行コードでした。

WindowsかMacかでデフォルトの改行コードが違うみたいです。
(winは[CR+LF]、macは[CR])

CRの場合で、PHP側が行末を認識できずに、1行しか表示できない状態になってました。


いろいろ、調べてみたら、いちばん手っ取り早い方法は。php.iniの設定を変えることです。

デフォルトで、

auto_detect_line_endings = Off



になってるのを

auto_detect_line_endings = On


に変えればいいだけです。


これで、何とか解決。

FLASH+PHP+IE+SSLの不具合

  • Posted by: Keisuke
  • 2009年1月23日 16:36
最近の案件で、FLASHからPHPにsendAndLoadする機能を作ったのですが、
なぜか、IEだけsendAndLoadが失敗してしまうという、不具合が起きた。

調べてみると、原因はPHPみたい。

レスポンスヘッダに、

Pragma: no-cache;

があるとIEでは、だめらしい。

ふぅ。とりあえず解決してよかった。

【PHP】携帯からかPCからのアクセスかを判別する

  • Posted by: Keisuke
  • 2008年11月18日 19:05
またまた、PHPネタ。

表記のプログラムです。
下記URLを参考にして、実装しました。
というか、丸々パクリました。

http://noongoro.main.jp/note/note0035.html

少しずつ、慣れてきたな、PHP。

【PHP】フォーム内に複数のSubmitボタンを設置して、違うページにジャンプする

  • Posted by: Keisuke
  • 2008年11月17日 17:28
また、PHPネタです。

表記の方法をメモ。

--------------------------------------------------------------------------
<form name="frm" method="post" action="jump.php">
  <input type="submit" name="back" value="戻る">
  <input type="submit" name="next" value="次へ">
</form>
--------------------------------------------------------------------------

こんな感じで書いて、actionで指定しているjump.phpには

--------------------------------------------------------------------------
<?php
 if(isset($_POST['back'])){
  //戻るボタンを押したときの処理
  require "hoge.php";
 }
 if(isset($_POST['next'])){
  //次へボタンを押したときの処理
  require "hoge2.php";
 }
?>
--------------------------------------------------------------------------

こんな感じで書くと、戻るボタンを押したときはhoge.phpへ、
次へボタンを押したときは、hoge2.phpへ飛びます。

少しずつ、PHPに慣れていこう!


【PHP】PHPによるShift-JIS文字列のURLエンコード/デコード時における文字化け

  • Posted by: Keisuke
  • 2008年11月17日 14:00
案件で、文字コードをEUCからShift-JISに変換する必要が出てきて、そのときに文字化けするので悩んでいたのですが、下記URLに載っている方法で、解決しました。

http://www.syon.co.jp/syontech/tech003.html

文字化けは、やっかいだな。

でも、これで、一安心。

さぁて、後ちょっとだ。

【PHP・MySQL】SQLインジェクション

  • Posted by: Keisuke
  • 2008年11月15日 20:40
PHPでMySQLのインジェクションを防ぐには

mysql_real_escape_string()
という関数を使えばいいみたいです。

使用方法はこちら


開発者側は、こういうことも考えて開発しないとしけないのですね。
SQLインジェクションなんか考えずに実装してたら怒られました。

開発者側は、さまざまな事象に対処しないといけないですね。

Index of all entries

Home > PHP Archive

Iretのなかのひと
Links
あわせて読みたい
あわせて読みたいブログパーツ
Search
Links02
Feeds

Return to page top