出来るのだASP Q&A掲示板(過去LOG)
訪問数 52046
昨日 889
今日 776 【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。 |
![]() ![]() ![]() ![]() ![]() |
![]() ![]() |
![]() ![]() ![]() |
[3157] メッセージ確認後レコードを更新したい |
投稿者:NOBAうさぎさん 2003/01/29 11:07:04 |
こんにちは、まみです。 確認ダイアログボックス(Javascript:confirm)の 後処理が上手く行かないので投稿致しました。 処理としては 1.テーブル個人情報から就業ステータスが「就業中」で該当する 「個人情報id」のレコードをSELECTする。 2.Javascriptのconfirmで、1のレコードの就業ステータスを 「退社」にするかの確認ダイアログを表示する。 3.2で「はい」をクリックした場合は、1のレコードの 就業ステータスを「退社」にし、Updateする。 ということをしたいと思っています。 この処理は、ループ処理させているのですが、 「confirm」を「true」にした場合のみ、SQLしてUpdateと していますが、「キャンセル」クリックでも、「true」処理の 方にいってしまい、レコードをUpdateさせてしまいます。 ASP+Javascriptで、こういう書き方するとマズいのでしょうか? 本来なら、別ASPファイルに飛んで処理を行なうという 形が妥当だと思いますが、下記ソース後に別の処理を 書いているので、なるべくなら1つのファイルでの処理を 希望しています。 ご教授の程宜しくお願い致します! ***ソース*** <SCRIPT LANGUAGE="Javascript"> var result; var Gaitou; <% Dim oCon,sConStr,oRZai,oRKozin1,oRKozin2 Dim Kozin_ID,Oboe_ID,Kei_ID Dim oRKazu1,oRKazu2,Gaitosu,DelKozin,Kazu,Shimei Set oCon = Server.CreateObject("ADODB.Connection") sConStr = Application.Contents("ConCustomer") oCon.Open sConStr Kozin_ID = Request("Name_ID") Kozin_ID = oRZai("個人情報id") set oRKozin1 = oCon.Execute("SELECT * FROM 個人情報 WHERE 個人情報id='" & Kozin_ID & "' AND 就業ステータス='就業中'") %> Gaitou = "<%=oRKozin1("氏名")%>"; result=confirm(Gaitou + "の就業ステータスを「退社」にしますか?"); if (result==true){ <% DelKozin = "SELECT * FROM 個人情報 WHERE 個人情報id='" & Kozin_ID & "'" set oRKozin2 = Server.CreateObject("ADODB.Recordset") oRKozin2.Open DelKozin,oCon,3,3 oRKozin2("就業ステータス") = "退社" oRKozin2.Update oRKozin2.Close set oRKozin2 = Nothing %> } </SCRIPT> |
[3158] Re:メッセージ確認後レコードを更新したい |
投稿者:NOBAうさぎさん 2003/01/29 13:54:27 |
こんにちは! 名前を「NOBAうさぎ」で投稿しましたが、 本当の名前は「まみ」です。 いつもお世話になっています。 名前を変えて投稿しましたが、他意はないです。 宜しくお願い致します。 |
[3160] Re:メッセージ確認後レコードを更新したい |
投稿者:ぽこぷぅさん 2003/01/30 9:20:41 |
> 「confirm」を「true」にした場合のみ、SQLしてUpdateと > していますが、「キャンセル」クリックでも、「true」処理の > 方にいってしまい、レコードをUpdateさせてしまいます。 > ASP+Javascriptで、こういう書き方するとマズいのでしょうか? まずいというか、考え方が間違っています ASPはサーバサイド処理され JavaScriptはクライアントサイドスクリプトです ASPで、すべての処理が行われた後 クライアント側にデータ(HTML等)が送信され クライアントの操作にあわせてJavaScriptが動きます if文以下の<%%>は、 このページが表示される前にサーバ側で実行されてしまっています。 どちらのボタンを押してもUPDATEされているのではなく、 ダイアログのボタンを押す前に、すでにDBがUPDATEされています。 このダイアログが表示されるページが表示された時点で ブラウザからソースを表示させてみていただくと分かると思うのですが 見た所、退社ステータスを変更する際の 確認ダイアログを出したいだけだと思うので、 入力ページで「退社」を選んだ際に JavaScriptで確認ダイアログを表示して 「はい」だったらUPDATEを行うASPページに飛べば良いのでは? |
[3161] Re:メッセージ確認後レコードを更新したい |
投稿者:NOBAうさぎさん 2003/01/31 17:25:44 |
ぽこぷぅさん、レスありがとうございました。 そうですよね〜。間違っていますよね。 あれから検証して、ぽこぷぅさんのおっしゃる通り 自分の考え方&プログラミングが間違っていた事が分かって、 メッセージ表示ではなく、サブウィンドウに該当社員を 全部表示させて、チェックボックスにチェックすると ステータスが変更になる、という方法に変更しました。 だいぶ苦労しましたが、1名ずつメッセージが出るのも まどろっこしいこともあってこの方法にしました。 適切なアドバイスを頂き、ありがとうございました。 これからも宜しくお願い致します。 |
TreeBBS For ASP V.0.1.3 |