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

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

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

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

Q&A

解決済

3回答

3352閲覧

【php】複数ページでチェックボックスの値を渡したい

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

0グッド

0クリップ

投稿2018/10/01 04:54

前提・実現したいこと

メールフォームを作っています。
入力、確認、完了(ここでメール送信)の計3ページです。

発生している問題・エラーメッセージ

確認ページにはチェックボックスの値を配列で渡せて、implodeなどで出力出来るのですが、完了ページでは出力できずエラーが返ってきてしまいます。
エラーログを見てみると、配列で渡せていないからimplodeなどの配列を使う関数でエラーが出ていることがわかりました。

dumpで確認してみたところ、確かに確認ページでは配列になっているのですが、完了ページでは配列ではなくstringになっていました。

関係あるコードを抜粋して以下に記述しました。

該当のソースコード

// 入力ページ <form method="post" action="second_check.php"> <input type="checkbox" name="checkItem[]" id="checkbox-01" value="text" checked> <input type="checkbox" name="checkItem[]" id="checkbox-02" value="text"> <input type="checkbox" name="checkItem[]" id="checkbox-03" value="text"> </form> // 確認ページ <?php echo var_dump($_POST['checkItem']); ?> <form method="post" action="third_thanks.php"> <input type="hidden" name="checkItem" value="<?php echo $_POST['checkItem']; ?>"> </form> // 完了ページ <?php echo var_dump($_POST['checkItem']); ?>

確認ページでcheckboxの値をうまく渡せていないのかと思うのですが、どこが間違っているかわからなく困っています。
ご教授お願い致します。

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

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

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

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

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

guest

回答3

0

確認ページのvalueにチェックボックスの値を格納していますよね。
この渡し方ではvalueの中に『文字列』として渡しているのではないでしょうか?
echo とは「文字列の出力」ですので、完了ページに渡すべきvalueを文字列として渡していると思います。
そのため、完了ページで受け取った時にStringとしての取得になるのです。

php

1// 確認ページ 2<?php echo var_dump($_POST['checkItem']); ?> 3<form method="post" action="third_thanks.php"> 4 <input type="hidden" name="checkItem" value="<?php echo $_POST['checkItem']; ?>"> 5</form>

投稿2018/10/01 05:05

mikan_s4n

総合スコア377

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

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

退会済みユーザー

退会済みユーザー

2018/10/01 05:38

echoは文字列の出力なので配列には適さないのですね、、、初めて知りました。ありがとうございました。
guest

0

ベストアンサー

まず、PHP 側に値を配列で渡すには、checkItem[] とする必要があります。
次に、値が複数ある場合には、input type="hidden" を複数羅列する必要があります。
つまり、確認ページでは

foreach($_POST['checkItem'] as $c) {
input type="hidden" の記載
}

といった感じの記載になると思います。

投稿2018/10/01 05:16

ssasaki

総合スコア1167

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

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

退会済みユーザー

退会済みユーザー

2018/10/01 05:39

foreachで繰り返しでinputを複数生成したら、完了ページでimplodeを使って出力することが出来ました。ありがとうございました。
guest

0

inputのnameが”checkItem[]”になっているので、[]を除外してみてはどうですか?
そうすれば、”$_POST['checkItem']”で取得できると思います。

投稿2018/10/01 05:02

koizumi

総合スコア230

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問