![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
ユーザーがcsvファイルを指定して、自動的にmysqlに登録されるようにするにはどうしたらいいか悩んでいます。
PHPでプログラムを書いているのですが、csvファイルをプログラム側で指定するのではなく、ユーザーにブラウザからファイルを指定してもらいたいのですが(ユーザーのローカルにcsvファイルがある)どのようにしたら上手く出来るのでしょうか?
HTMLでinput type="file"で出来ると思いきや、変数の受け渡しができず困っています。なにか良い方法があれば教えて頂けないでしょうか?
何卒宜しくお願い致します。
下記は参考プログラムです。
========================================
define('CSVFILE', './mycsv.txt');←ここをユーザーに指定してもらいたい。
define('DELIMITER', ','); //データ区切り(カンマ)
define('ENCLOSURE', '"'); //データ囲み文字(ダブルクォーテーション)
//ファイルを開く
$fp = fopen(CSVFILE, 'r') or die('ファイルが開けません');
//テーブルを出力
echo '<table border="1">';
while ($field_array = fgetcsv($fp, 4096, DELIMITER, ENCLOSURE)) {
echo '<tr>';
foreach ($field_array as $value) {
echo '<td>' . $value . '</td>';
echo '<td>' . htmlspecialchars($value, ENT_QUOTES) . '</td>';
}
echo '</tr>';
}
echo '<table>';
//ファイルを閉じる
fclose($fp);
=========================================
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_14.png?e8efa67)
No.3
- 回答日時:
> HTMLでinput type="file"で出来ると思いきや、変数の受け渡しができず
PHP4とPHP5ではファイル名というかファイルの実体の受け渡し方法が変更になっていたと思います。
move_uploaded_file()関数を使うようにしましょう。
私は以下のコードでcsvファイルアップロードとMySqlテーブル登録できました。PHP5.3.1ですが参考になれば。エラー処理、セキュリティ上の処理はもっと必要ですけど省略してます。
ーーーuploadcsv7.php ここからーーー
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>upload csv</title>
</head>
<body>
<FORM enctype="multipart/form-data"action="uploadcsv7.php"method="POST" >
<INPUT type="hidden" name="MAX_FILE_SIZE" value="200000">
アップロードするファイル:
<INPUT name="UploadFile" type="file" >
<INPUT type="submit" value="Up Load CSV File">
</FORM>
<?php
// DB 1
$link = mysql_connect("hostname", "username", "password");
mysql_select_db("dbmusic", $link);
// File Upload
$upload = "D:\\upload\\";
$upload .= $_FILES['UploadFile']['name'];
$res = move_uploaded_file($_FILES['UploadFile']['tmp_name'], $upload );
if ( $res ) {
print "アップロードに成功しました\n";
$fp = fopen($upload, "r");
while( ! feof($fp) ) {
$csv = fgets($fp);
$csv_array = explode(",",$csv);
// DB 2
$sql = sprintf(
"INSERT INTO MusicInfo (poemID, poemString, memberName)
VALUES( '%d', '%s', '%s' )",
$csv_array[0], $csv_array[1], $csv_array[2]
);
mysql_query($sql);
}
}
else {
print "アップロードに失敗しました\n";
}
?>
</body>
</html>
ーーーここまでーーー
No.2
- 回答日時:
<input type="file">
に関してですが、変数の受け渡しが出来ないというのはどういう状況でしょうか。
http://www.php-labo.net/tutorial/php/upload.html
こちらのブログが参考になると思いますが、これで受け渡しが不可能であった、ということですか。
「PHP ファイル アップロード」あたりで検索すれば参考になる資料が色々ありますが、いかがでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- MySQL SQL任意に並び替えをしたい 2 2023/08/28 10:47
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- その他(プログラミング・Web制作) 単純なコマンドプロンプトが動きません。 2 2022/04/19 15:21
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- その他(プログラミング・Web制作) Fortranでの出力ファイル 2 2023/03/21 21:25
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPのエラーの解消法について教...
-
phpのheader("Location:#pos")...
-
PHPについて。
-
PHPからCSVをアップロード後、m...
-
【PHP/MySQL】コード上で生成...
-
phpでcookieがうまく保存されない
-
PHPのセッション有効期限について
-
PHPで画像の渡しが上手く行きま...
-
クラス
-
PHPでの時間の足し算、割り算
-
[php初心者]サイトを見てデータ...
-
phpに関わる所での、form actio...
-
ゆゆにゃ。
-
【初心者】XAMPPのapacheの(恐...
-
プログラミング言語で、使える...
-
こちらはただの直列処理ですか?
-
PHPでこのコード自体に意味は無...
-
PHPとHTML+Xamppの掲示板で画像...
-
phpでPEAR::DBを使っているので...
-
index.phpって何ですか? 具体...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
2つの画像ファイルが異なるファ...
-
stat failed
-
PHPでFilename cannot be empty...
-
XMLのロードに失敗する
-
ファイルの行数取得
-
日本語が文字化けしないよう読...
-
ファイル名は、数字の「0」(...
-
PHPで特定の文字列のみ抽出し、...
-
php4、php5によるimplode()、fi...
-
テキストファイルの読み込みと...
-
二次元配列のソートのやり方が...
-
CSV出力
-
phpのftp_get()でエラーが出ます。
-
日本語のファイルが開けない
-
Smartyで吐き出されたhtmlソー...
-
ファイルについて・・・。
-
ファイルの読み込み方法について
-
PHPでの別のサーバーのテキスト...
-
TSVファイルをCSV形式に変換したい
-
PHPでファイルの書き換え
おすすめ情報