Блок для ввода данных

Главные вкладки

Аватар пользователя ameth ameth 19 августа 2008 в 18:29

Подскажите, существует ли модуль, а если нет, то как создать блок (для отображения в боковой панели) со следующими свойствами:

В блоке выводится определенный текст (как и откуда вывести текст я знаю, это уже есть, допустим некий вопрос), поле для ввода ответа и кнопочка сабмит (а вот как добавить их - не знаю), каждый засабмиченный ответ, добавляет текст вопроса, ответ, дату и имя пользователя в специальную ноду(страничку) - одну и ту же.

Т.е. пользователю отображается блок. В блоке вопрос. К примеру

Кто написал "Фауст", %username%?

[ ] [Submit]

Все отправленные ответы сохраняются в одной и той же ноде в виде

[дата][время][пользователь] [текст вопроса] [текст ответа]

в хронологическом, или обратно-хронологическом порядке.

Кто что посоветует для реализации? Особенно волнует как сохранить введенный текст и ответ в одной и той же ноде.
Или в некой глобальной переменной которую потом выводить в ноду.

Комментарии

Аватар пользователя patison patison 20 августа 2008 в 1:59

О Модуле таком не слышал.
По мне так только при помощи PHP. Создаёте блок, указываете формат ввода код-PHP, и там пишите необходимый код.

Аватар пользователя ameth ameth 20 августа 2008 в 10:54

Пока решил часть задачи.

Создал материал-страницу и там указал следующее

<?php
echo (file_get_contents('text.txt'));
?>

Осталось придумать как записывать в файл
дату, время, текст вопроса и текст ответа.

Т.к. я в РНР не силен то для меня это задача на весь день Smile Буду благодарен если поможете.

ЗЫ, в самом блоке
<?php
global $user;

$mission = variable_get('site_mission', '');

$quotes = explode("||",$mission);
$quote = str_replace('%username%', $user->name, $quotes[rand(0, count($quotes)-1)]);

print($quote);

$logfile = '/other/test.txt';
$cnr_date = date("d.m|H:i:s");
$cnr_counter = $logfile;
$cnr_fp = fopen($cnr_counter, "a");
$cnr_data = $cnr_date . $user->name . $quote . "
";
fputs($cnr_fp, $cnr_data);
fclose($cnr_fp);
?>

< form action="" method="post" >
< input type="text" name="answer" maxlength="30">
< input type="submit" name="write" value="+">
< /form >

тем не мение в файл ничего не пишет, хотя там права 777. Не могу понять, как при нажатии сабмита, собственно выполнялась бы запись в файл всего этого + введенного в поле текста (не знаю как передать его из поля в скрипт).

<?php $cnr_data = $cnr_date . $user->name . $quote . $введенный-в-поле-текст . "
"; ?>

Аватар пользователя ameth ameth 20 августа 2008 в 12:41

Собственно, вот итоговый вариант:

<?php
global $user;
$mission = variable_get('site_mission', '');
$quotes = explode("||",$mission);
$quote = str_replace('%username%', $user->name, $quotes[rand(0, count($quotes)-1)]);
print($quote);

if (isset($_POST['write'])) {
$logfile = 'text.txt';
$cnr_date = date("d.m|H:i:s");
$cnr_counter = $logfile;
$cnr_fp = fopen($cnr_counter, "a");
$cnr_data = $cnr_date . "| ". $_POST['question'] . "
" . $user->name . ": " . $_POST['answer'] . "

";
fputs ($cnr_fp, $cnr_data);
fclose($cnr_fp);
}
?>
< form action="<?=$PHP_SELF?>" method="post" >
< input type="hidden" name ="question" value="<?=$quote?>" /> /* это поле нужно для сохранения старого вопроса иначе записывается новый вопрос и ответ на предыдущий*/
< input type="text" name="answer" maxlength="30">
< input type="submit" name="write" value="+">