ソース掲示板




すべてから検索

キーワード   条件 表示 現行ログ 過去ログ トピックス 名前 本文

  メンテナンス 前画面に戻る

対象スレッド 件名: アクセスカウンタの値を、入力値で初期化する
名前: lightbox
処理選択
パスワード

件名 アクセスカウンタの値を、入力値で初期化する
名前 lightbox
コメント
@DIV
FORM タグはサーバーへデータを送信する為に必要です。

FORM タグ内の INPUT、SELECT、TEXTAREA タグは、
サーバーへデータを送る為のコンテンツとなります。

特に、以下は送信用のボタンでいくつでも書く事ができますが、
一度の送信で使用されるのは一つのボタンのみです
<INPUT
	type="submit"
	name="send"
	value="送信"
>
name は自由に設定できますが、管理上一つに統一し、
value の内容でどのボタンが押されたかをチェックしたほうが、
ソースコードを読みやすくなります。

@LINE

INPUT、SELECT、TEXTAREA の name に指定された文字列が、
サーバ側で参照する為のキーワードとなります。
name="counter" としたならば、その内容はここでは $_GET["counter"] で参照される事となります。

http://www.php.net/manual/ja/reserved.variables.get.php($_GET) は、http://www.php.net/manual/ja/language.variables.superglobals.php(スーパーグローバル変数)と呼ばれ、PHP のいかなるスコープでも有効な
システム変数(連想配列) の一つであり、FORM タグの method 属性に指定した文字列によって
使用可能になります。

method 属性 には、"GET" または "POST" が指定可能で、
それぞれに対応して $_GET と http://www.php.net/manual/ja/reserved.variables.post.php($_POST) が存在します。

GET コマンドは、URL の ? 以降で指定される文字列で送られる方式で、http://support.microsoft.com/kb/208427/ja(最大文字列は無制限ではありません。)
しかし、ページを更新した時にブラウザ側でダイアログが表示されずに済むので大量のデータを送信する必要の
無い場合はデフォルトとして使用すると良いでしょう( method 属性を省略すると "GET" になります )

ダブルクォーテーションの中に記述されている {$_GET["counter"]} は、複雑な変数を
文字列の中で展開する為の記述方法で、{} で配列やオブジェクトのプロパティを囲む事に
よって、PHP に対して変数である事を明示する事ができます。

単純な変数は {} が必要ありませんが、置き換えする変数名の終わりを明示できるので
この記述方法を利用する習慣をつけておきましょう。
@END

@DIV
<?
# **********************************************************
# 初期処理
# **********************************************************
header( "Content-Type: text/html; Charset=EUC-JP" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );

require_once( "http://lightbox.in.coocan.jp/gen/db.txt");
$conf_db_type = 1;
$SQL = new DB( "サーバー","DB","ユーザー","パスワード" );
$SQL->Debug = true;

# **********************************************************
# 主処理
# **********************************************************
$Query = "update acounter set PAGE_COUNT = PAGE_COUNT + 1";
$Query .= " where PAGE_NAME = 'NEW_PAGE'";
$SQL->Execute( $Query );
$ret = mysql_affected_rows( $SQL->Connect );
if ( $ret == 0 ) {
	$Query = "insert into acounter (PAGE_NAME,PAGE_COUNT)";
	$Query .= " values('NEW_PAGE',1)";
	$SQL->Execute( $Query );
}

$Query = "select * from acounter";
$Query .= " where PAGE_NAME = 'NEW_PAGE'";

$Column = $SQL->QueryEx( $Query );

$OUT_DATA = $Column["PAGE_COUNT"];

if ( $_GET['send'] == "送信" ) {
	$Query = "update acounter set PAGE_COUNT = {$_GET["counter"]}";
	$Query .= " where PAGE_NAME = 'NEW_PAGE'";
	$SQL->Execute( $Query );
}

$SQL->Close();
?>
<!--********************************************************
 画面定義
**********************************************************-->
<HTML>
<HEAD>
<META http-equiv="Content-type" content="text/html; charset=euc-jp" />
<TITLE>HTML雛形</TITLE>
<STYLE type="text/css">
* {
	font-size: 12px;
}
.column {
	border-style:solid;
	border-width:1px;
	border-color:#000000;
	padding: 4px;
}
</STYLE>
</SCRIPT>
</HEAD>
<BODY>

<PRE>
<?= $OUT_DATA ?>
</PRE>

<FORM
	name="frm"
	method="GET"
>
	<INPUT
		type="submit"
		name="send"
		value="送信"
	>
<TABLE
	border=1
	style='
		border-collapse:collapse;
		border-style:solid;
		border-width:1px;
		border-color:#000000;
		width:690px;
	'
>
<TR>
	<TD class="column">アクセスカウンタの初期化</TD>
	<TD class="column">
	<INPUT
		type="text"
		name="counter"
		style='width:400px;'
		@C:red(value="<?= $_GET["counter"] ?>")
	>&nbsp;&nbsp;
	</TD>
</TR>
<TR>
	<TD class="column">デバッグ用入力データの表示</TD>
	<TD class="column">
<PRE>
[[<?
	print_r($_GET);
?>]]
</PRE>
	</TD>
</TR>
</TABLE>
</FORM>

</BODY>
</HTML>
@END