PHPを使ったCSVファイルアップロードページの実装方法とサンプルページの検索方法

このQ&Aのポイント
  • CSVファイルを選択し、PHPを使ってMySQLにデータを保存するCSVファイルアップロードページを作りたいと思っています。しかし、検索しても希望するページにたどり着けません。自分では実装が難しいため、参考になるページやサンプルページを教えてほしいです。
  • CSVファイルアップロードページをPHPで実装する方法や参考になるページ、サンプルページを教えてください。CSVファイルを選択する参照ボタンと、選択したファイルをインポートボタンでMySQLに保存する仕組みを構築したいですが、検索しても望んでいる情報が見つかりません。
  • PHPでCSVファイルを選択し、インポートする機能を持つページを作成したいです。しかし、検索しても求めている情報を見つけることができません。自分の技術では実装が難しいため、実装方法や参考になるページを教えていただけませんか?
回答を見る
  • ベストアンサー

PHPを使ってcsvファイルアップロードページ

質問失礼します。 すごくおおざっぱな質問内容かと思うのですが、 ↓PHPでこんなしくみを作りたいと思っています・・・ +-----------------+ │ファイル名     │ [参照] [インポート] +-----------------+ ※しくみ 参照ボタンを押すと、デスクトップなどにあるcsvファイルを選択することができ、 選択した後インポートボタンを押すとMySQLにデータが保存される 検索の際に 「PHP csv 参照ボタン インポート」 などで検索しましたが、どうも思うようなページにたどり着けません。 1からこの仕組みを作るのは私の技術では難しいのですが、 参照になるページなどありましたら教えて下さい。 サンプルページも公開していると嬉しいのですが・・・ もしくは、検索方法でも大丈夫です。 宜しくお願いします。

  • PHP
  • 回答数1
  • ありがとう数8

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

やりたい「しくみ」そのものは珍しいものではないと思いますが、それをすべて一括で行うような方法を教えてくれるようなサイトはないでしょうね。実際のステップに分解して、それぞれについて検索してみましょう。 その操作は次の3つのステップで行えると思います。 1. フォームからのファイルのアップロード 2. CSVファイルの解釈 (文字列の塊から配列に変換) 3. MySQLへの配列のインサート まず、ステップ1については"PHP フォーム アップロード"などで検索するといくつかやり方が見つかります。 http://www.php-labo.net/tutorial/php/upload.html http://php.net/manual/ja/features.file-upload.post-method.php この操作でフォームで指定したファイルの複製がサーバーの特定のディレクトリーに作られます。 CSVファイルを保存する必要がないなら、move_uploaded_fileは不要かもしれません。 作業の前に一応、move_uploaded_fileのマニュアルにも目を通します。 http://php.net/manual/ja/function.move-uploaded-file.php ステップ2では"php csv 読み込み"で検索すると、fgetcsvというのがあることがわかります。 http://shoyu-ramen23.jugem.jp/?eid=70 http://codaholic.org/?p=287 念の為に、fgetcsvのマニュアルにも目を通します。 http://php.net/manual/ja/function.fgetcsv.php マニュアルによると、システムのロケールによってファイルの文字コードが考慮されるようですが、どうもそれはうまく動いていないようなので次を参考にして文字コードの変換をしてからCSVの解釈をします。 http://www.php.net/manual/ja/function.fgetcsv.php#100168 (MySQLに保存する場合の文字コードも当然考慮する必要があります。) 一応、ここで出てきたfile-get-contentsについても調べます。 http://php.net/manual/ja/function.file-get-contents.php これで、一行ずつCSVファイルを読む方法がわかったので、ステップ3でMySQLへの保存方法を考えます。 ステップ3では、"PHP MySQL insert"で検索します。 MySQLについて調べるときは保存と書くよりも実際に行いたいSQLの操作を書いたほうが適切なものが見つかるでしょう。 http://memopad.bitter.jp/w3c/php/php_mysql_insert.html というわけで、mysql_connectでMySQLに接続して、mysql_select_dbでDBを選び、mysql_queryでinsert命令を発行してデータを書き込み、mysql_closeで接続終了すれば良いことがわかりました。 一応、mysql_connectなどやMySQLのinsert文の文法も調べます。 http://php.net/manual/ja/function.mysql-connect.php http://dev.mysql.com/doc/refman/4.1/ja/insert.html ...と、mysql_connectは非推奨のようなので、推奨されているmysqliを使うことにします。 http://php.net/manual/ja/book.mysqli.php とりあえず、使い方の流れはこのページでわかるようです。 http://www.php.net/manual/ja/mysqli.quickstart.statements.php 以上で、ご希望の機能を実装するための網羅的な知識が手に入ると思います。 あとはPHPにmysqli拡張をインストールする方法やMySQLがそもそもインストールされているかという部分が残りますが、それも検索するとやり方が出てくると思います。

rabbit-kimura
質問者

お礼

ありがとうございました!!

rabbit-kimura
質問者

補足

すごく丁寧にありがとうございます!!!!!!!!!!!!!!! ステップ1、2のしくみがどうも理解できてなかったようなので・・・ 早速やってみます!!

