出来るのだASP Q&A掲示板(過去LOG)  訪問数 52046 昨日 889 今日 776
    【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。
Topに戻る 掲示板に戻る 検索 削除 管理者

チェックした項目を選択して削除するには   Kyoさん [2003/12/18 19:55:58] [3889]
  Re:チェックした項目を選択して削除するには   YasNet(管理人)さん [2003/12/19 9:06:24] [3892]
    Re:チェックした項目を選択して削除するには   Kyoさん [2003/12/19 10:05:01] [3894]
      Re:チェックした項目を選択して削除するには   YasNet(管理人)さん [2003/12/19 13:08:19] [3896]
        解決しました!   Kyoさん [2003/12/19 14:36:12] [3897]

[3889] チェックした項目を選択して削除するには
投稿者:Kyoさん 2003/12/18 19:55:58
過去ログをほぼ全部見たのですが、やはりいまいちよく解らないので質問させてください。似たような質問で申し訳ありません。

SQLServerに保存してあるデータを呼び出し、全データ表示してその横にチェックボックスを設置してチェックできるようにします。
そしてチェックした項目だけを削除したいのですが、どのようにすればいいのかが、いまいちわからないのです。過去ログを見てもわかりません・・(涙)
データ登録システムを作成しておりまして、項目は氏名や住所など他多項目あります。で、削除画面ではその名前とID、チェックボックスだけを表示させようと思っています。
画面は、全データ名前、ID表示&チェックボックス
→削除する名前を確認する画面
→削除完了画面
という3画面に分けて考えています。
データをどのようにして各画面に受け渡していけばいいのかがわかりません。
また、SQLServerに「チェック」の列は加えないでという方法がいいのですが・・

どなたかご教授願えますでしょうか。



[3892] Re:チェックした項目を選択して削除するには
投稿者:YasNet(管理人)さん 2003/12/19 9:06:24
こんにちは YasNet(管理人)です。

データの受け渡しがわからないって事でしょうか
DBでの受け渡しをしたくないって事ですので
hidden項目で受け渡すか、セッションを利用すると良いと思います。

タイトル的にはチェック項目の取得方法がわからないって事でしょうか
チェック項目は取得出来ますが、チェックしていない項目の取得は出来ません。

的外れな回答なら申し訳ありません。

それでは 失礼致します。

> 過去ログをほぼ全部見たのですが、やはりいまいちよく解らないので質問させてください。似たような質問で申し訳ありません。
>
> SQLServerに保存してあるデータを呼び出し、全データ表示してその横にチェックボックスを設置してチェックできるようにします。
> そしてチェックした項目だけを削除したいのですが、どのようにすればいいのかが、いまいちわからないのです。過去ログを見てもわかりません・・(涙)
> データ登録システムを作成しておりまして、項目は氏名や住所など他多項目あります。で、削除画面ではその名前とID、チェックボックスだけを表示させようと思っています。
> 画面は、全データ名前、ID表示&チェックボックス
> →削除する名前を確認する画面
> →削除完了画面
> という3画面に分けて考えています。
> データをどのようにして各画面に受け渡していけばいいのかがわかりません。
> また、SQLServerに「チェック」の列は加えないでという方法がいいのですが・・
>
> どなたかご教授願えますでしょうか。
>
>
>

[3894] Re:チェックした項目を選択して削除するには
投稿者:Kyoさん 2003/12/19 10:05:01
早速のレスありがとうございます。

> タイトル的にはチェック項目の取得方法がわからないって事でしょうか
> チェック項目は取得出来ますが、チェックしていない項目の取得は出来ません。
> 的外れな回答なら申し訳ありません。

いえいえ、その通りです。チェックした項目だけを取得したいのです。データの受け渡しの仕方がいまいち解りません。
ソースを一部書きます。

(最初の画面)テーブルの一部です。

<% Do Until ObjRS.EOF %>
<tr>
<td><input type="checkbox" name="check"
value="<% =ObjRS("name") %>"></td>
<td><% =ObjRS("id") %></td>
<td><% =ObjRS("name") %></td>
</tr>
<%
ObjRS.MoveNext
Loop
%>
ここでチェックボックス、ID,名前を全データ分、表示します。
チェックボックスのvalueがこれでいいのか疑問です。
名前だけを次の画面に渡したいのです。

