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

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

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

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

DB2

DB2(IBM Database2)は、IBMのリレーショナルデータベース管理システム製品です。 UNIXとWindows、IBM社のメインフレームOS用が用意されており、 幅広いプラットフォームに対応しています。

Q&A

解決済

1回答

322閲覧

wordpressのコメント欄で入力した値の合計をDBに登録したい

musashidayo

総合スコア53

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

DB2

DB2(IBM Database2)は、IBMのリレーショナルデータベース管理システム製品です。 UNIXとWindows、IBM社のメインフレームOS用が用意されており、 幅広いプラットフォームに対応しています。

0グッド

0クリップ

投稿2018/08/10 07:40

編集2018/08/10 09:43

wordpressのコメント欄に複数の評価を入力するselectタグを設置して、AとBのvalue値(int 1〜5)を合計して2で割った数値をデータベースに登録して、表示させたいのです。
一番詰まっているところは、複数のselectタグ内で選択されているものを取得して合計するところです。

どなたかコメント欄にこのような機能を実装していましたらアドバイスをお願いいたします。
尚、単独のvalue値は問題なく以下のコードでDBに登録して表示するところまではできています。

function

1add_filter( 'comment_form_defaults','change_comment_form_input'); 2function change_comment_form_input($default) { 3 $commenter = wp_get_current_commenter(); 4 ////A 5 $default['fields']['email'] .= '<p class="comment-form-author comment-form-select">' . 6 '<label for="cost">'. __('A') . '</label> 7 <select id="cost" name="cost" class="browser-default"> 8 <option value="1">' . __('★') . '</option> 9 <option value="2">' . __('★★') . '</option> 10 <option value="3">' . __('★★★') . '</option> 11 <option value="4">' . __('★★★★') . '</option> 12 <option value="5">' . __('★★★★★') . '</option> 13 </select> 14 </p>'; 15 16 ////B 17 $default['fields']['email'] .= '<p class="comment-form-author comment-form-select">' . 18 '<label for="exactly">'. __('B') . '</label> 19 <select id="exactly" name="exactly" class="browser-default"> 20 <option value="1">' . __('★') . '</option> 21 <option value="2">' . __('★★') . '</option> 22 <option value="3">' . __('★★★') . '</option> 23 <option value="4">' . __('★★★★') . '</option> 24 <option value="5">' . __('★★★★★') . '</option> 25 </select> 26 </p>'; 27$default['fields']['author'] = ' 28 <p class="comment-form-author">' . '<label for="author">' . __( 'Name' ) . ' <span class="required">*必須</span>' . '</label> ' . 29 '<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . ' /></p>'; 30 return $default; 31} 32 33////AのDBに登録する記述 34add_action( 'comment_post', 'save_comment_meta_data_cost' ); 35function save_comment_meta_data_cost( $comment_id ) { 36 if (isset($_POST['cost'])) { 37 $costs = explode(',', $_POST['cost']); 38 foreach ($costs as $cost) 39 update_comment_meta( $comment_id, 'cost', $cost, true); 40 } 41} 42 43////BのDBに登録する記述 44add_action('comment_post', 'save_comment_meta_data_exactly'); 45function save_comment_meta_data_exactly( $comment_id ) { 46 if (isset($_POST['exactly'])) { 47 $exactlys = explode(',', $_POST['exactly']); 48 foreach ($exactlys as $exactly) 49 update_comment_meta( $comment_id, 'exactly', $exactly, true); 50 } 51} 52 53

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

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

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

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

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

kei344

2018/08/10 08:34

何をどう合計するのでしょうか。質問文に具体的に記述することをお勧めします。
musashidayo

2018/08/10 09:39

取得,表示したいものを詳細に追記致しました。よろしくおねがいします
guest

回答1

0

ベストアンサー

合計するなら足したらよいのでは。

PHP

1////A,BのDBに登録する記述 2add_action( 'comment_post', 'save_comment_meta_data_cost_exactly' ); 3function save_comment_meta_data_cost_exactly( $comment_id ) { 4 $cost = filter_input( 5 INPUT_POST 6 , 'cost' 7 , FILTER_VALIDATE_INT 8 , array( 'options' => array( 'default' => 0 ) ) 9 ); 10 $exactly = filter_input( 11 INPUT_POST 12 , 'exactly' 13 , FILTER_VALIDATE_INT 14 , array( 'options' => array( 'default' => 0 ) ) 15 ); 16 if ( $cost > 0 && $exactly > 0 ) { // 例 17 update_comment_meta( $comment_id, 'cost-exactly', $cost + $exactly, true); 18 } 19}

【filter_var, filter_input でよく使うもの】
https://qiita.com/Ayutanalects/items/0749d7c684f94f98b224#バリデーションフィルター

【$_GET, $_POSTなどを受け取る際の処理】
https://qiita.com/mpyw/items/2f9955db1c02eeef43ea#フィルタ関数の活用

投稿2018/08/10 11:32

kei344

総合スコア69364

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

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

musashidayo

2018/08/20 08:30

無事登録して表示できました!DBの操作って難しいイメージがあるので、少しずつマスターしていきたいと思います!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問