投票コメント機能製作メモ25

 それでは、コメントを表示する関数を使ったコメントページです。
 コメントに書いているように少し改造すれば掲示板に出来そうですが、コメントの制限文字数と掲示板の制限文字数は同じで良いのか?とか○○拍手は掲示板では消さなくてはいけないとか、掲示板ならレス数に上限を設けなくてはいけない等々。掲示板とコメントの区別は何処でするか?新しく変数を作るかid10000以上をコメント、未満を掲示板とする考えも有りますが汎用的でなないような。色々と迷いが有って掲示板スクリプトを作る所までいきません。
 それとは別にフリーウェアとして公開するつもりなら、コメントページや集計ページはカスタマイズがしやすくなくてはならない、と思います。私のデザインは何か地味なので・・・・。htmlのテンプレートを読んで、その中にコメントや集計を書く方式にすればカスタマイズも容易かと思います。重くならないかという心配も有りますが・・・
 とりあえずコメントの表示部分までは作り直したので、以後しばらくは公開済みの体験談ページの文字列を一括変換して入力フォームを変更するソフトを作る事にします。一般公開できるのはまだまだ先のようです。

 もしここまでを読んで、まとめサイトで使っている人気投票やコメントのスクリプト、ページ追加ソフトが欲しいという人が有りましたら、不完全な物ですがメールにて提供します。

comment.php
require "settei.php"; //設定ファイルの挿入
require "countcom.php";  //コメント数を数える関数挿入

$nflg = "1"; //表示フラグ
$flg = "1";  //ダミー変数
$cnt = "0";  //コメントの数
$page = MAX_NUM; //表示するページ

//POSTされた
if ($_SERVER["REQUEST_METHOD"]=="POST") {
  session_start();
  $id = $_POST["id"];            //タイトル番号
  $kflg = $_POST["kflg"];        //コメント有り="1"
  $namae = htmlspecialchars_decode($_POST["namae"],ENT_QUOTES); //名前
  $komento =htmlspecialchars_decode($_POST["komento"],ENT_QUOTES); //コメント
  if ($komento =="") $kflg = "0";
} else {              //GETで呼ばれた
  $id = $_GET["id"];   //話の番号
  $kflg ="0";          //コメント無し="0"
  if (isset($_GET["page"])) $page = $_GET["page"];  //ページ番号が指定された
}

$kakunin ="0"; //確認ページではない
$pflg = "1";
require "comcheck.php";
if ($nflg == "1") {
  $tokuhyou_res = mysql_query("SELECT count(*) FROM ".HYOU." WHERE tcode = '$id'");
  if ($tokuhyou_res != false) {
    $tokuhyou = $tokuhyou + mysql_result($tokuhyou_res,0); //得票数合計
    mysql_free_result($tokuhyou_res);  //リソースの開放
  }
  $taitoru = "【" .$taitoru. "】へのコメント";
}
//ページタイトル設定
echo "<html><head>";
echo "<meta http-equiv=¥"Content-Type¥" content=¥"text/html; charset=shift_jis¥">";
echo "<head><meta http-equiv=¥"Content-Type¥" content=¥"text/html; charset=shift_jis¥">";
echo "<title>",$taitoru,"</title>";
?>
</head><body>
<div align="center">
  <center>
 <font size=5>
<?php
echo $taitoru,"</font><br>";
echo "$tokuhyou 拍手<br>";
?>
  <table border="1" width="700" bgcolor="#FFFFFF">
    <tr>
      <td width="100%">
      </center>
<?php
//コメントの登録処理
switch ($kflg) {
  case "1":   //登録するコメント有り
    if ($_SESSION['execute']) break;
    $namae = htmlspecialchars(trip($namae),ENT_QUOTES);
    $komento = htmlspecialchars($komento,ENT_QUOTES);
    $komento = nl2br($komento);
    //同じ話の番号の中でコメント番号の最大値を取得
    $komento_res = mysql_query("SELECT MAX(knum) FROM ".COMMENT." WHERE tcode = '$id'");
    if (!$komento_res) {
      $msg = $msg . "データベースのアクセスに失敗しましたorz<br>";
      $nflg = "0";
      break;
    } else {
      $kbango = mysql_result($komento_res,0) + 1; //コメント番号の作成
      $komento = str_replace("¥¥","¥¥¥¥",$komento);  //MySQLでエラーに
      $namae = str_replace("¥¥","¥¥¥¥",$namae);      //ならないように
      $ipnum = ip2long($ipadr);  //IPアドレスを整数値に変換
      $komento_res = mysql_query("INSERT INTO ".COMMENT." (tcode,knum,kname,ktime,ktext,kipadr,khost)
        VALUES ('$id','$kbango','$namae',CURRENT_TIMESTAMP(),'$komento','$ipnum','$host')");
      if (!$komento_res) {    //↑データベースにコメントを追加する処理
        $msg = $msg . "コメントの登録に失敗しました<br>";
        $nflg = "0";
        break;
      }
      $_SESSION['execute'] = true;
    }
}
if ($nflg == "0") {  //エラー有り
  echo $msg;  //エラーメッセージ
} else {
  //コメント表示
  require "putcom.php";
  $com_kazu = countcom($id);
  $page_suu = floor($com_kazu / PAGE_COM);
  if ($com_kazu % PAGE_COM != 0) $page_suu++;
  if ($page == MAX_NUM) $page = $page_suu;
  if ($page == 0 || $com_kazu <= PAGE_COM) {
    $cnt = putcom($id,0,0);  //コメント全表示
    if ($cnt ==0) echo "まだコメントは有りません<br>";
  } else {
    $offset = ($page - 1) * PAGE_COM;
    $cnt = putcom($id,$offset,PAGE_COM);  //コメント1ページ分表示
    echo "<Div Align=¥"center¥"><a href=¥"comment.php?id=$id&page=0¥">全</a>";
    if ($page !=1) {
      echo " <a href=¥"comment.php?id=$id&page=1¥">頭</a>";
      echo " <a href=¥"comment.php?id=$id&page=",$page -1,"¥">前</a>";
    }
    for ($i=1;$i<=$page_suu;$i++) {
      if ($i == $page) {
        echo " $i";
      } else {
        echo " <a href=¥"comment.php?id=$id&page=$i¥">$i</a>";
      }
    }
    if ($page != $page_suu) {
      echo " <a href=¥"comment.php?id=$id&page=",$page + 1,"¥">次</a>";
      echo " <a href=¥"comment.php?id=$id&page=$page_suu¥">新</a>";
    }
    echo "</Div> ";
  }
//この辺にコメント入力フォームを入れると掲示板になりそう
}
?>
    </td>
  </tr>
  </table>
<?php
if ($nflg == "1") {
  echo "<br><a href=¥"../",$turl,"¥">体験談へ戻る</a><br><br>";
}
?>
      <a href="../menu1.htm">1列メニュー</a>&nbsp; <a href="../">Top</a>
</div></body></html>


コメント
コメントする








   
この記事のトラックバックURL
トラックバック

calendar

S M T W T F S
1234567
891011121314
15161718192021
22232425262728
293031    
<< July 2018 >>

テスト

笑える霊体験まとめサイト
の表紙作成に使ったソフト

Poser 10

新品価格
¥14,316から
(2014/4/9 14:19時点)

広告だったり

オリジナル電子書籍

selected entries

categories

archives

recent comment

links

profile

search this site.

others

mobile

qrcode

powered

無料ブログ作成サービス JUGEM