Здравствуйте! Проблема следующая есть код, в котором получается переменная filename и потом используется для открытия файла. Она работает в первом случае (echo $filename), но не работает во втором; PHP: $filename = ($_POST['select']); $save = ($_POST['save']); echo $filename; //Первый случай; if ($save == 'true') { echo $filename; //Второй случай; $text = ($_POST['txt']); $descr = fopen($filename, 'w'); fwrite($descr, $text); fclose($descr); $save = 'false'; } Что делать?
Во втором случае не работает потому, что не выполняется условие Создай дополнительное скрытое поле с именем save и значением true в форме, которая выполняет отправку файла.
Если в условии if, TRUE ставить в кавычки - оно будет сравнивать как с словом. Поэтому нужно без кавычек, или даже так: PHP: if($save){} А в Вашем случае переменная $save будет в любом случае TRUE, поэтому используйте совет, который написал -=lebed=-.
Хаха. Это часть кода, условие выполняется выше, все действия выполняются кроме PHP: echo $filename; //Второй случай; П.С. со словом true и надо сравнивать...
Условие ВЫПОЛНИЛОСЬ! PHP: if ($save == 'true') { echo $filename; //Второй случай; $text = ($_POST['txt']); $descr = fopen($filename, 'w'); fwrite($descr, $text); fclose($descr); $save = 'false'; } Все остальные команды РАБОТАЮТ, кроме echo $filename;!
Проверь есть ли у тебя такая переменная в коде вообще если есть то попробуй echo "$filename" если непомогло то попробуй поискать синтаксические ошибки в данной переменной - возможно она изза ошибки в какой то букве несовпадает с той переменной которой ты задал значение и неможет выполниться.
fopen являеться функцией которая открывает либо файл либо юрл поетому fopen($filename, 'w') должно работать если конечтно же значение переменной $filename существует Также советую прочитать информацию об этой функции на странице PHP вот юрл http://www.php.su/functions/?fopen
Итак, меня решительно никто не хочет понять =) PHP: $filename = ($_POST['select']); $save = ($_POST['save']); var_dump($filename); //Первый случай (вывод 'string(5)'); if ($save == 'true') { var_dump($filename); //Второй случай (вывод 'NULL'); $text = ($_POST['txt']); $descr = fopen($filename, 'w'); fwrite($descr, $text); fclose($descr); $save = 'false'; } Есть код, в начале получается значение переменной filename, вар_дамп в первом случае выводит string(5), во втором NULL. Условие выполняется, но значение переменной сбрасывается, хотя между первым и вторым случаем ничего нет.
Значит во втором случае попросту не передаётся $_POST['select'], поэтому и NULL. Как передаёшь переменные то? (select и save).
Indev "первый случай" и "второй случай" происходят в одно обращение к скрипту, надеюсь? То есть вот прям на одной странице есть и string(5) и NULL? Простите не верю
PHP: //HTML; <form method = "post"> <textarea name="txt" cols="130" rows="27">'; </textarea> <button type = "sumbit" value="true" name="save">Save file</button> </form> ----------------------------- Выше точно таким же образом легко выполняется код: PHP: //HTML; echo '<form method="post"> <select name = "select" size=1>'; //PHP; //Находим файловые пути, совпадающие с шаблоном; $f = glob('*.*'); //Перебор массива; foreach ($f as $fn) { if (($fn != "indev.php") and ($fn != "action.php") and ($fn != "log.txt")) { //Выводим оставшиеся; echo '<option value = '.$fn.'>'.$fn.'</option>'; } } //HTML; echo '<button name="submit" type=submit value="true">Open</button> </form>'; //PHP; $submit = ($_POST['submit']); if ($submit == 'true') { $filename = ($_POST['select']); $descr = fopen($filename, 'r'); $text = fread($descr,filesize($filename)); fclose($descr); $sumbit = 'false'; }