エントリーIDの表記について

「まったく何も分からない・・・」そんなユーザーさんの為のフォーラムです。どんなご質問でもお気軽にどうぞ。
返信
bingo
アクティブユーザー
記事: 10
登録日時: 2007年5月15日(火) 13:02

エントリーIDの表記について

投稿記事 by bingo » 2007年6月05日(火) 14:53

TIPS・活用事例にあります下記Tipsを再現したく思っております。

http://cms.al-design.jp/phpbb/viewtopic.php?t=156


そこで見よう見まねでそのまま記載のコードをコピーしたところ、確かに末尾番号のみを取得する事が出来たのですが、リンク先のURLに利用したい場合、末尾番号のみのIDでは意図する該当ページへはリンクされませんでした。

<xsl:value-of select="number(@id)" />

上記の他、変更箇所がございましたらご教授願います。

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

Re: エントリーIDの表記について

投稿記事 by webmaster » 2007年6月07日(木) 13:55

 bingoさん、ご質問ありがとうございます。

 ご質問内容について理解できたかどうか自信がないのですが、エントリ一覧画面と
エントリ詳細画面があって、一覧から詳細へのリンクを張りたい、というような
要望でしょうか。

 その場合、

コード: 全て選択

<a href="detai.php?eid={@id}">詳細へ</a>
 のようなコードでリンクを張ることが可能です。
 ただ、例の00005を5のように表記するTIPSが今回のご要望とどう関連している
のかが分からず、回答がズレている可能性が非常に高いと思います。

 可能でしたら追加情報を頂ければ幸いです。

bingo
アクティブユーザー
記事: 10
登録日時: 2007年5月15日(火) 13:02

投稿記事 by bingo » 2007年6月07日(木) 22:56

webmaster様

明確な質問の内容でなく、ご迷惑掛けてスミマセン。
再度まとめて見たいと思います。

a href="detai.php?eid={@id}">詳細へ</a>

上記でご指摘いただいた所までは、自身で確認出来たのですが、
その後書換えたURIにてリンク先を表示(詳細内容の表示を反映)する事が出来ないでいます。

たとえばエントリ一覧画面で「nikki.php?eid=00005」と言うエントリーidへのリンクを
TIPSに記載してある方法number(@id)で「nikki.php?eid=5」に書換えたとしても、
実際のリンク先「nikki.php?eid=5」の詳細ページで内容が反映がされずアクセスした日時だけが表記されてしまいました。

・ 反映される:http://hoge.com/nikki.php?eid=00005
・ 反映されない:http://hoge.com/nikki.php?eid=5

要するに00005となるidを5とした際にも0005と同じように詳細ページへも同内容を反映させたいのです。

リンク先を00005から5へ書換えた際に内容が反映されなかったので、その他の設定や.htaccessでの表示指定等が必要なのかと思い、今回のようなご質問をさせて頂いた次第です。

お手数掛けてすみませんが宜しくお願い致します。

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

投稿記事 by webmaster » 2007年6月08日(金) 00:06

 お手数おかけして申し訳ありません。ようやく理解できました。m(__)m

 エントリIDはゼロ埋めも含めて5桁の文字列として扱われる為、00005を5と
書いてもエントリIDとして認識されない仕様になっております。

 なぜそういう事をされたいのかちょっと想像がつかないのですが、無理やり
実現するとすれば、URLパラメータのeidの値を、CMSDに渡す前に書き換えて
しまう方法があると思います。

 具体的には、対象の.phpファイルの先頭に、次の1行を埋め込んで下さい。

コード: 全て選択

<?php if ( isset($_REQUEST['eid']) ) { $_REQUEST['eid'] = sprintf( "%05s", $_REQUEST['eid'] ); } ?>
 このコードは、パラメータとして渡されたエントリIDが5桁になるまで先頭に
'0'を付けるという処理です。

 思いつきのコードなので、内容の保証は致しかねるのですが、考え方としては
