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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

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

Q&A

4回答

2720閲覧

formでPHPへPOSTして複数の値を配列で渡したいのですがどうすればよいでしょうか。

yoyoyoyogi

総合スコア47

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

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

0グッド

0クリップ

投稿2015/08/18 08:06

PHPの初心者なのですが、formからPOSTして複数の値を変数に配列で渡したいのですが、どうやればよいでしょうか?

ちょっと説明が下手なのですが、ひとつの選択項目で文字列と数字など、異なる型のデータを渡したいです。

例えば

<form action="" method="post"> <select name="by"> <option value="['週刊少年ジャンプ'][300]">週間少年ジャンプ 300円</option> <option value="['週刊少年マガジン'][400]">週間少年マガジン 400円</option> </select> <input type="submit" value="OK" /> </form>
<?php $by = $_POST['by']; echo $by[0]; echo $by[1]*1.08 .'円': ;?>

出力
週刊少年ジャンプ324円

の様な事がやりたいのですが、どうすれば可能でしょうか。
教えて頂けるとありがたいです。
よろしくお願いいたします。

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

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

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

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

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

guest

回答4

0

週刊少年ジャンプ,300のようなコンマ区切りの値を投げて、受け取った側でexplodeで切り分けるというのが手っ取り早い気もします。

なお、Kosuke_Shibuyaさんが触れているように文字列しか来ませんので、数値として扱うには(int)$val[1]のように変換が必要です。

投稿2015/08/18 08:37

maisumakun

総合スコア145184

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

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

yoyoyoyogi

2015/08/21 02:54

なるほど、勉強になりました、ありがとうございました。
guest

0

ひとつの選択項目で文字列と数字など、異なる型のデータを渡したいです。

どうしてもそうするなら value を JSON にするとか。

html

1<?php 2function htmljson($data) 3{ 4 return htmlspecialchars(json_encode($data)); 5} 6?> 7<form action="?" method="post"> 8 <select name="by"> 9 <option value="<?= htmljson(array("週刊少年ジャンプ", 300)) ?>"> 10 週間少年ジャンプ 300円 11 </option> 12 <option value="<?= htmljson(array("週刊少年マガジン", 400)) ?>"> 13 週間少年マガジン 400円 14 </option> 15 </select> 16 <input type="submit" value="OK"> 17</form> 18 19<?php 20if ($_POST) { 21 $by = json_decode($_POST['by']); 22 echo $by[0]; 23 echo $by[1]*1.08 . '円'; 24} 25?>

ただ、雑誌の金額のような値をフォームからポストするのはなにか間違っているとしか思えません。

普通は、雑誌コード(商品コード?)のような値をポストして、サーバ側に雑誌コードと雑誌名や金額との対応表を用意しておくものだと思います。

投稿2015/08/18 08:48

ngyuki

総合スコア4514

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

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

yoyoyoyogi

2015/08/21 02:53

jsonというは便利そうですね。 初心者で知らなかったので勉強してみます。 ありがとうございました。
guest

0

ちょっと意図したものを実現できるかわかりませんが、

html

1<form action="http://localhost:8080/hoge.php" method="post"> 2 <input name="by[]" value="['週刊少年ジャンプ'][300]" type="checkbox"> 3 <input name="by[]" value="['週刊少年マガジン'][400]" type="checkbox"> 4 <input type="submit" value="OK" /> 5</form>

とした時にphpで受け取る値は下記のように複数の値を配列で受け取るようにできます。
(下記はvar_dump($_POST)した場合です。)

array(1) { ["by"]=> array(2) { [0]=> string(33) "['週刊少年ジャンプ'][300]" [1]=> string(33) "['週刊少年マガジン'][400]" } }

参考になれば幸いです。

投稿2015/08/21 12:46

ara_ta3

総合スコア82

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

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

0

option 要素の value にセットした値はどんな形式で書こうとただの文字列です。

php

1<?php 2echo $_POST['by']; 3var_dump($_POST['by']);

蛇足ですが
購入する = buy

投稿2015/08/18 08:23

編集2015/08/18 08:25
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

yoyoyoyogi

2015/08/21 02:54

ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問