xampp上のcsvファイルをcoreserver上にアップロード

2020年5月24日

現在30日分の安い宿一覧表示について、

1.ローカルのxampp上で楽天APIのデータをcsvファイルとしてハードディスクに保存

2.coreserver上のMySQLにアクセスし、テーブルyasuiyadoを選択し先ほどエクスポートしたcsvファイルをインポートする。
フォーマット特有のオプションUpdate data when duplicate keys found on import (add ON DUPLICATE KEY UPDATE)にチェックを入れてインポート)

という作業をしているのですが、1の部分はPHPで自動でやっているのですが、2の部分は手動でやっているのです。
2の部分もPHPで自動で動作できれば、凄く楽になります。
なんとかならないか調べてみようと思います。

最初に躓いたのは、coreserver上のMySQLにcoreserver以外からアクセスする事です。MySQLへのアドレスが判らないのです。
coreserverからだとmysql:host=127.0.0.1;dbname=kimassi_yadoでアクセスできるのですけど。

2020年5月25日

coreserverの運営会社に問い合わせしました。

coreserverでは外部からデータベースへの接続は出来ない仕様となっておりますため、希望の
動作は出来ないという返答がありました。

それで、1つ思いつきました。
coreserver上のMySQLに、csvファイルをインポートさせるのは、coreserver上のPHPファイルにさせることにして、xampp上からcoreserver上のPHPファイルを動作させれば、思い通りの処理を自動で行えるのではないかと
問題は、coreserver上のPHPファイルでパソコン上のcsvファイルをアップロードさせることができるかです。ネット上のPHPがパソコンのデータを操作できるとなるとセキュリティ上問題があるかので出来ないかもしれません。。
xampp上のPHPからxampp上にあるcsvファイルをcoreserver上にアップロードして、coreserver上のPHPファイルを自動で動作させて、coreserver上のMySQLに、coreserver上のcsvファイルをインポートさせるというのは可能かもしれません。

2020年5月30日

xampp上のPHPからxampp上にあるcsvファイルをcoreserver上にアップロードする方法が判りました。困った時のYAHOO知恵袋でアドバイスいただいたのです。

Xampp上の下記のPHPファイルで

<!DOCTYPE html>
<html lang=”ja”>
<head>
<meta charset=”UTF-8″>
<title></title>
</head>
<body onload=”document.all.jikkou.click();”>
<form action=”https://kimassi.net/insert.php” method=”post”>
<input type=”hidden” name=”up_file” value=”<?= urlencode(file_get_contents(‘../../../data/output/csv-put.csv’)) ?>”>
<input type=”submit” value=”up” name=”jikkou”>
</form>
</body>
</html>

サーバー上のinsert.phpを呼び出して、下記のinsert.phpでサーバー上にcsv-put.csvを書き込めました。

<!DOCTYPE html>
<html lang=”ja”>
<head>
<meta charset=”UTF-8″>
<title></title>
</head>
<body>
<?php
$files = “csv-put.csv”;
file_put_contents($files,urldecode($_POST[‘up_file’] ) );
?>
</body>
</html>

あとはアップロードしたcsv-put.csvの内容を、サーバーのデータベース(MySQ)に登録することに成功すれば、データベースの自動更新が完成します。

2020年6月11日

全部まとめて動作させたら、思った通りにいかなくて一瞬焦りましたが、PHPファイルをUnicode(UTF-8)で保存するのを忘れていました。思わぬところで落とし穴があるものです。
ファイルに日本語が入っていないと、エディターで読み込むときにシフトJISで読み込みます。その状態で編集して保存すると、シフトJISで保存されてエラーになってしまうのです。
どこかに日本語を入れておいてUnicode(UTF-8)で保存すれば次回からは自動でUnicode(UTF-8)になるので便利です。

コメントを残す

メールアドレスが公開されることはありません。