質問編集履歴

1 エラー表示の有無、現象について追加記載。

uep3vjz9wp

uep3vjz9wp score 20

2018/12/06 00:28  投稿

PHPでfunctionを読み込み動作させたい
お世話になります。
#####やりたいこと
下記のfunction_category.phpをtest.phpで読み込み、動作させたい。
カテゴリを数字でmariaDBへ登録し、呼び出し時に数字を日本語に変換して表示させています。
カテゴリが現在は4つですが、今後10以上に増えるので書き換えが容易になるよう外部ファイルにしたいです。
function_category.php
```php
<?php
function categoryDisplay_function(){
 if ($row['category'] === '1') $tmp = "いちばん";
 if ($row['category'] === '2') $tmp = "にばん";
 if ($row['category'] === '3') $tmp = "さんばん";
 if ($row['category'] === '4') $tmp = "よんばん";
echo "関数テスト表示";
}
```
test.php
```php
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>試験web</title>
</head>
<body>
<h3>試験web</h3>
<?php
require_once 'db_config.php';
require_once 'function_category.php';
try {
   $dbh = new PDO("mysql:host=localhost;dbname=$databasename;charset=utf8", $user, $pass);
   $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
   $sql = "SELECT * FROM $dbtablename
       WHERE hizuke >= DATE_ADD(NOW(), INTERVAL -3 MONTH)
       ORDER BY hizuke";
   $stmt = $dbh->query($sql);
   $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
   echo "<table width=100% border=1 cellspacing=1> \n";
   echo "<tr>\n";
   echo "<th>日付</th><th>内容</th><th>カテゴリ</th>\n";
   echo "</tr>\n";
   foreach ($result as $row) {
       echo "<tr>\n";
       echo "<td>" . htmlspecialchars($row['hizuke'],ENT_QUOTES,'UTF-8') . "</td>\n";
       echo "<td width=50%>" . nl2br(htmlspecialchars($row['naiyou'],ENT_QUOTES,'UTF-8')) . "</td>\n";
                        categoryDisplay_function();
/*      関数で以下を読み込み
 if ($row['category'] === '1') $tmp = "いちばん";
 if ($row['category'] === '2') $tmp = "にばん";
 if ($row['category'] === '3') $tmp = "さんばん";
 if ($row['category'] === '4') $tmp = "よんばん";
*/
       echo "<td>" . htmlspecialchars($tmp ,ENT_QUOTES,'UTF-8') . "</td>\n";
       echo "</tr>\n";
   }
   echo "</table>\n";
   $dbh = null;
} catch (PDOException $e) {
   echo "エラー発生: " . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8') . "<br>";
   die();
}
?>
</body>
</html>
```
1.function_category.php内の「echo "関数テスト表示";」の「関数テスト表示」は
表示されるのでファイルは読み込まれています。
2.test.php内の「/*      関数で以下を読み込み」の「/*」「*/」を外すとcategoryは日本語で表示され、動作します。
3.category以外の動作に支障はありません。
4.エラー表示は出ていません。function_category.phpを読み込み、データベースに登録している数字を日本語に変換したいのですが、カテゴリだけが空白となります。function_category.phpの記述方法が悪いのか他に原因があるのかを知りたいと思っています。  
ご教示お願いします。
  • PHP

    34628 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る