IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   php. работа с файлами и формами (http://www.imho.ws/showthread.php?t=95991)

Reebok 17.11.2005 00:15

php. работа с файлами и формами
 
здравствуйте. начинаю извучать php.

нужна простая операция - запись в файл введённых в форму данных и их вывод оттуда, но получается так что выводится только первое слово из файла, до первого пробела

$file_hendel=fopen("menu.txt", "r");
$menu = fread($file_hendel, 10);
fclose($file_hendel);
print"<form method=post action=\"$PHP_SELF\">
<input type=text name=menu value=$menu>
<input type=submit value=\"послать\"></form>";

чего изменить здесь ?

RaZEr 17.11.2005 00:29

$menu = fread($file_hendel,filesize("menu.txt"));

Reebok 17.11.2005 12:25

если идёт словаосочетание, например, "вкусно есть", с пробелом, то выводиться только первое слово. как бы сделать чтобы слово целиком выводилось

_Lynx_ 17.11.2005 13:30

Это ты в текст выводишь или в параметр тэга?
...попробуй взять в кавычки...

Reebok 17.11.2005 14:20

Цитата:

Сообщение от _Lynx_
Это ты в текст выводишь или в параметр тэга?
...попробуй взять в кавычки...

что именно брать в кавычки ?
мне нужно чтобы введённое в форму словосочетание сохранялось в файле, а также вызывалось в форму потом для возможного редактирования

Naked 17.11.2005 14:33

Нужно так сделать:
Цитата:

$file_hendel=fopen("menu.txt", "r");
$menu = fread($file_hendel, filesize("menu.txt"));
fclose($file_hendel);
print"<form method=post action=\"$PHP_SELF\">
<input type=text name=menu value=\"$menu\">
<input type=submit value=\"послать\"></form>";

RaZEr 17.11.2005 15:19

Был уже такой случай :)
http://www.imho.ws/showthread.php?p=265607#post265607

Reebok 17.11.2005 16:30

заработало. отразил всё в репутации

но упорно не хочет записывать в файл последовательность слов и отображать их потом
Цитата:

<?

$f=fopen("menu.txt","r");
$menu = fread($f, filesize("menu.txt"));

print"<form method=post action=\"$PHP_SELF\">
<input type=text name=menu value=\"$menu\">
<input type=submit value=\"послать\"></form>";

fclose($f);

$f=fopen("menu.txt","w");
fputs($f,"$menu");
fclose($f);

?>

Hubbitus 17.11.2005 17:17

$f = fopen($filename, 'w'));
fwrite($f, $menu);
fclose($f);

Только лучше еще ошибки обрабаотывать, вот тут полный пример

И еще в новых версиях есть для подобного очень удобная функция file-put-contents


Ну и последнее - наверное стоит как-то проверить перед записью, чего получается, при отображении формы данные считываются из файла, выводятся в форму, и зачем-то обратно записываются в тот же файл!

rengen 19.11.2005 03:32

и ещё желательно применять к тексту функции addslashes (при вводе) и stripslashes (при выводе). Это для того чтобы если твы выводишь обратно в форму у тебя "левые" кавычки раньше времени тег не закрыли.

Reebok 19.11.2005 11:38

чо то нефига с этими "файлами" не разберусь :баран: . всем огромное :beer:.

Hubbitus 20.11.2005 14:08

Цитата:

Reebok:
чо то нефига с этими "файлами" не разберусь
Что не понятно-то? Дак ты спрашивай, не стесняйся, постараемся помочь, объяснить... Только старайся вопросы конкретнее задавать, а не просто "нефига с этими "файлами" не разберусь" :biggrin:

Reebok 20.11.2005 16:37

Hubbitus
хочу добится появления текстового поля с взятым из файла текстом, который можно изменить и введённая инфа попадёт в этот же файл
в таком виде файл не сохраняется
Цитата:

$f=fopen("menu.txt","r");
$menu = fread($f, filesize("menu.txt"));

print"<form method=post action=\"$PHP_SELF\">
<input type=text name=menu value=\"$menu\">
<input type=submit value=\"послать\"></form>";
fclose($f);

$f=fopen("menu.txt","w");
fwrite($f, $menu);
fclose($f);

Al-x 20.11.2005 16:51

