|
|
|
| 1. Есть текстовый файл f\info.txt с записью какого-либо текста (пара десятков слов), например:
Грузите яблоки лопатой...
|
2. Файл f\info.txt подключается на нужной страничке (например index.php), в нужном месте с помощью функции include( ):
<?include('f/info.txt');?>
|
3. Мне необходимо, периодически изменять содержимое файла f\info.txt.
4. Что, я для этого делаю? Сначала, вывожу, содержимое текстового файла f\info.txt в форму при помощи файла adm1.php:
<?php
$fil="f\info.txt";
//проверяю существование файла
if(!file_exists($fil))
{
// если, файл не существует, то создаю его
$fp=fopen($fil,"w");
fclose($fp);
}
else{
// иначе, если, файл существует, то записываю всё содержимое в переменную $a
$a=file_get_contents("f\info.txt");
}
?>
//Вывожу в форму значение переменной $a
<form action=1w.php method=post>
<textarea type=text rows=20 cols=80 name='a' value="<?php echo $a;?>" ></textarea>
<input type="submit" value="Записать">
</form>
|
После, чего, значение переменной $a, передаётся методом POST, скрипту в файле 1w.php:
<?php
// Переменной $d присваиваю значение. переданные из формы
$d=$_POST['a'];
// Для проверочки вывожу значение переменной $d
echo $d;
// Открываю файл f\info.txt
$fil="f\info.txt";
$fp=fopen($fil,'w');
// Записываю в файл f\info.txt переменную $d
fwrite($fp,$d);
fclose($fp);
echo "<a href=adm1.php>Редактировать</a>";
?>
|
5. Результат. Данные из файла получаю в форму, редактирую, записываю обратно в файл f\info.txt.
В файле index.php отображаются изменённые данные.
6. Проблема.
Нажимаю на ссылочку "Редактировать" и возвращаюсь к файлику adm1.php. Форма пустая. Хотя, в f\info.txt записаны изменённые данные.
Почему?
В форму не выводятся данные из переменной $a.
Хочу понять почему, так происходит?
Как мне этого добиться? | |
|
|
|
|
|
|
|
для: Hemp
(12.10.2004 в 12:21)
| | Вместо
<textarea type=text rows=20 cols=80 name='a' value="<?php echo $a;?>" ></textarea>
|
следует писать
<textarea type=text rows=20 cols=80 name='a'><?php echo $a;?></textarea>
|
| |
|
|
|
|
|
|
|
для: cheops
(12.10.2004 в 12:41)
| | cheops
Спасибо!!!
Всё заработало.
Ещё, вопрос.
А, можно, то же самое (то, что, я написал выше), организовать, как-нибудь по другому (другой подход)? | |
|
|
|
|
|
|
|
для: Hemp
(12.10.2004 в 13:16)
| | Принципиально по другому можно организовать с использованием базы данных, но в данном случае это не оправдано, так Web-приложение получается менее устойчиво, появляется зависимость не только от Web-сервера, но и ещё от сервера базы данных, а возможности, которые может предоставить база данных не требуются (Ситуация меняется, если вместо одного текстового файла у вас их 100 - тогда удобнее хранить их содержиоме в таблице).
Кроме того, при включении текстового файла при помощи include проверяется его разбор как PHP-скрипта, на что тратится время, обычный вывод в окно браузера с использованием file_get_contents() будет работать быстрее и создавать меньшую нагрузку на сервер. | |
|
|
|
|
|
|
|
для: cheops
(12.10.2004 в 14:15)
| | Ещё проблема возникла...
_____________________________
Вот, как, на данный момент выглядят файлы.
adm1.php:
<?php
$fil="f/info.txt";
if(!file_exists($fil))
{
$fp=fopen($fil,"w");
fclose($fp);
}
else{
$a=file_get_contents("f/info.txt");
}
?>
<form action=1w.php method=post>
<textarea type=text rows=20 cols=80 name='a'><?php echo $a;?></textarea><br>
<input type="submit" value="Сохранить">
</form>
|
w1.php:
<?php
$d=$_POST['a'];
echo $d;
$fil="f/info.txt";
$fp=fopen($fil,"w");
fwrite($fp,$d);
fclose($fp);
echo "<hr><hr><p><a href=adm1.php>Редактировать</a>";
?>
|
У меня установлен Денвер-2. Версия PHP 4.3.6.
На сайте PHP v. 4.3.8.
На локальном сервере (Денвер-2, W2000) всё работает на ура.
Когда же, эти файлы сбрасываю на свой сайт, то получается следующее:
1.В форме (adm1.php) выводится содержимое файлаf/info.txt для редактирования.
2. Редактирую, нажимаю кнопку "Сохранить". Отредактированные данные передаются скрипту (w1.php) отображаются, в этом файле в отредактированной форме, нажимаю ссылку "Редактировать", выходит форма (adm1.php) с изначальными данными, т.е. отредактировать их не получилось.
3. В текстовом файле f/info.txt изменений нет.
Получается, что:
1. Из текстового файла, я могу прочитать информацию и внести её в переменную $a.
2. Переменная $a методом POST успешно передается скрипту.
3. Не удаётся перезаписать текстовый файл.
4. Изменяю adm1.php:
<?php
$fil="f/info222.txt";
if(!file_exists($fil))
{
$fp=fopen($fil,"w");
fclose($fp);
}
|
В Денвере-2 создаётся текстовый файл по указанному пути. а, на сайте этого не происходит. Это и является причиной неработоспособности.
Теперь вопрос -- почему?
Что, я делаю не так? | |
|
|
|
|
|
|
|
для: Hemp
(13.10.2004 в 10:11)
| | скорее всего на файл info.txt нет разрешения на "запись", только на "чтение".
измени атрибуты | |
|
|
|
|
|
|
|
для: Hemp
(13.10.2004 в 10:11)
| | А у скрипта есть права на запись в директории, где создаётся файл?
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=340 | |
|
|
|
|
|
|
|
для: cheops
(13.10.2004 в 11:05)
| | Всё работает.
Причина -- в правах доступа. | |
|
|
|