(次の画面)一部抜粋です。

<%
'POSTされた値を取得します。
check=Request.Form("check")
id = Request.Form(ObjRS("id"))
name = Request.Form(ObjRS("name"))
%>

テーブルの一部です。
<tr><td>削除者名一覧</td></tr>
<%
check = split(check,",")
Response.Write"<tr>"
Response.Write"<td>" & check(0) & "</td>"
Response.Write"</tr>"
For i =1 to UBound(check)
Response.Write "<tr>"
Response.Write "<td>" & check(i) & "</td>"
Response.Write "</tr>"
Next
%>

ここで削除したい名前だけを一覧表示させます。

(最後の画面)一部です。

'POSTされた値を取得して
check=Request.Form("check")
id = Request.Form("id")
name = Request.Form("check")

StrSQL="delete from data where((data.name)='" & name & "')"
ObjConn.Execute(StrSQL)

以上のようにすると、2番目の画面でチェックした名前は
表示されるのですが、削除ボタンを押して3番目の画面に行っても
データは削除されておりません。
データが格納されていないのだと思います。

> hidden項目で受け渡すか、セッションを利用すると良いと思います。

hidden項目を一番目の画面で、ObjRS.MoveNext〜の上に
挿入してみました。

<input type="hidden" name="check"
            value="<% =ObjRS("name") %>">

すると、チェックしていない項目もチェックした項目も
全てのデータが2番目の画面で、表示されてしまいます。

以上、なるべく解りやすく書いたつもりですが
解りづらかったらすいません。
どこが間違っているのでしょうか?
value値があやしい気がしますが・・
セッションを使うのでしたらどのように使えばいいのでしょうか。
ASP始めたばかりで本当に困っています・・
ご教授お願いします。

[3896] Re:チェックした項目を選択して削除するには
投稿者:YasNet(管理人)さん 2003/12/19 13:08:19
こんにちは YasNet(管理人)です。

私の解釈が間違えていなければ
2番目で受け取った情報を
2番目の確認画面にhiddenを持たせる必要があります。

そうしないと、3番目の画面へ引き継げません。
ですので、3番目に対してhideenは必要ありません。

それでは 失礼致します。

> 早速のレスありがとうございます。
>
> > タイトル的にはチェック項目の取得方法がわからないって事でしょうか
> > チェック項目は取得出来ますが、チェックしていない項目の取得は出来ません。
> > 的外れな回答なら申し訳ありません。
>
> いえいえ、その通りです。チェックした項目だけを取得したいのです。データの受け渡しの仕方がいまいち解りません。
> ソースを一部書きます。
>
> (最初の画面)テーブルの一部です。
>
> <% Do Until ObjRS.EOF %>
> <tr>
> <td><input type="checkbox" name="check"
> value="<% =ObjRS("name") %>"></td>
> <td><% =ObjRS("id") %></td>
> <td><% =ObjRS("name") %></td>
> </tr>
> <%
> ObjRS.MoveNext
> Loop
> %>
> ここでチェックボックス、ID,名前を全データ分、表示します。
> チェックボックスのvalueがこれでいいのか疑問です。
> 名前だけを次の画面に渡したいのです。
>
> (次の画面)一部抜粋です。
>
> <%
> 'POSTされた値を取得します。
> check=Request.Form("check")
> id = Request.Form(ObjRS("id"))
> name = Request.Form(ObjRS("name"))
> %>
>
> テーブルの一部です。
> <tr><td>削除者名一覧</td></tr>
> <%
> check = split(check,",")
> Response.Write"<tr>"
> Response.Write"<td>" & check(0) & "</td>"
> Response.Write"</tr>"
> For i =1 to UBound(check)
> Response.Write "<tr>"
> Response.Write "<td>" & check(i) & "</td>"
> Response.Write "</tr>"
> Next
> %>
>
> ここで削除したい名前だけを一覧表示させます。
>
> (最後の画面)一部です。
>
> 'POSTされた値を取得して
> check=Request.Form("check")
> id = Request.Form("id")
> name = Request.Form("check")
>
> StrSQL="delete from data where((data.name)='" & name & "')"
> ObjConn.Execute(StrSQL)
>
> 以上のようにすると、2番目の画面でチェックした名前は
> 表示されるのですが、削除ボタンを押して3番目の画面に行っても
> データは削除されておりません。
> データが格納されていないのだと思います。
>
> > hidden項目で受け渡すか、セッションを利用すると良いと思います。
>
> hidden項目を一番目の画面で、ObjRS.MoveNext〜の上に
> 挿入してみました。
>
> <input type="hidden" name="check"
>             value="<% =ObjRS("name") %>">
>
> すると、チェックしていない項目もチェックした項目も
> 全てのデータが2番目の画面で、表示されてしまいます。
>
> 以上、なるべく解りやすく書いたつもりですが
> 解りづらかったらすいません。
> どこが間違っているのでしょうか?
> value値があやしい気がしますが・・
> セッションを使うのでしたらどのように使えばいいのでしょうか。
> ASP始めたばかりで本当に困っています・・
> ご教授お願いします。
>

