2011年5月12日 星期四

[收集] Free WordPress Theme 網站

http://fthemes.com/

持續收集中...

收集 Blogger 技巧的網站

充滿了 Blogger 技巧的網站,能說什麼呢,給個讚吧!
http://www.bloggertipandtrick.net/

2011年5月11日 星期三

在MySQL中找尋或刪除重複的記錄

查找表中多餘的重複記錄,重複記錄是根據單個字段(peopleId)來判斷

select * from people
where peopleId in (select  peopleId  from  people  group  by  peopleId  having  count(peopleId) > 1)

刪除表中多餘的重複記錄,重複記錄是根據單個字段(peopleId)來判斷,只留有rowid最小的記錄

delete from people
where peopleId  in (select  peopleId  from people  group  by  peopleId   having  count(peopleId) > 1)
and rowid not in (select min(rowid) from  people  group by peopleId  having count(peopleId )>1)

查找表中多餘的重複記錄(多個字段)

select * from vitae a
where (a.peopleId,a.seq) in  (select peopleId,seq from vitae group by peopleId,seq  having count(*) > 1)

刪除表中多餘的重複記錄(多個字段),只留有rowid最小的記錄

delete from vitae a
where (a.peopleId,a.seq) in  (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

查找表中多餘的重複記錄(多個字段),不包含rowid最小的記錄

select * from vitae a
where (a.peopleId,a.seq) in  (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

-------------
比方說
在A表中存在一個字段「name」,
而且不同記錄之間的「name」值有可能會相同,
現在就是需要查詢出在該表中的各記錄之間,「name」值存在重複的項;

Select Name,Count(*) From A Group By Name Having Count(*) > 1

如果還查性別也相同大則如下:

Select Name,sex,Count(*) From A Group By Name,sex Having Count(*) > 1

------------------------------------
方法一

declare @max integer,@id integer

declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) >; 1

open cur_rows

fetch cur_rows into @id,@max

while @@fetch_status=0

begin

select @max = @max -1

set rowcount @max

delete from 表名 where 主字段 = @id

fetch cur_rows into @id,@max

end

close cur_rows

set rowcount 0

方法二

有兩個意義上的重複記錄,一是完全重複的記錄,也即所有字段均重複的記錄,二是部分關鍵字段重複的記錄,比如Name字段重複,而其他字段不一定重複或都重複可以忽略。

1、對於第一種重複,比較容易解決,使用

select distinct * from tableName
就可以得到無重複記錄的結果集。
如果該表需要刪除重複的記錄(重複記錄保留1條),可以按以下方法刪除

select distinct * into #Tmp from tableName
drop table tableName

select * into tableName from #Tmp
drop table #Tmp

發生這種重複的原因是表設計不周產生的,增加唯一索引列即可解決。

2、這類重複問題通常要求保留重複記錄中的第一條記錄,操作方法如下
假設有重複的字段為Name,Address,要求得到這兩個字段唯一的結果集

select identity(int,1,1) as autoID, * into #Tmp from tableName

select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID

select * from #Tmp where autoID in(select autoID from #tmp2)

最後一個select即得到了Name,Address不重複的結果集(但多了一個autoID字段,實際寫時可以寫在select子句中省去此列)

------------------------------------
查詢重複

select * from tablename where id in (
select id from tablename
group by id
having count(id) > 1
)

LightBox 收集

在製作網頁時常會使用的 LightBox 收集:
  1. ThickBox:http://jquery.com/demo/thickbox/
    除了圖片顯示,還有 html 及 iframe。不過已經不更新了。
  2. Fancybox:http://fancybox.net/
    最近常看到的。
  3. Colorbox:http://colorpowered.com/colorbox/
  4. jQuery UI Dialog:http://jqueryui.com/demos/dialog/
  5. Shadowbox.js:http://www.shadowbox-js.com/index.html

2011年5月10日 星期二

在Blogger文章貼原始碼(Post Source Code)

想在 Blogger 中貼原始碼很麻煩,找到以下資訊:
Format My Source Code for Blogging

相關資源:在下【阮瑪莉】

檢查 GD 並產生縮圖的函式

這是經常使用的GD縮圖函式

//檢查 GD

function checkGD(){

    $error = false;

    $gd = array();   

    if (!extension_loaded('gd')) {

        if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {

            if (!dl('php_gd.dll')) {

                $error = true;

            }

        } else {

            if (!dl('gd.so')) {

                $error = true;

            }

        }

    }

    if ($error) {

        return false;

    } else {

        $gdInfo                   = gd_info();

        $gd['version']           = stristr($gdInfo['GD Version'], '2.') ? 2 : 1;

        $gd['formats']['gif'] = $gdInfo['GIF Read Support'];

        $gd['formats']['jpg'] = $gdInfo['JPEG Support']; //小心,不是 JPG Support

        $gd['formats']['png'] = $gdInfo['PNG Support'];       

        return $gd;

    }   

}

// 製作縮圖 createImage(來源檔名路徑, 格式, 縮圖檔名路徑, 縮圖寬, 縮圖高)

function createImage($file, $format, $fileDest, $outputX, $outputY){

    // Get information about the installed GD.

    $gdInfo    = checkGD();

    $gdVersion = $gdInfo['version'];   

    if ($gdInfo == false) {

        return false;

    }   

    // Ensure the given format is supported.

    if ($gdInfo['formats'][$format] != 1) {

        return false;

    }   

    // Get the image dimensions.

    $dimensions = @getimagesize($file);

    $width        = $dimensions[0];

    $height        = $dimensions[1];   

    // thumbs mode.   

    $quality  = 85;       

    $deltaX   = 0;

    $deltaY   = 0;

    $portionX = $width;

    $portionY = $height;

    // Get the source image in gif format.

    if ($format == 'gif') {

        $imageSrc  = @imagecreatefromgif($file);

    }   

    // Get the source image in jpg format.

    if ($format == 'jpg') {

        $imageSrc  = @imagecreatefromjpeg($file);

    }   

    // Get the source image in png format.

    if ($format == 'png') {

        $imageSrc  = @imagecreatefrompng($file);

    }

    // The thumbnail creation with GD1.x functions does the job.

    if ($gdVersion == 1) {       

        // Create an empty thumbnail image.

        $imageDest = @imagecreate($outputX, $outputY);       

        // Try to create the thumbnail from the source image.

        if (@imagecopyresized($imageDest, $imageSrc, 0, 0, $deltaX, $deltaY, $outputX, $outputY, $portionX, $portionY)) {           

            // save the thumbnail image into a file.

            @imagejpeg($imageDest, $fileDest, $quality);           

            // Delete both image resources.

            @imagedestroy($imageSrc);

            @imagedestroy($imageDest);           

            return true;           

        }       

    }   

    // The recommended approach is the usage of the GD2.x functions.

    if ($gdVersion == 2) {       

        // Create an empty thumbnail image.

        $imageDest = @imagecreatetruecolor($outputX, $outputY);       

        // Try to create the thumbnail from the source image.

        if (@imagecopyresampled($imageDest, $imageSrc, 0, 0, $deltaX, $deltaY, $outputX, $outputY, $portionX, $portionY)) {           

            // save the thumbnail image into a file.

            @imagejpeg($imageDest, $fileDest, $quality);

            // Delete both image resources.

            @imagedestroy($imageSrc);

            @imagedestroy($imageDest);           

            return true;           

        }       

    }

    return false;

}

測試 PHP 是否安裝 GD 並顯示相關訊息

想要測試當下 PHP 環境是否支援 GD,並顯示相關訊息。

<?php

    if(extension_loaded('gd')) {

        echo "你可以使用 GD <br />";

        foreach(gd_info() as $cate=>$value)

        echo "$cate:$value<br>";

    }else

    echo '你沒有安裝 GD 模組';

?>