hetemlでのzendframework2インストール&アプリ作成その2

f:id:tsumayouzi:20150224224705j:plain

zendframeworkのMVCの基本フローをhello world形式で学んだ備忘録

1インストールとスケルトンプジェクトが適応されてる初期状態 f:id:tsumayouzi:20150224230447p:plain

2コントローラーの定義

まだ全然触れていないものの、 cakephp,fuelphpと違ってフレームワークとしてはややこしいものの、 普通にphpで書くようなかんじで使えるので一番楽なような?

hetemlでのzendframework2インストール&アプリ作成その1

f:id:tsumayouzi:20150224224705j:plain

hetemlでzendframework2インストール&掲示板アプリ作成する備忘録です

hetemlにはアドミンでzendframework2のインストールもしくはサンプルアプリ付きのアプリのインストールができますが、今回はzendframework2を触ってMVCの仕組みを勉強する目的のためフレームワークのインストールをやって進めました

1 hetemlの管理画面にログイン後右のサブメニュー>WEB関連>クイック・フレームワークページへ。 f:id:tsumayouzi:20150224230412p:plain

cakephp,Zendframework,FuelPHPなどからzendframework2を選択し、 フォームに沿ってインストールを進めます f:id:tsumayouzi:20150224230427p:plain

3 ナビゲーション左のフレームワークのみを選択します ポップアップでも許可を押すとセットアップが完了します(楽!!!)

4 インストール先は下記のような画面に f:id:tsumayouzi:20150224230447p:plain 初期状態でスケルトンプロジェクトが適応されている模様です。

【2015年最新版】ユーザーエージェントでガラケー・スマホ・PCサイト振り分け

f:id:tsumayouzi:20150223121954j:plain

WEBサイトの端末別の振り分け方はいろいろあるものの、

おそらく今のWEBデザイン的には、レイアウトが複雑なので

昔のガラケーとPCの切り替えはcssを適応するかしないかのシンプルなものではなく、 ガラケーガラケーのHTMLを書いたほうがいいのかもしれない。もうcss使えるけども。

あと数年前まではスマホとPCサイトでもページを振り分けをしていたものの、 できる限りレスポンシブなデザインが求められていると思う。(さっきといってること逆)

なのでメモします。

// ユーザーエージェントによる振り分け $user_agent = $_SERVER['HTTP_USER_AGENT']; if *1 { //ガラケーのHTML(inc)orページ飛ばす }else { //レスポンシブ }

3こともページ分けるor cssを端末ごとに読み込むver

// ユーザーエージェントによる振り分け $user_agent = $_SERVER['HTTP_USER_AGENT']; if *2 {

}else if ( (strpos($user_agent, 'iPhone') !== false) || *3|| (strpos($user_agent, 'Windows Phone') !== false) || (strpos($user_agent, 'BlackBerry') !== false)){ //スマホ }else{

}

がおそらく便利??????

