Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
Katran
0 / 0 / 0
Регистрация: 05.08.2010
Сообщений: 6
#1

Редакторская форма- срочно

05.08.2010, 12:26. Просмотров 1167. Ответов 21
Метки нет (Все метки)

Начал изучать php и вот какую задачу себе замыслил
Есть несколько radio-button, выбираем одну из них и по названию в textarea выводится текст
Наверное так будет проще:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<html>
 <body>
 
 <form action="index.php" method=POST> 
Выберите текст для редактирования:<br>
<input type=radio name="text" value="gl1">Глава 1<br>
<input type=radio name="text" value="gl2">Глава 2<br>
<input type=radio name="text" value="gl3">Глава 3<br>
<input type=radio name="text" value="gl4">Глава 4<br>
<input type=submit value="Редактировать">
<input type=reset value="Отменить">
<P>Данный текст: <BR>
<textarea name="comment" cols=32 rows=5></textarea>
</form>
 </body>
 </html>
Нужно, чтобы по нажатию кнопки "Редактировать" в textarea выводилась скажем "Глава1".
Файлы хранятся в той же директории.

Заранее спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.08.2010, 12:26
Ответы с готовыми решениями:

Как сделать чтоб форма обратной связи не отправляла письмо если форма не заполнена
Добрый день. Подскажите пожалуйста как сделать чтоб форма обратной связи не...

Регистрационная форма и форма авторизации
Здравствуйте! Есть готовые файлы, которые работают как регистрационная форма...

Срочно!!! Access !!! Форма!!!
Привет всем! Есть две таблы: Т1 и Т2, поля в них разные, но одно поле...

СРОЧНО! форма для ввода
Разработать на странице следующую форму ввода информации, которая обрабатывает...

СРОЧНО! Форма для ввода и кнопки
Создать, используя язык Html, форму для ввода 4 любых чисел. Под формой...

21
ostgals
882 / 677 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
05.08.2010, 12:42 #2
А де кнобка "Save"?
0
Katran
0 / 0 / 0
Регистрация: 05.08.2010
Сообщений: 6
05.08.2010, 12:46  [ТС] #3
Пока не делал- важно просто вывести, проблемы по мере поступления

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<html>
 <body>
 <form  method=POST> 
Выберите текст для редактирования:<br>
<input type=radio name="text" value="gl1">Глава 1<br>
<input type=radio name="text" value="gl2">Глава 2<br>
<input type=radio name="text" value="gl3">Глава 3<br>
<input type=radio name="text" value="gl4">Глава 4<br>
<input type=submit value="Редактировать">
<input type=reset value="Отменить">
<P>Данный текст: <BR>
<textarea name=\"comment"></textarea>
<input type=submit value="Save">
</form>
 </body>
 </html>
Добавил
0
ostgals
882 / 677 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
05.08.2010, 12:53 #4
Два сабмита в одной форме быть не может.
Надо продумать задачу. И использовать две формы - одна селектор текстов, вторая - редактор.
0
Katran
0 / 0 / 0
Регистрация: 05.08.2010
Сообщений: 6
05.08.2010, 12:58  [ТС] #5
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<html>
 <body>
 <form  method=POST> 
Выберите текст для редактирования:<br>
<input type=radio name="text" value="gl1">Глава 1<br>
<input type=radio name="text" value="gl2">Глава 2<br>
<input type=radio name="text" value="gl3">Глава 3<br>
<input type=radio name="text" value="gl4">Глава 4<br>
<input type=submit value="Редактировать">
<input type=reset value="Отменить">
</form>
 
 <form  method=POST> 
<input type=submit value="Save">
<input type=reset value="Отменить">
Текст:
<textarea name="comment" cols=32 rows=5></textarea>
</form>
 </body>
 </html>
Как-то так

Я думал вставить между textarea что-то вроде:
PHP
1
2
3
4
<?php  
switch(text)
 case "gl1": include "gl1.txt";break;
?>
или вообще

