アプリ版:「スタンプのみでお礼する」機能のリリースについて

CSV形式のテキストデータを確認をはさんでSQLに登録したいのですが、自分で作るとテキストデータの解析がうまくいかず、中途半端にごちゃごちゃしてわからなくなりました。

------------------------------------------------------------------------

mysqlの「動物」テーブルに、3つのカラム「サイト名」「URL」「日時」があります。

import.phpの入力フォームのテキストボックスに、例えば

ここから

ねこ,cat.com,3/8
いぬ,dog.com,
うさぎ,,6/21
ねずみ,mouse.com,12/30

ここまで

をコピペして確認ボタンを押したら、内容を元に以下のようなテーブルで表示して、登録ボタンを押したらSQLに登録されるようなPHPを作成したいです。

------------------------------------------------------------------------
check.phpに表示する確認テーブル


サイト名 _URL       日時
ねこ    cat.com     3/8
いぬ    dog.com   
うさぎ             6/21
ねずみ  _mouse.com  _12/30

------------------------------------------------------------------------

どなたかこのようなPHPのコードを教えてください。
どうかご教示のほど、よろしくお願いします。

A 回答 (4件)

CSVをMySQLに入れる方法ですが、二通りあります


(1)mysql_query関数でSQL文 INSERT を実行する
(2)MySQLのLOAD DATA INFILEコマンドを使ってcsvファイルをインポートする

PHPにCSVファイルを読み込んで変数にデータとして保持することに成功したなら
(1)をお勧めします。
    • good
    • 0
この回答へのお礼

ありがとうございます。
2を検討していましたが1も考えてみることにします。

お礼日時:2011/11/13 16:46

改行はtrim関数や str_replace関数で削除することができるので、


explode関数に通す前にそれで改行をとれば良いです

それからfgetcsv関数はPHPのなかではあまり良い関数とはいえないので使わないほうがいいでしょう
昔からあまり動作が安定しない関数です
仮にfgetcsv関数のような振る舞いをする処理をしたいとしても多くの人は
fgetcsv風の自分なりの関数を自作してから使っているのが実情です
    • good
    • 0
この回答へのお礼

>昔からあまり動作が安定しない関数です
これは知りませんでした。fgetcsv_regというのが見つかりましたので、これを使ってみます。

お礼日時:2011/11/13 16:50

> 自分で作るとテキストデータの解析がうまくいかず



explode()関数を使えばうまく配列などに格納してくれます
参考URLには似たような例がわかりやすく載っています

参考URL:http://php.net/manual/ja/function.explode.php
    • good
    • 0
この回答へのお礼

mysqlはcsv形式のデータを扱うことができるので、
【テキストデータ】->【解析して確認画面に表として表示】->【送信されたらcsv形式でインポート】
という手順を考えています。

explode関数は改行があると使えないので、fgetcsvで解析を考えました。
が、うまく解析されません(訂正するたびにエラー箇所が変わってきてどこが原因かがわからない)

また、csv形式でのインポートにしても、SQLからのエクスポートのやり方はいくつかのっているものの、インポートのやり方は載っていませんでした。

お礼日時:2011/11/13 15:05

すみませんが、MySQLで直接CSVをインポートするほうがてっとり早いと思うんですが、なぜわざわざPHPを介してインポートするのでしょうか。



参考URL:データをCSVで入出力する方法 - MySQLの小技
http://tomo.ac/goodstream/database/mysql/linux/t …
    • good
    • 0
この回答へのお礼

たとえば英単語の学習のように、使用者一人一人がブラウザから使うコンテンツを一括して登録できるようなサービスを考えています。

お礼日時:2011/11/13 14:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!