スレッド表示 | フラット表示〕 全トピック 920 件中 134 番目 次≫ ≪前

テキストボックスの部分更新について

created: 2007-02-19 00:17 | modified: 2007-02-23 19:06 | reply: 11

[3598] テキストボックスの部分更新について

user: ruru | created: 2007-02-19 00:17
質問させていただきます。

<input type="submit" name="update1" value="データ1更新" >
<input TYPE="text" SIZE="7" MAXLENGTH="10" NAME="1-1">
      ・
      ・
      ・
<input TYPE="text" SIZE="7" MAXLENGTH="10" NAME="1-10">


<input type="submit" name="update2" value="データ2更新" >
<input TYPE="text" SIZE="7" MAXLENGTH="10" NAME="2-1">
      ・
      ・
      ・
<input TYPE="text" SIZE="7" MAXLENGTH="10" NAME="2-10">

というように一つのボタンに10個のテキストボックスが付属している形で、それが2セットあるとします。
このボタンをおすと、付属しているテキストボックスの内容を
データベースの該当するレコードに書き込みに行くという
ロジックを作りたいのですが、例えば、update1のボタンを
おすと、1-1~1-10のテキストボックスの中身が、
データベースの該当する商品番号(1-1~1-10)のレコードに
書き込みを行う、というようにやりたいということです。

同様に、update2のボタンをおしたら、2-1~2-10のテキストボックス
の中身をDBに書き込みに行くというようにやりたいのですが、
やり方に悩んでいます。
よろしければご助言いただけないでしょうか。
reply: 3601 返信 編集 削除

[3601] Re. テキストボックスの部分更新について

user: ゆうじ | created: 2007-02-19 02:09
こんばんわ。

いまひとつ何のやり方で悩んでいらっしゃるのか飲み込めませんが、
こうしたテキストボックスのグループが
「2つ以上ある」ことで悩んでいらっしゃるとしたら、
私ならフォームをそれぞれのグループ毎に分け、
グループを示す値を hidden で埋め込みます。

こういうことではないのかな?
Parent: 3598  reply: 3602 返信 編集 削除

[3602] テキストボックスの部分更新について

user: ruru | created: 2007-02-19 05:40
お返事ありがとうございます。
具体的な例を挙げますと、

<table border=3 class="size" style="position:absolute;top:100;left:15;">
<tr>
<td colspan = "2" ALIGN="left"><STRONG><Font Color="#99ffff">第1group:</Font></STRONG></td>
<td><input type="submit" name="update1" value="01番号更新" onClick="zahyo()"></td>
<td> </td>
</tr>
<tr>
<td width="6%" height="8%"><input type="submit" name="no" value=" 1- 1" onClick="zahyo()"></td>
<td width="7%"><input TYPE="text" SIZE="7" MAXLENGTH="10" NAME="G1-1"></td>
<td width="19%"> </td>
<td><input TYPE="text" SIZE="115" MAXLENGTH="50" NAME="R1-1"></td>
</tr>
     ・
     ・
     ・
<tr>
<td width="6%" height="8%"><input type="submit" name="no" value=" 1- 10" onClick="zahyo()"></td>
<td width="7%"><input TYPE="text" SIZE="7" MAXLENGTH="10" NAME="G1-10"></td>
<td width="19%"> </td>
<td><input TYPE="text" SIZE="115" MAXLENGTH="50" NAME="R1-10"></td>
</tr>
</table>



<table border=3 class="size" style="position:absolute;top:100;left:15;">
<tr>
<td colspan = "2" ALIGN="left"><STRONG><Font Color="#99ffff">第2group:</Font></STRONG></td>
<td><input type="submit" name="update2" value="02番号更新" onClick="zahyo()"></td>
<td> </td>
</tr>
<tr>
<td width="6%" height="8%"><input type="submit" name="no" value=" 2- 1" onClick="zahyo()"></td>
<td width="7%"><input TYPE="text" SIZE="7" MAXLENGTH="10" NAME="G2-1"></td>
<td width="19%"> </td>
<td><input TYPE="text" SIZE="115" MAXLENGTH="50" NAME="R2-1"></td>
</tr>
     ・
     ・
     ・
<tr>
<td width="6%" height="8%"><input type="submit" name="no" value=" 2- 10" onClick="zahyo()"></td>
<td width="7%"><input TYPE="text" SIZE="7" MAXLENGTH="10" NAME="G2-10"></td>
<td width="19%"> </td>
<td><input TYPE="text" SIZE="115" MAXLENGTH="50" NAME="R2-10"></td>
</tr>
</table>

のようになっておりまして、一つの表の中に、
全体フォームの一つとして押下したいボタン(name="no")
と、グループとして押下したいボタン(name="update1")
およびテキストボックス(NAME="G1-1"、NAME="R1-1")が
存在しています。

私も、それぞれのグループごとにフォームを分けることは
考えたのですが、一つの表の中にそれぞれ別個のフォームと
して扱いたいボタン、テキストボックスを内在させることは
可能なのでしょうか?
Parent: 3601  reply: 3603 返信 編集 削除

[3603] Re. テキストボックスの部分更新について