関連するQ&A

  • インターフェースからCSVを取り込んで、MySQLにインポート

    インターフェースからCSVを取り込んで、MySQLにインポート ブラウザのインターフェースからCSVファイルを選択して、MySQLにインポートするようにしたいのですが、 (1)ファイルのアップロード (2)サーバー上にある(アップロードされた)CSVファイルをMySQLにインポート という手順で処理するほかないでしょうか? ローカルのCSVファイルを直接MySQLにインポートするような画期的な方法(ライブラリなど)あったらいいなと思い質問します。 PHPのバージョン:5.2 MySQLのバージョン:5.1 です。 まだ基本設計の段階なので、具体的な質問になっておらず申し訳ありませんが、 よろしくお願いします。

    • 締切済み
    • PHP
  • PHPとCSVファイル

    CSVファイルを用いて検索するプログラムを書いています。 CSVファイルの読み込みはできたのですが その後が詰まってしまい、質問させていただくことにしました。 流れとしてはdealer.php(ディーラー)→color.php(色)→sex.php(性別)と続き sex.phpで 男性(0)ならkekka.php(結果)へ。 女性(1)ならnaisou.php(内装)に移動します。 移動方法はすべてsubmitボタンを使用。 car.csv ディーラー,色,性別(0→男、1→女) toy,siro,0 toy,siro,1 toy,kuro,0 toy,kuro,1 nis,siro,0 nis,siro,1 nis,kuro,0 nis,kuro,1 hon,siro,0 . , . . , . 項目の多少の修正と追加があるのでCSVファイルは使用したいです。 PHPで性別の0と1を検索し、 それぞれのページに移動させるにはどうすればいいのでしょうか? 初めてプログラムを組んでいるため、分かりやすい解説が あるとうれしいです。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 複数CSVファイルを一括インポート

    お世話になります ■概要 Accessのボタンで複数のCSVファイルを一括にひとつのテーブルにインポートさせたいのですが ■内容 テキストボックス、参照ボタン、実行ボタンをフォーム上に設置 参照ボタンでダイアログボックスを表示させCSV複数選択し 選択内容がテキストへ反映。 実行ボタンで選択された複数CSVをインポートさせたいです 少し難しいと思いますが、わかる方ご教授よろしくお願い致します。

  • 検索とレコード数(CSVファイルより)

    PHP初心者です CSVファイルを参照して 項目で検索 検索した内容のレコード数(件数)を 表示させる関数(方法)を教えて頂きたいです 今までMysqlで操作していたのですが CSVファイルに変わって 困ってしまいました よろしくお願いします

    • 締切済み
    • PHP
  • VBA 複数のCSVファイルを一度にインポートするには?

    お世話になります ■概要 Accessのボタンで複数のCSVファイルを一括にひとつのテーブルにインポートさせたいのですが ■内容 テキストボックス、参照ボタン、実行ボタンをフォーム上に設置 参照ボタンでダイアログボックスを表示させCSV複数選択し 選択内容がテキストへ反映。 実行ボタンで選択された複数CSVをインポートさせたいです 当方初心者なのでVBA等の回答があれば幸いです ご教授よろしくお願い致します。

  • php アップロードファイルが*.csv指定の問題

    <form name="csvupload" id="csvupload" action="csvread.php" method="post" enctype="multipart/form-data" > <input type="hidden" name="MAX_FILE_SIZE" value="30000" /><br /> csvfile:<input type="file" name="uploadfile" size="50" accept="text/comma-separated-values" /> <input type="submit" name="hyosi" value="ファイル表示" /><br /> </form> htmlからファイルが選択して、php言語でそのファイルが*.csv拡張子で指定して、アップロードする。以下わたし作ったのサンプルで*.exeだとうまくいかなかった。初心者です。急ぎです。誰か助けてください。 if(isset($_POST['hyosi'])){ $file_dir = 'C:\apaches\Apache2\htdocs\practice\csvupload\csvfile\\'; $file_path = $file_dir.$_FILES['uploadfile']['name']; if(!is_uploaded_file($_FILES['uploadfile']['tmp_name'])){ print'*.csvhh拡張子のファイルを参照してください。'; exit; } elseif(strtoupper(substr(trim($_FILES['uploadfile']['name']),-4))!=".CSV"){ print'*.csv拡張子のファイルを参照してください。'; exit; } elseif(strtoupper(substr(trim($_FILES['uploadfile']['name']),-3))=="EXE"){ print'*.csvrrr拡張子のファイルを参照してください。'; exit; /* elseif(preg_match("/^.*\.(?!csv)$/",$_FILES['uploadfile']['name'])){ print'*.csv拡張子のファイルを参照してください。'; exit; */ } elseif($_FILES['uploadfile']['name'] == '' && $_FILES['uploadfile']['size'] == 0){ print'ngngng'; exit; } else{ if(move_uploaded_file($_FILES['uploadfile']['tmp_name'],$file_path)){ $csv_dir = "./csvfile/"; $csv_path = $csv_dir.$_FILES['uploadfile']['name']; $sfile = addslashes($csv_path); $_SESSION['file'] =$sfile; $file=fopen($sfile ,'r'); }else{ print '正常にアップロード処理されませんでした。'; exit; } } }

    • 締切済み
    • PHP
  • PHPやmySQLなどでページを自動で作りたい

    初めまして。 まだ、PHPを勉強中なので教えてください。 簡単なぐるなびサイトのようなものを作りたいと思ってます。 サイト管理ページでデータを入力し、その入力したデータを検索ページで検索し、検索されたデータを元にページを自動で作成する。 このようなサイトを作る場合どういう仕組みがいいのでしょうか? 掲示板の仕組みでいいのでしょうか? mySQVやCSVファイルをつかうのでしょうか? 教えてください。お願いします。

    • ベストアンサー
    • PHP
  • phpにてファイルをアップロード。

    皆様はじめまして。 phpでファイル[jpg画像]をアップロードできるようなブラウザーを作りたいのですが、検索でいろいろ探してはみたのですが、php初心者なのでいまいちよく分かっていません。 いくつかのページを参考にし、とりあえず参照→送信[アップ]できるようなブラウザーまではできたのですが、その先がうまくいきません。 サーバー上のにあるフォルダに画像をアップロードしたいのですが、上にも書いたようにphp初心者なので分からない部分が多くあります。 一連の流れが初心者でも分かるページなどありましたら教えていただけないでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • CSVファイルをエクセルファイルにインポートさせるには?

    おせわになります CSVファイルをエクセルファイルにインポートさせたいのですが 方法は ユーザーフォームをにテキストボックスと参照ボタン、実行ボタンを作成し 参照ぼたんでCSVファイルを選ぶ テキストボックスには参照先の住所が記載され 実行ボタンでsheet1にB2から貼り付けさせたいのですが可能ですか? 又、CSVの情報が不要な列もあります 必要な列のみ落とし込みをしたいです 当方初心者でVBAコードがあれば幸いです。 わかる方よろしくおねがいします

  • PHPでCSVファイルをUTF8に変換したい

    ブラウザからCSVファイルをアップロードし、MySQLのデータベースにインポートするプログラムをPHPで作成しています。 エクセルで作成したCSVファイルはsjis形式のため、UTF8に変換してからMySQLにインポートしてあげると文字化けせずにインポートする事が出来るのですが、毎回手動でUTF8に変換するのは面倒ですのでファイルをアップロードしたタイミングで自動的にsjis形式からUTF8に変換したいと考えております。 ファイルのアップロードまでは動作していますが、CSVファイルをsjisからUTF-8に変換するにはどうすればよいでしょうか? どなたかご教示いただければ幸いです。以下は作成中のコードです。 index.html <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>sample</title> </head> <body> <form action="read.php" method="POST" enctype="multipart/form-data"> ファイル:<br> <input type="file" name="upfile" size="30"><br> <br> <input type="submit" value="アップロード"> </form> </body> </html> read.php <?php //csvファイルのアップロード if (is_uploaded_file($_FILES["upfile"]["tmp_name"])) {     //「files」という名前のフォルダを同じ階層に設置。ここにCSVファイルをアップロード if (move_uploaded_file($_FILES["upfile"]["tmp_name"], "files/" . $_FILES["upfile"]["name"])) { chmod("files/" . $_FILES["upfile"]["name"], 0644); //fileパス $file = "files/" .$_FILES["upfile"]["name"]; //DB接続 $sv = "localhost"; $dbname = "shop"; $user = "user"; $pass = "password"; $conn = mysql_connect($sv, $user, $pass) or die("コネクトエラー"); mysql_select_db($dbname) or die("DBセレクトエラー"); mysql_query("SET NAMES utf8"); //CSVデータの取り込み $sql = "LOAD DATA LOCAL INFILE '$file' INTO TABLE food"; $sql .= " FIELDS"; $sql .= " TERMINATED BY ',' "; //TERMINATED BY 区切り文字 $sql .= " ENCLOSED BY '\"' "; //ENCLOSED BY 囲み文字 $sql .= " LINES TERMINATED BY '\r\n' "; $sql .= " IGNORE 1 LINES"; $result = mysql_query($sql, $conn); if (!$result) { $message = 'Invalid query: ' . mysql_error() . "\n"; $message .= 'Whole query: ' . $sql; die($message); } echo "インポートが完了しました!"; //失敗したとき } else { echo "ファイルをアップロードできません。"; } } else { echo "ファイルが選択されていません。"; } ?> CSVファイル "No","food","price" "1","うどん","100" "2","カレー","300" "3","パスタ","500" MySQLテーブル CREATE TABLE IF NOT EXISTS `food` ( `No` int(11) NOT NULL, `food` varchar(50) NOT NULL, `price` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 使用中のバージョン PHP/5.4.19 Apache/2.4.4 XAMPP v3.2.1 素人の質問で凝縮ですが、よろしくお願いいたします。

    • ベストアンサー
    • PHP

専門家に質問してみよう