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

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

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

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

CodeIgniter

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

HTML

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

Q&A

解決済

2回答

1585閲覧

phpで連想配列の取り出しについて

mochikuzu

総合スコア12

PHP

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

CodeIgniter

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

HTML

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

0グッド

0クリップ

投稿2017/02/03 03:32

編集2017/02/03 03:39

###行いたいこと
JavaScriptで動的に追加したフォームに入力した値を取り出してデータベースに登録処理を行いたい
追記 codeigniter のフレームワークを使用しています

###例

DB : テーブルA カラム1: 職業 カラム2: 年齢 JSで追加するフォーム(「+」ボタンを押すことで以下の二つが追加される、2度押すと計4つのフォームが表示される) 1つ : 職業選択セレクトフォーム(学生、アルバイト、会社員) 2つ : 年齢入力テキストボックス 3回「+」ボタンを押し、フォームを記入してsubmitを行なった場合 1つ目 学生 11歳 2つ目 会社員 33歳 3つ目 アルバイト 22歳 ↓ DB側に 1行目 学生 11 2行目 会社員 33 3行目 アルバイト 22 が登録されるようにしたい

###現在の状態

  1. Javascriptでの動的なフォームの追加機能を追加した
  2. コントローラで追加されたフォームの入力値をPOSTでモデルに渡した
  3. モデルでPOSTされた値をデータベースに登録する←ここでつまづいてます

php

1//追加フォーム name属性の[]内に何個目のフォームか指定 2<select name="status[1]"> 3 <option value="学生">学生</option> 4 <option value="アルバイト">アルバイト</option> 5 <option value="会社員">会社員</option> 6</select> 7 8<input name="age[1]" type="text"> 9 10//コントローラ 11$this->model->dbsend($this->input->post()); 12 13//モデル 14 15$vars['カラム1:職業'] = ;←ここをどう記述していいかわかりません 16$vars['カラム2:年齢'] = ;←ここをどう記述していいかわかりません 17$this->db->insert('テーブルA', $vars); 18

どうすればうまいこと追加したフォームの個数分DB登録処理をループさせれるのでしょうか?

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

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

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

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

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

turbgraphics200

2017/02/03 03:37

"コントローラー"というワードを使用しているということは、何らかのフレームワークを使用しているのでしょうか。使用しているのでしたら、使用しているフレームワークを記載してください。
mochikuzu

2017/02/03 03:39

申し訳ありません追記致しました
guest

回答2

0

ベストアンサー

まず、var_dump($this->input->post())して、
その結果を教えてください。

投稿2017/02/03 05:22

redara

総合スコア344

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

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

mochikuzu

2017/02/03 05:47

Array( [status] => Array ( [1] => 1 [2] => 2 [3] => 3 ) [age] => Array ( [1] => 11 [2] => 22 [3] => 33 ) ) post内容です、 status[1]とage[1]をデータベースの行1へ status[2]とage[2]をデータベースの行2へ status[3]とage[3]をデータベースの行3へ登録されるようにするには どのように配列を取り出せば良いのでしょう?
redara

2017/02/03 06:10 編集

function dbsend($data) {  $status_arr = $data["status"];  $age_arr = $data["age"];  for ($i=0; $i++; $i<count($status_arr) ) {   $this->db->set('status', $status_arr[ $i ]);   $this->db->set('age', $age_arr[ $i ]);   $this->db->insert('テーブルA');  } } でどうでしょうか
redara

2017/02/03 06:04

全角スペース入ってるのでコピペだとスクリプトエラーになるかもしれません。
mochikuzu

2017/02/03 06:22

なんとかできそうです!ありがとうございます! わかりにくくて申し訳ありませんでした!
guest

0

ごめんなさい、何がわからないのでしょうか?

  • 「+」ボタンを押したときのフォームの作り方
  • どういったフォームにすればDBに渡せるか?
  • 正しいデータを渡したつもりだがDBに登録できない

追記

独自に解釈してみました
◯送り側

javascript

1<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 2<script> 3$(function(){ 4 $('input[type=button][value="+"]').on('click',function(){ 5 var num=$('#main').find('[name^=status]').length; 6 $('#main') 7 .append($('#dummy').html()) 8 .find('[name=status],[name=age]').each(function(){ 9 $(this).attr('name',$(this).attr('name')+'['+num+']') 10 }); 11 }); 12}); 13</script> 14 15<div id="dummy" style="display:none"> 16<select name="status"> 17<option value="学生">学生</option> 18<option value="アルバイト">アルバイト</option> 19<option value="会社員">会社員</option> 20</select> 21<input type="text" name="age"><br> 22</div> 23 24<form id="main" ation="recv.php"> 25<input type="button" value="+"> 26<input type="submit" value="go"><br> 27</form>

◯受け側

PHP

1<?PHP 2if(isset($_GET["status"])){ 3 $data=[]; 4 foreach($_GET["status"] as $key=>$val){ 5 $data[]=['カラム1'=>$val,'カラム2'=>$_GET["age"][$key]]; 6 } 7 print_r($data); 8 $this->db->insert_batch('テーブル', $data);//こうする? 9} 10?>

投稿2017/02/03 04:21

編集2017/02/03 05:15
yambejp

総合スコア114839

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

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

mochikuzu

2017/02/03 04:38

稚拙な文で申し訳ありません、その中だと ・正しいデータを渡したつもりだがDBに登録できない です モデルに渡す際にどのように渡せばいいのかが検討がつきません
yambejp

2017/02/03 05:23

ざっと追記しておきました 仕様がちがうとか、なにかあればご自身のソースも含め 提示おねがいします
mochikuzu

2017/02/03 06:23

丁寧にありがとうございます、なんとかできそうです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問