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

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

ただいまの
回答率

87.78%

HTMLフォームで複数のnameまたはvalueを扱う方法

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,221

score 96

HTMLのフォームを作成しています。 
以下のいづれかは可能でしょうか?

1.name="01"やname="02"に共通のnameの追加。valueはそのまま1を返す。

2.もともとvalueは残しつつvalueの追加(どのような形になるかわかりませんがvalue="1,1_1"のような感じ)

3.name、valueともに値の追加

<tr>AAA</tr>
<tr>
   <td><input type="checkbox" name="01" value="1" >01<td>
   <td><input type="checkbox" name="02" value="1" >02<td>
   <td><input type="checkbox" name="03" value="1" >03<td>
   <td><input type="checkbox" name="04" value="1" >04<td>
   <td><input type="checkbox" name="05" value="1" >05<td>
   <td><input type="checkbox" name="06" value="1" >06<td>
 </tr>


受け取る側はPHPで書いています。

<?php echo $_GET[01]; ?>

現在、このcheckBoxは遷移先で項目のsortにも使用していて
URLに「http:/example/?01=1&02=1」
のような形で使っているのですがこれを残したまま
上記のことをするにはどのようにしたら良いのでしょうか。

ご教授のほどよろしくお願いいたします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+2

チェックボックスは複数チェックが出来ますので、下記のような使い方が想定されています。
【PHP】チェックボックスの値を受け取る - Qiita

これを使えば質問文の奥にある、やりたい事の部分は満たせそうですがどうですかね?
調査をお願いします。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/15 12:28

    回答ありがとうございます。
    nameの中はバラバラの01、02のようなものと共通のものの(例えばcheckというname)二種類を入れたいのですがこの場合回答していただいたURLの方法でも可能でしょうか。

    キャンセル

  • 2017/11/15 12:34

    出来るか否かで言えば単純には不可能です。
    1つの名前の配列を作る事しか出来ず、2次元以上の連想配列は作り込めないからです。

    しかしvalueの中で、文字列をカンマやアンダースコア等の記号で区切れば可能ですね。
    カンマやアンダースコアで区切られたフィールドを仮想的な2次元以上の配列とみなして、
    PHP側で頑張って処理の流れを作れば要望どおりの事は出来るでしょう。

    キャンセル

  • 2017/11/15 12:38

    ありがとうございます。別の方法を考えることにします。

    キャンセル

  • 2017/11/15 12:52

    あー、要件的に、「http:/example/?01=1&02=1」が絶対なんですね。
    ならばキー名に[]を加える手法は使えませんね。

    PHPにはURL文字列とGetパラメータ(クエリストリング)を直接取得する方法が存在します。
    http://php.net/manual/ja/function.parse-url.php
    http://koseki.hatenablog.com/entry/20120210/phpuri

    この2つのURLの機能を利用して、URL文字列を解析して望みの配列を作り直せば解決しそうですね。

    キャンセル

+2

name="01[]"のように書くと、複数の値を送れて、PHP側では$_GET['01']配列として受け取れます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/15 12:26 編集

    回答ありがとうございます。
    質問に不足があったため補足しました。
    この場合でもname="01[]"のような書き方で実現可能でしょうか?

    キャンセル

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

  • ただいまの回答率 87.78%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る