= 4.2) { while (list($key, $val) = each($_POST)) { $$key = $val; } $page = $_GET[page]; if (!$_POST[mode]) { $mode = $_GET[mode]; } if (!$_POST[search]) { $search = $_GET[search]; } if (!$_POST[keyword]) { $keyword = $_GET[keyword]; } } // DB 接続開始 if (!$conn = @pg_connect("dbname=$dbname")) { $msg = "データベースとの接続に失敗しました."; dispErrors($msg); exit; } // 同一自称名を検索 $srchSQL = "SELECT * FROM $table WHERE name = '$uaName'"; if (!$srchRet = @pg_exec($conn, $srchSQL)) { $msg = "データベースの検索に失敗しました."; dispErrors($msg); exit; } //トランザクション開始 @pg_exec($conn, "BEGIN transaction"); //テーブルロック @pg_exec($conn, "LOCK TABLE $table IN SHARE ROW EXCLUSIVE MODE"); $exist = pg_numrows($srchRet); if (!$exist) { // 未登録 $new = "(NEW!!!)"; $newSQL = "INSERT INTO $table (name, count) VALUES ('$uaName', 1)"; if (!$newRet = @pg_exec($conn, $newSQL)) { @pg_exec($conn,"ROLLBACK; END"); $msg = "テーブルがロックされています.後ほどお越しくださいませ."; dispErrors($msg); exit; } } else { // 登録済み if (($page == "" || $page == 0) || $mode = "") {// モードなしのアクセス時のみカウントアップ $countupSQL = "UPDATE $table SET count = (count + 1) WHERE name = '$uaName'"; if (!$countupRet = @pg_exec($conn, $countupSQL)) { @pg_exec($conn,"ROLLBACK; END"); $msg = "テーブルがロックされています.後ほどお越しくださいませ."; dispErrors($msg); exit; } } } @pg_exec($conn,"COMMIT; END"); // 全レコードを検索 $totalSQL = "SELECT * FROM $table "; // 検索モード if ($mode == "search") { if ($case) { // 大文字・小文字を区別する $like = "LIKE"; $caseStr = "&case=1"; } else { // 大文字・小文字を区別しない $like = "ILIKE"; } $totalSQL .= "WHERE name $like '%" . $keyword . "%'"; // 検索結果画面でのページ遷移用 $srchURI = "&mode=search&keyword=$keyword$caseStr"; } // 自称名順にソート $totalSQL .= "ORDER BY name"; if (!$totalRet = @pg_exec($conn, $totalSQL)) { $msg = "データベースの検索に失敗しました."; dispErrors($msg); exit; } if (!$uaCount = pg_numrows($totalRet)) { if ($keyword) { $msg = "「" . $keyword . "」を含む自称名が見つかりませんでした."; dispErrors($msg); exit; } else { $msg = "データベースにレコードが存在しません."; dispErrors($msg); exit; } } for ($i = 0; $i < $uaCount; $i++) { $rec[$i] = pg_fetch_array($totalRet); } $sumSQL = "SELECT SUM(count) AS sum FROM $table"; if (!$sumRet = @pg_exec($conn, $sumSQL)) { $msg = "データベースの検索に失敗しました."; dispErrors($msg); exit; } $sum = pg_result($sumRet, 0, 'sum'); // DB 接続終了 pg_close($conn); // 現在の自称名のレコード位置を特定する for ($i = 0; $i < $uaCount; $i ++) { if ($rec[$i][name] == $uaName) { break; } $current++; } /*_ Pager _______________________________________________________*/ $params = array( 'mode' => 'Jumping', 'perPage' => 3, 'delta' => 2, 'itemData' => array('a','b','c','d','e',[...omissis...],'z') ); $pager = & Pager::factory($params); $data = $pager->getPageData(); $links = $pager->getLinks(); echo $links['all']; /*_ Pager _______________________________________________________*/ // 表示範囲を決定する if ($page) { if ($page > 0) { $rew = $unit * $page; } else { $rew = 0; } } else { $rew = 0; } // ページナビゲーション用リンク作成 if ($uaCount % $unit) { $pages = sprintf("%d", ($uaCount / $unit) + 1); } else { $pages = sprintf("%d", ($uaCount / $unit)); } // 0 ページ目以外では「前」のリンクを表示する if ($page) { $prev = " | "; } // 最終ページ以外では「次」のリンクを表示する if ($page != ($pages - 1)) { $next = " | "; } $nav = "PAGE | $prev"; // ページの数だけリピートする for ($i = 0; $i < $pages; $i++) { if (!$mode) { // 現在の自称名の強調表示およびリンク先作成のための処理 if ($current >= ($i * $unit) && $current <= (($i * $unit) + $unit)) { $strong_b = ""; $strong_e = ""; $jump = $i; } else { $strong_b = ""; $strong_e = ""; } } // 現在のページはナビゲーションメニューでリンクしない if ($page == $i) { $nav .= $strong_b . "" . ($i + 1) . "" . "$strong_e | "; } else { $nav .= "$strong_b" . ($i + 1) . "$strong_e | "; } } $nav .= $next; if (($rew + $unit) > $uaCount) { $dspLast = $uaCount; } else { $dspLast = ($rew + $unit); } // 検索結果表示時などで 1 ページの表示数より結果が少ない場合はナビゲーションを消去 if ($uaCount <= $unit) { $nav = ""; } // HTML 表示部 echo "\n"; ?> Agent Name Collector!

Agent Name Collector!

[ あなたの UA の自称名$uaName ]"; } else { echo $uaName; } ?>

自称名の数:

\n"; } else { if ($rec[$i][name]) { echo "\n"; } } } ?>
WWW ブラウザ自称名コレクション
自称名カウント
"; echo $rec[$i][name]; echo "" . $rec[$i][count] . "
"; echo $rec[$i][name]; echo "" . $rec[$i][count] . "


大文字・小文字を区別: しない する

たまりまくってきたのでデータベース使ってみたデス.無駄に検索機能もつけてみました.

\n"; echo << Agent Name Collector!

Agent Name Collector!

$msg


大文字・小文字を区別: しない する

戻る

HTML; } class DbConnect { var $hostname = ""; // ホスト名 var $port = ""; // ポート番号 var $options = ""; // オプション var $tty = ""; // tty var $dbname = ""; // データベース名 var $con = false; // コネクションハンドル // コンストラクタ function DbConnect($dbname = "", $hostname = "", $port = "") { $this->dbname = $dbname; $this->hostname = $hostname; $this->port = $port; $this->doConnect(); } // データベース名の指定 function setDb($dbname) { $this->dbname = $dbname; } // ホスト名の指定 function setHostname($hostname) { $this->hostname = $hostname; } // ホスト名の指定 function setPort($port) { $this->port = $port; } // コネクションハンドルを返す function getConnection() { if ($this->con == false) { return($this->doConnect()); } return($this->con); } function doConnect() { // データベースに接続する @$this->con = pg_connect("$this->hostname", "$this->port", "$this->options", "$this->tty", "$this->dbname"); if ($this->con == false) { print("データベース $this->dbname に接続できませんでした。"); exit; } return($this->con); } // データベースとの接続切断 function doClose() { if ($this->con != false) { pg_close($this->con); $this->con = false; } } } ?>