|
Поделиться

php форма в phpbb

создание сторонней php формы на своём форуме

Любые разговоры на тему phpBB, без привязки к какой-либо конкретной версии или тематике. Если вы не нашли места для своей темы в других разделах форума, создайте её здесь.

Сообщение XeMyJI » 28.01.15 07:45

Задача: нужно создать php форму создания новой темы, соответственно со своими полями и прочее(например форма-анкета).Можно модифицировать существующую форму создания новой темы,а можно создать новый php обработчик и html тело к нему.(лучше конечно создать новую форму и оставить старую). Попытался сделать следующим образом:
создал файл tex_pasport.php, и положил его в корень. создал tex_pasport_body.html и положил его в \styles\prosilver\template. В итоге при вызове tex_pasport.php открывается html форма(как и должно быть),забиваешь данные,нажимаешь кнопку,и всё!ничего не происходит,поля просто очищаются и всё.
tex_pasport.php

<?php
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();
page_header('О нас');
$template->set_filenames(array(
'body' => 'tex_pasport_body.html',
));
make_jumpbox(append_sid("{$phpbb_root_path}viewforum.$phpEx"));
page_footer();
$first_name=$_POST['first_name'];
$last_name=$_POST['last_name'];
$email=$_POST['email'];
$addres=$_POST['addres'];
//вывод на экран
echo $first_name.' '.$last_name.' ваш email '.$email;
?>


tex_pasport_body.html

<!-- INCLUDE overall_header.html -->
<h2>Заголовок_страницы</h2>
<div class="panel">
<div class="inner"><span class="corners-top"><span></span></span>
<div class="content">
<form action="tex_pasport.php" method="post">
<br>Введите имя: <input name="first_name" type="text">
<br>Введите фамилию: <input name="last_name" type="text">
<br>Введите E-mail: <input name="email" type="text">
<br>Введите адрес: <input name="addres" type="text" >
<br><input type="submit" value="Добавить запись">
</form>
<?php
if(!empty($_POST))
include_once './tex_pasport.php';
?>
</div>
<span class="corners-bottom"><span></span></span></div>
</div>
<!-- INCLUDE jumpbox.html -->
<!-- INCLUDE overall_footer.html -->


пока хотелось бы,чтобы хоть это заработало.потом, конечно,данные с формы должны будут заноситься в базу данных, а результат должен будет отображаться на месте сообщений в темах. Люди добрые,помогите! :roll:
XeMyJI
 
Сообщения: 9
Зарегистрирован: 28.01.15 07:26

Сообщение Shredder » 28.01.15 12:08

XeMyJI писал(а):потом, конечно,данные с формы должны будут заноситься в базу данных

Это нужно делать не "потом", а сразу же. Без этого смысла ковырять что-либо нет, т.к. без БД сохраняться ничего и не будет.

1) Скачиваете файл posting.php из корня форума, меняете его имя на tex_pasport.php

2) Ищете в новом файле текст:

Код: Выделить всё
	$message_parser->message		= utf8_normalize_nfc(request_var('message', '', true));

Меняете на:
Код: Выделить всё
	$message_parser->message		= utf8_normalize_nfc(request_var('first_name', '', true)) . '<br />' . utf8_normalize_nfc(request_var('message', '', true));

Ищете:
Код: Выделить всё
{$phpbb_root_path}posting.$phpEx

Меняете все найденные вхождения (у меня их три) на:
Код: Выделить всё
{$phpbb_root_path}tex_pasport.$phpEx

Закачиваете полученный файл на сервер.

3) В файле posting_editor.html из папки шаблонов вашего стиля (если стиль prosilver или на его основе) или posting_body.html (если стиль subsilver2 или на его основе) ищете:

Код: Выделить всё
<textarea

Добавляете перед:
Код: Выделить всё
		<!-- IF SCRIPT_NAME eq 'tex_pasport' -->
			<br />Введите имя: <input name="first_name" type="text" class="inputbox" /><br /><br />
		<!-- ENDIF -->

Сохраняете в кодировке "UTF-8 без BOM".

Теперь при открытии формы постинга через tex_pasport.php у вас появится поле "Введите имя", как показано на скриншоте.

name.png


Аналогичным образом добавляете остальные поля.
Но если нужно последующее редактирование сохранённой формы с подстановкой данных в соответствующие поля (имени в "Ваше имя" и т.д.), то история немного другая, правки будут разнообразнее и сложнее.
Выполняю работы по phpBB3 на заказ. Пишите в личку или на почту.
Бесплатная поддержка - только в темах.
Shredder
Администратор
 
Сообщения: 884
Зарегистрирован: 22.08.13 09:05

Сообщение XeMyJI » 29.01.15 05:16

поле не появилось,когда захожу через tex_pasport.php выходит следующее :
1.png
XeMyJI
 
Сообщения: 9
Зарегистрирован: 28.01.15 07:26

Сообщение Shredder » 29.01.15 09:58

