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

ボタンを押すことによるvalue値の引継ぎ

created: 2005-11-23 22:31 | modified: 2005-12-04 11:23 | reply: 9

[2753] ボタンを押すことによるvalue値の引継ぎ

user: ヒロ | created: 2005-11-23 22:31
質問させていただきます。
現在PHPにて住所録のHPを作成しており、
なんとかDBのものをselect文により抽出して
抽出した名前を表示させるところまできました。

そこでその抽出した名前の横に削除ボタンを作成したいと
おもい、

print "<input type=\"submit\" name=\"sakujo\" value=\"".$row["NAME"]."\" >";

という感じでボタンの作成まではどうにかいきました。
ここでvalue値に抽出した結果の名前を入れることにより、
ボタンを押したときに、どの名前の人を削除するように
するかを決められるようにしました。

しかし、こうするとボタンの表示がその人の名前に
なってしまって、それが削除ボタンなのかわからなく
なってしまいます。
そこで、ボタンに表示されている文字を「削除」に
したまま、選択した人の名前を引き継ぐようにすることは
できないのでしょうか。

よろしくおねがいします。
reply: 2754 2757 2762 返信 編集 削除

[2754] Re.ボタンを押すことによるvalue値の引継ぎ

user: TAS | created: 2005-11-24 05:07
print "<input type=\"submit\" name=\"sakujo\" value=\"delete\" >";
print "<input type=\"hidden\" name=\"namae\" value=\"".$row["NAME"]."\" >";
Parent: 2753  返信 編集 削除

[2757] name側で識別してはどうでしょうか

user: | created: 2005-11-25 00:31
こんにちは。
おそらく、一つのフォームに対して削除ボタンがいくつも
あるのだと思うのですが、

print '<input type="submit" name="sakujo_' . $row["NAME"] . '" value="削除" >';

というように、nameの方に名前を入れてはどうでしょう。
複数のsubmitボタンがある場合、受け手側では、押されたsubmitボタンに
対応するキーと値のセットが送られるはずなので、
受け手側で

foreach ($_REQUEST as $key => $value){
if (ereg("^sakujo_",$key) && $value == '削除'){
//※↑この条件式の「$value == '削除'」は別に無くても大丈夫なはず。

//ここで、str_replace("sakujo_","",$key) して削除処理;
break;
}
}

といったような処理をすれば良いかと思います。

----------------------------------------

別の方法としては、

●それぞれの削除ボタンを全て別のフォームとして独立させる
●javascriptを使い、別立ての隠しフォームを送信させる

というような手もありますね。
Parent: 2753  返信 編集 削除

[2762] ありがとうございます

user: ヒロ | created: 2005-11-27 00:37
TASさん、箱さん、ありがとうございます。

箱さんのおっしゃるとおり、一つのフォームに対して削除ボタンがいくつもあります。

箱さんが下さった例で行こうとおもうのですが、
考え方は以下の通りであってますでしょうか。

1.削除ボタン名前属性に、人の名前をつける。
2.人の名前を試用する際には、文字の置き換えでボタンの名前を人の名前に変えて使用する。

こんな感じで理解しました。
ただ、1点きになっていることがありまして、

