[PHP-users 23122]Re: リスト画面の検索結果を詳細画面に維持する

Seto seto @ 1kg.jp
2004年 8月 28日 (土) 15:49:48 JST


 Setoです。

既読フラグというのは
そもそものデータが収められているテーブル
に存在しているのでしょうか?
つまり一人だけの未読/既読を管理していると?


いったん全て閲覧した後に
再度リスト画面を開くと未読件数0 という表示でよろしいんですか?


>実装した内容
>1.リスト画面の表示
> →既読フラグがないものを日付順にソートして表示、
>  GET変数として行番号を持っていく。
>2.詳細画面の表示
> →1と同様のSQLを投げる。
> →既読フラグを立てる

ここでテーブルに対してupdateをかけているということですね

> →mysql_resultの中にGET変数として持って来た行番号を入れる。

意味がちょっと理解できません

>2-1.次のレコード、前のレコ−ド
>  →行番号に対して1を足すものと、引く変数を作る。
>
>問題となっていること
>・詳細画面でもリスト画面の表示と同じSQL (既読フラグがなくて日付順)を投げて
>いるので、次のレコードへいって前のレコードに戻って来たとき、
>詳細画面の内容が表示されなくなる。(既読がフラグたっているので)

まずテーブルに既読フラグを立てた時間を管理するフィールドを追加
  ex. フィールド名:uptime

1.リスト画面を表示した日時を各画面に引き継げるようにしておいて
  (urlクエリ/hidden/session) ex. $listtime
2.詳細画面では
 ○詳細画面で発行するSQLの条件節には 1.の時間を追加指定する
      where 他の条件 and uptime<listtime
 ○既読フラグを立てるとともに
   フラグを立てた時間をテーブルに更新 updateクエリの発行


最初に書いた前提で考えましたが
その理解が間違っていたなら
 session変数とか利用する方法を考えればよさそうな気がします。

>思いついた改善案
>・リスト画面の検索結果をそのまま維持したい。
> →Resource id #〜をGET変数で渡そうとしたが、文字が化ける。
> →Resource id #〜に対してUrlEndodeをかけると、中身がなくなる。

最後に記載されている改善案についてもそうなんですけど
もう少し具体的に説明してもらうか一部でもソースを提示してもらったほうが
何をしているか解り易いです。

Junya Seto


PHP-users メーリングリストの案内