- ベストアンサー
データベースから,そのレコードをどれぐらい利用されたかカウントしたい
初心者ですがよろしくお願いします。 MySQL と PHP でリンクを集約したデータベースを構築しました。 検索までは可能となりましたが,その検索結果からユーザーが利用したクリック数をフィールドにカウントしたいと思っていますが,SQL文の書き方をどうすればいいかまったく分かりません。 とりあえず検索までの部分は以下のとおりです。 //接続と設定 $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD); mysql_query("set names sjis"); $selectdb = mysql_select_db($DBNAME, $con); if (!isset($page)) { //総件数計算 $sql = "SELECT Count(*) AS cnt FROM ○○○" . $where; $rst = mysql_query($sql, $con); $col = mysql_fetch_array($rst); $tcnt = $col[cnt]; mysql_free_result($rst); //該当件数確認 if ($tcnt == 0) { $body = "該当なし"; //現在ページ初期設定 $page = 1; } //総ページ数計算 $totalpage = ceil($tcnt / $PAGESIZE); //ページ上部表示 $body = "$tcnt 件みつかりました。 "; //抽出SQL文 $sql = "SELECT ○○○.* FROM ○○○" . $where . $orderby . " LIMIT " . $PAGESIZE * ($page - 1) . ", $PAGESIZE"; //結果セット取得 $rst = mysql_query($sql, $con); //ページ本文組み立て $body .= "<BR><BR>"; //一覧表示の場合 $body .= "<TABLE class='kyozailist'> <TR> <TH>No</TH> <TH>年</TH> <TH>月</TH> <TH>日</TH> <TH>もの</TH> <TH>リンク</TH> </TR>"; //データをループ読み込み while($col = mysql_fetch_array($rst)) { //各レコード内容を表示する表組み立て $body .= "<TR>" . "<TD width='8%' align='center'>$col[No]</TD>" . "<TD width='8%' align='center'>$col[nen]</TD>" . "<TD width='8%' align='center'>$col[tsuki]</TD>" . "<TD width='6%' align='center'>$col[hi]</TD>" . "<TD width='10%' align='center'>$col[mono]</TD>" . "<TD width='60%'><a href=$col[link] target=_blank>$col[link]</a></TD>" . "</TR>"; } $body .= "</TABLE>"; とりあえずのプログラムはこんな感じです。もちろん多少省略しましたが…。すると検索結果が10件ずつ表示されます。例えば以下のようになるとします。 No | nen | tsuki | hi | mono | link 1 | 20 | 10 | 10 | aaaa | http:// 2 | 19 | 12 | 24 | bbbb | http:// 3 | 19 | 9 | 13 | cccc | http:// このときに,link部分をクリックすると他のページに移動になるわけですが,そのクリック数をデータベースのフィールド(例えばcountフィールドがあると仮定して)に「1」を加える命令を教えていただければと思います。後ほど,フィールドcountでソートをして,ダウンロードランキングとの表示をしたいと思っています。 どなたか詳しい人からご教授いただければと思い,投稿しました。よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
お礼
お世話になりました。カウントがなんとかうまくいきました。しかし,header("location: ".$link);がうまくいきませんでした。どうやら,うまく変数にSQL文が入らないみたいです。 なんとか自分で考えてみます。が,もし困ったらまた投稿するかもしれません。その際もご指導いただければ幸いです。ありがとうございました。
補足
回答ありがとうございます。返答が遅くなってしまいましたが,今まで取り組んでいたので遅くなりました…。 2-3のheader("location: ".$link); を試す前に次のようなプログラムを組んでみました。#3と#4のご意見を合算して作った物です。 プログラムの前後は省略しますが,まず,serchファイルは, "<TD width='8%' align='center'>$col[No]</TD>" . "<TD width='50%'><a href='link_count.php?id=$col[No]' target=_blank>$col[siryoumei]</a></TD>" . "<TD width='10%' align='center'>$col[linkcount]</TD>" . としてみました。 ついで,カウントするphpファイルを次のようにしました。 link_count.php ← ファイル名 <?php $DBSERVER = "省略"; $DBUSER = "省略"; $DBPASSWORD = "省略"; $DBNAME = "○○"; $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD); $selectdb = mysql_select_db($DBNAME, $con); $link = 'select forlink from ○○ where No = $_GET[id]'; $sql = 'update ○○ set linkcount = linkcount + 1 where No = $_GET[id]'; $rst = mysql_query($sql, $con); echo $link; echo $_GET ?> するとこんな結果になりました。 表示結果 select forlink from kyouiku where No = $_GET[id]Array 受け渡しした際のURL末尾に,...link_count.php?id=1010001 と表示してあるので,変数内容の受け渡しはできていると思いますが,上手くSQL文が動かない状況です。(phpmyadominで同様のSQLを試したところカウントしてくれましたが…)。今までいろいろ試してみましたが,あともう少しだと思いますので,お知恵をいただければと思います。