PHP CSVを検索フォームで一致したキーワードを表示さようとすると真っ白になる。
解決済
回答 1
投稿 ・編集
- 評価
- クリップ 1
- VIEW 6,676
こちらの方のサイト
◆練習問題12 - 外部ファイルの読み書き
を参考にPHPでcsvファイルを検索フォームで一致したキーワードを表示
させようと思っているのですがうまくいきません。
[送信]を押した後の画像のように中身が真っ白に表示されてしまいます。
[data.csv] も [index.php]
もすべて以下ディレクトリ配下においております。
/var/www/html/
よろしくお願いします。
[送信]を押す前 検索キーワードを入力


data.csv
商品番号,名称,単価,在庫
A001,りんご,80,10
A002,みかん,30,20
A003,バナナ,40,14
A004,いちご,400,20
A005,パイナップル,200,21
index.php
<?php
//POSTの処理
$id = isset($_POST['id']) ? $_POST['id'] : "false";
?>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<head>
<title>練習問題12 - 簡易データベースの動作確認 / PHPを学ぼう!</title>
</head>
<body bgcolor="#FFFFFF">
<h1 style="font-size:14pt">◆簡易データベース</h1>
<?php
//ファイル名の指定
$file_name = "data.csv";
//処理の分岐
if($id != "false"){
$fp = fopen($file_name, "a+") or die('ファイルオープンエラー!');
//データを$arrayに代入(多元配列)
while(!feof($fp)){
$data = fgets($fp);
$array[] = explode(",", mb_convert_encoding($data, "UTF-8", "auto"));
}
var_dump( $array );
fclose($fp);
//目的のデータの修得
for($i=0; $i<count($array); $i++){
if($array[$i][0] == $id){
$new_data = $array[$i];
//var_dump( $new_data );
break;
}
}
}
$new_data = isset($new_data) ? $new_data : "false" ;
?>
<form action="index.php" method="POST">
<input type="text" name="id">
<input type="submit" name="Submit" vale="検 索">
</form>
<?php
if($id != "false"){
if($new_data == "false" || $id == ""){
echo "データが存在しません。";
}else{
echo '▼検索結果';
echo '<hr>';
echo '商品番号: '.$new_data[0].'<br />';
echo '名 称: '.$new_data[1].'<br />';
echo '単 価: '.$new_data[2].'<br />';
echo '在 庫: '.$new_data[3].'<br />';
}
}
?>
</body>
</html>
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
0
こうなった場合は、地道にエラー箇所を確認していく作業に移行することになると思います
index.php
の最初の行あたりに
<?php
ini_set('display_errors', true);
error_reporting(E_ALL);
?>
とエラー出力の設定を書いてあげると、どの行でエラーが発生しているのか、情報を示してくれるようになると思います
今回の場合:
//目的のデータの修得
$array_size = count($array);
for ($i = 0; $i < $array_size; $i++) {
if($array[$i][0] == $id) {
$new_data = $array[$i];
//var_dump( $new_data );
break;
}
}
}
var_dump($new_data); // ← 追記。データがあるか確認!
$new_data = isset($new_data) ? $new_data : "false" ;
?>
のあたりが怪しそうです
## Links
* PHP: 実行時設定 display_errors - Manual
* PHP: 実行時設定 error_reporting - Manual
* PHP: 言語リファレンス - Manual
* PHP: 変数のスコープ - Manual
* PHP入門(基本編) (全32回) - プログラミングならドットインストール
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.22%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2014/12/31 21:36
まずは教えていただいたとおり
<?php
ini_set('display_errors', true);
error_reporting(E_ALL);
?>
を追加しました。そして実行すると
CentOS上でPHPを動かすとき、文字コード変換関数mb_convert_encodingが実行できない
PHP Fatal error: Call to undefined function mb_convert_encoding()
↓
関数がインストールされていないのが原因とのこと。
当方の環境にPHPのモジュールがインストールされていないのが原因でございました。。
以下を行い、解決されました。
(1)関数のインストール
yum install php-mbstring
(2)httpdのサービスをリスタートする
#service httpd restart
<?php
ini_set('display_errors', true);
error_reporting(E_ALL);
?>
を追加していきなり、原因がわかってびっくりいたしました。
こちらを教えていただけなければ、ただただ悶々としているところでした。。
ありがとうございます。
また参考のLinksありがとうございま!!
勉強いたします!!