1

Тема: Отправить значение формы в базу

Выбился из сил и разума, в настройках профиля юзера создал поля, вот одно из них:

<hook id="pf_change_details_settings_email_fieldset_end"><![CDATA[
            ?>
            <fieldset class="frm-group group<?php echo ++$forum_page['group_count'] ?>">
                <div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
                    <div class="sf-box sf-short text">
                        <label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span>Фон кода</span>    <small>Цвет фона бля блока кода</small></label><br />
                        <span class="fld-input"><input type="text" id="fld<?php echo $forum_page['fld_count'] ?>" name="form[in_back_col]" value="" size="6" maxlength="3" /></span>
                    </div>
                </div>
......

В поле вводится значение и оно отправляется в базу (нужную таблицу и поле). Вопрос: как его отправить, где и в каком хуке написать и что написать (примерно) ? Полистал расширения другие и профиль.пхп, смог понять только, что запрос к базе делается 1, и всё содержимое всей формы за 1 раз раскидывается...вот что и как добавить (как я понял в объект query) чтобы моё значение не нарушило ничё предыдущее и записалось в нужное место. = )
Заранее спасибо всем отписавшимся.

Поделиться

2

Re: Отправить значение формы в базу

Посмотри [Релиз] Дополнительные поля в профиле - примерно тоже самое делает.

Смайл. Дата. Подпись.

Поделиться

3

Re: Отправить значение формы в базу

Посмотрел, ничё не понял ) Не нашёл где что заносится в базу...подумал на это:

if (isset($_POST['form']['skype'])) {
                $form['skype'] = $_POST['form']['skype'];
            }

Что за массив $form, что с ним делается? Что обозначает индекс 'skype' , это поле в базе или что-то другое? Или это просто какое-то присвоение значения поля...хз. Потом вызвала интерес строка:

<?php echo(isset($form['skype']) ? forum_htmlencode($form['skype']) : $user['skype']) ?>

Тут опять непонятный $form[] и непонятный $user[], что в них хранится и что выступает индексами?

Помогите разобраться ) Я вообще ничё не понял...

У меня вместо поля skype стоит поле с именем form[in_back_col], ещё есть также несколько аналогичных полей. В базе одно поле gml_style. Вся информация с этих полей в профиле должна собраться в 1 переменную и отправиться в базу. Както....мб так:

$gml_to_db = '';
    if (isset($_POST['form']['in_back_col'])) {
        $form['gml_style'] .= '[in_back_col='.$_POST['form']['in_back_col'].'];';
    }

Должно в базе появиться (добавиться) такое: [in_back_col='значение'];
Это ничё есесн не работает, ибо я ничё не понимаю ). Мб есть какаянить документация по всем этим плюшкам punbb?

Буду чрезмерно благодарен если разъясните как решать эту проблему...спасибо.

Поделиться

4

Re: Отправить значение формы в базу

Нда...пасибки. Разобрался методом тыка сам, проткнул всё практически....вобщем в базу всё теперь заносится, но вылезла другая проблема, в манифесте написано:

echo '<script type="text/javascript">gml_set=\''.$gml_xml.'\';</script>';
echo '<script type="text/javascript" src="'.$ext_info['url'].'/gml_code.js"></script>';

Но почему-то переменная gml_set не видна в скрипте gml_code.js.
Если написать так:

echo '<script>alert(\''.$gml_xml.'\');</script>';
echo '<script type="text/javascript">gml_set=\''.$gml_xml.'\';</script>';
echo '<script type="text/javascript" src="'.$ext_info['url'].'/gml_code.js"></script>';

Мне будет показано содержимое $gml_xml. (т.е. оно существует). Напишем теперь так:

echo '<script type="text/javascript">gml_set=\''.$gml_xml.'\'; alert(gml_set);</script>';
echo '<script type="text/javascript" src="'.$ext_info['url'].'/gml_code.js"></script>';

Мне будет показано опять содержание $gml_xml, т.е. в скрипте она присвоилась переменной gml_set.

Внутри скрипта gml_code.js пишем alert(gml_set) и показывает пустоту....как починить? С чем это мб связано?
PS Раньше вроде проверял и всё работало...щаз перестало... hmm

Поделиться

5

Re: Отправить значение формы в базу

У тебя там в скрипте этот gml_set не переопределяется?
Сделай var gml_set=...

Сайт hcs

Поделиться

6 (07.03.2011 09:53 отредактировано brainiac)

Re: Отправить значение формы в базу

Так....поторопился я, немного в другом крылся корень проблемы, код (3 хука):

<hook id="hd_end"><![CDATA[
            $query['SELECT'] .= ', u.gml_style';
        ]]>
        </hook>
   
        <hook id="vt_quickpost_end"><![CDATA[
            $gml_xml = $user['gml_style'];
            $gml_xml = str_replace("\r\n"," ",$gml_xml);
            echo '<script type="text/javascript">var gml_set=\''.$gml_xml.'\';</script>';
            echo '<script type="text/javascript" src="'.$ext_info['url'].'/gml_code.js"></script>';
            echo '<link rel="stylesheet" type="text/css" href="'.$ext_info['url'].'/gml_style.css" />';
        ]]></hook>
       
        <hook id="pf_change_details_settings_email_fieldset_end"><![CDATA[
            $gml_xml = $user['gml_style'];
            $gml_xml = str_replace("\r\n"," ",$gml_xml);
            $param = array();
            if ($gml_xml) {
                $gml_set_mass = explode(';',$gml_xml);
                for ($i=0; $i<count($gml_set_mass); $i++) {
                    $set_name = preg_replace("/.*\[([a-z0-9_]+)\=[a-z0-9_#]+\].*/i","$1",$gml_set_mass[$i]);
                    $set_value = preg_replace("/.*\[[a-z0-9_]+\=([a-z0-9_#]+)\].*/i","$1",$gml_set_mass[$i]);
                    $param[$set_name]=$set_value;
                }
            }

В коде хука pf_change_details_settings_email_fieldset_end переменная $gml_xml есть, а в коде хука vt_quickpost_end она пропадает Оо, хотя все действия аналогичные... и на той странице где используется этот хук проходит код хука hd_end.

А если вытаскивать из базы нужное значение прям тупо в лоб то переменная появляется и в js добавляется и вообще всё прекрасно работает. Т.е. пишем в хуке vt_quickpost_end это:

if ($forum_user['id']) {
            $query = array(
                'SELECT'    => 'gml_style',
                'FROM'        => 'users',
                'WHERE'     => 'id=\''.$forum_user['id'].'\''
            );
            $result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
            $gml_xml = $forum_db->fetch_assoc($result);
            }
            $gml_xml['gml_style'] = str_replace("\r\n"," ",$gml_xml['gml_style']);
            echo '<script>gml_set=\''.$gml_xml['gml_style'].'\';</script>';
            echo '<script type="text/javascript" src="'.$ext_info['url'].'/gml_code.js"></script>';
            echo '<link rel="stylesheet" type="text/css" href="'.$ext_info['url'].'/gml_style.css" />';

Скажите почему так )

Поделиться

7

Re: Отправить значение формы в базу

И ещё вопрос: как поместить вытащенное значение из базы в сессию, чтобы постоянно запросы лишние не делать?

Поделиться

8

Re: Отправить значение формы в базу

session_start();

$_SESSION['myvar'] = $var;

Добавлено спустя 1 минуту 45 секунд:

www.softtime.ru/bookphp/gl8_1.php

Сайт hcs

Поделиться

9

Re: Отправить значение формы в базу

А ну тогда ясно, я прост подумал вдруг в punbb это делается по хитроумному.... Спасибо.

Поделиться