|
|
|
| Написал такой простой скрипт:
<font size="20"><?php
$filename = "text.txt";
$fd = fopen($filename, "r");
$bufer = fread($fd, filesize ($filename));
fclose($fd);
echo $bufer;
?></font>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
Ваш текст: <br><input type="text" name="textfield"
value="<?php echo $_POST['textfield']; ?>" size="20"><br>
<br><input type="submit" name="submit" value="Написать"></div>
</form>
<?php
$fd = fopen ("text.txt", "w");
fwrite($fd, $_POST['textfield']);
fclose ($fd);
?>
|
Записанный в форму текст записывается в файл text.txt и выводится из файла. Всё работает так как надо, но при новом обращении к этому скрипту в файле всё стирается. Как сделать чтобы при запуске сразу выводилось содержимое файла (выше формы и в ней) а при отправке нового текста он переписывался в файле и выводился? В общем как сделать чтобы текст в файле не стирался при запуске скрипта? | |
|
|
|
|
|
|
|
для: Andchir
(25.12.2006 в 20:13)
| | попробуй вместо
$fd = fopen ("text.txt", "w");
|
зделать
$fd = fopen ("text.txt", "a+");
|
| |
|
|
|
|
|
|
|
для: Alph[p]a
(25.12.2006 в 20:32)
| | В этом случае текст не переписывается в файле а добавляется. Но при вызове скрипта он не стирается - это уже радует. Как сделать чтобы текст обновлялся а не добавлялся к тому что уже есть в файле?
Примерно такой случай рассмотрен в книге "Народные советы" авторов форума. Но там редактируется файл с несколькими строками. Не могу его переработать чтобы редактировать только одну строку. Вот тот скрипт:
<?php
// Имя файла
$filename = "text.txt";
// Обработчик HTML-формы
if(!empty($_POST['number']) && !empty($_POST['new_text']))
{
// Читаем содержимое файла
$arr = file("text.txt");
// Проверяем имеется ли в файле строка с номером
// $_POST['number']
if($_POST['number'] > 0 && $_POST['number'] <= count($arr))
{
// Читаем содержимое файла в строку $bufet
$bufer = file_get_contents($filename);
// Находим строку с индексом $index
// и заменяем строку
$bufer = preg_replace("|$_POST[number] ([^\n]*)|",
$_POST['new_text'],
$bufer);
// Сохраняем результат в файле
$fd = fopen($filename, "w");
fwrite($fd, $bufer);
fclose($fd);
}
// Перезагружаем страницу, сбрасывая POST-данные
header("Location: $_SERVER[PHP_SELF]");
exit();
}
?>
<form method=post>
<input size=40 type=text name=number
value="<?= $_POST['number']; ?>"><br>
<?php
// Если передан номер строки, загружаем строку в форму
if(!empty($_POST['number']))
{
// Читаем содержимое файла
$arr = file($filename);
// Проверяем, имеется ли в файле строка с номером
// $_POST['number']
if($_POST['number'] > 0 && $_POST['number'] <= count($arr))
{
echo "<input size=40 type=text name=new_text value='".
$arr[$_POST['number'] - 1]."'><br>";
}
}
?>
<input type=submit value="Отправить">
</form>
|
| |
|
|
|
|
|
|
|
для: Andchir
(25.12.2006 в 20:57)
| | Попробуйте w+ | |
|
|
|
|
|
|
|
для: LuxeMate
(25.12.2006 в 21:07)
| | При новом запуске скрипта текст в файле стирается :( | |
|
|
|
|
|
|
|
для: Andchir
(25.12.2006 в 21:13)
| | АААА.......понял.....я как то давно сам думал как же так зделать а потом решил просто переделать всё на БД)) | |
|
|
|
|
|
|
|
для: LuxeMate
(25.12.2006 в 21:16)
| | >Но при вызове скрипта он не стирается - это уже радует. Как сделать чтобы текст обновлялся а не добавлялся к тому что уже есть в файле?
Попробуй удалить содержимое файла а потом записать новые данные... | |
|
|
|
|
|
|
|
для: Alph[p]a
(25.12.2006 в 22:10)
| | Пробывал удалять - не помогает. При разделении на 2 файла php всё вроде работает, но форма пропадает после нажатия submit. Может кто ещё знает как правильно переделать самый верхний скрипт? | |
|
|
|
|
|
|
|
для: Andchir
(26.12.2006 в 18:58)
| | Ты говорил > В общем как сделать чтобы текст в файле не стирался при запуске скрипта?
Ну вот посмотри ч0 накатал...конечно глупость....)) но работает как надо..у меня работает как надо...текст в файле не стирется...
<html>
<head>
<title>Alph[p]a</title>
</head>
<body>
Текст в файле:<br>
<?php
$file="any.txt";
$array=file($file);
$count=count($array);
if (empty($count))
{
echo "File $file is empty!";
}
else
{
for ($c=0; $c<$count; $c++ )
{
echo $array[$c];
}
}
?>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
Ваш текст: <br>
<input type="text" name="textfield" value="<?php echo $_POST['textfield']; ?>" size="20"><br>
<br>
<input type="submit" name="submit" value="Написать">
</form>
<?php
if (empty ($_POST['submit']))
{
echo "Please enter text..";
}
else
{
$fd = fopen ($file, "r+");
fwrite($fd, $_POST['textfield']);
fclose ($fd);
echo "Write is Done! Check you file!";
}
?>
</body>
|
токо не забудь создать файл any.txt | |
|
|
|
|
|
|
|
для: Alph[p]a
(26.12.2006 в 21:05)
| | Спасибо за попытки помоч! Но опять - НО. Как я понял главное здесь отличие r+. Остальное проверки на заполнение формы - тоже полезно. Но этот скрипт всё равно работает не так. Он не заменяет текст который уже записанв файле полностью. Если введенное слово меньше того что уже записано в файл, то заменяется только то ко-во букв, а остальные остаются.
Хорошая оказалась задача для практики :)) | |
|
|
|
|
|
|
|
для: Andchir
(26.12.2006 в 21:32)
| | Тоже можно сделать с помощью IF..если подумать немного то и это моно решить... | |
|
|
|
|
|
|
|
для: Alph[p]a
(26.12.2006 в 21:46)
| | VERSION 2
ДУМАЛ И НАДУМАл...:
<html>
<head>
<title>Alph[p]a</title>
</head>
<body>
Текст в файле:<br>
<?php
$file="any.txt";
$array=file($file);
$count=count($array);
if (empty($count))
{
echo "File $file is empty!";
}
else
{
for ($c=0; $c<$count; $c++ )
{
echo $array[$c];
}
}
?>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
Ваш текст: <br>
<input type="text" name="textfield" value="<?php echo $_POST['textfield']; ?>" size="20"><br>
<br>
<input type="submit" name="submit" value="Написать">
</form>
<?php
if (empty ($_POST['submit']))
{
echo "Please enter text..";
}
else
{
$poster=strlen($_POST['textfield']);
$poster2=strlen($array['0']);
if ($poster < $poster2)
{
$ep="";
$fd2 = fopen ($file, "w");
fwrite($fd2, $ep);
fclose ($fd2);
// Вот такие пироги..
$fd3 = fopen ($file, "r+");
fwrite($fd3, $_POST['textfield']);
fclose ($fd3);
}
else
{
$fd = fopen ($file, "r+");
fwrite($fd, $_POST['textfield']);
fclose ($fd);
echo "Write is Done! Check you file!";
}
}
?>
</body>
|
так получше? | |
|
|
|
|
|
|
|
для: Alph[p]a
(26.12.2006 в 22:15)
| | Так лучше! Но опять - НО. Я уже решил эту задачку))
<font size="20"><?php
$filename = "text.txt";
$fd = fopen($filename, "r");
$bufer = fread($fd, filesize ($filename));
fclose($fd);
echo $bufer;
?></font>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
Ваш текст: <br><input type="text" name="textfield"
value="" size="20"><br>
<br><input type="submit" name="submit" value="Написать"></div>
</form>
<?php
if ($_POST['textfield']) { $fd = fopen ("text.txt", "w");
fwrite($fd, $_POST['textfield']);
fclose ($fd);
}
?>
|
Тоже при помощи if (ты натолкнул на мысль). Не знаю пока какой вариант буду использовать. Большое спасибо! Знал что здесь мне помогут. | |
|
|
|