2010-07-28 41 views
0

我知道,我知道,數據庫將與我所想要做的更好的想法,但我不想與數據庫處理和學習的東西的麻煩。PHP - CSV文件覆蓋基於UID

我有一個CSV具有類似於

TestUser,2010/07/27 13:26:25,2010/07/27 13:26:29,0.0011,0.0006,0.06 
TestUser,2010/07/27 14:22:12,2010/07/27 14:22:24,0.0033,0.0027,0.27 
TestUser,2010/07/27 14:22:41,2010/07/27 14:22:53,0.0033,0.0028,0.28 
TestUser,2010/07/27 14:25:26,2010/07/27 14:25:33,0.0019,0.0015,0.30 

東西的第2列是我在用的UID(唯一的ID),所以它永遠不會在CSV相同。我用寫信給CSV上的PHP代碼:

$myFile = "data.csv"; 
$fh = fopen($myFile, 'a') or die("can't open file"); 

$stringData = $_POST["Name"].",".$_POST["DateStart"].",".$_POST["DateStop"].",".$_POST["TotalHours"].",".$_POST["Hours"].",".$_POST["Pay"]."\n"; 
fwrite($fh, $stringData); 
fclose($fh); 

將需要採取哪些措施來擁有它,所以如果有人用同樣的DateStart(的UID)運行PHP,這將覆蓋具有相同UID。基本上我認爲它可能需要通過每行一個文件數組,然後當它到達具有相同UID的行時,它會截取所發佈的內容,而不是它擁有的內容。

我不知道這是要去約我想要的東西的最佳方式。

+1

如果「你知道,你知道」爲什麼要問?設置sqLite(它只有一個文件數據庫,並且你有用於Firefox的mySQL GUI!不需要額外的軟件),你就完成了! – balexandre 2010-07-28 18:44:46

回答

1

雖然我完全同意ircmaxell(學會用一個數據庫),你還是應該對問題作出恰當的迴應。

我相信你將不得不逐行讀取並做比較。不,這不是非常有效,但是你的設置並不能真正提高效率。

「我不知道這是要去約我想要的東西的最佳方式。」根據ircmaxell的建議,使用數據庫將非常簡單。 MySQL是免費的,並且是小菜一碟。像這樣簡單的事情可以在幾個小時內完成。

6

瞭解數據庫。你會從長遠來看更好...

+0

也許在我的下一個項目中,當我已經有一個CSV文件的時候,並不想重寫10個PHP文件來支持數據庫。另外我使用CSV(只有10-20個條目),然後用戶可以備份並在需要時下載它們。現在切換現在只需要更多的工作。 – ParoX 2010-07-28 18:52:42

+0

呃,有句古話:「任何值得做的事,值得做對......」。數據庫是正確的,基於你在你的問題中所說的話。如果您擔心他們能夠隨時下載它們,您可以編寫一個程序將數據庫導出爲CSV ......但是* right *解決方案是使用數據庫。除此之外,任何其他的事情都要比學習如何使用它們更多的工作,否則將會變得越來越不可靠(因此從長遠來看將會有更多的工作)。所以,就像我之前說的,只是使用數據庫。 – ircmaxell 2010-07-28 19:06:15