Попробуй так (если в редактируемом файле встречаются русские символы и html, только кодировку можно под себя поправить):
PHP код:

if($_POST['doWrite'])
{
    
$f=fopen("menu.txt","w");
    
$menu=html_entity_decode($_POST['menu'],ENT_COMPAT,'cp1251');
    
fwrite($f$menu);
    
fclose($f);
}

$f=fopen("menu.txt","r");
$menu fread($ffilesize("menu.txt"));
fclose($f);

print
"<form method=post action=\"$PHP_SELF\">
<TEXTAREA NAME='menu' ROWS='20' COLS='60' align='left'>"
.
htmlentities($menu,ENT_COMPAT,'cp1251')
.
"</TEXTAREA>
<input type=hidden name=doWrite value=\"1\">
<input type=submit value=\"послать\"></form>"


Если html нет то всё немного проще:
PHP код:

if($_POST['doWrite'])
{
    
$f=fopen("menu.txt","w");
    
fwrite($f$menu);
    
fclose($f);
}

$f=fopen("menu.txt","r");
$menu fread($ffilesize("menu.txt"));
fclose($f);

print
"<form method=post action=\"$PHP_SELF\">
<TEXTAREA NAME='menu' ROWS='20' COLS='60' align='left'>$menu
</TEXTAREA>
<input type=hidden name=doWrite value=\"1\">
<input type=submit value=\"послать\"></form>"



Reebok 20.11.2005 19:46

отразил всё в репутации. агромное :beer:
что есть
Код:

<input type=hidden name=doWrite value=\"1\">
чего это делает ?

Al-x 20.11.2005 22:56

Это чтобы когда в первый раз на страницу заходишь ничего не писалось в файл.

Reebok 21.11.2005 03:56

Цитата:

Сообщение от Al-x
Это чтобы когда в первый раз на страницу заходишь ничего не писалось в файл.

хмм, странно, мне казалось обработка идёт только в случае нажатии submit

ладно, последний вопрос, вогда делаю вывод в textarea, то переходы на следующую строку сохраняются, а если выводить просто как текст, то всё выводиться в одну строку, чего нужно сделать чтобы сохранить "энтеры" при выводе ?

Hubbitus 21.11.2005 10:09

Цитата:

Reebok:
что есть
Код:

<input type=hidden name=doWrite value=\"1\">


чего это делает ?
Это совсем не обязательно. можно проверять наличие переменной submit, если этой кнопке присвоить имя, тогда ничего лишнего не придется пихать.

Цитата:

Reebok:
ладно, последний вопрос, вогда делаю вывод в textarea, то переходы на следующую строку сохраняются, а если выводить просто как текст,
А в textarea разве выводится не "просто как текст"???

Al-x 21.11.2005 11:45

Не очень понял в чём проблема. Скорее всего скрипт работает на Unix'овом сервере, а под "выводить просто как текст" подразумевается открытие в блокноте под виндой. Если это так, то надо просто заменить переводы стоки в Unix на видовские перед записью в файл. Наприпер так:
PHP код:

.................
    
$f=fopen("menu.txt","w");
    
$menu str_replace("\n","\r\n"$menu );
    
fwrite($f$menu);
    
fclose($f); 
................. 


BorLase 21.11.2005 11:57

Цитата:

Сообщение от Reebok
ладно, последний вопрос, вогда делаю вывод в textarea, то переходы на следующую строку сохраняются, а если выводить просто как текст, то всё выводиться в одну строку, чего нужно сделать чтобы сохранить "энтеры" при выводе ?

думаю, тебе нужна функция nl2br ;)

Reebok 24.11.2005 17:46

Цитата:

Сообщение от Al-x
Не очень понял в чём проблема. Скорее всего скрипт работает на Unix'овом сервере, а под "выводить просто как текст" подразумевается открытие в блокноте под виндой. Если это так, то надо просто заменить переводы стоки в Unix на видовские перед записью в файл. Наприпер так:
PHP код:

.................
    
$f=fopen("menu.txt","w");
    
$menu str_replace("\n","\r\n"$menu );
    
fwrite($f$menu);
    
fclose($f); 
................. 


чего то ноль реакции, выводит также в строчку


Часовой пояс GMT +4, время: 14:57.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.