imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 17.11.2005, 00:15     # 1
Reebok
Member
 
Аватар для Reebok
 
Регистрация: 14.08.2002
Сообщения: 317

Reebok Путь к славе только начался
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>";

чего изменить здесь ?
__________________
...она была прекрасно сложена, только рука её торчала из чемодана
Reebok вне форума  
Старый 17.11.2005, 00:29     # 2
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
$menu = fread($file_hendel,filesize("menu.txt"));
RaZEr вне форума  
Старый 17.11.2005, 12:25     # 3
Reebok
Member
 
Аватар для Reebok
 
Регистрация: 14.08.2002
Сообщения: 317

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

Последний раз редактировалось Reebok; 17.11.2005 в 12:32.
Reebok вне форума  
Старый 17.11.2005, 13:30     # 4
_Lynx_
Junior Member
 
Регистрация: 11.10.2005
Сообщения: 63

_Lynx_ Путь к славе только начался
Это ты в текст выводишь или в параметр тэга?
...попробуй взять в кавычки...
_Lynx_ вне форума  
Старый 17.11.2005, 14:20     # 5
Reebok
Member
 
Аватар для Reebok
 
Регистрация: 14.08.2002
Сообщения: 317

Reebok Путь к славе только начался
Цитата:
Сообщение от _Lynx_
Это ты в текст выводишь или в параметр тэга?
...попробуй взять в кавычки...
что именно брать в кавычки ?
мне нужно чтобы введённое в форму словосочетание сохранялось в файле, а также вызывалось в форму потом для возможного редактирования
__________________
...она была прекрасно сложена, только рука её торчала из чемодана
Reebok вне форума  
Старый 17.11.2005, 14:33     # 6
Naked
::VIP::
 
Аватар для Naked
 
Регистрация: 15.05.2005
Адрес: Питер
Сообщения: 1 194

Naked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked Сэнсэй
Нужно так сделать:
Цитата:
$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>";
__________________
Чтобы воля стала действующим началом, тело должно быть совершенным.
Naked вне форума  
Старый 17.11.2005, 15:19     # 7
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
Был уже такой случай
http://www.imho.ws/showthread.php?p=265607#post265607
RaZEr вне форума  
Старый 17.11.2005, 16:30     # 8
Reebok
Member
 
Аватар для Reebok
 
Регистрация: 14.08.2002
Сообщения: 317

Reebok Путь к славе только начался
заработало. отразил всё в репутации

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

$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);

?>
__________________
...она была прекрасно сложена, только рука её торчала из чемодана
Reebok вне форума  
Старый 17.11.2005, 17:17     # 9
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
$f = fopen($filename, 'w'));
fwrite($f, $menu);
fclose($f);

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

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


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

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 19.11.2005, 03:32     # 10
rengen
Guest
 
Сообщения: n/a

и ещё желательно применять к тексту функции addslashes (при вводе) и stripslashes (при выводе). Это для того чтобы если твы выводишь обратно в форму у тебя "левые" кавычки раньше времени тег не закрыли.
 
Старый 19.11.2005, 11:38     # 11
Reebok
Member
 
Аватар для Reebok
 
Регистрация: 14.08.2002
Сообщения: 317

Reebok Путь к славе только начался
чо то нефига с этими "файлами" не разберусь . всем огромное .
__________________
...она была прекрасно сложена, только рука её торчала из чемодана
Reebok вне форума  
Старый 20.11.2005, 14:08     # 12
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Цитата:
Reebok:
чо то нефига с этими "файлами" не разберусь
Что не понятно-то? Дак ты спрашивай, не стесняйся, постараемся помочь, объяснить... Только старайся вопросы конкретнее задавать, а не просто "нефига с этими "файлами" не разберусь"
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 20.11.2005, 16:37     # 13
Reebok
Member
 
Аватар для Reebok
 
Регистрация: 14.08.2002
Сообщения: 317

Reebok Путь к славе только начался
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);
__________________
...она была прекрасно сложена, только рука её торчала из чемодана
Reebok вне форума  
Старый 20.11.2005, 16:51     # 14
Al-x
Junior Member
 
Регистрация: 30.03.2003
Адрес: СПб
Сообщения: 162

Al-x МолодецAl-x МолодецAl-x Молодец
Попробуй так (если в редактируемом файле встречаются русские символы и 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>"

__________________
640Kbytes should be enough for everything! (c) Bill Gates, 1981.
Все "спасибо" в репутацию

Последний раз редактировалось Al-x; 20.11.2005 в 17:04. Причина: Проверил - криво работает. Теперь должно быть нормально :yees:
Al-x вне форума  
Старый 20.11.2005, 19:46     # 15
Reebok
Member
 
Аватар для Reebok
 
Регистрация: 14.08.2002
Сообщения: 317

Reebok Путь к славе только начался
отразил всё в репутации. агромное
что есть
Код:
<input type=hidden name=doWrite value=\"1\">
чего это делает ?
__________________
...она была прекрасно сложена, только рука её торчала из чемодана
Reebok вне форума  
Старый 20.11.2005, 22:56     # 16
Al-x
Junior Member
 
Регистрация: 30.03.2003
Адрес: СПб
Сообщения: 162

Al-x МолодецAl-x МолодецAl-x Молодец
Это чтобы когда в первый раз на страницу заходишь ничего не писалось в файл.
__________________
640Kbytes should be enough for everything! (c) Bill Gates, 1981.
Все "спасибо" в репутацию
Al-x вне форума  
Старый 21.11.2005, 03:56     # 17
Reebok
Member
 
Аватар для Reebok
 
Регистрация: 14.08.2002
Сообщения: 317

Reebok Путь к славе только начался
Цитата:
Сообщение от Al-x
Это чтобы когда в первый раз на страницу заходишь ничего не писалось в файл.
хмм, странно, мне казалось обработка идёт только в случае нажатии submit

ладно, последний вопрос, вогда делаю вывод в textarea, то переходы на следующую строку сохраняются, а если выводить просто как текст, то всё выводиться в одну строку, чего нужно сделать чтобы сохранить "энтеры" при выводе ?
__________________
...она была прекрасно сложена, только рука её торчала из чемодана
Reebok вне форума  
Старый 21.11.2005, 10:09     # 18
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Цитата:
Reebok:
что есть
Код:

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


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

Цитата:
Reebok:
ладно, последний вопрос, вогда делаю вывод в textarea, то переходы на следующую строку сохраняются, а если выводить просто как текст,
А в textarea разве выводится не "просто как текст"???
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 21.11.2005, 11:45     # 19
Al-x
Junior Member
 
Регистрация: 30.03.2003
Адрес: СПб
Сообщения: 162

Al-x МолодецAl-x МолодецAl-x Молодец
Не очень понял в чём проблема. Скорее всего скрипт работает на Unix'овом сервере, а под "выводить просто как текст" подразумевается открытие в блокноте под виндой. Если это так, то надо просто заменить переводы стоки в Unix на видовские перед записью в файл. Наприпер так:
PHP код:
.................
    
$f=fopen("menu.txt","w");
    
$menu str_replace("\n","\r\n"$menu );
    
fwrite($f$menu);
    
fclose($f); 
................. 
__________________
640Kbytes should be enough for everything! (c) Bill Gates, 1981.
Все "спасибо" в репутацию
Al-x вне форума  
Старый 21.11.2005, 11:57     # 20
BorLase
::VIP::
 
Аватар для BorLase
 
Регистрация: 09.09.2002
Адрес: Kiev
Пол: Male
Сообщения: 1 150

BorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех Гуру
Цитата:
Сообщение от Reebok
ладно, последний вопрос, вогда делаю вывод в textarea, то переходы на следующую строку сохраняются, а если выводить просто как текст, то всё выводиться в одну строку, чего нужно сделать чтобы сохранить "энтеры" при выводе ?
думаю, тебе нужна функция nl2br
__________________
Great minds discuss ideas. Average minds discuss events. Small minds discuss people.
BorLase вне форума  

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


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




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