このような方法で可能かと思います。

 ただ、
要するに00005となるidを5とした際にも00005と同じように詳細ページへも同内容を反映させたいのです。
 というご要望が、「どうしてidを5にする必要があるのだろう?」と考えて
しまいます。idが00005ではなく5になってしまうようなシチュエーションが
思い浮かばないのです。

 もしよろしければ、その理由も教えて頂ければ、もっと別のスマートな解決方法を
提示できるかもしれません。

bingo
アクティブユーザー
記事: 10
登録日時: 2007年5月15日(火) 13:02

投稿記事 by bingo » 2007年6月08日(金) 01:49

webmaster様

詳細他、コードのご提供ありがとうございます。
早速試してみようとおもいます。

>「どうしてidを5にする必要があるのだろう?」

上記の問いに関しては、システム制作者側からすれば、「なぜ仕様をわざわざ変更するのだろう」と言う疑問が出てくるのは当然だと思います。

「どうして?」の問いに関しては、単純な理由ですが、
「TIPSを拝見したから」が返答となります。

逆にTIPSの例はどのようなシチュエーションの為に記載したものなのでしょうか?
http://cms.al-design.jp/phpbb/viewtopic.php?t=156


素人考えで申し訳ありませんが、
単純にidの桁数がURIに反映される時に「00005」表記よりも「5」、「00010」よりも「10」と表記された方がスマートに思えるのです。

エントリー数が増えた場合等の想定なのかは、わかりまねますが、TIPSの事例を採用したかったのは上記のような単純な理由となります。

Blogツール等のPostナンバーのID表示には、そのような例が多いですよね?

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

投稿記事 by webmaster » 2007年6月08日(金) 10:44

 bingoさん、丁寧なご回答ありがとうございました。m(__)m

 なるほど、確かに、エントリIDは00005より最初から5として扱えた方がユーザー
さんから見ると扱い易いと思います。
 そうなっていない理由は仰るとおりシステム上の理由からなのですが、このせいで
いろいろとご不便をおかけしている点、申し訳ありません。m(__)m

 そもそもエントリIDはエントリをユニークに識別する単なるIDであって数字では
なく、システム上扱い易いという理由からたまたま数字を識別子として利用しています。

 例のTIPSは、エントリIDを「商品番号」として表示したいという要望があり、
その際に00005ではなく5として表示したい、というご要望に対して提案させて
頂いたものです。これは表示上のものであって、URLパラメータを00005から5
にするという話はまったく想像していなかった為、今回のお話を理解するのに
少し手間取ってしまいました。

 当初の設計では、エントリIDを画面上に意味のある情報として表示するという
用途を想定しておらず、結果的に使いづらいID体系になってしまった事を申し訳
なく思っております。

 この件に関して他にご意見・ご要望がございましたら、よろしくお願い致します。

bingo
アクティブユーザー
記事: 10
登録日時: 2007年5月15日(火) 13:02

投稿記事 by bingo » 2007年6月08日(金) 11:38

webmaster様

的を得ない難解な質問内容にお付合い頂きましてありがとうございます。


>エントリIDを「商品番号」として表示したいという要望があり、


なるほど。別の用途があったわけですね。
エントリID = URI の表記と言うイメージしかありませんでした。
大変失礼いたしました。

該当のTIPSの例を使用して、同ページ内の処理等(数字始まりなの良いかは別としてアンカーリンク等にも)にも使えたりする訳ですよね。

TIPSの方法を参考に、何か他の用途にも使用できる機会が無いか模索してみたいと思います。

本件、最後までお付合い頂きありがとうございました。
また、これに懲りずに再度質問等があった際は何卒宜しくお願い致します。

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

投稿記事 by webmaster » 2007年6月08日(金) 12:17

 こちらこそ、長々とお付き合い頂きありがとうございました。

 何か良いアイデアなどありましたら、またご連絡頂ければ幸いです。m(__)m
 今後ともよろしくお願い致します。

返信