電子書籍の厳選無料作品が豊富!

勉強のためにDBを使った簡単なものを作成しようと思っています。
環境はIIS 5.1にSQL Server 2005で作成しています。
使用しているのはmemberテーブルとcharacterテーブルで、
memberテーブルにはmemid、mempwd、Jewel等のカラムがあり、
characterテーブルにはid(memberのmemidと同じ)、Name、Money等のカラムがあります。

お金を換金ページで宝石に換金できるようにしたくフォーム入力とフォームデータのチェック&DB更新のページに分けて作成してみましたがDBの更新がうまくできません。


'フォームデータチェックとDB更新
userid = request.form("userid") 'アカウント
username = request.form("username") '換金する(お金が減る)キャラ名
userpass = request.form("userpass") 'パス
userjewel = request.form("userjewel") '換金する希望宝石数
usermoney = userjewel * 100
if userid<>"" and username<>"" then 'アカウント&キャラ名入力されているか?
set rsjewel = Server.CreateObject("ADODB.Recordset")
sqljewel="select * from member,character where mempwd = [dbo].[chk_md5]('"&userpass&"','"&userid&"') AND character.Name='"&username&"' AND character.id='"&userid&"'"
rsjewel.open sqljewel,conn,1,3
if rsjewel.eof or rsjewel.bof then 'アカウントやキャラクターのチェキ
response.write "<script language=javascript>alert('アカウントまたはパスワードまたはキャラクター名に誤りがあります');history.back()</script>"
response.end
else
if rsjewel("Money")<usermoney then 'お金が足りているかチェキ
response.write "<script language=javascript>alert('希望の宝石数に換金するためのお金がありません');history.back()</script>"
response.end
else
if rsjewel("Money")<usermoney then '宝石加算とmoney減算実行
rsjewel("Money")=rsjewel("Money")-usermoney
rsjewel("Jewel")=rsjewel("Jewel")+userjewel
rsjewel.update
response.write "<script language=javascript>alert('あなたの宝石は "&rsjewel("Jewel")&" 個になりました');location.href='index.asp';</script>"
response.end
end if '宝石加算とmoney減算実行
end if 'moneyが足りているかチェキ
end if 'アカウント&キャラ名チェキ
end if 'アカウント&キャラ名入力されているか?
rsjewel.close
set rsjewel=nothing
%>


クエリで
select * from member,character where mempwd = dbo.chk_md5('hogeid','hogepwd') AND character.Name='hogename' AND character.id='hogeid'
を実行するとデータが表示でき、
UPDATE character set Money=Money-1 where Name='hogename'
UPDATE member set Jewel=Jewel+1 where memid='hogeid'
どちらを実行してもちゃんとMoneyが1減ったり、Jewelが1増えたりしますが、
ASPで作成したページからは「あなたの宝石は 入力した希望数 個になりました」と表示されてもDBを見ると反映されていなかったり、
またはフォームからsubmitすると画面が真っ白になります(DBも更新されてない)

原因がわかる方いましたら教えていただけると助かります。

A 回答 (1件)

こんちくは。



このパターン、あまり使わないからなぁ。自分は(汗
間違ってたらすいません。

>>rsjewel("Money")=rsjewel("Money")-usermoney
>>rsjewel("Jewel")=rsjewel("Jewel")+userjewel


rsjewel("Money").value=rsjewel("Money")-usermoney
rsjewel("Jewel").value=rsjewel("Jewel")+userjewel

こうかな。。。

http://msdn.microsoft.com/ja-jp/library/cc344614 …



自分のやるパターンだと、その都度、SQL文書くので、オープンしといたレコードセット値に突っ込んで。。。ってのはちっと分かりかねる部分があります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!