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

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

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

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

PHP

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

Q&A

解決済

3回答

22527閲覧

GETで同じパラメーターで複数値を渡したい場合の表記方法

moitaro

総合スコア443

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

PHP

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

0グッド

0クリップ

投稿2018/09/25 01:16

お世話になっております。

現在PHPサイトをメンテナンスしておりまして
件名の通り
GETで同じパラメーターで複数 値を渡したいと思っております。

チェックボックスにチェックがつく値です……

□羊羹 ☑たい焼き ☑おはぎ

でURLにcheck=1がついているとたい焼きに☑がつくという実装をしたいと思っております。
つまり
http://www.hoge.com/seihin.php?check=1&check=2
たい焼きとおはぎに☑がつくようにしたいと思っております。

このような場合どのように渡すのが良いか伺ってよろしいでしょうか?
なんか実装していくうちにもっと良いやり方があるような気がしてきたのです……

お忙しい所大変申し訳無いのですが上記お問い合わせいたします。

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

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

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

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

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

guest

回答3

0

check=1&check=2

同じパラメータ名で渡すと上書きされるので
PHPの場合は配列としてわたすように

PHP

1check[]=1&check[]=2

のように調整します。

PHP

1$check=filter_input(INPUT_GET,"check",FILTER_DEFAULT,FILTER_REQUIRE_ARRAY); 2$checked["check"]=array_fill(0,3,""); 3array_walk($check,function($x) use(&$checked){$checked["check"][$x]=" checked";}); 4print <<<eof 5<form> 6<label><input type="checkbox" name="check[]" value="0"{$checked["check"]["0"]}>羊羹</label><br> 7<label><input type="checkbox" name="check[]" value="1"{$checked["check"]["1"]}>たい焼き</label><br> 8<label><input type="checkbox" name="check[]" value="2"{$checked["check"]["2"]}>おはぎ</label><br> 9<input type="submit" value="go"> 10</form> 11eof;

もしくは

PHP

1check=1+2

のようにパラメータ名が競合しないように渡して受け取った側で分割して使う方法もありますが
この場合inputからダイレクトにcheckを作るのは難しいのでjavascriptなどを
利用することになります

投稿2018/09/25 01:39

編集2018/09/25 01:42
yambejp

総合スコア114843

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

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

moitaro

2018/09/25 01:50

yambejp様 コメントありがとうございます。 ソースも大変助かりました。 本当にありがとうございました。
guest

0

チェックしたい項目がすごく多くなければ、2進数で渡すというのがあります。
いわゆるビットフラグというやつです。

1つ目が1
2つ目が2
3つ目が4

のような感じで管理します。

今回のように、たいやき(2つ目)、おはぎ(3つ目)にチェックをしたい場合、
check=6(2と4の合計)のようにします。

特定の桁のフラグがかならず、1か0になるのでオンオフがわかります。

投稿2018/09/25 01:28

momon-ga

総合スコア4820

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

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

momon-ga

2018/09/25 01:33

あ、深読みしすぎたか。
moitaro

2018/09/25 01:49

いえいえありがとうございました。 ビットフラグでやるやり方の場合もありますのでコメントありがとうございました。
guest

0

ベストアンサー

キーに[]を付けると、PHP側でそれらを配列として受け取れるようになります。

http://hoge.example.com/seihin.php?check[]=1&check[]=2とすると、$_GET['check']["1", "2"]のような配列が入ってきます。

投稿2018/09/25 01:23

maisumakun

総合スコア145184

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

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

moitaro

2018/09/25 01:50 編集

maisumakun様 ありがとうございます。 PHPでは配列は?check[]で渡るのですねっ なんか渡す方法があった気がするというぼんやりとした記憶から 汲み取って頂き感謝します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問