WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:ブラウザ上に表示されたデータベースから特定のデータの数を取得

0:[投稿] ティアナ・ノーグ [2005/02/10 22:36 ][環境:WinXP Tomcat4.0.6]

初めまして。よろしくお願いします。

例えば

問題 a b c d e f
1   ○ ○ × ○ × ×
2     × × ○ × ○ ○

このようにブラウザ上に表示されているとします。
上のような状態から○の数を取得して表示するようなプログラムを作りたいのです。
取得するときは行ごとに数を取得して、どんどん足していくようにしたほうがよいのでしょうか?
アドバイスをよろしくお願いします。

ちなみに上記のような表をブラウザ上に表示するプログラムは出来ています。


1:[お知らせ] ティアナ・ノーグ [2005/02/10 22:45 ]

私の開発環境は
OS:WinXP
Java:j2sdk1.4.2
Server:Tomcat4.0.6
DB:ACCESS2003

です


2:[回答] 森田 [2005/02/11 14:33 ]

select count(*) from 問題 where a = '○';
select count(*) from 問題 where b = '○';
select count(*) from 問題 where c = '○';
select count(*) from 問題 where d = '○';
select count(*) from 問題 where e = '○';
select count(*) from 問題 where f = '○';
このそれぞれを合計するか

select sum(
        case a when '○' then 1 else 0 end +
        case b when '○' then 1 else 0 end +
        case c when '○' then 1 else 0 end +
        case d when '○' then 1 else 0 end +
        case e when '○' then 1 else 0 end +
        case f when '○' then 1 else 0 end
        'tokuten')
      from 問題;
行毎に集計するか

テーブルの設計が良くない気がします。


3:[回答] ティアナ・ノーグ [2005/02/11 15:54 ]

回答ありがとうございます。

あの、我儘のようで申し訳ありませんが、私としてはJava Scriptで考えていった方がいくらか分かりやすいので(というか、SQLはほとんど分かっていないので)、そちらのほうの方々もご回答お願いします。

私の構想としては、
String s[] = 〜〜
のようにして、String s に行の値を格納し、
if(String s != null)
だったら、その配列のなかにある「○」の数を判定して出力する、という感じです。

countを使わねば出来ないように感じますが、どうなんでしょうか?

アドバイスをよろしくお願いします。


4:[回答] NintendoPSP [2005/02/11 17:54 ]

最近、質問の意図を読む、というは面白いなと思いながら書いています。
ティアナ・ノーグさんが、してみたいと思っている事は、
結果を表示するプログラムができあがったので、
表示済みであるページのテキストエリアを動的にJavaScriptで読み取りたいと考えたんだと思います。
方法がないわけではないのですが、IE4(Win)以降の特有の機能やDOMのテキストノードがサポートされているIE5.5/Mozillaエンジンなどのブラウザに限られてしまいます。

そこで、なのですが、
単純に考えると、このページを表示する前に問題を回答するページというものがあるのではないでしょうか?
(同一ページなら、かなり面白いJavaScriptになっていると思いますし。フレームで分けられている場合もあるかな?)

>ちなみに上記のような表をブラウザ上に表示するプログラムは出来ています。
この文章からすると、そのページからのポストを元に、今回の質問されたページを表示してるのだと思います。

ここまでが正しいのでしたら、
まず簡単なのが、すでにあるレポートを表示するプログラムで
正解数などを集計しておいて、
<input type="hidden" name="qa051" value="3">
<input type="hidden" name="qa086" value="4">
<input type="hidden" name="good"  value="7">
<input type="hidden" name="all"   value="12">
などを使用して、表示ページに埋め込んでおく方法です。

ただし、この方法だと、かなり改竄が容易なのです。
Javaをどのように使っているかわかりかねますが、
よくあるパターンなので、
1.質問のページでセッションを開き、
2.集計のプログラムでセッション変数に格納、
 この段階で、DBに登録するのが適切か考える
3.表示ページに用にhiddenで埋め込む
 動的にJavaScriptを作成するという手もある
4.表示しているページの内容からDBへポストするならセッションデータと矛盾がないか調べる。
5.改竄しているようなら、そのホストをリストに登録して、次からは・・・

工夫しだすとキリがないのですが、こんな感じはどうでしょうか?
JavaScriptをOffの場合など考慮すると良いかも、


5:[回答] NintendoPSP [2005/02/11 18:01 ]

自己満足で修正させてください。
<input type="hidden" name="qa051" value="3">
の上に
<input type="hidden" name="qalist" value="qa051,qa086">
を追加しておく、

>よくあるパターンなので、
の文章を
よくあるパターンで、
に変更

失礼しました。


6:[回答] ティアナ・ノーグ [2005/02/11 22:06 ]

>結果を表示するプログラムができあがったので、
表示済みであるページのテキストエリアを動的にJavaScriptで読み取りたいと考えたんだと思います。

この部分はちょっと違うのではないかと思ったので、改めて私がしたいことを書きますね。
ちなみにテキストエリアは使うことは考えていません。

問題のページがあってそこで解答を選択し、0のような表示するページにinsert into で追加。→その際に今まで追加してきたデータにあった○の数を集計して表示。→同ページ内で次の問題を選択してリンクでジャンプ。 以下繰り返し

という感じを考えています。

↑の感じでinput type=hidden使うといいんですか?hiddenは全く勉強していなかったので、勉強してきます。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World