竹形誠司 ブログ
ご質問    »トピック一覧
掲示板へのスパムが多いため、「ご質問」のコーナーはユーザー登録制とさせていただきました。お手数ですが、上の「新規ユーザーの登録」メニューより登録をお願いします。
帳票Web
アプリケーション

受注開発始めました
詳しくは こちら
竹形 誠司 著/ラトルズ刊
JSP帳票アプリケーション実践開発入門
JSP帳票アプリケーション
実践開発入門

JSP業務アプリケーション短期開発入門
JSP業務アプリケーション
短期開発入門

Java+MySQL+Tomcatで始めるWebアプリケーション構築入門
Java+MySQL+Tomcatで始めるWebアプリケーション構築入門

Java+MySQL+Tomcatで作る掲示板とブログ
Java+MySQL+Tomcatで作る
掲示板とブログ
ブログで、
by 目がイタイ![thethe]
何度も、質問で失礼ですが・・・。

今、解決したい問題が2つあります。

複数のユーザー毎に適切な内容を表示させるようにすると、

(1)
  5つ項目がmakeList()で作成されます。
  ここで、表示されたものどれか1つをクリックした 
  だけで、前のページに切り替わってしまう問題。

(2)
  次のページ(一番新しい記事)を表示すると、
  自他構わず、一番新しい記事が表示されてしまう問題。

一応以下の件、取り組んでみたのですが、
「getTopArticleId()のSQL文でWHEREを使って条件を絞り込めばよいと思います。」

どうも、よく分かりません。
whereでidを取得できたら、いいのかなと、思ったのですが、
getメソッドの中に更にゲットメソッドを入れるようになってしまうので駄目でした。

以下がやってみたが、駄目だった例です。
どうしてもクリアしたいので、もう少しお知恵をお貸し頂けないでしょうか?

宜しくお願い致します。

getTopArticleId(int intIdArg)で

"SELECT * FROM client_profile JOIN user ON client_profile.auth_id=user.auth_id where user.id=" + intIdArg + "ORDER BY date_time DESC LIMIT"+ (this.intPage-1)*this.intLimit + ",1" ;





投稿:目がイタイ![thethe]/2006年 10月 10日 20時 03分 /更新:2006年 10月 10日 20時 04分
RE:ブログで、
by 竹形 誠司[takegata]
「getメソッドの中に更にゲットメソッドを入れる」というのがどのような
状況なのか良く分からないのですが、

"SELECT * FROM client_profile JOIN user ON client_profile.auth_id=user.auth_id where user.id=" + intIdArg + "ORDER BY date_time DESC LIMIT"+ (this.intPage-1)*this.intLimit + ",1" ;

where user.id=" + intIdArg
のintIdArgにはユーザのIDを指定しているのでしょうか。それならば、この
方法でいいように思います。

それと、ORDER BYの前やLIMITの後はスペースを入れないとSQLのエラーになる
ような気がしますが、だいじょうぶでしょうか。

私の著書のコードの話であれば、著書名とページを書いて頂けると助かります。
また、独自に書かれたコードの場合は、長くなっても結構ですので、全体を貼り付けて頂くか、またはこの掲示板のファイル添付機能を使ってみていただければと思います。
投稿:竹形 誠司[takegata]/2006年 10月 10日 20時 30分 /更新:2006年 10月 10日 20時 32分
RE:ブログで、
by 目がイタイ![thethe]
添付した内容で、一応他人が入力したデータは
一切表示されることは、なくなりましたが、
あまり、使いやすいシステムではありません。

未だに全く検討のつかない問題は(1)の項目で、
リストアップされた記事のどれか一つをクリックした
だけで、過去の投稿ページに飛んでしまうという内容が
解決できません。



投稿:目がイタイ![thethe]/2006年 10月 13日 19時 47分 /更新:2006年 10月 13日 19時 47分
RE:ブログで、
by 竹形 誠司[takegata]
リストアップされた記事のどれか一つをクリックした
だけで、過去の投稿ページに飛んでしまうという内容が
解決できません。
ちょっとよくわからないので、もう少し詳しく説明していただけま
すか?リストアップされた記事をクリックするとその記事が表示さ
れるのではないのでしょうか?添付されたコードも見てみましたが、
どのような動作を意図しているのかよく分かりませんでした。
投稿:竹形 誠司[takegata]/2006年 10月 13日 23時 42分 /更新:2006年 10月 13日 23時 43分
RE:ブログで、
by 目がイタイ![thethe]
(1)リストアップされている記事は5つごとにページ分けされるようになっていますので、普通なら、「前のページ」などをクリックして6つ目の記事が見れるわけですが。

何故か、リストアップされた(たとえば2番目の記事を)クリックしただけで飛ぶはずのない「前のページ」へ飛びます。が、内容はその記事が出る、といった不安定な状況が問題点です。

--------------------------------------------------------
コードで変更した点は、「前のページ」「次のページ」をクリックした際にidを指定(できない。test.jsp?page=2?id=10等ではページが表示できないため)していないため他人の記事が表示されてしまいます。そこで、投稿者のみの記事が表示されるように改造しました。(「前のページ」のとこには5つリストアップされた次の投稿のidを取得するようにしました)。

解決したい点は、(1)と、「次のページ」(新しい記事のページ)の部分で、5つリストアップされた6つ前?のidを取得することで、上手くいくのかな?といった点です。


投稿:目がイタイ![thethe]/2006年 10月 14日 00時 42分 /更新:2006年 10月 14日 01時 13分
RE:ブログで、
by 竹形 誠司[takegata]
String strId = request.getParameter("id");
String strPage = request.getParameter("page");
if(strPage != null){
    intPage=Integer.parseInt(strPage);
    diaryArticleList.setPage(intPage);
    intId = diaryArticleList.getTopArticleId();
}else if(strId!=null){
    intId=Integer.parseInt(strId);
    intPage=diaryArticleList.getPageFromId(intId);
    diaryArticleList.setPage(intPage);
}else{
    intPage = 1;
    diaryArticleList.setPage(intPage);
    intId = diaryArticleList.getTopArticleId();
}
このあたりの問題ですね。
パラメータにidが指定されていた場合は、そのidの記事が何ページ目に位置するかを計算する必要があります。この計算をしているのがgetPageFromIdメソッドですね。このメソッドも、他のメソッドと同様にユーザIDを考慮するように修正する必要があるのではないでしょうか。
投稿:竹形 誠司[takegata]/2006年 10月 14日 04時 30分 /更新:2006年 10月 14日 04時 31分