[三流君] Top ken3.orgへ [ASP解説] ASPの解説TOP [ASP記事 バックナンバー] 番号順のバックナンバー [SOHO/在宅プログラマー/派遣] 派遣のお話ほか [...サイトマップ(総合案内へ)] 分類別ガイド ADOで[ADO Mdb接続] ,[ADO Excel接続] ,[ADO CSV接続] [ASP Form データのやりとりPOSTとGET] [ASPでTextFile操作] [ASPでVBScriptを使う] [その他サンプル] |
No.65 | 2003/06/17 配列の復習、2次元配列、Array関数で配列の初期化 |
[ページTOPへ戻る] |
<配列の復習、2次元配列、Array関数で配列の初期化>
こんにちは、三流プログラマーのKen3です。 今回は、 配列の復習、2次元配列、Array関数で初期化 そんなお話です。/* * 1.今回のキッカケ */
前回、Sessionを使用した名前の管理、 じゃんけんプログラムを作りました。 今回はそのプログラムを改良して、 配列を使用したプログラムを書いてみたいと思います。 ※変に複雑にやせている女性より、ふっくらした女性がいいと思うけど・・・ えっ、でもCtrl+CとCtrl+Vで着膨れしたセンスないプログラム(女性)はチョット? う〜ん、いい表現が、、あっ、外見同じでも体脂肪の違いって感じで・・/* * 2.勝手な流れの仕様書 */
「先輩、仕様書ください、口頭じゃなくて紙で。でないと組めませんよ」 ちぇ、しょうがねえなぁ、簡単にテキストファイルで書くか。 仕様.TXT ~~~~~~~~ 言語はASPで動作するVBScriptで。 (※言語も書いとくか) 関数名は Sub HANTEI(strNO) (※関数名なんて好きでいいんだけど) 受け取りは文字列で"1","2","3"を受け取る 1 グー 2 チョキ 3 パー (※受け取りパラメータの説明を書いて) 処理 ^^^^ 入力値の判断、エラーならメッセージを表示させ抜ける エラーメッセージは [XXXX]は不正な入力です (※メッセージなんてそれらしく作ってよ、 えっ、仕様書で指定しないくせに、あとから文句言うなって?) 乱数でコンピュータの手を発生させる グー・チョキ・パーを乱数で。 結果の判断と勝負手の表示 USER_NAME(←グローバル変数に格納されてます)さんの手は、グーです コンピュータの手はパーです 引き分けです アナタの勝ちです 私(コンピュータ)の勝ちです と、結果を画面に出力する リターン値は無しで、関数を終了する 関数仕様書作りのポイント ~~~~~~~~~~~~~~~~~~~~ まず重要なのは、入力(INパラメータ)・処理を詳しく・出力(戻り値) 何を受け取って、XXXXと処理をして、XXXと上位関数に結果を返す。 リターン値無しでも私は気にしないけど、 ~~~~~~~~~~~~~~ 無い場合でも必ず0を返す(0正常)と書かないと気になる君も居ます。 ほかに必要なのは、処理に入れるんだけど、 エラー処理は?どうするか? と 意外と質問が多いのが、メッセージの文章。 メッセージ適当でいいよとお任せで渡すけど、 プログラムよりメッセージ考えてた/メッセージに悩んでいた(笑) なんてプログラマーが居るのも事実。 あとは、簡単な仕様書を元に、説明時に詰めていくんだけど。 ※ここで、問題点を話し合って、仕様変更。 パラメータは0〜2にしてほしいとか、処理方法とか。 でも仕様書はそのまま。 そんなんで、初期の仕様書のまま納品なんてパターン多いかも。 お客はわからないよ・・なんて思わないで更新しようね仕様書の。 でもそんなことしていると、 プログラマーってより、ワープロ屋って感じ(これホント)/* * 3.この仕様書から作られたプログラム */
こんな仕様書を書くなら、自分で作ったほうがハヤイな・・・ と 思いつつ、仕様書を渡し作業をお願いする。 自分は、上位ルーチンの作成(Sessionで名前管理)や次の関数仕様書を作成する And 3が月前に納品した他のシステムのバグ対応、新規システムの打ち合わせ と平行して業務を実行する。 作成された(できあがった)サブ関数をもらいました。
Sub HANTEI(strNO) 'ユーザーの手を受取り判断する Dim nCON 'コンピュータの手1〜3の数値が入る Dim nPC 'ユーザーさんの手 Dim strTE(3) '(*1)配列変数を宣言 strTE(1) = "グー" '(*2)配列にメッセージを代入 strTE(2) = "チョキ" strTE(3) = "パー" '入力値の判断、エラーならメッセージを表示させ抜ける 'If文で1,2,3以外を判断する If strNO <> "1" And strNO <> "2" And strNO <> "3" Then Response.Write "[" & strNO & "]は不正な入力です" Exit Sub '<--Exit Subを使用してここでプログラムを抜ける End If 'コンピュータの手を決定 Randomize ' 乱数発生ルーチンを初期化します。 nCON = Int((3 * Rnd) + 1) '1 から 3 までの乱数を発生させます。 '結果判断と表示 'ユーザーの手を表示する nPC = CInt(strNO) 'CInt関数で数値型に変換する Response.Write USER_NAME & "さんの手は、" Response.Write strTE(nPC) & "です<br>" '(*3)ここでnPC番目を表示 '(*4)同様にコンピュータの手を表示する Response.Write "コンピュータの手は" & strTE(nCON) & "です<br>" '結果の判断 'まず、引き分けを判断 If nPC = nCON Then Response.Write "引き分けです<br>" '次に自分が勝ちの手を判断 グーvsチョキ,チョキvsパー,パーvsグー If nPC = 1 And nCON = 2 Then Response.Write "アナタの勝ちです<br>" If nPC = 2 And nCON = 3 Then Response.Write "アナタの勝ちです<br>" If nPC = 3 And nCON = 1 Then Response.Write "アナタの勝ちです<br>" 'コンピュータが勝ちか判断 グーvsパー,チョキvsグー,バーvsチョキ If nPC = 1 And nCON = 3 Then Response.Write "私(コンピュータ)の勝ちです<br>" If nPC = 2 And nCON = 1 Then Response.Write "私(コンピュータ)の勝ちです<br>" If nPC = 3 And nCON = 2 Then Response.Write "私(コンピュータ)の勝ちです<br>" End Sub |
Sub HANTEI(strNO) 'ユーザーの手を受取り判断する Dim nCON 'コンピュータの手1〜3の数値が入る Dim nPC 'ユーザーさんの手 Dim strTE(3) '(*1)配列変数を宣言 strTE(1) = "グー" '(*2)配列にメッセージを代入 strTE(2) = "チョキ" strTE(3) = "パー" Dim nMSGNO 'メッセージの番号 Dim strMSG(3) 'メッセージ表示用の配列 strMSG(1) = "アナタの勝ちです<br>" 'メッセージの代入 strMSG(2) = "引き分けです<br>" strMSG(3) = "私(コンピュータ)の勝ちです<br>" '入力値の判断、エラーならメッセージを表示させ抜ける 'If文で1,2,3以外を判断する If strNO <> "1" And strNO <> "2" And strNO <> "3" Then Response.Write "[" & strNO & "]は不正な入力です" Exit Sub '<--Exit Subを使用してここでプログラムを抜ける End If 'コンピュータの手を決定 Randomize ' 乱数発生ルーチンを初期化します。 nCON = Int((3 * Rnd) + 1) '1 から 3 までの乱数を発生させます。 '結果判断と表示 'ユーザーの手を表示する nPC = CInt(strNO) 'CInt関数で数値型に変換する Response.Write USER_NAME & "さんの手は、" Response.Write strTE(nPC) & "です<br>" '(*3)ここでnPC番目を表示 '(*4)同様にコンピュータの手を表示する Response.Write "コンピュータの手は" & strTE(nCON) & "です<br>" '結果の判断 ' グー(1) チョキ(2) パー(3) ←コンピュータの手 'グー(1) 2引き分け 1勝ち 3負け 'チョキ(2) 3負け 2引き分け 1勝ち 'パー(3) 1勝ち 3負け 2引き分け '↑自分の手 '勝負の結果表を作る Dim strCHK(3, 3) '3x3の結果の表 strCHK(1, 1) = 2 : strCHK(1, 2) = 1 : strCHK(1, 3) = 3 strCHK(2, 1) = 3 : strCHK(2, 2) = 2 : strCHK(2, 3) = 1 strCHK(3, 1) = 1 : strCHK(3, 2) = 3 : strCHK(3, 3) = 2 '結果を代入 nMSGNO = strCHK(nPC, nCON) '結果表の値を代入 '結果のメッセージを表示する(メッセージ番号を使用して) Response.Write strMSG(nMSGNO) End Sub |
Sub HANTEI(strNO) 'ユーザーの手を受取り判断する Dim nCON 'コンピュータの手1〜3の数値が入る Dim nPC 'ユーザーさんの手 '配列にメッセージを代入 strTE = Array("", "グー", "チョキ", "パー") Dim nMSGNO 'メッセージの番号 'メッセージ表示用の配列 strMSG = Array("", "アナタの勝ちです<br>", "引き分けです<br>", _ "私(コンピュータ)の勝ちです<br>" ) '入力値の判断、エラーならメッセージを表示させ抜ける 'If文で1,2,3以外を判断する If strNO <> "1" And strNO <> "2" And strNO <> "3" Then Response.Write "[" & strNO & "]は不正な入力です" Exit Sub '<--Exit Subを使用してここでプログラムを抜ける End If 'コンピュータの手を決定 Randomize ' 乱数発生ルーチンを初期化します。 nCON = Int((3 * Rnd) + 1) '1 から 3 までの乱数を発生させます。 '結果判断と表示 'ユーザーの手を表示する nPC = CInt(strNO) 'CInt関数で数値型に変換する Response.Write USER_NAME & "さんの手は、" Response.Write strTE(nPC) & "です<br>" '(*3)ここでnPC番目を表示 '(*4)同様にコンピュータの手を表示する Response.Write "コンピュータの手は" & strTE(nCON) & "です<br>" '結果の判断 ' グー(1) チョキ(2) パー(3) ←コンピュータの手 'グー(1) 2引き分け 1勝ち 3負け 'チョキ(2) 3負け 2引き分け 1勝ち 'パー(3) 1勝ち 3負け 2引き分け '↑自分の手 '勝負の結果表を作る strCHK = Array( "", Array( 0, 2, 1, 3 ), _ Array( 0, 3, 2, 1 ), _ Array( 0, 1, 3, 2 ) ) '結果を代入 nMSGNO = strCHK(nPC)(nCON) '結果表の値を代入 '結果のメッセージを表示する(メッセージ番号を使用して) Response.Write strMSG(nMSGNO) End Sub |
No.66 | 2003/06/23 クッキーを使ってみた Request.Cookies |
[ページTOPへ戻る] |
<クッキーを使ってみた Request.Cookies>
こんにちは、三流プログラマーのKen3です。 今回は、 クッキーを使ってみた そんなお話です。/* * 1.今回のキッカケ */
前回、Session("変数名")で、ユーザー単位でセッション変数を設定可能です。 とやりました。 でも、セッションって、一度接続を切るとクリアされてしまいます。 改ざんされたりするんだけど、 簡単な記録、記憶にはクッキーを使う方法があります。 なんだかよくわからん? えっと、 USER_NAME = Request.Cookies("USERNAME") で、情報の取り出し、 データのセット、 Response.Cookies("USERNAME") = "AAAAAA" '名前の代入 '期限のセット、 Response.Cookies("USERNAME").Expires = DateAdd("d", 7, Date) と簡単です。 あっそ? 冷たいなぁ、、、それを利用して、 今回は、ユーザーの名前をクッキーで覚えてみます。/* * 2.Request.Cookiesを使用したサンプル */
またまた、いつもの実行結果から入る解説です。 http://www.ken3.org/cgi-bin/test/test066-1.asp でテスト可能です。 <%@LANGUAGE=VBScript%> <% 'ユーザー名が送られていたら、クッキーにセットする D = Request.QueryString("UNAME") 'データを代入 If Len(D) <> 0 Then 'データあり Response.Cookies("USERNAME") = D '名前の代入 '期限のセット Response.Cookies("USERNAME").Expires = DateAdd("d", 7, Date) End If %> <html> <head> <title>Request.Cookies("USERNAME")とクッキーを使ってみた</title> </head> <body> <h2>Request.Cookies("USERNAME")とクッキーを使ってみた</h2> クッキーのセットと参照で<br> <b>Request.Cookies("USERNAME")</b><br> 有効期限のテストで<br> <b>Response.Cookies("USERNAME").Expires = DateAdd("d", 7, Date)</b><br> を使用してみました。<br> 期限の設定を忘れなければ、比較的簡単に使えると思います<br> <h3>じゃんけんゲーム(Cookies クッキーで名前の管理)</h3> <% 'パラメータをチェックする、クッキーに名前が入っているか? USER_NAME = Request.Cookies("USERNAME") 'クッキーから変数へ代入 'Lenで変数の長さをチェックする If Len(Trim(USER_NAME)) = 0 Then '名前が未入力なら Call INPUT_NAME() '名前入力フォームの表示 Else D = Request.QueryString("DATA") 'データを代入(選択された手) If Len(D) = 1 Then 'データあり Call HANTEI(D) '判断用の関数を呼ぶ End If Call INPUT_FORM() '入力用のフォームを表示する、再度入力させる End If %> <hr> セッション変数と違って、一回クッキーとして登録すると、<br> 再度このHPへきた時に、<br> USER_NAME = Request.Cookies("USERNAME") 'クッキーから変数へ代入<br> と、USERNAMEを取り出すことが出来る。<br> パソコンのHD内のクッキーを参照するので、使い方によっては便利です<br> </body> </html> <% '名前入力フォームの表示%> <% '入力フォームの表示(勝負する手を入力)
Sub INPUT_NAME() Response.Write "<HR>" Response.Write "<FORM ACTION='test066-1.asp' METHOD='GET'>" Response.Write "あなたのお名前は?<br>" Response.Write "<INPUT TYPE='text' NAME='UNAME'><br>" Response.Write "<INPUT TYPE='submit' VALUE='名前の登録'><br>" Response.Write "</FORM>" End Sub%> <% '乱数を発生させて勝負する
Sub INPUT_FORM() Response.Write "<HR>" Response.Write "<FORM ACTION='test066-1.asp' METHOD='GET'>" Response.Write "<b>" & USER_NAME & "</b>さん、あなたの手は?<br>" Response.Write "<INPUT TYPE='RADIO' NAME='DATA' VALUE='1'>1.グー<br>" Response.Write "<INPUT TYPE='RADIO' NAME='DATA' VALUE='2'>2.チョキ<br>" Response.Write "<INPUT TYPE='RADIO' NAME='DATA' VALUE='3'>3.パー<br>" Response.Write "<INPUT TYPE='submit' VALUE='勝負する'><br>" Response.Write "</FORM>" End Sub%> ポイントは、 ~~~~~~~~~~~~ 後半のじゃんけん判断は、置いといて、 Response.Cookies("USERNAME") = D '名前の代入 Response.Cookies("USERNAME").Expires = DateAdd("d", 7, Date) で、簡単にクッキーを書き込むことが出来ます。 .Expires = DateAdd("d", 7, Date) で、このクッキーの有効期限を設定してます。 ※これを忘れると、ブラウザを閉じたときに消えてしまいます。 あとは、簡単で、 Request.Cookies("USERNAME") で、値を取り出せます。 よくある使い方は、ID,パスワードを保存しておいて、 ログインをやりやすくする方法があります。 *たまに、クッキーで保存とか目にすると思います。 蛇足ですが、クッキーの中身を見てみました。 これって、テキストファイルなので、いくらでも改ざんできそうです。 ※データを変更してから、アクセスしたり。 USERNAME %82%AF%82%F1%82%BC%82%A4 www.ken3.org/ 1536 4216707072 29565243 2617689824 29564031 *
Sub HANTEI(strNO) 'ユーザーの手を受取り判断する Dim nCON 'コンピュータの手1〜3の数値が入る Dim nPC 'ユーザーさんの手 '配列にメッセージを代入 strTE = Array("", "グー", "チョキ", "パー") Dim nMSGNO 'メッセージの番号 'メッセージ表示用の配列 strMSG = Array("", "アナタの勝ちです<br>", "引き分けです<br>", _ "私(コンピュータ)の勝ちです<br>" ) '入力値の判断、エラーならメッセージを表示させ抜ける 'If文で1,2,3以外を判断する If strNO <> "1" And strNO <> "2" And strNO <> "3" Then Response.Write "[" & strNO & "]は不正な入力です" Exit Sub '<--Exit Subを使用してここでプログラムを抜ける End If 'コンピュータの手を決定 Randomize ' 乱数発生ルーチンを初期化します。 nCON = Int((3 * Rnd) + 1) '1 から 3 までの乱数を発生させます。 '結果判断と表示 'ユーザーの手を表示する nPC = CInt(strNO) 'CInt関数で数値型に変換する Response.Write USER_NAME & "さんの手は、" Response.Write strTE(nPC) & "です<br>" '(*3)ここでnPC番目を表示 '(*4)同様にコンピュータの手を表示する Response.Write "コンピュータの手は" & strTE(nCON) & "です<br>" '結果の判断 ' グー(1) チョキ(2) パー(3) ←コンピュータの手 'グー(1) 2引き分け 1勝ち 3負け 'チョキ(2) 3負け 2引き分け 1勝ち 'パー(3) 1勝ち 3負け 2引き分け '↑自分の手 '勝負の結果表を作る strCHK = Array( "", Array( 0, 2, 1, 3 ), _ Array( 0, 3, 2, 1 ), _ Array( 0, 1, 3, 2 ) ) '結果を代入 nMSGNO = strCHK(nPC)(nCON) '結果表の値を代入 '結果のメッセージを表示する(メッセージ番号を使用して) Response.Write strMSG(nMSGNO) End Sub/* * 3.クッキー有効期限.Expiresを120秒(2分)にDateAdd("s", 120, Now) */
クッキー、7日後とか、テストの仕方が悪かったですね。 有効期限を設定したら、有効期限切れをチェックしたいのが人情でしょう。 あっ、人情じゃなくって、プログラマー心理かなぁ。 下記、単純に期限を Response.Cookies("USERNAME2").Expires = DateAdd("s", 120, Now) と、120秒後の(2分)としてみました。 名前を入力してから(一度クッキーに保存してから)、 しばらく放置して、アクセスしてください。 有効期限切れで、値を取得できないので、 名前の再入力処理を行います。 http://www.ken3.org/cgi-bin/test/test066-2.asp でテスト可能です。 <%@LANGUAGE=VBScript%> <% 'ユーザー名が送られていたら、クッキーにセットする D = Request.QueryString("UNAME") 'データを代入 If Len(D) <> 0 Then 'データあり Response.Cookies("USERNAME2") = D '名前の代入 '期限のセット 期限切れのテストを兼ねて、120秒(2分)としてみた。 Response.Cookies("USERNAME2").Expires = DateAdd("s", 120, Now) End If %> <html> <head> <title>クッキー有効期限.Expiresを120秒(2分)にDateAdd("s", 120, Now)</title> </head> <body> <h2>Response.Cookies("USERNAME2").Expires=DateAdd("s", 120, Now)でテスト</h2> 有効期限のテストで<br> <b>Response.Cookies("USERNAME2").Expires = DateAdd("d", 120, Now)</b><br> を使用してみました。<br> ポイントは、<br> .Expires = DateAdd("d", 120, Now)で、120秒後をセットしました。<br> <h3>じゃんけんゲーム(Cookies.Expiresを120秒(2分)2分以内に回答を(笑))</h3> <% 'パラメータをチェックする、クッキーに名前が入っているか? USER_NAME = Request.Cookies("USERNAME2") 'クッキーから変数へ代入 'Lenで変数の長さをチェックする If Len(Trim(USER_NAME)) = 0 Then '名前が未入力なら Call INPUT_NAME() '名前入力フォームの表示 Else D = Request.QueryString("DATA") 'データを代入(選択された手) If Len(D) = 1 Then 'データあり Call HANTEI(D) '判断用の関数を呼ぶ End If Call INPUT_FORM() '入力用のフォームを表示する、再度入力させる End If %> <hr> .Expires = DateAdd("d", 120, Now)で<b>有効期限</b>を2分にしました<br> チョット待ってから、アクセスしてみてください<br> USERNAME2のクッキーが切れることを確認します。<br> 応用で、ログイン後XX分以内の回答処理にも使えるかも<br> <br> </body> </html> <% '名前入力フォームの表示%> <% '入力フォームの表示(勝負する手を入力)
Sub INPUT_NAME() Response.Write "<HR>" Response.Write "<FORM ACTION='test066-2.asp' METHOD='GET'>" Response.Write "あなたのお名前は?<br>" Response.Write "<INPUT TYPE='text' NAME='UNAME'><br>" Response.Write "<INPUT TYPE='submit' VALUE='名前の登録'><br>" Response.Write "</FORM>" End Sub%> <% '乱数を発生させて勝負する
Sub INPUT_FORM() Response.Write "<HR>" Response.Write "<FORM ACTION='test066-2.asp' METHOD='GET'>" Response.Write "<b>" & USER_NAME & "</b>さん、あなたの手は?<br>" Response.Write "<INPUT TYPE='RADIO' NAME='DATA' VALUE='1'>1.グー<br>" Response.Write "<INPUT TYPE='RADIO' NAME='DATA' VALUE='2'>2.チョキ<br>" Response.Write "<INPUT TYPE='RADIO' NAME='DATA' VALUE='3'>3.パー<br>" Response.Write "<INPUT TYPE='submit' VALUE='勝負する'><br>" Response.Write "</FORM>" End Sub%> -【けんぞう!】--------------------------------------------------------- 三流君の、小金稼ぎ、お小遣い稼ぎシリーズ第3弾(稼げないだろコラ!!) 参加無料:予想が当たれば一攫千金?今月はプロ野球のセパ勝敗とホームラン数 http://www.ken3.org/etc/500yen/5050.html ← 100万を当たった人数で山分け 『チッ、大穴横浜の勝利に賭けてるのに当たらない(笑)』(横浜ファン:31歳) ------------------------------------------------------------------------
Sub HANTEI(strNO) 'ユーザーの手を受取り判断する Dim nCON 'コンピュータの手1〜3の数値が入る Dim nPC 'ユーザーさんの手 '配列にメッセージを代入 strTE = Array("", "グー", "チョキ", "パー") Dim nMSGNO 'メッセージの番号 'メッセージ表示用の配列 strMSG = Array("", "アナタの勝ちです<br>", "引き分けです<br>", _ "私(コンピュータ)の勝ちです<br>" ) '入力値の判断、エラーならメッセージを表示させ抜ける 'If文で1,2,3以外を判断する If strNO <> "1" And strNO <> "2" And strNO <> "3" Then Response.Write "[" & strNO & "]は不正な入力です" Exit Sub '<--Exit Subを使用してここでプログラムを抜ける End If 'コンピュータの手を決定 Randomize ' 乱数発生ルーチンを初期化します。 nCON = Int((3 * Rnd) + 1) '1 から 3 までの乱数を発生させます。 '結果判断と表示 'ユーザーの手を表示する nPC = CInt(strNO) 'CInt関数で数値型に変換する Response.Write USER_NAME & "さんの手は、" Response.Write strTE(nPC) & "です<br>" '(*3)ここでnPC番目を表示 '(*4)同様にコンピュータの手を表示する Response.Write "コンピュータの手は" & strTE(nCON) & "です<br>" '結果の判断 ' グー(1) チョキ(2) パー(3) ←コンピュータの手 'グー(1) 2引き分け 1勝ち 3負け 'チョキ(2) 3負け 2引き分け 1勝ち 'パー(3) 1勝ち 3負け 2引き分け '↑自分の手 '勝負の結果表を作る strCHK = Array( "", Array( 0, 2, 1, 3 ), _ Array( 0, 3, 2, 1 ), _ Array( 0, 1, 3, 2 ) ) '結果を代入 nMSGNO = strCHK(nPC)(nCON) '結果表の値を代入 '結果のメッセージを表示する(メッセージ番号を使用して) Response.Write strMSG(nMSGNO) End Sub/* * 4.終わりの挨拶 </HTML> */
今回は、 クッキーを使用して、ユーザー名の保存 そんなサンプルプログラムでした。 何かの参考となれば幸いです。 素朴な疑問やリクエスト、クレームなどがあったら、 掲示板 : http://www.ken3.org/cgi-bin/bbs/asp/wforum.cgi に気軽に書き込んでください。 ASP、VBScript勉強中の三流プログラマーのKen3でした。
No.67 | 2003/06/30 FileSystemObjectの.GetFolderを使用 |
[ページTOPへ戻る] |
<FileSystemObjectの.GetFolderを使用>
こんにちは、三流プログラマーのKen3です。 今回は、 ファイル一覧を表示してみたいと思います。
(ディレクトリ内のファイル一覧を表示する)/* * 1.今回のキッカケ */
いつものように、検索で、 ASP ファイル一覧 で検索すると、 VBA系のDir関数がひっかかります(笑) 今回は、苦情メールもらっていないけど、 ASPでサーバー上のファイル一覧を取ってみたいと思います。/* * 2.FileSystemObjectの.GetFolderを使用 */
いつもの、いきなりサンプルを掲載する http://www.ken3.org/cgi-bin/test/test067-1.asp でテスト可能です。 <%@LANGUAGE=VBScript%> <html> <head> <title>ディレクトリ内のファイル一覧表示 FileSystemObjectの.GetFolder</title> </head> <body> <!-- Ken3 --><!-- #include file="info.inc" --> <h2>ディレクトリ内のファイル一覧を表示する<br>FileSystemObjectの.GetFolder</h2> FileSystemObjectの.GetFolderを使用して、ファイルの一覧を取得してみます<br> まずは、今のフォルダーが知りたいので(自分のHD上の位置)<br> Server.MapPath(".")とドットを指定すると<br> [<%=Server.MapPath(".")%>]とフォルダー名が取得できます<br> <br> 次は、.GetFolderを使用して、フォルダーオブジェクトを取得します<br> For Each OBJ In .Files でファイルのコレクションにアクセスします。<br> ※下記の実行結果とソースを見てください。<br> <hr> <% '*1 FileSystemObjectを生成します、、って英文、そのままジャン。 Set objFS = Server.CreateObject("Scripting.FileSystemObject") '*2 フォルダーの名称を取り出す strFDIRNAME = Server.MapPath(".") 'フォルダー名取得 Response.Write strFDIRNAME & "のファイル一覧です<br>" & vbCRLF '*3 .GetFolderで、フォルダーオブジェクトを取得します Set objDIR = objFS.GetFolder(strFDIRNAME) '*4 .Filesコレクションにアクセスする For Each objFILE In objDIR.Files strFNAME = objFILE.Name '取り出したobjFILEの.Nameを取得 If Right(strFNAME, 4) = ".asp" Then '.ASPならリンクを作る Response.Write "<a href='" & strFNAME & "'>" Response.Write strFNAME & "</a>" & vbTab Else Response.Write strFNAME & vbTab End If 'おまけで更新日の表示 Response.Write objFILE.DateLastModified & "<br>" & vbCRLF Next %> <hr> </body> </html>/* * 3.簡単な解説 */
'*1 FileSystemObjectを生成します、、って英文、そのままジャン。 Set objFS = Server.CreateObject("Scripting.FileSystemObject") まずは、File処理基本の窓口、FileSystemObjectを作成します。 窓口って表現が適切かわからないけど、入り口のオブジェクトです。 次は、フォルダーの名前がほしかったので、 '*2 フォルダーの名称を取り出す strFDIRNAME = Server.MapPath(".") 'フォルダー名取得 Response.Write strFDIRNAME & "のファイル一覧です<br>" & vbCRLF と Server.MapPath(".") で、現在位置を取り出します。 取り出したフォルダー名を.GetFolderへ引数で渡し、 '*3 .GetFolderで、フォルダーオブジェクトを取得します Set objDIR = objFS.GetFolder(strFDIRNAME) 今度は、フォルダーのオブジェクトを取得します。 フォルダーのオブジェクトが取得できたら、 For Each objFILE In objDIR.Files で、フォルダーオブジェクトから、ファイルのオブジェクトを取り出します。 '*4 .Filesコレクションにアクセスする For Each objFILE In objDIR.Files strFNAME = objFILE.Name '取り出したobjFILEの.Nameを取得 If Right(strFNAME, 4) = ".asp" Then '.ASPならリンクを作る Response.Write "<a href='" & strFNAME & "'>" Response.Write strFNAME & "</a>" & vbTab Else Response.Write strFNAME & vbTab End If 'おまけで更新日の表示 Response.Write objFILE.DateLastModified & "<br>" & vbCRLF Next あとは、取り出したファイルオブジェクトの ..Name で、ファイル名 ..DateLastModified で、更新日 を取り出し、画面に表示してます。 それだけだと、味気ないので、 Right関数で後ろから4文字取り出し、 ..aspだったら、リンクのタグ処理を行いました。 意外と今回も簡単にフォルダー内のファイル一覧を取得することが出来ました。 http://www.ken3.org/cgi-bin/test/test067-1.asp でテスト可能です。 -【けんぞう!】--------------------------------------------------------- 転職関係、在宅プログラマー、SOHOの広告まとめました http://www.ken3.org/etc/500yen/zaitaku.html いろいろとあるので転機の人はぜひ 『だだ、広告料稼ぎたいだけだろ、紹介料300円〜1500円の小金稼ぎ』 ギクっ、、、バレた(笑)登録料無料、匿名で探せるので在宅で小金稼ぎの人も見てね ------------------------------------------------------------------------/* * 4.終わりの挨拶 </HTML> */
今回は、 FileSystemObjectの.GetFolderを使用して、 フォルダーのオブジェクトを取得、 For Each objFILE In objDIR.Filesでファイル単位にまわし、 ファイルの一覧を表示してみました。 そんなサンプルプログラムでした。 何かの参考となれば幸いです。 素朴な疑問やリクエスト、クレームなどがあったら、 掲示板 : http://www.ken3.org/cgi-bin/bbs/asp/wforum.cgi に気軽に書き込んでください。 ASP、VBScript勉強中の三流プログラマーのKen3でした。
No.68 | 2003/07/01 DBでユーザー管理、ログイン処理(復習で作成) |
[ページTOPへ戻る] |
<DBでユーザー管理、ログイン処理(復習で作成)>
こんにちは、三流プログラマーのKen3です。 今回は、 DBへユーザー情報を登録、 そのデータを使用して、ログイン処理を実行。 そんなサンプルを復習で作ってみます。/* * 1.今回のキッカケ */
No.35 パスワードの入力画面 http://www.ken3.org/backno/backno_asp08.html#35 では、 単に、 パスワード:<INPUT TYPE="password" NAME="pass" SIZE="12"> ポイントは、TYPE="password"です。 なんて、感じで、入力フォームのことを書いてました。 が、普通、パスワード管理と言えば、 ユーザーマスターがあり、IDとパスワードのチェックです。 なんてクレームは来てないけど、 今回、DBにIDとパスワードを保存しておき、 普通のログイン処理を作成してみたいと思います。/* * 2.テーブルの作成 と ログイン画面(入り口)HTMLを作る */
ユーザー管理、よく見かけるパターンが、 ユーザーID : [ Ken3 ] パスワード : [ 1234 ] ニックネーム [ 三流PG ] ・ ・ です。 せっかくDB化しても、DBを見つけられて、発覚。 なんてこともありますが、 今回はテストなので、そこまでは気にしないで、 普通に作成してみます。 ※パスワードの扱いは、注意が必要です。 軽い気持ちはこのメルマガだけにしてくださいね。 データベース名は、db068.mdb テーブルは、t_user フィールドは、 userid ユーザーID 最大12桁 password パスワード 最大12桁 username ユーザー名 最大20文字 point ポイント long lastlogin ログイン日時 date型 と、データベースとテーブルを作成します。 初期画面に userid [ ___________ ] password [ ___________ ] ログイン(ボタン) 新規ユーザー登録(リンク) を作成する。 ログインボタンが押されたら、 test068-1.asp(login.asp)を呼び出し、userid,passwordのチェックを行う。 エラーの時は、メッセージを表示して、再度ログインさせる。 正常時、セッション変数にuseridとユーザー名、ポイントを保存。 lastloginの日時を更新する 新規ユーザー登録のリンクがクリックされたら、 test068-2.asp(adduser.asp)を起動する。 userid [ ___________ ] password [ ___________ ] ユーザー名 [ ____________ ] を入力させる。 useridが重複していないかチェックを行い、エラー時は、再度入力させる。 さてと、まずは、入り口 test068.html(index.html)を作成しますか。 <html> <head> <title>けんぞうのへんてこな世界へようこそ</title> </head> <body bgcolor=#ffffff text=#000000> <center> <h2>けんぞうのへんてこな世界へようこそ</h2> <br> <table bolder=1> <FORM ACTION="test068-1.asp" METHOD="POST"> USER ID:<INPUT TYPE="text" NAME="userid" SIZE="12"><br> パスワード:<INPUT TYPE="password" NAME="pass" SIZE="12"><br> <INPUT TYPE="submit" VALUE="ログイン"> <INPUT TYPE="reset" VALUE="クリア"> </FORM> </table><br> <a Href="test068-2.asp" TARGET="_top">新規ユーザー登録</a><br> </center> </body> </html> 就職活動向けのHPだったら、 入り口をキレイに作ったほうがいいですよ。 ポイントは、 ~~~~~~~~~~ フォームの パスワード:<INPUT TYPE="password" NAME="pass" SIZE="12"><br> と、TYPE="password"ぐらいかなぁ。 あとは、 test068-1.asp が ログイン処理 test068-2.asp が 新規ユーザー追加処理です http://www.ken3.org/cgi-bin/test/test068.html でテスト可能です。/* * 3.新規ユーザーの追加 */
まずは、新規ユーザーの追加から、作成してみます。 test068-2.asp ここに、2つの機能を持たせてみます。 1つは、ID、パスワード、名前の入力 もう1つは、実際にDBへ登録する処理です。 機能の切り替えは、MODEのパラメータ、 パラメータが何も無ければ、入力処理、 MODE="ADDNEW"だったら、データチェックと追加処理にします。 少し、ダラダラと長いけど、ソースから掲載。 <%@LANGUAGE=VBScript%> <html> <head> <title>新規ユーザーの追加処理</title> </head> <body bgcolor=#ffffff text=#000000> <!-- Ken3 --><!-- #include file="info.inc" --> <h1>新規ユーザーの追加処理</h1> <% Call START()%> <HR> <!-- Ken3 --><% Call OUT_SRC("") 'ソースの表示関数を呼ぶ %> <!-- Ken3 --><!-- #include file="inc_mokuji.inc" --> </body> </html> <!-- Ken3 --><!-- #include file="out_src.inc" --> <%
Sub START() If Request("mode") = "addnew" Then ret = USERCHK() 'ユーザーを重複チェックする If ret = 0 Then 'データを追加する Call add_data() 'MDBへ追加する Response.Write "<hr>" Response.Write "正常終了<br>" Response.Write "<h2>作成が終了しました</h2><br>" Response.Write "テストを兼ねてログインしてみてください<br>" Response.Write "<a Href='test068.html'>ログイン処理へ戻る</a><br>" Else Response.Write "<hr><font color='red'><b>" Response.Write "ユーザーIDが重複してます</b></font><br>" Response.Write "<b>再度データを入力してください</b><br>" Call input_data() 'データの入力 Response.Write "<a Href='test068.html'>戻る</a><br>" End If Else Call input_data() 'データの入力 End if End Sub
Sub add_data() 'マスターへデータを追加する 'ADO DB Connection オブジェクトを作成する、英文そのままじゃん Set db=Server.CreateObject("ADODB.Connection") 'データアクセスにはJet.OLEDB.4.0を使うことを設定 db.Provider = "Microsoft.Jet.OLEDB.4.0" '次に、接続DBの位置を渡すので、Server.MapPathで変換して渡す db.ConnectionString = Server.MapPath("db068.mdb") 'やっとデータベースを開ける db.open 'SQL文を作る strSQL = "INSERT INTO t_user" strSQL = strSQL & "(userid, [password], username, lastlogin) VALUES(" strSQL = strSQL & "'" & Request.Form("userid") & "'" strSQL = strSQL & " , '" & Request.Form("pass") & "'" strSQL = strSQL & " , '" & Request.Form("username") & "'" strSQL = strSQL & " , #" & now & "#" strSQL = strSQL & ")" 'strSQL = "INSERT INTO t_user(userid) Values('ZZZZ')"を発行したい Response.Write "発行するSQL=" & strSQL & "<hr>" 'SQL文の発行 db.Execute(strSQL) db.Close 'データベースも閉じようよ Set db = Nothing 'お行儀よくオブジェクトも開放しましょう End Sub
Function USERCHK() 'ユーザーが存在するかチェックする 'ADO DB Connection オブジェクトを作成する、英文そのままじゃん Set db=Server.CreateObject("ADODB.Connection") 'データアクセスにはJet.OLEDB.4.0を使うことを設定 db.Provider = "Microsoft.Jet.OLEDB.4.0" '次に、接続DBの位置を渡すので、Server.MapPathで変換して渡す db.ConnectionString = Server.MapPath("db068.mdb") 'やっとデータベースを開ける db.open 'SQL文を作る strSQL = "Select * From t_user " 'ユーザーマスター(*)セレクト strSQL = strSQL & "WHERE userid = '" & Request.Form("userid") & "' " 'お約束のレコードセットの作成 SQL文の発行 Set rs = db.Execute(strSQL) 'ユーザーIDが存在したか? If rs.EOF = True Then 'データ無しの時 USERCHK = 0 'データが無いので、チェックはOKです。 Else USERCHK = -1 'データがあったので、エラーをセットする End If rs.Close '開いていたレコードセットを閉じる db.Close 'データベースも閉じようよ Set db = Nothing 'お行儀よくオブジェクトも開放しましょう End Function%> ポイントは ~~~~~~~~~~ 特に無いんだけど(オイオイ)、 私がハマったヶ所を恥ずかしいけど暴露します。 発行するSQL= INSERT INTO t_user(userid, password, username, lastlogin) VALUES('ABC' , 'abc' , 'ZZZ' , #2003/07/01 23:08:20#) ------------------------------------------------------ Microsoft JET Database Engine エラー '80040e14' INSERT INTO ステートメントの構文エラーです。 /cgi-bin/test/test068-2.asp, 行 67 おいおい、どこが間違っているの? と思うけど、怪しいのが、 passwordって単語なんですね。 'SQL文を作る strSQL = "INSERT INTO t_user" strSQL = strSQL & "(userid, [password], username, lastlogin) VALUES(" strSQL = strSQL & "'" & Request.Form("userid") & "'" と、 [password]単語を[]囲い、フィールド名ですよ、 なんて指定が必要なんですね。 どこがエラーなのか、、、ハマりました。 フィールド名に必ずF_XXXとやっている人は、ひっかからないエラーでした。 あとの流れは、入力データのチェックはDBを読みに行って、 同じIDで登録されているかをチェックする簡単な処理 と ハマった、InsertのSQLを発行しただけでした。 これで、データの新規登録ができたので、 次は、ログイン処理を作成します。
Sub input_data() 'データ入力フォームの表示 Response.Write "<table bolder=1>" Response.Write "<FORM ACTION='test068-2.asp' METHOD='POST'>" Response.Write "<INPUT type='hidden' NAME='mode' VALUE='addnew'>" Response.Write "USER ID:<INPUT TYPE='text' NAME='userid' SIZE='12'><br>" Response.Write "パスワード:<INPUT TYPE='password' NAME='pass' SIZE='12'><br>" Response.Write "お名前:<INPUT TYPE='text' NAME='username' SIZE='20'>" Response.Write "<BR>" Response.Write "<INPUT TYPE='submit' VALUE='登録'>" Response.Write "<INPUT TYPE='reset' VALUE='クリア'>" Response.Write "</FORM>" Response.Write "</table>" End Sub/* * 4.ログインの処理 */
さてと、登録が出来たら、今度はログインの処理ですね。 test068-1.asp これも、長いけど、 ポイントは、データをチェックするSQLを発行しているぐらいかなぁ。 <%@LANGUAGE=VBScript%> <html> <head> <title>ユーザー管理処理</title> </head> <body bgcolor=#ffffff text=#000000> <!-- Ken3 --><!-- #include file="info.inc" --> <h1>ユーザー管理処理</h1> <% Call START()%> <HR> <!-- Ken3 --><% Call OUT_SRC("") 'ソースの表示関数を呼ぶ %> <!-- Ken3 --><!-- #include file="inc_mokuji.inc" --> </body> </html> <!-- Ken3 --><!-- #include file="out_src.inc" --> </body> </html> <%
Sub START() ret = USERCHK() 'ユーザーをチェックする if ret = 0 then Response.Write "<hr>" Response.Write "正常終了<br>" Response.Write "<h2>無事ログインできました</h2><br>" end if if ret = -1 then Response.Write "<hr><font color='red'>" Response.Write "<b>ユーザーIDが登録されてません</b></font><br>" Call rlogin() end if if ret = -2 then Response.Write "<hr><font color='red'>" Response.Write "<b>パスワードが違います</b></font><br>" call rlogin() end if End Sub
Function USERCHK() 'ADO DB Connection オブジェクトを作成する、英文そのままじゃん Set db=Server.CreateObject("ADODB.Connection") '.Provider?プロバイダー?通信会社?じゃなくって 'データアクセスにはJet.OLEDB.4.0を使うことを設定 db.Provider = "Microsoft.Jet.OLEDB.4.0" '次に、接続DBの位置を渡すので、Server.MapPathで変換して渡す db.ConnectionString = Server.MapPath("db068.mdb") 'やっとデータベースを開ける db.open 'SQL文を作る strSQL = "Select * From t_user " 'ユーザーマスター(*)セレクト strSQL = strSQL & "WHERE userid = '" & Request.Form("userid") & "' " 'お約束のレコードセットの作成 SQL文の発行 Set rs = db.Execute(strSQL) 'ユーザーIDが存在したか? If rs.EOF = True Then 'データ無しの時 USERCHK = -1 rs.Close '開いていたレコードセットを閉じる db.Close 'データベースも閉じようよ Set db = Nothing 'お行儀よくオブジェクトも開放しましょう Exit Function End If 'パスワードのチェック If rs.Fields.Item("password") <> Request.Form("pass") Then USERCHK = -2 rs.Close '開いていたレコードセットを閉じる db.Close 'データベースも閉じようよ Set db = Nothing 'お行儀よくオブジェクトも開放しましょう Exit Function End If USERCHK = 0 '正常 'データの表示を行う Response.Write "<H2>" Response.Write rs.Fields("username") Response.Write "さん、ようこそ</H2>" Response.Write "<HR>" Response.Write "現在のポイントは、" Response.Write rs.Fields("point") & "ポイントです。<br>" Response.Write "前回ログイン時刻は" Response.Write rs.Fields("lastlogin") Response.Write "でした。<br>" Response.Write "<h2>会員メニューなどを表示する</h2>" Response.Write "<h2>工事中(笑)</h2>" rs.close '更新用のSQL文を作る、ログイン毎に1ポイント追加 と ログイン時刻を更新 strSQL = "UPDATE t_user " 'ユーザーマスター更新する strSQL = strSQL & " Set point = point + 1" strSQL = strSQL & ", lastlogin = #" & Now & "#" strSQL = strSQL & " WHERE userid = '" & Request.Form("userid") & "' " 'SQL文の発行 db.Execute(strSQL) db.Close 'データベースも閉じようよ Set db = Nothing 'お行儀よくオブジェクトも開放しましょう End Function%> ポイントは ~~~~~~~~~~ 送られてきたユーザーIDとパスワードをチェックして、 結果をリターン値で返してます。 http://www.ken3.org/cgi-bin/test/test068.html でテスト可能です。 遊んでみてください。 -【けんぞう!】--------------------------------------------------------- 転職関係、在宅プログラマー、SOHOの広告まとめました http://www.ken3.org/etc/500yen/zaitaku.html いろいろとあるので転機の人はぜひ 『だだ、広告料稼ぎたいだけだろ、紹介料300円〜1500円の小金稼ぎ』 ギクっ、、、バレた(笑)登録料無料、匿名で探せるので在宅で小金稼ぎの人も見てね ------------------------------------------------------------------------
Sub rlogin() '再ログイン処理 Response.Write "<table bolder=1>" Response.Write "<FORM ACTION='test068-1.asp' METHOD='POST'>" Response.Write "<INPUT type='hidden' NAME='mode' VALUE='login'>" Response.Write "USER ID:<INPUT TYPE='text' NAME='userid' SIZE='20'><br>" Response.Write "パスワード:<INPUT TYPE='password' NAME='pass' SIZE='20'>" Response.Write "<BR>" Response.Write "<INPUT TYPE='submit' VALUE='ログイン'>" Response.Write "<INPUT TYPE='reset' VALUE='クリア'>" Response.Write "</FORM>" Response.Write "</table>" End Sub/* * 5.終わりの挨拶 </HTML> */
今回は、 ログイン処理のサンプルを駆け足で説明しました。 一番ためになったのは、[]で予約語は囲うってことかなぁ。 何かの参考となれば幸いです。 素朴な疑問やリクエスト、クレームなどがあったら、 掲示板 : http://www.ken3.org/cgi-bin/bbs/asp/wforum.cgi に気軽に書き込んでください。 ASP、VBScript勉強中の三流プログラマーのKen3でした。
No.69 | 2003/07/04 FileSystemObjectの.GetTempName(一時ファイル名作成) |
[ページTOPへ戻る] |
<FileSystemObjectの.GetTempName(一時ファイル名作成)>
こんにちは、三流プログラマーのKen3です。 今回は、 FileSystemObjectの.GetTempName を使用して、テンポラリファイルを作成してみます。/* * 1.今回のキッカケ */
一時的な作業ファイルを作成する時、どうするのだろう? と探っていたら、 FileSystemObjectの.GetTempName を見つけたので、サンプルを作ってみます。/* * 2.FileSystemObjectの.GetTempName */
使い方は、簡単で、 '*1 FileSystemObjectを生成します、、って英文、そのままジャン。 Set objFS = Server.CreateObject("Scripting.FileSystemObject") と、 ファイルシステムのオブジェクトを作成してから、 '*2 .GetTempNameを使用して、一時ファイル名を作成する strTEMPNAME = objFS.GetTempName '.GetTempNameを使用してリターン値をもらう たんに、 objFS.GetTempName とやるだけで、一時ファイルのファイル名を取得できます。 私が勘違いしてたんだけど、 .GetTempName って、ファイル名を返してくれるだけで、実際のファイルは作成されません(笑) なので、自分で、.CreateTextFileなどで作成します。 ※同時に作られるかと思っていたけど、 ディレクトリがあるよねよく考えたら。 システムのデフォルトに捨てファイルを作ってくれるかと大きく勘違い。 あっ、あと、一時ファイルなんだけど、自動的にファイルは消えないので、 自分で消さないと、ゴミが貯まるよ(笑) *平和な私は、一時エリアにファイルを勝手に作り、 ASP終了後、勝手に消えると思ってた(予想したけど) 実際は、ファイル名だけ作ってくれるので、そこから先はご自分で(爆) http://www.ken3.org/cgi-bin/test/test069-1.asp で、テスト可能です。 下記が使用サンプルです、 .GetTempNameでファイル名取得後、テキストファイル作成、中身に時刻を書く。 ファイル閉じた後、ディレクトリの一覧を確認で表示してます。 実行結果とあわせて、ソースを確認してください。 <%@LANGUAGE=VBScript%> <html> <head> <title>FileSystemObjectの.GetTempName(一時ファイル名を作成する)</title> </head> <body> <h2>一時ファイル名を作成する<br>FileSystemObjectの.GetTempName</h2> <b>FileSystemObjectの.GetTempName</b>を使用して、一時ファイル名を取得してみます<br> <br> .GetTempNameを使用すると、一時ファイルの名称を作成してくれます。<br> あとは、その名称を使用して、ファイルを作成します<br> (自動的にファイルは作られないので注意してください)<br> ※下記の実行結果とソースを見てください。<br> <hr> <% '*1 FileSystemObjectを生成します、、って英文、そのままジャン。 Set objFS = Server.CreateObject("Scripting.FileSystemObject") '*2 .GetTempNameを使用して、一時ファイル名を作成する strTEMPNAME = objFS.GetTempName '.GetTempNameを使用してリターン値をもらう Response.Write ".GetTempNameで作成した名称[<b>" & strTEMPNAME & "</b>]<br>" '現在のフォルダーから相対位置のworkディレクトリの名称を取り出す strFDIRNAME = Server.MapPath("work/") 'フォルダー名取得 'work/xxxxのファイルを作成して、テストデータを書き込む Response.Write strFDIRNAME & "\" & strTEMPNAME & "を作成<br><br>" Set objTEXTFILE = objFS.CreateTextFile(strFDIRNAME & "\" & strTEMPNAME) objTEXTFILE.WriteLine "現在時刻は" & Now() objTEXTFILE.WriteLine "テンポラリファイルのテストでした(笑)" objTEXTFILE.Close Set objTEXTFILE = Nothing '確認でファイルリストの表示.GetFolderで取得後、一覧表示 Response.Write strFDIRNAME & "のファイル一覧です<br>" & vbCRLF Set objDIR = objFS.GetFolder(strFDIRNAME) '.Filesコレクションにアクセスする For Each objFILE In objDIR.Files strFNAME = objFILE.Name '取り出したobjFILEの.Nameを取得 If strFNAME = strTEMPNAME Then Response.Write "<b>" Response.Write "<a href='work/" & strFNAME & "'>" Response.Write strFNAME & "</a>" & vbTab 'おまけで更新日の表示 Response.Write objFILE.DateLastModified & "<br>" & vbCRLF If strFNAME = strTEMPNAME Then Response.Write "</b>" Next %> <hr> </body> </html> -【けんぞう!】--------------------------------------------------------- 転職関係、在宅プログラマー、SOHOの広告まとめました http://www.ken3.org/etc/500yen/zaitaku.html いろいろとあるので転機の人はぜひ 『だだ、広告料稼ぎたいだけだろ、紹介料300円〜1500円の小金稼ぎ』 ギクっ、、、バレた(笑)登録料無料、匿名で探せるので在宅で小金稼ぎの人も見てね ------------------------------------------------------------------------/* * 3.終わりの挨拶 </HTML> */
今回は、 一時ファイルの作成のサンプルでした。 ※一時ファイルを使うような大きなシステムを作らないとなぁ。。。 何かの参考となれば幸いです。 素朴な疑問やリクエスト、クレームなどがあったら、 掲示板 : http://www.ken3.org/cgi-bin/bbs/asp/wforum.cgi に気軽に書き込んでください。 ASP、VBScript勉強中の三流プログラマーのKen3でした。
三流解説を読んでいただき、どうもです。ここから下は、三流君宛のメッセージ送信や 三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、※質問や感想は、気軽に送ってくださいね。
まぁ、基本はデータの受け取りかなぁ。
・[Form等を使用したデータのやり取り]・・・ASPと言っても、HTMLの入力フォームからデータを受け取ります。POSTやGETでやりとりを押さえますか。
次は、データの入出力 で ADOを使った(ADOで接続) と SQLの解説を少々
・[ADOでMdbファイルを使う]・・・MDBと接続して、簡単な追加・更新・削除を行った。
・[ADOでExcelと接続してみた]・・・.xlsと接続してSQLを使ってみた。
・[ADOでCSVと接続してみた]・・・.CSV テキストを読み出した。※更新・削除はできません
DBが使えるので、あまり使用しないけど、普通のテキストファイル処理
・[テキストファイル処理]・・・ファイルを開いて、書き込む。1行読み込みなどを軽く
VBScriptでFormat関数が無いなど、微妙にVBAと違うけど
[VBScript関数関係の説明]・・・少し、処理を書いてみた。
[その他処理サンプル]・・・あまり良いサンプル作れなかったけど。。。
何かの参考となれば幸いです。
ニガテな環境設定系など
[Win2003 Server に IIS を Setup]・・・ポイントの無い、ほぼ一本道解説だけど。
[IIS 仮想ディレクトの作成とASP動作TEST]・・・Web拡張でASPを有効にしただけです。
Blog:[三流君の作業日記]/ [サンプルコードのゴミ箱]/ 広告-[通販人気商品の足跡]
質問や要望など連絡方法でお互い確認が取りやすく、便利なのが掲示板なのですが、私の対応のまずさから不定期で荒れてしまい、掲示板は現在封鎖中です。(反省しなきゃ)
感想や質問・要望・苦情など 三流君へメッセージを送る。
時間的余裕のある要望・質問・苦情の場合は、下記のフォームからメッセージを送ることができます。