DBでカウントする 誤りの指摘やご意見はこちらへ ご意見板
BBS

PHP Top
項目
DBの準備をする ↑項目に戻る
初級コースにようこそ!
これ以降はDB(データベース)を使用したプログラミングを行います。
まずは小手調べに、DBを使って、カウンタのプログラムを書き直してみましょう。

DBの準備をします。この色の文字を、キーボードから打ち込んでください。

>mysql -u root とシェル上で打ち込み、MySQL monitorに入る mysql> create database counter;
Query OK, 1 row affected (0.00 sec)
mysql> use counter;
Database changed
mysql> create table counter (
-> counter int(10),
-> lastIP varchar(255)
-> );
Query OK 0 rows affected (0.00 sec)
mysql> insert into counter values (0,'localhost');
Query OK 0 rows affected (0.00 sec)
mysql> select * from counter;
counter lastIP
0 localhost
1 row in set (0.00 sec)
mysql> exit

SQL文についてはSQL Simple Referenceをご覧下さい。

DBカウンタを作る ↑項目に戻る
次に、counter1.phpを以下の内容で作成してください。

<?php

  mysql_connect("127.0.0.1","root","");
  mysql_select_db("counter");

  $result = mysql_query("select * from counter");
  $array = mysql_fetch_array($result);
  $counter = $array['counter'];

  $counter++;

  print $counter;
  $result = mysql_query("update counter set counter=$counter");

?>

■解説--------

mysql_connect("127.0.0.1","root","");
mysql_select_db("counter");

これは、DBに接続し、「counter」というデータベースを使用することを宣言しています。
DBについてある程度知識のあるかたは、nobodyユーザを作成、パスワードを設定し,
各種権限を与えておくと、安全に使用できます。

$result = mysql_query("select * from counter);

「select * from counter」というクエリを発行しています。
これにより、DBより全てのデータを取り出します。

$array = mysql_fetch_array($result);

結果より一行取り出し(今回は一行しかありません)、その一行を$arrayという 配列にいれています。各々の要素をとりだすには、下のようにします。

$counter = $array['counter'];

これにより、「counter」というカラムに入っていたデータが$counterに代入されます。

$counter++;

$counterに1を加えています。「$counter = $counter +1」とほぼ同じです。

$result = mysql_query("update counter set counter=$counter);

$counterの値をDBに入れています。

IPを記録する ↑項目に戻る
最終閲覧者のIPを記録し、リロードしてもカウンタが増えないようにします。
counter2.phpを以下の内容で作成してください。


< ?php
  mysql_connect("127.0.0.1","root","");
  mysql_select_db("counter");

  $result = mysql_query("select * from counter");
  $array = mysql_fetch_array($result);
  $counter = $array['counter'];
  $lastIP = $array[lastIP];

  $IP = getenv("REMOTE_ADDR");

  if ($lastIP != $IP) $counter++;

  print $counter;
  //print "lastIP = $lastIP";
  //print "IP = $IP";

  $result = mysql_query("update counter set counter=$counter, lastIP='$IP'");
?>


↑項目に戻る

PHP Top