[PHP-users 24132] Re: (無題)
T.Tsuruoka
tsuruoka @ macrobilis.com
2005年 1月 14日 (金) 00:33:20 JST
はじめまして.
クマー@なぞなぞ大好き です.
以下,回答です.
----
まず問題解決の手がかりになりそうな情報を本文から探してみる.
OS,PHP,Apache などの環境についての情報と
問題のソースはどこにも記されていない.
他に参考になりそうな情報を探す.
「10日で覚えるPHP入門教室」という
問題のサンプルが含まれている書籍名.
サンプル付き書籍はオンライン上でも,同じデータや,
ソースに間違いがあるときはその訂正データを公開していることがある.
書籍名を元に書籍のサンプルを探すと,以下が見つかる.
http://www.shoeisha.com/book/hp/10days/down/index.html
http://www.shoeisha.com/book/hp/10days/down/PHP10sample.lzh
問題のサンプルに関する情報は,
> 簡易アドレス帳で
> 検索フォームに名前の一部を入れるだけで
> データのアドレスを検索して
> 表示してくれると言うものですが
とあるので,それらしきものを探す.
02-02 というディレクトリに含まれているサンプルがそれに近い.
* 02-02 のファイル構成
- 02-02.php 問題のソースと思われるもの
- 02-02-ex.php
- common.php ファイル読み込みと文字コード変換
- data/m_addr.txt アドレスデータ
* 02-02.php のソース
<?php
require_once( "common.php" );
?>
<HTML>
<HEAD><TITLE>02-02</TITLE></HEAD>
<BODY>
<H1>アドレス帳</H1>
<FORM ACTION="<?php echo( $_SERVER[ "PHP_SELF" ] ) ?>" METHOD="POST">
キーワード:<INPUT NAME="KEYWORD" TYPE="TEXT" SIZE="30">
<INPUT TYPE="SUBMIT" VALUE="検索">
<?php
$AddressData = LoadTextFile( "./data/m_addr.txt", "EUC_JP", "SJIS" );
if ( $AddressData == false ) {
echo( "データはありません。" );
} else {
?>
<TABLE BORDER="1">
<?php
for ( $i = 0; $i < sizeof( $AddressData ); $i++ ) {
$line = explode( ",", $AddressData[ $i ] );
$match = true;
if ( $_POST[ "KEYWORD" ] != "" ) {
if ( ( strstr( $line[ 0 ], $_POST[ "KEYWORD" ] ) != false ) ||
( strstr( $line[ 1 ], $_POST[ "KEYWORD" ] ) != false) ) {
$match = true;
} else {
$match = false;
}
}
if ( $match == true ) {
?><TR>
<TD BGCOLOR="#FFFFCC"><?php echo( $i + 1 ) ?></TD>
<TD><?php echo( $line[ 0 ] ) ?></TD>
<TD><?php echo( $line[ 1 ] ) ?></TD>
</TR>
<?php
}
}
?></TABLE><?php
}
?>
</FORM></BODY></HTML>
このコードで,
> フォームに入力して検索ボタンを押しても
> 「カチッ」と音が鳴るだけで何も起こりません
となるのは,
<FORM ACTION="<?php echo( $_SERVER[ "PHP_SELF" ] ) ?>" METHOD="POST">
の $_SERVER[ "PHP_SELF" ] が空で,
<FORM ACTION="" METHOD="POST">
になる場合.
あるいは,
if ( $_POST[ "KEYWORD" ] != "" ) {
の $_POST[ "KEYWORD" ] が空の場合など.
これから,
$_POST,$_SERVER などが空になる.
↓
スーパーグローバル変数が定義されていない.
↓
答え:PHP のバージョンが 4.1.0 未満である.
----
正解ですか?
-------------------------
T.Tsuruoka
<tsuruoka @ macrobilis.com>
PHP-users メーリングリストの案内