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

 今回拍手の集計ページで過去の投票を集計して、累計に書き込み、計算済みのデータを削除するというスクリプトを書きました。
 mysqlで2つのテーブルの内一方の内容に集計関数を使って、もう一方のテーブルの内容をupdate文で変更するにはサブクエリを使うようですが、ググって調べた内容では更新しない行にヌルが入って役に立ちませんでした。色々考えつつAccessクエリのsqlビューを見たり、mysqlの入門書を見たりした所、テーブルの内部結合をしてサブクエリを使えば良いだろうと考えつきました。

settei.phpには
define("TITLE","taitoru");  //タイトルテーブルの名前
define("HYOU","tokuhyou");  //得票テーブルの名前
という行を入れてます。

<?php
require "settei.php";

//WHERE句で使う日付条件を変数に格納
$hiduke = "tdate < SUBDATE(CURDATE(),INTERVAL 32 DAY)";

$syuukei_res = mysql_query("UPDATE ".TITLE." 
//内部結合
  INNER JOIN ".HYOU." ON ".TITLE.".tcode = ".HYOU.".tcode
//サブクエリでアップデート
  SET tokuhyou = ( SELECT COUNT(*) + tokuhyou FROM ".HYOU."
  WHERE ".HYOU.".tcode = ".TITLE.".tcode AND ".$hiduke."
  GROUP BY ".HYOU.".tcode )
//サブクエリの外側のWHERE句でヌルを回避
  WHERE ".$hiduke);

if (!$syuukei_res) {
  echo mysql_error(),"<br>";
  die("データ更新エラー<br>");
} else {
//古いデータの削除
  $syuukei_res = mysql_query("DELETE FROM ".HYOU." WHERE ".$hiduke);
  if (!$syuukei_res) {
    echo mysql_error(),"<br>";
    die("データ削除エラー<br>");
  } else {
    echo "拍手データ累計に加算";
  }
}
?>

 これからサイトを更新する時に毎回このスクリプトを実行するようにします。他の誰かにのスクリプトのファイル名を知られて実行されても何の害も出ません。

コメント
コメントする








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

calendar

S M T W T F S
    123
45678910
11121314151617
18192021222324
252627282930 
<< November 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