私が持っているもの:私はこのロジックproble.mとこだわっている
-Iは、様々な製品を使用してファイルを持っている(「P」せずに、フラグが「P」は予約を意味するわけ販売が、予約されていない)
ELEMENTS
PRODOTTO Quantita Terminale
TAMOXIFENE EG*20CPR RIV 20MG 00002n 04
FERRITIN COMPLEX*OS 10FL 8ML 00001 P 01
VOLTADOL*10CER MEDIC 140MG 00001n 05
LEDERFOLIN*10CPR 7,5MG 00002 P 03
-fromこのファイルは、通常のPHPの表現( "P" フラグとその検索は、文字列のみ)を介して、私は製品を抽出し、MySQLのDBに挿入します。自動的
insericineldb.php
$txt = file_get_contents('./FILE', true);
$specialChars = preg_quote('#$%^&*()+=-[]\';,./{}|\":<>?~', '#');
preg_match_all('#([0-9]{4,9}\s+[A-Z]{1}\s+([' . $specialChars . 'A-Z0-9 ]+)\s+([0-9]{3,7})n?\s+P\s+([0-9]+))#', $txt, $match);
$products = [];
foreach (array_keys($match[2]) as $idx) {
$tagliaprodotto = rtrim(substr($match[2][$idx],1));
$tagliaquantita = ltrim($match[3][$idx],'0');
$products[] = [
'prodotto' => $tagliaprodotto,
'quantita' => $tagliaquantita,
'terminale' => $match[4][$idx]
];
}
$query = $pdo->prepare('INSERT INTO tabella (prodotto, quantita, terminale, data) VALUES (:prodotto, :quantita, :terminale, NOW()) ON DUPLICATE KEY UPDATE quantita = VALUES(quantita), terminale = VALUES(terminale)');
foreach ($products as $product) {
$query->execute($product);
}
-I抽出物(ファイルの変化を監視する)バッチの使用のおかげ。
BATCH
@echo off
:loop
timeout -t 1 >nul
for %%i in (c:\file) do echo %%~ai|find "a">nul || goto :loop
"c:\xampp\php\php.exe" -f c:\xampp\htdocs\inseriscineldb.php
rem do workload
attrib -a c:\file
goto :loop
ファイル:
(彼らは最終的に順序を作るとき、1日2回)は完全ではない(一部空になっている規則的ではない一定の時間-At文字列と "P"がある場合とない場合がファイルに残りますが、重要ではありません。なぜなら、ifを次のように使用することはできないからです。つまり、P = 0のときはクエリを開始しないからです。
-Furthermoreは時々いくつかの製品(ES。フェリチンCOMPLEX * OS 10FL 8ML 00001 P 01)自発的にを排除している(顧客は、50ミリリットルの製品を望んでいる私はそれを予約したが、彼は8ミリリットルの製品を望んでいる後と仮定、古い50ミリリットルの順序は、データベースから削除されることはありません)
問題:
1)だから、要素の一つが自発的にを削除されたとき、私は、INSERT INTOを介してデータベースに製品を入力すると、データベースからは削除されません。
2)ただし、INSERTの代わりにREPLACEを使用すると、ファイルが空になったときにデータベース内の他の要素も削除されてしまいます。
コメントは拡張されたディスカッションやデバッグセッションではなく、このチャットは[チャットに移動]されています(http://chat.stackoverflow.com/rooms/155707/discussion-on-question-by-squaloあなたが編集している間にあなたのタイトルを変更する必要がありますので、あなたはそれを編集する必要があります* –