user: ゆうじ | created: 2007-02-19 08:50
テーブルとフォームとの間に直接的な関係はないので
一つの表の中に複数のフォームを内在させることも
反対に一つフォームの中に複数の表を内在させることも可能です。
Parent: 3602  reply: 3613 返信 編集 削除

[3613]  Re. テキストボックスの部分更新について

user: ruru | created: 2007-02-21 01:27
お返事ありがとうございます。
表の中に、別のフォームのテキストボックスを内在できるということは、下記のようなコーディングでよろしいのでしょうか?
・テキストボックスをそれぞれのフォームタグにて囲みました。


<form name="myform" action="set.php" method="post">
<table border=3 class="size" style="position:absolute;top:100;left:15;">
<tr>
<td colspan = "2" ALIGN="left"><STRONG><Font Color="#99ffff">第1group:</Font></STRONG></td>
<td><input type="submit" name="update1" value="01番号更新" onClick="zahyo()"></td>
<td> </td>
</tr>
<tr>
<td width="6%" height="8%"><input type="submit" name="no" value=" 1- 1" onClick="zahyo()"></td>
<td width="7%"><form name="myform1" action="set.php" method="post"><input TYPE="text" SIZE="7" MAXLENGTH="10" NAME="G1-1"></FORM></td>
<td width="19%"> </td>
<td><input TYPE="text" SIZE="115" MAXLENGTH="50" NAME="R1-1"></td>
</tr>
     ・
     ・
     ・
<tr>
<td width="6%" height="8%"><input type="submit" name="no" value=" 1- 10" onClick="zahyo()"></td>
<td width="7%">"><form name="myform1" action="set.php" method="post"><input TYPE="text" SIZE="7" MAXLENGTH="10" NAME="G1-10"></FORM></td>
<td width="19%"> </td>
<td><input TYPE="text" SIZE="115" MAXLENGTH="50" NAME="R1-10"></td>
</tr>
</table>



<table border=3 class="size" style="position:absolute;top:100;left:15;">
<tr>
<td colspan = "2" ALIGN="left"><STRONG><Font Color="#99ffff">第2group:</Font></STRONG></td>
<td><input type="submit" name="update2" value="02番号更新" onClick="zahyo()"></td>
<td> </td>
</tr>
<tr>
<td width="6%" height="8%"><input type="submit" name="no" value=" 2- 1" onClick="zahyo()"></td>
<td width="7%">"><form name="myform2" action="set.php" method="post"><input TYPE="text" SIZE="7" MAXLENGTH="10" NAME="G2-1"></FORM></td>
<td width="19%"> </td>
<td><input TYPE="text" SIZE="115" MAXLENGTH="50" NAME="R2-1"></td>
</tr>
     ・
     ・
     ・
<tr>
<td width="6%" height="8%"><input type="submit" name="no" value=" 2- 10" onClick="zahyo()"></td>
<td width="7%">"><form name="myform2" action="set.php" method="post"><input TYPE="text" SIZE="7" MAXLENGTH="10" NAME="G2-10"></td>
<td width="19%"> </td>
<td><input TYPE="text" SIZE="115" MAXLENGTH="50" NAME="R2-10"></FORM></td>
</tr>
</table>
</FORM>

このようにやってみましたが、うまくいきませんでした。
やり方がどこか間違っているのでしょうか?
Parent: 3603  reply: 3616 返信 編集 削除

[3616] HTMLにも規則があります

user: YOSHI | created: 2007-02-21 23:12
要約して書くと、以下のように。
# おかしなところはそのままにしています。


<form name="myform" action="set.php" method="post">
<table>
<tr>
<td></td>
<td><form name="myform1" action="set.php" method="post"></FORM></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td width="7%">"><form name="myform1" action="set.php" method="post"></FORM></td>
<td></td>
<td></td>
</tr>
</table>

<table>
<tr>
<td></td>
<td width="7%">"><form name="myform2" action="set.php" method="post"></FORM></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td width="7%">"><form name="myform2" action="set.php" method="post"></td>
<td></td>
<td></td>
</tr>
</table>
</FORM>


一言で言うと、formの中にformは書けません。
記述できるのは、ブロック要素と SCRIPT(ブロック要素とインライン要素)、ただしFORMを除きます。
一番外側のコントロール(submit)が効いちゃいます。(ブラウザによりますが)
Parent: 3613  reply: 3617 返信 編集 削除

[3617] Re.HTMLにも規則があります

user: ruru | created: 2007-02-22 01:52
お返事ありがとうございます。
私のやろうとしていることは、
myformに属する表のなかに、myformに属するボタンの
作成と、myform1にぞくするテキストボックス及び
ボタンを内在させることです。

これにより、myform1に属するボタンが押下されたときは
myform1に属するテキストボックスの内容がDBに反映され、
myformに属するボタンが押下されたときは、
myformに属しているテキストボックスを反映させる、
という処理をさせたいわけです。

これは、実質無理ということなのでしょうか?
Parent: 3616  reply: 3618 返信 編集 削除

[3618] 別案

user: ゆうじ | created: 2007-02-22 04:13
form を入れ子に出来ないことは
YOSHIさんに答えを出してもらってますので
違う方法を考えましょうや。