PHP
1
2
3
<?
include $text;
?>
А в value изменить на полный путь к файлу
0
nubo
113 / 70 / 2
Регистрация: 31.07.2010
Сообщений: 334
05.08.2010, 13:07 #6
ostgals,
Два сабмита в одной форме быть не может.
Может.
0
ostgals
882 / 677 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
05.08.2010, 13:36 #7
Навскидку:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
 
    $files = array(
        'gl1' => 'glava1.txt',
        'gl2' => 'glava2.txt',
        'gl3' => 'glava3.txt',
        'gl4' => 'glava4.txt'
    );
    
    $action = @$_POST['action'];
    $file   = @$_POST['text'];
    
    if ($action == 'edit' && $file)
    {
        $content = file_get_contents('./'.$files[$file]);
    }
    else
    {
        $content = '';
    }
    
    if ($action == 'save' && $file)
    {
        file_put_contents($files[$file], $_POST['comment']);
    }
    
?>
 
<html>
 <body>
 <form  method=POST> 
Выберите текст для редактирования:<br>
<input type=radio name="text" value="gl1">Глава 1<br>
<input type=radio name="text" value="gl2">Глава 2<br>
<input type=radio name="text" value="gl3">Глава 3<br>
<input type=radio name="text" value="gl4">Глава 4<br>
<input type=submit value="Редактировать">
<input type=reset value="Отменить">
<input type="hidden" name="action" value="edit"/>
</form>
 
 <form  method=POST> 
<input type=submit value="Save">
<input type=reset value="Отменить">
Текст:
<textarea name="comment" cols=32 rows=5><?=$content?></textarea>
<input type="hidden" name="action" value="save"/>
<input type="hidden" name="text" value="<?=$file?>"/>
</form>
 </body>
 </html>
Добавлено через 3 минуты
Цитата Сообщение от nubo Посмотреть сообщение
Может.
Написать можно все, что угодно. Но работать будет криво (особенно в IE).
2
nubo
113 / 70 / 2
Регистрация: 31.07.2010
Сообщений: 334
05.08.2010, 13:39 #8
Имена кнопкам разные поставить и будет нормально везде работать)))
0
ostgals
882 / 677 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
05.08.2010, 13:48 #9
Цитата Сообщение от nubo Посмотреть сообщение
Имена кнопкам разные поставить и будет нормально везде работать)))
Вы думаете, я это придумал? Нет, это мой личный опыт. Вкратце, проблемы возникают при написании обработчиков onsubmit на JS.
Поэтому я не советую ставить более одного сабмита на форму, если в перспективе не исключено приделывать всякие плюшки.
0
nubo
113 / 70 / 2
Регистрация: 31.07.2010
Сообщений: 334
05.08.2010, 13:55 #10
Никогда не возникало проблем. На вс случай проверил в пяти браузерах
HTML5
1
2
3
4
5
6
<form  method=POST onsubmit="alert()"> 
<input name="s1" type="submit" /><br />
<input name="s2" type="submit" /><br />
<input name="s3" type="submit" /><br />
<input name="s4" type="submit" />
</form>
Да и не слышал никогда. А вот куча форм для одного функционала - однозначно моветон. Если форма большая, то запутаться - раз плюнуть.
0
ostgals
882 / 677 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
05.08.2010, 14:28 #11
Цитата Сообщение от nubo Посмотреть сообщение
Никогда не возникало проблем. На вс случай проверил в пяти браузерах
Я, к сожалению, не могу сейчас воспроизвести ошибку. Но суть была в следующем:
На форме было несколько сабмитов на каждый был повешен обработчик JS, делавший валидацию значений через AJAX. Независимо от результата валидации зачем-то открывалось новое окно, и конечная отправка формы не происходила. Так было в IE и в Opera. Остальные браузеры работали нормально.
0
nubo
113 / 70 / 2
Регистрация: 31.07.2010
Сообщений: 334
05.08.2010, 14:31 #12
Ну это элементарная ошибка построения была. Тут количество кнопок совсем не причем.
Вот так поинтереснее будет работать:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
 
    $files = array(
        'gl1' => 'glava1.txt',
        'gl2' => 'glava2.txt',
        'gl3' => 'glava3.txt',
        'gl4' => 'glava4.txt'
    );
    
        $comment = @$_POST['comment'];
        $radio   = @$_POST['text'];
        $file    = @$files[$radio];
    
 
    if (!empty($_POST['save']) && !empty($file))
        file_put_contents($file, $comment);
    elseif (!empty($file))
        $comment = @file_get_contents($file);
        
    function returnRadio($id, $radio)
    {
       return ($id == $radio) ? 'checked="checked"' : '';
    }   
    