*1:strpos($user_agent,'DoCoMo') !== false) or (strpos($user_agent,'KDDI') !== false) or (strpos($user_agent,'SoftBank') !== false

*2:strpos($user_agent,'DoCoMo') !== false) or (strpos($user_agent,'KDDI') !== false) or (strpos($user_agent,'SoftBank') !== false

*3:strpos($user_agent, 'Android') !== false) && (strpos($user_agent, 'Mobile') !== false

hetemlでのcakephpインストール&掲示板アプリ作成方法その2

f:id:tsumayouzi:20150222151344j:plain

簡単な掲示板を作成してcakephpでの仕組みを把握しようとした備忘録

1  デフォルトで反映されているデザインを一旦リセット

/cakePHPのディレクトリ/app/views/layouts/default.ctpを編集 (.ctp?cake templateの略なのか。tmpファイル等と同じような扱いっぽい??)

<!DOCTYPE html> <?<a class="keyword" href="http://d.hatena.ne.jp/keyword/php">php</a> echo $title_for_layout; ?> <?php echo $content_for_layout; ?>

2 ホーム画面を変更 

/cakePHPのディレクトリ/app/config/routes.phpを編集 30行目付近の1行をこのように変更

Router::connect('/', array('controller' => '任意のページ名A', 'action' => 'index', 'home'));

3 /cakePHPのディレクトリ/任意のページ名Aにアクセス

するとこのようなエラー文が(newpageというページ名にしました。) f:id:tsumayouzi:20150222223604p:plain 怒られています。phpはjsと違って公開処刑でつらい。挫折しそう。

4 C:コントローラーを作成

/cakePHPのディレクトリ/app/Controller/任意のページ名AController.ctp という空の.ctpを作成し、

<?php class 任意のページ名AController extends AppController {

var $name = 'Posts';

public function index() {

  //sql
  $results = $this->Post->find('all' , array('order' => 'id desc' ));
  $this->set('results',$results);

} public function display() {

}

}

5 V:ビューを作成

/cakePHPのディレクトリ/app/View/任意のページ名A/index.ctp ディレクトリ&空のindex.ctpを作成 <!DOCTYPE HTML>~等は1で作成した/app/views/layouts/default.ctpで定義しているので、body内のみでokの模様。

<?php var_dump($results); //中身を出力

foreach($results as $post){ echo "

{$post['Post']['カラム名']}

"; } ?>

6 ホーム画面(/cakePHPのディレクトリ/)へアクセス

おそらく無事に出力部分が完成しました。 f:id:tsumayouzi:20150222225957p:plain

ビューで急に出てきた変数$resultsはコントローラー部分で使った変数がそのまま使える模様。 生のphpでゴリゴリ書くときに、classでリターンで返していた手間が省けてすごい便利。 よくメリットとして聞いたビューはデザイナーに。コントローラの作成はシステム側にという分業が本当にしやすそう。

hetemlでのcakephpインストール&掲示板アプリ作成方法その1

f:id:tsumayouzi:20150222151344j:plain

hetemlでcakephpインストール&掲示板アプリ作成する備忘録です

hetemlにはアドミンでcakephpのインストールもしくはサンプルアプリ付きのアプリのインストールができますが、今回はcakephpを触ってMVCの仕組みを勉強する目的のためフレームワークのインストールをやって進めました

1 hetemlの管理画面にログイン後右のサブメニュー>WEB関連>クイック・フレームワークページへ。 f:id:tsumayouzi:20150222211957p:plain

cakephp,Zendframework,FuelPHPなどからcakephpを選択し、 フォームに沿ってインストールを進めます f:id:tsumayouzi:20150222212944p:plain

3 ナビゲーション左のフレームワークのみを選択します ポップアップでも許可を押すとセットアップが完了します(楽!!!)

4 インストール先は下記のような画面に f:id:tsumayouzi:20150222213518p:plain

5 DB作成します。サンプルアプリ付きのインストールだとDB作成までやってくれますがいちから作成します。postという名前で任意のテーブルを作成しました。 f:id:tsumayouzi:20150222214307p:plain

6 5で作成したDBはまだフレームワークとconnectできていないためcakephp>config>database.phpというファイルを作成します。内容は下記

<?php class DATABASE_CONFIG {

public $default = array( 'datasource' => 'Database/Mysql', 'persistent' => false, 'host' => 'サーバー名', 'login' => 'ユーザ名', 'password' => 'パスワード', 'database' => 'データベース名', 'prefix' => '', 'encoding' => 'utf8', );

public $test = array( 'datasource' => 'Database/Mysql', 'persistent' => false, 'host' => 'localhost', 'login' => 'user', 'password' => 'password', 'database' => 'test_database_name', 'prefix' => '', //'encoding' => 'utf8', ); } ?>

7 というところで下準備ができました。 なんだか長くて書くときスクロール量がすごいのでMVC関連は次の記事でまとめます。

PostgreSQLメモ:日付計算で減算

f:id:tsumayouzi:20121119152743j:plain

ex)あるカラムの最新日付よりn分後とる文

select to_char(expires_date + 'n minute', 'yyyy-mm-dd hh24:mi:ss') from テーブル名

減算をしたい。

select to_char(expires_date - 'n minute', 'yyyy-mm-dd hh24:mi:ss') from テーブル名 これではだめだった。

調べたら、この+の部分は+-ではなく計算するよ!っていう表示なので、

select to_char(expires_date + '-n minute', 'yyyy-mm-dd hh24:mi:ss') from テーブル名 が正しい模様。

【JQuery】submit処理をダブルクリック等で2重送信されないための処理

f:id:tsumayouzi:20141220195109p:plain

以前作った 【JQuery】HTMLinputのsubmit,radioボタン画像で のフォームをダブルクリック等で2重送信されないための処理

<div class="start_btn" style="width: 80%;" id="submit_start">送信</a></div>

<form action="./{$cp->table_name}_select.php" method="get" class="num_group" name="fma" id="fma"> <input type="hidden" name="sed" value="{$sed}"> <input type="hidden" name="use" value="{$play_log['play_ticket_num']}"> <label for="1" class="{$check_1}">1枚 <label for="10" class="{$check_10}">10枚 <input type="submit" value=""> </form>

<script type="text/javascript"> $(function () { $(".num_group>label").click(function() { $(".num_group>label").removeClass("checked"); $(this).addClass("checked"); var label_num = $(this).attr("for"); $('input[name=use]').val(label_num) });

}); </script>

こういったフォームがあった時に、 php側で制御するのかと思ったらjqueryで制御することが多い模様。

この画像をスイッチとして扱うフォームに適用すると、

<script type="text/javascript"> $('#submit_start').one('click',function() { $('#fma').submit(); }); </script>

これでいけました。 (あとで綺麗に書き直そう)

【UIUX】書き込んだら自動保存されるjavascriptのフォーム何種類か

同じページ内に、 if( isset($POST["sch_id"]) and isset($POST["law_id"]) ){ $sql = "update camp_gift_list set schedule_id = {$POST['sch_id']} where gift_id = {$POST['law_id']} "; $ret = @pg_query($conn, $sql); }

<form name="sampleform_{$law_id}" action="lawson_gift.php" method="POST">
<input type="text" name="sch_id" value="{$value2}" onchange="submit(this.form)">
<input type="hidden" name="law_id" value={$law_id} >
</form>