初めの「テキストボックスの部分更新について」という
タイトルの意味がやっとわかってきました。
私が思うに、ユーザのアクションによって、
グループ毎に処理したり、全て一括して処理したりといった
分岐が出来ればよいのだと思うのですが違いますか?

JavaScriptを併用してユーザのアクションも一緒に送信すれば
フォームの値は全てset.phpに送信されますが
$_POST['group'] の値を元に処理を分岐できるでしょう。


<script>
<!--
function sendForm(act)
{
document.myForm.group.value = act;
document.myForm.submit();
}
//-->
</script>

<form name="myForm" action="set.php" method="post">

<!-- Action Group-->
<input type="hidden" name="group" value="">

<!-- All groups -->
<input type="button" value="All" onClick="sendForm('All')">

<!-- Group1 -->
<input type="text" name="1-1">
<input type="text" name="1-2">
<input type="button" value="Group1" onClick="sendForm('Group1')">

<!-- Group2 -->
<input type="text" name="2-1">
<input type="text" name="2-2">
<input type="button" value="Group2" onClick="sendForm('Group2')">

</form>
Parent: 3617  reply: 3623 返信 編集 削除

[3623] Re.別案

user: ruru | created: 2007-02-23 01:56
 お返事ありがとうございます。
javascriptを使うという案は思いつきませんでした。
さっそくやってみようと思うのですが、1点わからないことが
あります。

<input type="text" name="1-1">のテキストボックスや
<input type="text" name="1-2">のテキストボックスが
Group1に属するという定義はどこでやっているのでしょうか?
もし、そのような定義がないのであれば、
Group1のボタンを押しても、どのテキストボックスを対象とするかの
判断ができないと思うのですが・・・。
お手数をおかけしまして、まことに申し訳ありませんが、
教えていただけないでしょうか?
Parent: 3618  reply: 3624 返信 編集 削除

[3624] PHP側で$_POSTをフィルタリング

user: ゆうじ | created: 2007-02-23 02:32
> Group1に属するという定義はどこでやっているのでしょうか?
> もし、そのような定義がないのであれば、
> Group1のボタンを押しても、どのテキストボックスを対象とするかの
> 判断ができないと思うのですが・・・。

このフォームの中でグループ定義は一切やってません。
全ては set.php の方で$_POST['group'] の値をキーに
$_POST の添え字を捜査して処理できると考えてます。
こんな感じです。

set.php
// $_POST['group']をキーに
// $_POSTの中から必要な値をフィルタリング

// フィルタリング用の正規表現パターンを作成
if ($_POST['group'] == 'All') {
$search = '/^[0-9]{1,2}-[0-9]{1,2}$/';
} elseif (preg_match('/^Group([0-9]{1,2})$/', $_POST['group'], $match)) {
$search = '/^'. $match[1]. '-[0-9]{1,2}$/';
} else {
exit();
}

// フィルタリングされた値を保持する配列
$formValues = array();

// パターンにマッチするものだけ$formValuesに格納
foreach ($_POST as $key => $val) {
if (preg_match($search, $key)) {
$formValues[$key] = $val;
}
}

/*
* 以降 $formValues を元にDB更新処理
*/
Parent: 3623  reply: 3625 返信 編集 削除

[3625] RE.PHP側で$_POSTをフィルタリング

user: ruru | created: 2007-02-23 13:00
お返事ありがとうございます。
preg_matchについては、マニュアルで調べて、意味がわかったのですが、
$search = '/^[0-9]{1,2}-[0-9]{1,2}$/';
の一文だけは、どうやってもわかりません

どのような意味なのでしょうか?
Parent: 3624  reply: 3626 返信 編集 削除

[3626] 正規表現パターン

user: ゆうじ | created: 2007-02-23 19:06
テキストボックスの name が、
"1-1" から "10-10" まででしたので
テキストボックスの値を全て得るために
マッチさせる正規表現パターンを作っています。

正規表現がわからないということでしょうかね。
文章でうまく説明するのは大変困難ですが
ざっと説明しますとこんな具合です。


/^[0-9]{1,2}-[0-9]{1,2}$/

このうちはじめと終わりの "/" は
パターンの始点終点示すお約束です。

次の "^" は、行頭にマッチ、
最後の "$" は、行末にマッチという意味です。

"[]" で挟まれたところは文字のグループを示していて、
"[0-9]" は 0123456789 のどれかに1文字にマッチするという意味になります。
この後に続く "{}" はその量を指定しており、
"{1,2}" は1個から2個連続することを示します。

つまりこの正規表現は
「"0"~"9"が、1つから2つ続く文字で、始まり、
次に "-" が続き、
"0"~"9"が、1つから2つ続く文字で、終わる、文字列。」
にマッチするということになります。


"99-99" でもマッチすることになりますが
そのあたりはシステムの仕様によるところですので
ご自身で変更してください。


正規表現は未だスラスラ書けないので
書くたびにここを見て勉強しています。
正規表現メモ
http://www.kt.rim.or.jp/~kbk/regex/regex.html
Parent: 3625  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 134 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