[3897] 解決しました!
投稿者:Kyoさん 2003/12/19 14:36:12
管理人さん、さらなるアドバイスありがとうございます。

> 2番目で受け取った情報を
> 2番目の確認画面にhiddenを持たせる必要があります。
> そうしないと、3番目の画面へ引き継げません。
> ですので、3番目に対してhideenは必要ありません。

えっと、これは「2番目の画面で受け取った情報を
3番目の画面に引き継ぐには、2番目の画面で
hiddenを使わないと、3番目に引き継げない。だから
1番目の画面ではhiddenは必要ない。」
ということでよろしいのですよね?

という訳で、2番目の画面でhiddenを挿入したらできました!!
ちなみに受け渡す名前も間違っていたようです。
参考のためにソースを書き直すと、

(前レス抜粋)

> ソースを一部書きます。

> (最初の画面)テーブルの一部です。
>
> <% Do Until ObjRS.EOF %>
> <tr>
> <td><input type="checkbox" name="check"
> value="<% =ObjRS("name") %>"></td>
> <td><% =ObjRS("id") %></td>
> <td><% =ObjRS("name") %></td>
> </tr>
> <%
> ObjRS.MoveNext
> Loop
> %>

ここで、hidden文は削除しました。

> ここでチェックボックス、ID,名前を全データ分、表示します。
> 名前だけを次の画面に渡します。
>
> (次の画面)一部抜粋です。
>
> <%
> 'POSTされた値を取得します。
> check=Request.Form("check")
> id = Request.Form(ObjRS("id"))
> name = Request.Form(ObjRS("name"))
> %>
>
> テーブルの一部です。
> <tr><td>削除者名一覧</td></tr>
> <%
> check = split(check,",")
> Response.Write"<tr>"
> Response.Write"<td>" & check(0) & "</td>"
> Response.Write"</tr>"
> For i =1 to UBound(check)
> Response.Write "<tr>"
> Response.Write "<td>" & check(i) & "</td>"
> Response.Write "</tr>"
> Next
> %>

このあとに次の文を挿入しました。

<input type="hidden" name="check"
 value="<% =Request("check") %>">


>
> ここで削除したい名前だけを一覧表示させます。
>
> (最後の画面)一部です。
>
> 'POSTされた値を取得して
> check=Request.Form("check")
> id = Request.Form("id")
> name = Request.Form("check")

すいません。すぐ上の文は「name=Request.Form("name")」の書き間違いです。

>
> StrSQL="delete from data
where((data.name)='" & name & "')"
> ObjConn.Execute(StrSQL)

ここでSQL文が間違っていました。where句は

  where((data.name)='" & check & "')"

が正解で、&name& は &check& にしないとダメなのでした。

何か勘違いしていたようです。名前を書いてしまっていました。

管理人さんのおかげでやっとうまくいくようになりました。
本当にありがとうございました!!



TreeBBS For ASP V.0.1.3
Program By YasNet