NP_cles()

123456789101112131415161718192021222324252627282930

続・欠番回収

 
投稿者:hsur 投稿日時:2008-01-20 - 20:02
カテゴリー:Nucleus Tips - - トラックバック(0)- Views: 156

だいぶ昔、itemidの欠番を空のドラフトアイテムとして回収できるスクリプトを作った話を書いたのですが、そのままお蔵入りになっていたのでいまさらながら公開しておきます。

まぁ、番号が飛び飛びでもそんなに困らないと思うんですけど、几帳面な人向けなのかなぁ。言わなくてもわかると思いますが、基本的に自己責任でお願いします。

使い方

1.上記のプログラムをconfig.phpと同じフォルダに入れる。
ファイル名は同じでなくても大丈夫ですが、冒頭のブログId, 著者Id, カテゴリIdについては適当なものに書き換えてください。

2.コマンドラインもしくはブラウザからプログラムにアクセスする。
実行に成功すると、SQL文が表示されますがあまり気にしなくて大丈夫です。

3.管理画面にログインすると、回収したidのエントリがドラフトとして追加されている。

スクリプト本体

collector.php

<?php $blogId = 1; $authorId = 1; $catId = 1; include('./config.php'); $query = "select max(inumber) as max from ".sql_table('item'); $res = sql_query($query); $row = mysql_fetch_assoc($res); $ids = Range(1,$row['max']-1); $query = "select inumber from ".sql_table('item'); $res = sql_query($query); $existids = Array(); while( $row = mysql_fetch_assoc($res) ){ $existids[] = $row['inumber']; } $notexist = array_diff($ids, $existids); foreach($notexist as $id){ $query = "INSERT INTO ".sql_table('item')." VALUES ($id, '', 'dummy', '', $blogId, $authorId, '1970-01-01 09:00:00', 0, 1, 0, $catId , 0)"; echo $query . "\n"; mysql_query($query); }

v3.3向け

v3.3からはitemにipostedカラムが追加されているので、上記のスクリプトでは欠番がうまく回収できませんので、下記のスクリプトを使います。

collector.php

<?php $blogId = 1; $authorId = 1; $catId = 1; include('./config.php'); $query = "select max(inumber) as max from ".sql_table('item'); $res = sql_query($query); $row = mysql_fetch_assoc($res); $ids = Range(1,$row['max']-1); $query = "select inumber from ".sql_table('item'); $res = sql_query($query); $existids = Array(); while( $row = mysql_fetch_assoc($res) ){ $existids[] = $row['inumber']; } $notexist = array_diff($ids, $existids); foreach($notexist as $id){ $query = "INSERT INTO ".sql_table('item')." VALUES ($id, '', 'dummy', '', $blogId, $authorId, '1970-01-01 09:00:00', 0, 1, 0, $catId , 0, 1)"; echo $query . "\n"; mysql_query($query); }

    このエントリは役に立ちましたか?

      

    トラックバックについて [policy]

    Trackback URL:
    Trackbacks
    このエントリにトラックバックはありません

    Comments [policy]

    No comments yet

    Add Comments

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン