Сегодня я опубликовал аналогичный вопрос, однако недавно я загрузил xampp и теперь могу получить синтаксические ошибки. Я очень новичок в этом.
См. Этот пример, чтобы увидеть текущее состояние моего .php-файла: http://rich2233.comoj.com/file2.php
Я могу получить файл .txt для извлечения и отображения содержимого из TXT-файла, но никаких попыток изменения файла .txt не происходит.
Когда я запускал это на xampp, я получил эту ошибку: Недопустимый аргумент, предоставленный foreach () в файле2.php в строке 30
После вашего последнего обновления кода: ответ на сообщение об ошибке в заголовке вопроса:
В коде отсутствует строка $users = file("test.txt");
Вот быстрый совет: отслеживайте свой итератор. Смешение? Подумайте о каждом номере строки как уникальном смещении в файле. Вам нужно повторять ( 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++; }
Отредактировано так, что эта последняя функция не сработала бы
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; } } }
Если вы планируете использовать это для чего-то другого, кроме просто упражнения, я предлагаю использовать базу данных.
Пытаться:
$users = file($filename);
Я подозреваю, что $ users === false, поскольку вы не используете одно и то же «рассчитанное» имя файла.