質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

解決済

2回答

5058閲覧

cakePHPの初心者です。Formのデータ内容をDBのレコードへ追加したいのですが...

amy

総合スコア21

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

0クリップ

投稿2016/10/20 01:24

編集2016/10/20 01:55

cakePHPの初心者です。

HTMLの<form>のデータをDBレコードへ追加していきたいです。
書籍を見ながらサンプルコードをもとに記述していますが、DBへ登録されません。

すみませんが誰かご教授頂ければと思います。

■View
Form/index.ctp

<form action="" method="post" name="Form"> <div><input type="text" name="name"></div> <div><input type="text" name="zipcode"></div> <div><input type="text" name="tell"></div> <div><input type="text" name="mailaddress"></div> <div><input type="submit" value="保存"></div> </form>

■Model
Form.php

<?php App::uses('AppModel', 'Model'); class Form extends AppModel { public $name = 'Form'; $this->Form->create() $form = $this->Form->save( $this->request->data['Form'] ); } ■DB データベース名:forms CREATE TABLE forms ( id integer NOT NULL, name text NOT NULL, zipcode text NOT NULL, tell text NOT NULL, mailaddress text NOT NULL, CONSTRAINT forms_pkey PRIMARY KEY (id) ) WITH ( OIDS=FALSE ); ALTER TABLE forms OWNER TO postgres; ■Controller FormController.php <?php App::uses('AppController', 'Controller'); class FormController extends AppController { /* controller name */ public $name = 'Form'; /* use model */ var $uses = 'Form'; /* use layout */ public $layout = 'main'; /* action : index */ public function index() { //データの受け取り $name = $_POST['name']; $zipcode = $_POST['zipcode']; $tell = $_POST['tell']; $mailaddress= $_POST['mailaddress']; } } です。 すみませんが、ご教授お願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

まずは下記のURLにある「CookBook」や、「チュートリアル」を見て学習する事をお勧めします。
CookBook
チュートリアル

コードを見る限り、部品部品の記述はされているけど、適切ではない場所に設置されていたり事前に必要な処理が行われていなかったりと、言葉は悪いかもしれませんがネットで「Cakephp データ 保存」等で検索した結果のページに書いてあるコードをテキトウにコピペしている状態のように見えます。

CakePHPはフレームワークですので、フレームワークの基本的なベースルールを守らなければ動きません。
個々の記述をどう書くかの前に、まずそのフレームワークのルールを学んでみてください。

以下、おかしなところを指摘します。

■コントローラ

  • usesは配列を与えてください。

PHP

1/* use model */ 2var $uses = array('Form');
  • POSTデータの受け取りは$_POSTではなく、$this->request->data を使ってください。

PHP

1$name = $this->request->data['Form']['name']; 2$tell = $this->request->data('Form.tell');

■モデル

  • 処理はMethod(function)内に記述してください。

PHP

1public function saveForm() { 2 $this->Form->create(); //文末の;もありません 3 4 $form = $this->Form->save( 5 $this->request->data['Form'] 6 ); 7}
  • そもそも上記のコードはコントローラに記述すべき内容です

PHP

1class FormController extends AppController { 2 /* action : index */ 3 public function index() { 4 $this->Form->create(); 5 $this->Form->save( 6 $this->request->data['Form'] 7 ); 8 }

本件自体を実現するコードを提示する事は簡単ですが、恐らく事前の学習がなければ今後もご自身でコードを起こすことは難しいと思いますので。
最初のご提案させていただいたように、ベースルールの学習を先に進められることを強くお勧めします。

投稿2016/10/20 02:14

kunai

総合スコア5405

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

amy

2016/10/20 02:42

ありがとうございます。 もう一度「CookBook」「チュートリアル」を理解して学習を進めていきます。 ご教授ありがとうございます。
guest

0

コントローラはどのようになっていますか?

投稿2016/10/20 01:28

osamuya

総合スコア241

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

amy

2016/10/20 01:32

ありがとうございます! コントローラーの設定は特に何もしていません! ■Controller FormController.php <?php App::uses('AppController', 'Controller'); class FormController extends AppController { /* controller name */ public $name = 'Form'; /* use model */ var $uses = 'Form'; /* use layout */ public $layout = 'main'; /* action : index */ public function index() { //データの受け取り $name = $_POST['name']; $zipcode = $_POST['zipcode']; $tell = $_POST['tell']; $mailaddress= $_POST['mailaddress']; } }
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問