?>
 
<html>
<body>
 <form  method=POST id="frm"> 
Выберите текст для редактирования:<br>
<input type=radio onclick="document.getElementById('frm').submit()" name="text" value="gl1" <?php echo returnRadio('gl1', $radio) ?> />Глава 1<br>
<input type=radio onclick="document.getElementById('frm').submit()" name="text" value="gl2" <?php echo returnRadio('gl2', $radio) ?> />Глава 2<br>
<input type=radio onclick="document.getElementById('frm').submit()" name="text" value="gl3" <?php echo returnRadio('gl3', $radio) ?> />Глава 3<br>
<input type=radio onclick="document.getElementById('frm').submit()" name="text" value="gl4" <?php echo returnRadio('gl4', $radio) ?> />Глава 4<br>
Текст:<br />
<textarea name="comment" cols=32 rows=5><?php echo htmlspecialchars($comment) ?></textarea><br />
<input type="submit" name="save" value="Сохранить">
</form>
 
 </body>
 </html>
1
ostgals
882 / 677 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
05.08.2010, 15:23 #13
Цитата Сообщение от nubo Посмотреть сообщение
Ну это элементарная ошибка построения была.
Спорить не хочу - дело прошлое. Но мы с напарником вовсе не новички в этом деле. Тогда мы все решили заменой субмитов простыми кнопками, а форма отправлялась программно.

Цитата Сообщение от nubo Посмотреть сообщение
Вот так поинтереснее будет работать:
Согласен, работает интересно. Но цеплять submit к радиокнопкам - это попахивает извратом
Лучше уж тогда загружать содержимое ajax-ом - это будет более логично, мне кажется.

Добавлено через 2 минуты

Не по теме:

Кстати, автор темы испарился.

1
Katran
0 / 0 / 0
Регистрация: 05.08.2010
Сообщений: 6
05.08.2010, 19:08  [ТС] #14
Крокозябры в обоих случаях, ищу вот ошибку, хотя код мне понравился=)
Выводит текст скрипта начиная с 'glava1... и до вывода формы

Добавлено через 25 минут
Так, кое что подправил, но задача стоит на месте- в textarea по прежнему текст скрипта
Код теперь выглядит так

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
 
    $files = array("glava1.txt","glava2.txt","glava3.txt","glava4.txt");
    
       $action = @$_POST['action'];
    $file   = @$_POST['text'];
    
    if ($action == 'edit' && $file)
    {
        $content = file_get_contents('./'.$files[$file]);
    }
    else
    {
        $content = '';
    }
    
    if ($action == 'save' && $file)
    {
        file_put_contents($files[$file], $_POST['comment']);
    }
    
?>
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<html>
 <body>
 <form  method=POST> 
Выберите текст для редактирования:<br>
<input type=radio name="text" value=0>Глава 1<br>
<input type=radio name="text" value=1>Глава 2<br>
<input type=radio name="text" value=2>Глава 3<br>
<input type=radio name="text" value=3>Глава 4<br>
<input type=submit value="Редактировать">
<input type=reset value="Отменить">
<input type="hidden" name="action" value="edit"/>
</form>
 
 <form  method=POST> 
<input type=submit value="Save">
<input type=reset value="Отменить">
Текст:
<textarea name="comment" cols=32 rows=5> <? echo $content; ?> </textarea>
<input type="hidden" name="action" value="save"/>
<input type="hidden" name="text" value="<?=$file?>"/>
</form>
 </body>
 </html>
0
arvitaly
Благотворец
142 / 122 / 13
Регистрация: 29.04.2009
Сообщений: 537
05.08.2010, 19:17 #15
Спорить не хочу - дело прошлое. Но мы с напарником вовсе не новички в этом деле. Тогда мы все решили заменой субмитов простыми кнопками, а форма отправлялась программно.
return false в обработчике был?
0
ostgals
882 / 677 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
05.08.2010, 20:31 #16
Цитата Сообщение от Katran Посмотреть сообщение
Крокозябры в обоих случаях, ищу вот ошибку, хотя код мне понравился=)
Выводит текст скрипта начиная с 'glava1... и до вывода формы

