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

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

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

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

CodeIgniter

CodeIgniterは、PHP向けオープンソースのWebアプリケーションフレームワークです。CodeIgniterは覚える構文が少なく、自由度も高いため、PHPを理解していれば構築が簡単です。

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

1364閲覧

JavaScriptで追加したフォームの数に関して

mochikuzu

総合スコア12

PHP

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

CodeIgniter

CodeIgniterは、PHP向けオープンソースのWebアプリケーションフレームワークです。CodeIgniterは覚える構文が少なく、自由度も高いため、PHPを理解していれば構築が簡単です。

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2017/02/02 07:11

###前提
[会員登録ページ]
・名前入力フォーム
・性別セレクトボックス (男/女)
・状態プルダウンメニュー(DBから取得したものをリスト)
・「登録」ボタン

[DB]
・状態テーブル [小学1年生、小学2年生、小学3年生、小学4年生、小学5年生、小学6年生]
・会員テーブル [名前カラム:性別カラム:状態カラム](ここに登録したい)

が存在するとする。

###行いたいこと

  1. 「+」ボタンをクリックで「状態プルダウンメニュー」を追加
  2. 「ー」ボタンをクリックで最後に追加した「プルダウンメニュー」を削除
  3. 「+」ボタンで「状態プルダウンメニュー」を2つ追加した場合、テーブルの1行目に1つ目の「状態」と「名前」「性別」が登録され、2行目には2つ目の「状態」と「名前」「性別」が登録される様にしたい。
入力内容 : 名前「田中 太郎」 性別「男」を選択 状態1「小学1年生」 状態2「小学2年生」 ↓登録 想定結果 : 会員テーブル 1行目 名前:「田中太郎」 性別:「男」 状態1:「小学1年生」 2行目 名前:「田中太郎」 性別:「男」 状態2:「小学2年生」

###進捗状態
「+」ボタンで状態フォームの追加と
「ー」ボタンで最後に追加したフォームの削除は実装できたのですが、
追加したフォームの数をどのようにPHP側でカウントし、DBに登録する際に利用していいかがいまいちパッと思いつきません。
どうすればうまいことできるんでしょうか?

javascript

1 2var $count = 1; 3//仕様フォーム追加 4function add_orderform() 5{ 6 var element = document.createElement('div'); 7 element.innerHTML = 'プルダウンメニュー' 8 element.setAttribute("name", "additem_" + $count); 9 10 var objBody = document.getElementById("-----"); 11 objBody.appendChild(element); 12} 13 14//フォームを削除 15function remove_orderform() 16{ 17 if ( $count == 1 ) { return; } 18 19 var field = document.getElementById("-----"); 20 field.removeChild(field.lastChild); 21 $count = --$count; 22} 23

html

1 2<!-- 仕様名追加ボタンと削除ボタン --> 3 <button id="" class="" type="button" onclick="add_orderform()">+</button> 4 <button id="" class="" type="button" onclick="remove_orderform()">-</button>

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

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

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

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

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

masaya_ohashi

2017/02/02 08:24 編集

これだけのコードでは回答するのは難しいです。フォームのHTMLと、add_orderform、remove_orderformを質問文に追記してください。 追記 すみません、add_orderformとremove_orderformは書かれてましたね…
guest

回答1

0

ベストアンサー

状態を配列で渡すフォームを作るとなると、以下のようになります。

html

1<form> 2 <input name="名前" type="text"> 3 4 <input name="性別" type="radio" value=""> 5 <input name="性別" type="radio" value=""> 6 7 <select name="状態[]"> 8 <option value="小学1年生">小学1年生</option> 9 <option value="小学2年生">小学2年生</option> 10 <option value="小学3年生">小学3年生</option> 11 <option value="小学4年生">小学4年生</option> 12 <option value="小学5年生">小学5年生</option> 13 <option value="小学6年生">小学6年生</option> 14 </select> 15 <select name="状態[]"> 16 <option value="小学1年生">小学1年生</option> 17 <option value="小学2年生">小学2年生</option> 18 <option value="小学3年生">小学3年生</option> 19 <option value="小学4年生">小学4年生</option> 20 <option value="小学5年生">小学5年生</option> 21 <option value="小学6年生">小学6年生</option> 22 </select> 23 <select name="状態[]"> 24 <option value="小学1年生">小学1年生</option> 25 <option value="小学2年生">小学2年生</option> 26 <option value="小学3年生">小学3年生</option> 27 <option value="小学4年生">小学4年生</option> 28 <option value="小学5年生">小学5年生</option> 29 <option value="小学6年生">小学6年生</option> 30 </select> 31 <select name="状態[]"> 32 <option value="小学1年生">小学1年生</option> 33 <option value="小学2年生">小学2年生</option> 34 <option value="小学3年生">小学3年生</option> 35 <option value="小学4年生">小学4年生</option> 36 <option value="小学5年生">小学5年生</option> 37 <option value="小学6年生">小学6年生</option> 38 </select> 39</form>

このように、パラメータ名の後ろに[]とつけることで、同一名のパラメータをPHP側で配列で受け取ることができます。

PHP

1$statusList = $_REQUEST["状態"]; // 状態が3つあるなら3つの配列になる 2foreach($statusList as $status) { 3 echo $status; 4}

これを踏まえ、add_orderformやremove_orderformは状態[]という名前のselectタグを増やしたり減らしたりする処理を書けばよいです。

投稿2017/02/02 08:38

masaya_ohashi

総合スコア9206

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

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

mochikuzu

2017/02/02 09:04

とても分かり易かったです!無事実装できました!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問