質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

PHP

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

Q&A

解決済

1回答

10399閲覧

PHP CSVを検索フォームで一致したキーワードを表示さようとすると真っ白になる。

hikaricafe

総合スコア19

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

PHP

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

0グッド

1クリップ

投稿2014/12/31 07:12

PHP初心者です。

こちらの方のサイト
◆練習問題12 - 外部ファイルの読み書き
を参考にPHPでcsvファイルを検索フォームで一致したキーワードを表示
させようと思っているのですがうまくいきません。
[送信]を押した後の画像のように中身が真っ白に表示されてしまいます。

[data.csv] も [index.php]
もすべて以下ディレクトリ配下においております。
/var/www/html/

よろしくお願いします。

[送信]を押す前 検索キーワードを入力
![イメージ説明]WIDTH:536
[送信]を押した後 ↓中身が真っ白に表示される
![イメージ説明]WIDTH:536

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>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

処理途中でのエラーによって、後続の処理が中断されて出力されているようですね
こうなった場合は、地道にエラー箇所を確認していく作業に移行することになると思います

index.php の最初の行あたりに

lang

1<?php 2ini_set('display_errors', true); 3error_reporting(E_ALL); 4?>

とエラー出力の設定を書いてあげると、どの行でエラーが発生しているのか、情報を示してくれるようになると思います

今回の場合:

lang

1 //目的のデータの修得 2 $array_size = count($array); 3 for ($i = 0; $i < $array_size; $i++) { 4 if($array[$i][0] == $id) { 5 $new_data = $array[$i]; 6 //var_dump( $new_data ); 7 break; 8 } 9 } 10} 11var_dump($new_data); // ← 追記。データがあるか確認! 12$new_data = isset($new_data) ? $new_data : "false" ; 13?>

のあたりが怪しそうです

Links

投稿2014/12/31 09:44

gouf

総合スコア2321

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hikaricafe

2014/12/31 12: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ありがとうございま!! 勉強いたします!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問