• 締切済み

【PHP】 リンクに関した質問です。

ブログを作成しいて、【最新コメント者】と言う所には、各日記の記事に対してコメントを 付けた方の名前が最新順に記される様にしています。 例えば… 【最新コメント者】 おはよう君 こんばんわ君 ・ ・ ・ おやすみ君 …と言う様に、それで今回の質問とは、その【最新コメント者】の所の名前をクリックしたら その名前の方が付けたコメントの記事にリンクする様にするにはどうしたらよいでしょうか? よろしくお願い致します。教えて下さいませ。 ◆ 【最新コメント者】の表示させるPHPソースの所では次ぎの様にしてあります。 <?php //log.txt は、コメントのログファイルです。 //$name には、コメントを付けた方の名前です。 //$bo には、コメントを付けた所の日記記事の番号(インデックス)です。 $log = file("log.txt"); for($i=0; $i<sizeof($log); $i++){ list($bo,$name) = explode( "," , $log[$i]); print "<a href=\"#$bo\">".$name."</a><br>\n"; } ?> ◆ 各日記の記事の最初のソースの所では次ぎの様にしてあります。 <?php //$no には、日記の記事の番号(インデックス)が代入されるようにしてあります。 print "<a name=\"$no\"></a>"; ?> この仕組みだと、最初に表示されているページ内に、コメントを付けた日記の記事番号があれば 付けたコメントの日記記事にリンクされるのですが、そのページに無い日記の記事番号の場合 コメントを付けたページの所のリンクされません。 ◆ ちなみに、ページリンクに関したソースは次のような感じにしてあります。 <?php if ($page > 1){$tugi .= "<a href = '$PHP_SELF?page=".($page - 1)."&total=$total&page_num=$page_num'>"."<b>次の記事</b></a>"; }print"$tugi"; if ($total > 1 and $page < $page_num){$mae .= "<a href = '$PHP_SELF?page=".($page + 1)."&total=$total&page_num=$page_num'>"."<b>前の記事</b></a>"; }print"$mae"; ?>

みんなの回答

  • mr_araki
  • ベストアンサー率85% (12/14)
回答No.3

こんばんわ どの記事がどのページになるかの計算方法ですが 以下を教えてもらっても良いですか? 該当ページに表示する記事を取得するコード 記事一覧を保持しているログファイルの書式(2,3行サンプルをもらえれば) 記事にID番号があれば、それの付け方。 くらいがあれば回答ができると思います。 よろしくです。

orz_zin_l
質問者

補足

こんばんわ。 何度もご回答下さり有り難う御座います。 今回、お手数お掛けしましたが、先程、自己解決しました。 $paze=(何ページ目か分る計算式&受け渡し変数)//追加しました。ここでセット。 「print "<a href=\"#$bo\">".$name."</a><br>\n";」の所を… 「print "<a href=\"$PHP_SELF?page=$paze.#${bgs}\">".$name."</a><br>\n";」//PHP_SELF?page=$paze を追加し「.」で繋げました。 …にしたら、【最新コメント者】の所の名前をクリックしたら、その名前の方が付けたコメントの記事の所にリンクする様に出来ました。 質問をした後、あれから、コメントを付けた記事の所のページにはリンクする所までは出来てたのですが、コメントを付けた所にはリンクされないので困ってましたが、そこから更に原因が分り自己解決しました。 【原因】 「#${bgs}」の前に「.」これが無かったので、プログラムが「#${bgs}」反応していませんでした。 「.${bgs}」としたら反応し、ページ移動尚且つコメントを付けた所にリンクしました。 変更前、最初「.」の所を「&」で単に繋げてたので反応していませんでした。 今回は、自己解決しましたが、ご回答頂き本当に有り難う御座いました。 また、PHPについて何か質問すると想いますので、その際は、また改めてよろしくお願い致します。

  • eitetsu
  • ベストアンサー率64% (22/34)
回答No.2

記事番号の若い方から読み込んでいく前提であれば、この方法はどうですか? 必要であれば、出力手前でソートしてあげれば表示順序も変更できますね。 --------------------------------------- $log = file("log.txt"); for($i=0; $i<sizeof($log); $i++){ list($bo,$name) = explode( "," , $log[$i]); $indexes[$name] = $bo; //←一覧表を作成するわけですね。 //print "<a href=\"#$bo\">".$name."</a><br>\n"; } foreach ($indexes as $idx_name => $idx_no){ print "<a href=\"#$idx_no\">".$idx_name."</a><br>\n"; } ---------------------------------------

orz_zin_l
質問者

補足

今回、お手数お掛けしましたが、先程、自己解決しました。 $paze=(何ページ目か分る計算式&受け渡し変数)//追加しました。ここでセット。 「print "<a href=\"#$bo\">".$name."</a><br>\n";」の所を… 「print "<a href=\"$PHP_SELF?page=$paze.#${bgs}\">".$name."</a><br>\n";」//PHP_SELF?page=$paze を追加し「.」で繋げました。 …にしたら、【最新コメント者】の所の名前をクリックしたら、その名前の方が付けたコメントの記事の所にリンクする様に出来ました。 質問をした後、あれから、コメントを付けた記事の所のページにはリンクする所までは出来てたのですが、コメントを付けた所にはリンクされないので困ってましたが、そこから更に原因が分り自己解決しました。 【原因】 「#${bgs}」の前に「.」これが無かったので、プログラムが「#${bgs}」反応していませんでした。 「.${bgs}」としたら反応し、ページ移動尚且つコメントを付けた所にリンクしました。 変更前、最初「.」の所を「&」で単に繋げてたので反応していませんでした。 今回は、自己解決しましたが、ご回答頂き本当に有り難う御座いました。 また、PHPについて何か質問すると想いますので、その際は、また改めてよろしくお願い致します。

  • mr_araki
  • ベストアンサー率85% (12/14)
回答No.1

勘違いかも知れません… 各記事を個別に表示するためのPHPファイルはないのですか? あれば print "<a href=\"#$bo\">".$name."</a><br>\n"; のページ内リンクになっているところを 記事の個別ページへリンクさせます print "<a href=\"blog.php?entry=$bo\">".$name."</a><br>\n"; ※リンク先は適当です 個別ページがなければ、 現状の記事数から該当記事が何ページ目に表示されているかを計算しなければなりません。 詳細がよくわからないので、具体的な回答が出来なくてごめんなさい。 参考程度に…

orz_zin_l
質問者

補足

この度は、ご回答下さり有り難う御座います。 個別ページにつきまして・・・ 一応「◆ ちなみに、ページリンクに関したソース…省略」の所で書いたように、ページは $page の変数を使ってページを出力していますので、個別ページはありません。 ですので、もし宜しければ、個別ページが無い場合の方向で、現状の記事数から該当記事が何ページ目に表示されているかを計算方法、仕組みを教えて頂けると助かります。 【引用】… 「詳細がよくわからないので、具体的な回答が出来なくてごめんなさい。」 …いえいえ、それでも私の質問に答えようとしてくれた気持ちが嬉しく想います。

関連するQ&A