Прямо так и набираете адрес_форума/tex_pasport.php ? Так всё и верно - не указан режим. Изучайте phpBB.
Выполняю работы по phpBB3 на заказ. Пишите в личку или на почту.
Бесплатная поддержка - только в темах.
Shredder
Администратор
 
Сообщения: 884
Зарегистрирован: 22.08.13 09:05

Сообщение XeMyJI » 29.01.15 10:32

неужели так тяжело указать конкретную причину ошибки и способы её устранения? Как я по вашему должен изучать phpbb,если при любой проблеме мне будут отвечать как вы?
XeMyJI
 
Сообщения: 9
Зарегистрирован: 28.01.15 07:26

Сообщение Shredder » 29.01.15 10:43

А что, разве не видно, каким образом происходит обращение к posting.php? Присмотритесь. В браузере всё хорошо видно. Вы просили помочь, вам помогают. Какой же вы программист, раз не можете взглянуть даже в адресную строку?

Без указания режима сообщения и других необходимых данных ваша форма никогда не будет "создавать темы".
Выполняю работы по phpBB3 на заказ. Пишите в личку или на почту.
Бесплатная поддержка - только в темах.
Shredder
Администратор
 
Сообщения: 884
Зарегистрирован: 22.08.13 09:05

Сообщение XeMyJI » 30.01.15 05:48

ошибку понял,извините за мою безграмотность)теперь вот какой вопрос: все данные с полей сохраняются в таблице posts в один столбец. как сделать, чтобы ,например,данные с поля "введите имя" сохранялось в name, а данные с поля "введите фамилию " сохранялись в поле surname, и всё это в новую таблицу?объясню зачем мне это всё нужно:
1.будет форма технического паспорта,со многими полями. писать этот тех.паспорт может только админ.а вот когда этот тех паспорт будет отображаться в какой-нибудь теме,определённой группе пользователей будут доступны только определённые поля.
2.нужно будет сделать импорт,и скорее всего импортируемые данные представлены в виде таблицы.
XeMyJI
 
Сообщения: 9
Зарегистрирован: 28.01.15 07:26

Сообщение Shredder » 30.01.15 13:27

Делать в виде отдельной таблицы нет никакого смысла, проще добавить нужные поля в таблицу phpbb_topics (таблица тем phpbb), если вывод полей планируется только в первом сообщении темы, или в таблицу phpbb_posts (сообщения), если поля планируются не только в первом сообщении темы. Чтобы определённой группе пользователей были доступны только определённые поля, делается при помощи прав доступа. Для добавления полей только только в первом сообщении темы рекомендую взглянуть в сторону мода "Topics descriptions 1.0.0 - описания для тем phpBB" (во вложении), правки для файлов: posting.php, includes/functions_posting.php, viewtopic.php, а также для языковых файлов и шаблонов posting_editor.html, и viewtopic_body.html. На примере этого мода можно сделать нужный вам мод.
Вложения
topics_descriptions_1.0.0.zip
(99.58 КБ) Скачиваний: 654
Выполняю работы по phpBB3 на заказ. Пишите в личку или на почту.
Бесплатная поддержка - только в темах.
Shredder
Администратор
 
Сообщения: 884
Зарегистрирован: 22.08.13 09:05

Сообщение XeMyJI » 02.02.15 09:43

большое спасибо)сейчас буду создавать сфою пресловутую форму,как создам отпишусь,а может в процессе ещ вопросы возникнут) большое спасибо вам за участие,без вас пришлось бы тяжело)
XeMyJI
 
Сообщения: 9
Зарегистрирован: 28.01.15 07:26

Сообщение XeMyJI » 12.02.15 05:29

и снова здравствуйте) возникла следующая проблема: данные полей, добавляемые при помощи мода topic description (точнее по описанному в моде способу) не ищутся с помощью поиска. поиск по добавленным полям очень нужен, помогите пожалуйста)
XeMyJI
 
Сообщения: 9
Зарегистрирован: 28.01.15 07:26

Сообщение Shredder » 18.02.15 09:20

Посмотрите в сторону модов с названием "Custom Profile Fields Search" (поиск в гугле), их несколько разных. Моды предназначены для поиска по дополнительным полям профиля, но может, натолкнёт на нужные идеи и модифицируете их для своих нужд.
Выполняю работы по phpBB3 на заказ. Пишите в личку или на почту.
Бесплатная поддержка - только в темах.
Shredder
Администратор
 
Сообщения: 884
Зарегистрирован: 22.08.13 09:05

Сообщение XeMyJI » 25.02.15 05:16

поиск доработал с помощью мода, сделанного Porutchik.Всё отлично работает. Теперь возникла следующая задача: при создании темы заполнение поля ввода сообщения является обязательным.нужно эту обязательность отключить, как бы это странно ни звучало :) Быть может вы и в этой ситуации меня выручите?))
XeMyJI
 
Сообщения: 9
Зарегистрирован: 28.01.15 07:26


Вернуться в Общее обсуждение phpBB

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron