CakePHPリッチテキストエディタの使い方とDBへの値反映方法

このQ&Aのポイント
  • CakePHPのリッチテキストエディタを使用して値を入力し、DBに反映させる方法について教えてください。
  • VIEWファイルでのリッチテキストエディタの設定、コントローラでのINSERT処理、DBの値確認結果について詳しく説明してください。
  • リッチテキストエディタで入力された値がなぜDBに反映されないのか、原因と解決方法を教えてください。
回答を見る
  • ベストアンサー

CakePHP リッチテキストエディタについて

CakePHPのリッチテキストエディタについて質問があります。 以下のように、VIEWファイルを作成しました。 <?php echo $fck->textarea('column1',array('label'=>false,'div'=>false,'error'=>false,'class'=>'comment-email')); ?> このカラムのデータを、contollerでDBにINSERT処理を行っております。 画面から、このカラムに値を入れ、submitを行いDBの値を確認しましたが、column1の値がNULLのままでした。 どのようにしたら、リッチテキストエディタの値をDBに反映させれるかが分かりません。 お手数ですが、ご教唆頂けますでしょうか?

  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • foreach
  • ベストアンサー率51% (43/84)
回答No.1

> どのようにしたら、リッチテキストエディタの値をDBに反映させれるかが分かりません。 リッチテキストエディタだからといって特別なデータは扱ってません。 HTMLタグを含む単なる文字列でしかありません。 従って普通のテキストボックスやテキストエリアと同様に受け取ってsaveするだけです。 > $fck->textarea('column1' という書き方をする場合、createでモデル名を指定しなければなりませんが問題ないでしょうか? 恐らく問題は別のところにあると思います。コントローラ側でprint_r($this->data)してみて想定通りにデータを受け取れているかを調査すべきかと。

hogemaro99
質問者

お礼

お礼が遅れまして、申し訳ございません。 contorollerで誤ったモデル名を指定しているため、出力する事ができませんでした。 無事に解決することができました。

関連するQ&A

  • MT コメントフォームのテキストエリアの『横幅』を変更したい

    ブログテンプレートをデフォルトを元に編集しています。 エントリーテンプレートを編集しているときに気づいたのですが、コメントフォームのテキストエリアの横幅の値を変えても、ある幅までにしか縮みません。もしかしたら編集する場所が間違っているかもしれませんが、お助け願います。 ついでに編集したあとのコメントフォームの例です。 <label for="comment-author">名前:</label> <input id="comment-author" name="author" size="20" /> <p id="comments-open-text"> <label for="comment-text">コメント: <MTIfAllowCommentHTML>(スタイル用のHTMLタグが使えます)</MTIfAllowCommentHTML></label> <textarea id="comment-text" name="text" rows="5" cols="40"></textarea> </p>

  • リッチテキストエディタの内容の保存(MySQL)

    現在、作成しているwebアプリの中(管理画面)に、リッチテキストエディタを自作して 表示しており、動作も問題ありません。 ・使用言語:php, js ※ブログなどの記事編集できる管理画面を想像していただければ、 イメージしやすいと思います。 今回、お聞きしたいのは2点です。 1.編集した記事をMySQLに挿入するとカラムの値が0になってしまうこと。 例えば、エディタから記事のタイトル、記事本文を保存したい場合、 下のように書いています。(もちろん, $_POSTには値はしっかり入っています。) $req = $db->prepare('insert into texts (title, edit_text) values (title = :title, edit_text = :edit_text)'); $req->execute(array( ':title' => ($_POST['title']), ':edit_text' => stripslashes($_POST['mytext']) )); すると、テーブルtextsのtitle,edit_textにそれぞれ0が入ってしまいます。 ログをみても特に怪しいところもなく、エラーも出てないようなので全く理由が わかりません。なぜなのか、ご教授いただけないでしょうか? 2. エディタで編集した記事の内容はどこに保存するべきなのでしょうか? ※こちらも、ブログ記事編集画面を想像していただければと思います。 1つのtextareaに装飾したテキストや画像もある場合、一気mysqlに 保存することは難しいと思っております。 また、仮に保存できたとしても、強調したテキストや下線の入ったテキストなどの形式まで 保存はできないですよね? どのようにしたらよいのか全く解決策が見えませんので、ご教授いただけないでしょうか? 宜しくお願い申し上げます。

    • ベストアンサー
    • PHP
  • CakePHP で、質問させていただきます。CakePHPは、初心者で

    CakePHP で、質問させていただきます。CakePHPは、初心者です。 app/controllers のコントローラ「mobilehellow_controller.php」で、以下のようにデータをセットして、DBにインサートしようとしていますが、何もDBには追加されません。 $saveData = array( "NUM" => $item[$hscan_offset]['kyujin_syokusyu'], "JOBTYPE" => 'kyujin_syokusyu', )); $this->Mobilehellow->create(); $this->Mobilehellow->save($saveData); 画面上には、こんな文字が表示されました。 Query: INSERT INTO "mobilehellows" ("NUM") VALUES ('nextval(''"helloworkmobilep01_NUM_seq"''') DBの構成はこれです。 NUM integer NOT NULL JOBTYPE text エラーも何も出なので、どうしてなのかわかりません。 どうか、ご存知の方お教えください。

    • ベストアンサー
    • PHP
  • cakephpのバリデーションについて。

    cakephpのバリデーションについて。 windowsxp環境にxamppをインストール php:5.3.1 cakephp:1.2.6 mysql:5.1.41 書籍を読みながらcakephpを始めました。 現在 フォームで入力された項目に該当する データをmysqlのデータベースで検索後、 結果をビューに表示するものを作っています。 フォームヘルパーを使用し、inputされたデータを コントローラ側で受け、その値をモデルで検索後 ビューへ渡しています。 このようなデータベースに保存は行わない検索だけの場合 フォームに入力されたデータをcakePHPのバリデーション機能 を利用してチェックできるのでしょうか? ビューでは $form->input('form.text1'array('label'=>'検索対象1')); $form->input('form.text2'array('label'=>'検索対象2')); としています。 このform.text1とform.text2について未入力の場合など エラーチェックが行いたいです。 そもそもこのような場合のエラーチェックは コントローラーに処理を記述しバリデーションは利用しないのかなど、 どなたかアドバイスいただけると助かります。

    • ベストアンサー
    • PHP
  • テキストエリアに入力した改行コードを保持したい

    テキストエリアにコメントを入力して、その内容をDBに保存し、別ページで表示させる入力ページの作成で、フォーム内に ・テキストエリアを設置 ・その下に「プレビュー」ボタンを設置 ・その下にプレビューが表示されるエリアを設置 ・一番下にsubmitボタンを設置 test1.phpにて <form name ="form1" method="post" action="test2.php"> <table> <tr><td> <text area name ="comment" id ="comment"> </textarea> </td></tr> <tr><td> <a href="javascript:void(0);" onclick="preview_comment(); "> <img src="preview.jpg"> </a> </td></tr> <tr><td> <span id="preview_comment"> プレビュー </span> </td></tr> </table> <div><input type="submit" value ="submit"></div> </form> head部分に <script language="JavaScript"> <!-- function preview_comment() {var comment_details=document.getElementById("comment").value; document.getElementById("preview_comment").innerHTML=comment_details; } //--> </script> を設置しました。 テキストエリアにコメントを入力し、改行がある場合はその改行コードを保持した状態がプレビューとして表示され、確認をしてOKだったらSubmit、という処理を考えているのですが、改行コードがなくなってしまいます。 改行コードを維持したままプレビューエリアにコメントを表示させることはできますでしょうか? どこを修正すればいいか教えて下さい。

  • テキストリンクでデータの受け渡し。

    PHPの勉強中で、参考書を見ながらショッピングサイトを作成しています。 カテゴリ別に表示したいと思い、データベースに商品の登録をし、 WEBページでカテゴリでの絞込みをしたいのですがうまくいきません。 以下のような、ラジオボタ形式では上手く動きました。 <form method="post" action="hoge.php" enctype="multipart/form-data"> 商品カテゴリーを選択してください。<br> <label><input type="radio" name="category" value="0">0</label> <label><input type="radio" name="category" value="1">1</label> <label><input type="radio" name="category" value="2">2</label> <input type="submit" value="確認"> </form> ラジオボタンでも、確認ボタンを押さなくても、 テキストをクリックすれば受け渡し先のページに飛ぶ形式ならいいのですが。。。 以下のテキストリンクの場合だと、一番下の値しか飛んでくれず、困っています。 <form name="category" action="hoge.php" method="post"> <input type="hidden" name="category" value="1"> <input type="hidden" name="category" value="2"> <a href="javascript:void(0)" onclick="document.category.value='1'; document.category.submit(); return false;">1</a> <a href="javascript:void(0)" onclick="document.category.value='2'; document.category.submit(); return false;">2</a> </form> どなたか詳しい方、ご回答をお願いします。

    • ベストアンサー
    • PHP
  • SelectのLabelの値を取得するには

    できる・できないの判断を下さい。 DB・ASPをつかってアプリケーションを作成しています。 HTMLのselectで、valueにはコード、Labelには日本語名を据えています。 submit時にLabelに"★"含まれていたら、その下のテキストエリアは、 絶対に記入、と言うチェックを、javascriptで書きたいと思っています。 ところが、どうしてもLabelの値を参照することができません。 valueで、コードを参照できることは確認しました。 これってできないのでしょうか? 以下実際に書いたJavascript function Checkform() { Chkflg = true; // assume valid if (document.forms.form_report.factor_cd.label.indexOf("★") !== -1) { if (!Chk_Lng(document.forms.form_report.coment.value)) { Chkflg = false; alert("要因に★がある場合は、必ずコメントを記入して下さい。"); return Chkflg;} if (Chkflg) document.forms.form_report.submit(); return Chkflg; } } function Chk_Lng(text) { return (text.length > 0); // returns false if empty }

  • INSERT文のSELECT部分の更新

    insert into selectについて教えてください。 あるテーブルからselectした値と、連続する値を 同時にinsertするする事はできますでしょうか? 使用DBはOracle9iです。 例えば、以下のようなテーブルがあった時に テーブルA カラム1 カラム2 カラム3 カラム4 この時に、カラム1,カラム2,カラム3を別のテーブルからselectし、 カラム4には「100001」から順に値を1ずつ増やしてながら セットしたい場合、1つのSQLで実行する事は可能でしょうか? ヒントなどいただけたらと思います。よろしくお願いします。

  • cakePHP+Ajax アップロード状況の取得

    環境【cakePHP2.5, PHP5.5】 ファイルアップロードの進捗状況を取得してプログレスバーを表示したいのですが、うまくいかず困っております。 現状の方式は以下です(関連部分だけ抜粋) ●cakePHPのViewファイル(アップロードForm) <?php echo $this->Form->create('Model', array('type' => 'file')); ?> //Form作成 <?php echo $this->Form->hidden(ini_get('session.upload_progress.name'), array('value' => 'example')); ?> //PHPのアップロード状況取得設定 <?php echo $this->Form->file('upload_file'); ?> //ファイル選択 <?php echo $this->Form->submit('アップロード', array('div' => false, 'escape' => false));//submit ●Viewファイル内のjavascript(submitイベントを取得してajax通信) $(function() { $('#FormName').submit( function(event) { $.ajax({ url:'/controller/action', success:function (data, textStatus) { $('#progress').html(data); }, error:function (err) { console.log('ajax通信失敗:'+err); }, }); }); }); ●cakePHPのアクション ※アップロード処理は省略 public function action() { if ($this->request->is('ajax')) { //$_SESSIONキーから進捗状況を取得 $key = ini_get("session.upload_progress.prefix").'example'; $data = $_SESSION[$key]; //パーセンテージ計算 $progressData = round(($data["bytes_processed"]/$data["content_length"])*100); //結果表示用の変数に値を入れ、更新用のViewをrender $this->set(compact('progressData')); $this->render('/Elements/ajax/progress','ajax'); } } renderしているエレメントはアップロードViewファイルの中で指定しています。 大きく問題は2つあります。 1 ajax通信が動かない  cakePHPのアクションはキックしていますが(ログを吐かせて確認)、errorが返ってきます(errの中身は[ object Object ])。  ただし、submitイベント内ではなく、たとえば<input type=button>のonClickイベント関数の中に入れてやると正常に通信できます。  また、他にも数カ所ajax通信を行っている箇所がありますが、そちらは特に問題なく通信できています  なお、ajax通信部分をsetIntervalや関数に入れてSetTimeoutの中に含めると、アクションをキックすらできず何も動かない感じになります(なぜ…)  submitとajax通信は同時には出来ないものなのでしょうか? 2 ajax通信から$_SESSIONのupload_progress関連の値が取れない  ファイルアップロード中にcakePHPのアクションに普通にアクセス(GET)すると、アップロード状況が取得できるのですが、ajaxからこのアクションにアクセスすると値が取れない($_SESSION内にこのキーと値が存在しない)状態になります。  1の問題と絡んでいるような気もしますが、なぜajax通信のときだけ取得できないのか、原因が分からず困っております。 cakePHPでファイルアップロードの進捗を表示する機能をつくられている方など、なにかヒントを頂ければと思います。 なにとぞよろしくお願いします。

  • データグリッド内に配置したテキストボックスの幅調整

    初めまして。 vb.net初心者(開発経験2週間)です。 データグリッド内のテキストボックスにDBから取得してきた値を テキストボックスに表示させるところまではできたのですが そのテキストボックスを取得してきた値に合わせて 幅を調整したいのですが直接widthを指定しても幅が 変わってくれません。 どなたかご教授いただけませんでしょうか? よろしくお願いいたします。 現在以下のようにソースコードを考えています。 <asp:datagrid id="MyDataGrid" style="Z-INDEX: 105; LEFT: 0px; POSITION: absolute; TOP: 88px" runat="server" BackColor="#FFE0C0" Height="30px" Width="300px" ForeColor="Black" BorderColor="Black" BorderStyle="Solid" AutoGenerateColumns="False" HorizontalAlign="Center"> <Columns> <asp:TemplateColumn HeaderText="DBカラム名"> <HeaderStyle Wrap="False" HorizontalAlign="Center" VerticalAlign="Middle"> </HeaderStyle> <ItemTemplate> <asp:TextBox Runat="server" ID="txt1" Text='<%# DBから値を取得 %>'> </asp:TextBox> </ItemTemplate> </asp:TemplateColumn> </Columns> </asp:datagrid>

専門家に質問してみよう