Так, кое что подправил, но задача стоит на месте- в textarea по прежнему текст скрипта
Код теперь выглядит так
Извините, но я свой код проверял на сервере. Если можно покажите скриншот проблемы - со слов не очень понятно.

Цитата Сообщение от arvitaly Посмотреть сообщение
return false в обработчике был?
Издеваетесь?
Конечно был.

P.S. Давайте не будем засорять эту тему - она о другом.
0
Katran
0 / 0 / 0
Регистрация: 05.08.2010
Сообщений: 6
06.08.2010, 11:31  [ТС] #17
Пожалуйста, сервер денвер- может стоит использовать что-то еще?

Да, тестировал в мозиле, ie и опере, так что не в браузере дело
0
Вложения
Тип файла: doc скрин.doc (79.5 Кб, 10 просмотров)
nubo
113 / 70 / 2
Регистрация: 31.07.2010
Сообщений: 334
06.08.2010, 11:35 #18
Пожалуйста, сервер денвер- может стоит использовать что-то еще?
Пожалуй не помешает.
Тебе бы изучить клиент-серверное взаимодействие сначала. Дал бы ссылку, но говорят нельзя - реклама.
Сервер локальный однозначно нужен. Денвер или нет - решать самому. Последний ИМХО самый простой и надежный вариант.
0
ostgals
882 / 677 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
06.08.2010, 11:43 #19
У вас в адресной строке я вижу, что у файла расширение html.

Если вы пишете на php, то ваш файл должен иметь расширение php, либо html должен быть прописан в настройках веб-сервера, как php-приложение. Для вас, думаю, первый вариант будет проще. Переименуйте файл, чтобы расширение стало php, и откройте скрипт в браузере. http://localhost/io.php

Добавлено через 31 секунду
Цитата Сообщение от Katran Посмотреть сообщение
сервер денвер- может стоит использовать что-то еще?
Этого вполне достаточно.
1
Katran
0 / 0 / 0
Регистрация: 05.08.2010
Сообщений: 6
06.08.2010, 12:41  [ТС] #20
Заработало, спасибо=)

Добавлено через 48 минут
Переработал форму, кое что изменил- получилось следующее:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
 
    $files = array("glava1.txt","glava2.txt","glava3.txt","glava4.txt");
    
       $action = @$_POST['action'];
    $file   = @$_POST['text'];
    
    if ($action == 'edit' && $file)
    {
        $content = file_get_contents('./'.$files[$file]);
    }
    else
    {
        $content = '';
    }
    
    if ($action == 'save' && $file)
    {
        file_put_contents($files[$file], $_POST['comment']);
    }
    
?>
 
<html>
 <body>
 <form  method=POST> 
Выберите текст для редактирования:<br>
<select name="text">
 
<option valuе=0>Глава1
 
<option value=1>Глава2
 
<option value=2>Глава3
 
<option value=3>Глава4
 
</select>
<input type=submit value="Редактировать">
<input type="hidden" name="action" value="edit"/>
</form>
 
 <form action="saver.php"  method=POST> 
<input type=submit value="Save">
Текст:
<textarea name="comment" cols=32 rows=5> <?=$content?> </textarea>
<input type="hidden" name="action" value="save"/>
<input type="hidden" name="text" value="<?=$file?>"/>
</form>
 </body>
 </html>
И пришла мысль- а что если сделать третью форму для добавления доступных для редактирования текстов?

Что-то даже мыслей по этому поводу нет, разве что загружать выпадающий список из какого-то файла?
0
06.08.2010, 12:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.08.2010, 12:41

Добавление записи в Listview(1 форма) через Диалоговое окно(3 форма) другой формы (2 форма)
Всем доброго дня и с наступающими праздниками! Знаю, тема 7 частых вопросов...

Форма 1 вызывает форму 2, форма 2 закрывается, форма 1 продолжает работать дальше
Вынес предстартовые действия формы1 в форму2 (там у меня проверка существования...

Помогите срочно срочно. Вирус блокирует все программы.
Всем привет. пожалуйста помоги срочно надо. поймал вирус, блокирует почти все...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru