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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

HTML

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

Q&A

解決済

1回答

2451閲覧

PHP MySql UPDATEする仕組みの作成

退会済みユーザー

退会済みユーザー

総合スコア0

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

HTML

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

0グッド

0クリップ

投稿2016/02/09 10:19

例えば、表があるとします。

HTML

1<form action="update.php" method="post"> 2 <table> 3 <thead> 4 <th>名前</th><th>A</th><th>B</th><th>C</th> 5 </thead> 6 <tbody> 7 <tr> 8 <td>name</td><td>A-1</td><td>B-1</td><td>C-1</td> 9 </tr> 10 </tbody> 11 </table> 12<input type="submit" value="保存"> 13</form>

tbodyのデータは実際はデータベースから取得したものを表示するようにしています。
※ここでは、簡潔にするため普通のHTMLの書き方をしています。

取得したデータを修正したいので、textなりなんなりを使って、表示されたデータを修正し、保存ボタンでサブミットするというオーソドックスな流れなんですが、、、

1.上記ではデータは一行ですが、実際はその時により行数は異なります。
2.一つしたらサブミットではなく、複数行の各データ(修正したい箇所)を修正後サブミットすると、まとめて修正されるようにしたい。

データベースの設計としては、、、
id int not null auto_increment primary key,
name varchar(255),
A varchar(255),
B varchar(255),
C varchar(255)
簡単にこうだとします。

データとしては、名前も同じ名前が複数入ると思うので,,,
name AND A AND B AND Cみたいなセットでも良いとは思いますが、これなら、idでセットすればその行が修正されるんじゃないかと思っています。
では、このidをどこに持ってきてサブミットする際に値がセットできるのか?

質問内容を文章にしようとすると、少しわかりづらいかもしれませんが、、、
必要な情報は出しますので、よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

データベースの複数行をフォームに全部inputで表示して、一括で更新したいということで宜しいでしょうか?
PHPで受け取る場合に受け取りやすいようにinputタグのnameを配列にすると宜しいかと思います。

例)<input type ='text' name='inputbox[abc_data][1][name]' id='inputbox[abc_data][1][name]'

tr~/trまでの1行をPHPで動的に作成すれば任意の行数の入力フォームになります。

POSTされた時に$_POSTの中身が配列になりますので、foreach()などでループしてUPDATE処理を行えば複数行の更新が行えるかと思います。

HTML

1<table border="1" cellpadding="0" cellspacing="0"> 2 <tr> 3 <th> 4 No.1</th> 5 <td> 6 <input type ='text' name='inputbox[abc_data][1][name]' id='inputbox[abc_data][1][name]' size='20' value='なまえ1' /> 7 </td> 8 <td> 9 <input type ='text' name='inputbox[abc_data][1][A]' id='inputbox[abc_data][1][A]' size='20' value='A-1' /> 10 </td> 11 <td> 12 <input type ='text' name='inputbox[abc_data][1][B]' id='inputbox[abc_data][1][B]' size='20' value='B-1' /> 13 </td> 14 <td> 15 <input type ='text' name='inputbox[abc_data][1][C]' id='inputbox[abc_data][1][C]' size='20' value='C-1' /> 16 </td> 17 </tr> 18 <tr> 19 <th> 20 No.2</th> 21 <td> 22 <input type ='text' name='inputbox[abc_data][2][name]' id='inputbox[abc_data][2][name]' size='20' value='なまえ2' /> 23 </td> 24 <td> 25 <input type ='text' name='inputbox[abc_data][2][A]' id='inputbox[abc_data][2][A]' size='20' value='A-2' /> 26 </td> 27 <td> 28 <input type ='text' name='inputbox[abc_data][2][B]' id='inputbox[abc_data][2][B]' size='20' value='B-2' /> 29 </td> 30 <td> 31 <input type ='text' name='inputbox[abc_data][2][C]' id='inputbox[abc_data][2][C]' size='20' value='C-2' /> 32 </td> 33 </tr> 34</table> 35<input type="submit" name="submit" id="submit" value="送信" alt="送信" /> 36```上の内容を送信した結果の$_POSTをprint_r()すると以下のようになります。 37```PHP 38print_r( $_POST ); 39Array ( 40 [inputbox] => Array ( 41 [abc_data] => Array ( 42 [1] => Array ( 43 [name] => なまえ1 44 [A] => A-1 45 [B] => B-1 46 [C] => C-1 47 ) 48 [2] => Array ( 49 [name] => なまえ2 50 [A] => A-2 51 [B] => B-2 52 [C] => C-2 53 ) 54 ) 55 ) 56 [submit] => 送信 57) 58

こういう管理用のフォームは、一覧リスト表示・1件詳細表示・入力更新フォーム作成・入力チェック(NULL、型、サイズなど)・更新処理などをクラスに纏めておくと便利です。
例)print $dbform->GetForm( $self_uri, $id, "abc_data", "id", $id, $columns, $where );

投稿2016/02/09 11:49

chinyato

総合スコア241

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

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

退会済みユーザー

退会済みユーザー

2016/02/10 00:33

こういう時こその配列ですね。 ちょっとやってみたいと思います。 foreachもまだ自力でやったことないので、、、やってみます。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問