Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Общие вопросы по PHP Обработка дополнительных полей в addnews.php

Обработка дополнительных полей в addnews.php


     06.12.2012    Общие вопросы по PHP    3357

вопрос
Здравствуйте. Возникла следующая ситуация:
При добавлении новости я заполняю дополнительное поле test. Мне нужно, чтобы при нажатии на кнопку "Добавить" значение этого поля (если оно есть) присваивалось произвольной переменной для его обработки. Ну и затем обработанное значение заносилось в базу данных вместе с другими.

Вот пример (очень условный):
  • Значение поля 10
  • $first = 10
  • $second = 5 * $first
  • $second отправляется в dle_post вместе с остальными параметрами


Я попытался справиться сам, пошарил в фале /engine/inc/addnews.php
Но там поля подключаются так
include (ENGINE_DIR . '/inc/xfields.php');

а в базу данных передается параметр $filecontents, который формируется в /engine/inc/xfields.php
Мне лишь нужно выразить значение конкретного поля test через $filecontents. И вот тут я в затруднении)


Надеюсь на вашу помощь)

Ответил: BR0kEN


Как по мне, то проще создать добавить поле в БД и форму, чем лезть в доп. поля. Я делал бы так:
Открыть addnews.php и найти строку:
$alt_name = trim( $parse->process( stripslashes( $_POST['alt_name'] ) ) );

после нее вставить:
$test = intval( str_replace("-", "", $_POST['test'] ) );

далее найти:
set title='$title',

после вставить:
test='$test', 

далее найти:
full_story, xfields, title, keywords,

после вставить:
test, 

далее, в этой же строке, найти:
'$filecontents', '$title', '',

после вставить:
'$test', 

далее найти:
$tpl->set( '{alt-name}', $row['alt_name'] );

после вставить:
$tpl->set( '{test}', intval( $row['test'] ) );

далее найти:
$tpl->set( '{alt-name}', '' );

после вставить:
$tpl->set( '{test}', '' );

Затем добавить поле в dle_post:
ALTER TABLE `dle_post` ADD `test` int(11) NOT NULL


Таким образом, в поле test таблицы dle_post, будет записываться значение test умноженного на два.

Также можно записать оригинальное значение поля $test в БД, а на выходе, например в shortstory.tpl, получить результат произведения. Для этого открываем engine.php, находим все:
p.title, p.category, p.alt_name,

и заменяем на:
p.title, p.category, p.alt_name, p.test,

Далее открываем show.short.php и находим:
$tpl->set( '{login}', $row['autor'] );

после добавляем:
        if( $row['test'] ) {
        
            $testval = $row['test'];
            
            $test = $testval * 2;
            
            $tpl->set( '{test}', $test );
        
        }

В шаблоне используем {test}.

П.С. Если как-то не так понял вас - обращайтесь. Можно в скайп.

Комментарии пользователей (2)

nowheremany
192

1660 | 1292

nowheremany - 7 декабря 2012 09:35 - Эксперт

проще через JS. И код править не надо

Благодарность принимаю тут Связь

timyrdp
2 | 2

timyrdp - 17 декабря 2012 14:35 - Юзер

nowheremany, есть ли пример такого JS?

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы