我今天早些時候發佈了一個類似的問題,但是我最近下載了xampp,現在可以獲取語法錯誤。我對這一切都很陌生。爲foreach()+提供的無效參數腳本的邏輯
請看這個例子,看看我的PHP文件的當前狀態:http://rich2233.comoj.com/file2.php
我能得到.txt文件提取並顯示.txt文件的內容,但任何試圖修改的。 txt文件不會發生。
當我跑這對XAMPP,我得到這個錯誤:跟蹤你的迭代器:提供的foreach()在file2.php線30
我今天早些時候發佈了一個類似的問題,但是我最近下載了xampp,現在可以獲取語法錯誤。我對這一切都很陌生。爲foreach()+提供的無效參數腳本的邏輯
請看這個例子,看看我的PHP文件的當前狀態:http://rich2233.comoj.com/file2.php
我能得到.txt文件提取並顯示.txt文件的內容,但任何試圖修改的。 txt文件不會發生。
當我跑這對XAMPP,我得到這個錯誤:跟蹤你的迭代器:提供的foreach()在file2.php線30
您最近的代碼更新後:答案在問題的標題錯誤信息是:
代碼缺少行$users = file("test.txt");
擺脫了這個錯誤。我現在有其他錯誤,所以我要重新發布。謝謝你的幫助。 – Rich2233
這裏有一個快速提示參數無效。混亂?將每個行號視爲文件中的唯一偏移量。您需要迭代(foreach
)並每次增加+1。當您稍後編輯一行時,您只需提交偏移號碼,再次迭代並檢查是否$i == $_POST['iterator']
。
// Iterator example
$users = file('text.txt');
$hours_taken = array();
foreach ($users as $user) {
list($time, $name) = explode('|', $user);
array_push($hours_taken, $time);
}
// Assuming same order of rows in users.txt
$hours = array('8:00 am', '9:00 am', '10:00 am'); // ...5:00 pm
$i = 1;
echo '<select name="time"><option selected>-- Select time --</option>';
foreach ($hours as $hour) {
if (in_array($hour, $hours_taken)) {
echo '<option disabled=disabled>'. $hour .'</option>';
}
else {
echo '<option value='. $i .'>'. $hour .'</option>';
}
$i++;
}
輝煌!讓我試着將其寫入我的代碼中。謝謝! – Rich2233
編輯爲這最後的功能就不會工作
function editTxt(){
$find_name = $_POST['name'];
$find_time = $_POST['time'];
$filename = getcwd() . "/test.txt";
$lines = file($filename , FILE_IGNORE_NEW_LINES);
foreach($lines as $key => $line)
{
list($time, $name) = explode('|', $line);
if($time == $find_time && $name == "Available")
{
$lines[$key] = $time."|".$find_name;
file_put_contents($filename , $lines);
break;
}
}
}
如果你打算用這個不僅僅是我建議使用一個數據庫的運動以外的東西。
嗯...可注射性漏洞。由於您使用的是純文本文件(不好),所以我不知道該怎麼稱呼它,但是您需要清理輸入。另外,你的函數現在有什麼錯誤?我們不介意讀者,你需要告訴我們到底發生了什麼問題。 – Cyclone
使用數據庫。沒有鎖定的併發文件修改會咬你。 – Petr
你真的想爲此使用一個數據庫 - 它會讓你的生活變得更容易。查看一個名爲SQLite(http://www.sqlite.org/)的平面文件數據庫。學習SQL等可能看起來有點花銷,但值得學習。 – hafichuk