>foreach ($_REQUEST as $key => $value){

これは、配列に$_REQUEST をまとめているのでしょうか?
また、$_REQUEST っていうのは、submitボタンを押したときに、自動で取得されるものなのでしょうか。

$_REQUEST関数で検索したのですが、よい説明がみつかりませんでした。よろしければご教授いただけないでしょうか。
Parent: 2753  reply: 2770 返信 編集 削除

[2770] Re.ありがとうございます

user: | created: 2005-11-28 03:28
こんにちは。

> 考え方は以下の通りであってますでしょうか。
>
> 1.削除ボタン名前属性に、人の名前をつける。
> 2.人の名前を試用する際には、文字の置き換えでボタンの
> 名前を人の名前に変えて使用する。

そうですね、その考え方で合っていると思います。
後は頑張って試してみて下さい。



> ただ、1点きになっていることがありまして、
>
> >foreach ($_REQUEST as $key => $value){
>
> これは、配列に$_REQUEST をまとめているのでしょうか?
> また、$_REQUEST っていうのは、submitボタンを押したときに、
> 自動で取得されるものなのでしょうか。

$_REQUESTというのは、PHPにリクエストをかけた時に自動的に
定義されるグローバル変数です。
$_REQUESTというのは、$_GET, $_POST, $_COOKIE, $_FILESが
一つにまとまって格納された配列です。

私のサンプルでは$_REQUESTと書きましたが、$_POSTでも
構いません。と言うか$_POSTの方が良いかも。

私は、$_REQUESTを、GETとPOSTのどちらから情報が来るのかはっきり
していない時などに使っていますが、普通は、処理している対象が
POSTされたデータなのかGETされたデータなのか意識してプログラム
した方が良いので、$_POSTや$_GETを使った方が良いのではない
かと思います。

--------------------

それから、submitボタンで削除処理をする場合にはちょっと
注意すべきことがあります。
それは、もしも同じフォーム内にテキストボックスなどがある場合
に、enterキーでフォーム送信されてしまうという状況です。
その場合、「いずれかの削除ボタンを押してsubmitした」と判断
されるという事が起こり得ます。
Parent: 2762  reply: 2775 返信 編集 削除

[2775] また問題が_| ̄|○

user: ヒロ | created: 2005-12-02 01:14
 箱さん、お返事ありがとうございます。
教えていただいた方法でやったところ、見事にボタンを
押すことによって名前を取得することができました。
しかし、ここで新たな問題が出てきてしまいました。

現在の構成は次の通りです。

<FORM name="myform" action="shain.php" method="post">
<BR><select name = "HEYA">
<option value="1">1号
<option value="2">2号
</select>
<input type="Submit" name="hyoji" value="表示" >
</FORM>
<?php
---SELECT文---
while ($row = mysql_fetch_array($result)) {
print '<FORM name=\"myform\" action=\"shain.php\" method=\"post\">';
print '<input type="submit" name="sakujo_' . $row["NAME"] . '" value="削除" >';
print "</FORM>";
}
?>

となっているのですが、表示ボタンを押したときには、
リストボックスの選択したvalue値を取得できるのですが、
削除ボタンだとvalue値を取得できなくなってしまいます。

form名の設定を2回同名称で行っているのですが、
それが関係しているのでしょうか。
Parent: 2770  reply: 2777 返信 編集 削除

[2777] Re.また問題が_| ̄|○

user: TAS | created: 2005-12-02 12:20
> となっているのですが、表示ボタンを押したときには、
自分にactionして、変数に入れ

> 削除ボタン
同時にpostしたらどうでしょうか

> form名の設定を2回同名称で行っているのですが、
> それが関係しているのでしょうか。
ですよね
Parent: 2775  reply: 2782 返信 編集 削除

[2782] Re.また問題が_| ̄|○

user: ヒロ | created: 2005-12-04 11:10
TASさん、ありがとうございます。

確かに変数に中継して行えばいけそうですね。
ただ、できれば、form.nameを分けたくないので、
スレを新しく作って、新たに意見を聞いてみようと
おもいます。
ありがとうございました。
Parent: 2777  reply: 2783 返信 編集 削除

[2783] コンスタントのフォームと、作成フォームを分けない方法。

user: ヒロ | created: 2005-12-04 11:15
 お世話になっております。
NO2753でも質問させていただいたのですが、
最初の趣旨と異なってきたため、新しく投稿させて
いただきました。
現在下記のような、HPを作成しております。


<FORM name="myform" action="shain.php" method="post">
<BR><select name = "HEYA">
<option value="1">1号
<option value="2">2号
</select>
<input type="Submit" name="hyoji" value="表示" >
</FORM>
<?php
---SELECT文---
while ($row = mysql_fetch_array($result)) {
print '<FORM name=\"myform\" action=\"shain.php\" method=\"post\">';
print '<input type="submit" name="sakujo_' . $row["NAME"] . '" value="削除" >';
print "</FORM>";
}
?>

なにを聞きたいかというと、最初にデフォルトで
つくってある、<FORM name="myform">と、
Parent: 2782  reply: 2785 返信 編集 削除

[2785] ↑は間違いです。失礼しました

user: ヒロ | created: 2005-12-04 11:23
↑は間違いです。失礼しました
Parent: 2783  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 314 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

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