решено Как будет выглядеть код после адаптации (сторонний скрипт)

Begemot

Пользователь
#1
Добрый день, подскажите, как переделать код под ТР? Хочу понять что к чему.

Код:
<?
if (isset($_POST["button"]))
{
    $button=$_POST["button"];
    $b=$_POST["block"]; 

   
mysql_query("update bb_configuration set price='$button' where item='button'");
mysql_query("update bb_configuration set price='$b' where item='block'");

    echo "<font color=\"green\"><b>Настройки сохранены</b></font><br><br>";
}
?>

<form method="post" action="admin.php?p=cfg" id="MainForm">

<?
$sql="select price from bb_configuration where item='button'"; 
$res=mysql_query($sql); 
$button=mysql_result($res,0,0);

$sql="select price from bb_configuration where item='block'";
$res=mysql_query($sql);
$block=mysql_result($res,0,0);
?>

<table class="adn">
<tr class="lineb">
<td align="left">Значение</td>
<td align="left"><table class="adn"><tr><td align="left" style="border: none; padding: 0">Описание</td><td align="right" style="border: none; padding: 0"><a href="#" onclick="document.getElementById('MainForm').submit(); return false" class="liv">Сохранить</a></td></tr></table></td>
</tr>
<tr class="liney"> 
   <td class="settab listsr"><input type=text value='<? echo $button ?>' name='button'></td> 
   <td class="listsl"><b>Кнопка</b></td> 
</tr>
<tr class="liney ell"> 
   <td class="settab listsr"><input type=text value='<? echo $block ?>' name='block'></td> 
   <td class="listsl"><b>Блок</b></td> 
</tr>
</table>
<br><br>

</form>
 

Exile

Администратор
#2
Ну напишу в качестве исключения, а то мало ли кому еще пригодится. Но говорю сразу - пишу на коленке в блокноте, может не работать. Написал с комментариями, их удалить можно.

Создаем файл например test.php в корне. Сразу же потребуется одноименный (для простоты) шаблон - test.tpl, в папке styles/templates/default/.

Структура самого файла:

PHP:
<?php

// название скрипта (для будущей системы отслеживания)
define('BB_SCRIPT', 'test');
// подключение ключевых файлов
define('BB_ROOT', './');
require(BB_ROOT . 'common.php');

// начало сессии пользователя
$user->session_start();

// переменные ваши c минимальной фильтрацией
$button = request_var('button', '');
$block  = request_var('block', '');

if (isset($button))
{
    // запрос в базу
    DB()->query("UPDATE bb_configuration SET price = '$button' WHERE item = 'button'");
    DB()->query("UPDATE bb_configuration SET price = '$b' WHERE item = 'block'");
    // окошко с информацией
    bb_die("<font color=\"green\"><b>Настройки сохранены</b></font>");
}

// получаем данные для вывода на страницу
$block_data  = DB()->fetch_row("SELECT price FROM bb_configuration WHERE item='block'");
$button_data = DB()->fetch_row("SELECT price FROM bb_configuration WHERE item='button'");

// присваиваем их переменным шаблона
$template->assign_vars(array(
    'BLOCK'  => $block_data['price'],
    'BUTTON' => $button_data['price'],
));

// выводим шаблон
print_page('test.tpl');
Код шаблона:

HTML:
<form method="post" action="test.php" id="MainForm">
<table class="adn">
    <tr class="lineb">
        <td align="left">Значение</td>
        <td align="left">
            <table class="adn">
                <tr>
                    <td align="left" style="border: none; padding: 0">Описание</td>
                    <td align="right" style="border: none; padding: 0"><a href="#" onclick="document.getElementById('MainForm').submit(); return false" class="liv">Сохранить</a></td>
                </tr>
            </table>
        </td>
    </tr>
    <tr class="liney">
        <td class="settab listsr"><input type=text value='{BUTTON}' name='button'></td>
        <td class="listsl"><b>Кнопка</b></td>
    </tr>
    <tr class="liney ell">
        <td class="settab listsr"><input type=text value='{BLOCK}' name='block'></td>
        <td class="listsl"><b>Блок</b></td>
    </tr>
</table>
</form>
Базовый принцип такой. Можете еще в движке подсмотреть другие файлы как сделаны. Удачи в изучении.
 

Begemot

Пользователь
#3
Ну напишу в качестве исключения, а то мало ли кому еще пригодится. Но говорю сразу - пишу на коленке в блокноте, может не работать. Написал с комментариями, их удалить можно.

Создаем файл например test.php в корне. Сразу же потребуется одноименный (для простоты) шаблон - test.tpl, в папке styles/templates/default/.

Структура самого файла:

PHP:
<?php

// название скрипта (для будущей системы отслеживания)
define('BB_SCRIPT', 'test');
// подключение ключевых файлов
define('BB_ROOT', './');
require(BB_ROOT . 'common.php');

// начало сессии пользователя
$user->session_start();

// переменные ваши c минимальной фильтрацией
$button = request_var('button', '');
$block  = request_var('block', '');

if (isset($button))
{
    // запрос в базу
    DB()->query("UPDATE bb_configuration SET price = '$button' WHERE item = 'button'");
    DB()->query("UPDATE bb_configuration SET price = '$b' WHERE item = 'block'");
    // окошко с информацией
    bb_die("<font color=\"green\"><b>Настройки сохранены</b></font>");
}

// получаем данные для вывода на страницу
$block_data  = DB()->fetch_row("SELECT price FROM bb_configuration WHERE item='block'");
$button_data = DB()->fetch_row("SELECT price FROM bb_configuration WHERE item='button'");

// присваиваем их переменным шаблона
$template->assign_vars(array(
    'BLOCK'  => $block_data['price'],
    'BUTTON' => $button_data['price'],
));

// выводим шаблон
print_page('test.tpl');
Код шаблона:

HTML:
<form method="post" action="test.php" id="MainForm">
<table class="adn">
    <tr class="lineb">
        <td align="left">Значение</td>
        <td align="left">
            <table class="adn">
                <tr>
                    <td align="left" style="border: none; padding: 0">Описание</td>
                    <td align="right" style="border: none; padding: 0"><a href="#" onclick="document.getElementById('MainForm').submit(); return false" class="liv">Сохранить</a></td>
                </tr>
            </table>
        </td>
    </tr>
    <tr class="liney">
        <td class="settab listsr"><input type=text value='{BUTTON}' name='button'></td>
        <td class="listsl"><b>Кнопка</b></td>
    </tr>
    <tr class="liney ell">
        <td class="settab listsr"><input type=text value='{BLOCK}' name='block'></td>
        <td class="listsl"><b>Блок</b></td>
    </tr>
</table>
</form>
Базовый принцип такой. Можете еще в движке подсмотреть другие файлы как сделаны. Удачи в изучении.
Значит я был на верном пути. Только ругается на подключение common.php. Да и не видел я, кстати, в админских файлах такое подключение.

Почти во всех файлах встречается код подобный этому:

Код:
<?php

if (!empty($setmodules))
{
    $module['Бла_бла_ба'][''Бла_бла_ба'] = basename(__FILE__);
    return;
}
require('./pagestart.php');
 

Begemot

Пользователь
#5
@Exile в том и проблема. Я с этим вожусь уже давненько, когда пишу:

Код:
<?php

if (!empty($setmodules))
{
    $module['БРРРР']['БРРРР'] = basename(__FILE__);
    return;
}
require('./pagestart.php');
// переменные ваши c минимальной фильтрацией
$button = request_var('button', '');
$block  = request_var('block', '');

if (isset($button))
{
    // запрос в базу
    DB()->query("UPDATE bb_prices SET price = '$button' WHERE item = 'button'");
    DB()->query("UPDATE bb_prices SET price = '$block' WHERE item = 'block'");
    // окошко с информацией
    bb_die("<font color=\"green\"><b>Настройки сохранены</b></font>");
}

// получаем данные для вывода на страницу
$block_data  = DB()->fetch_row("SELECT price FROM bb_prices WHERE item='block'");
$button_data = DB()->fetch_row("SELECT price FROM bb_prices WHERE item='button'");

// присваиваем их переменным шаблона
$template->assign_vars(array(
    'BLOCK'  => $block_data['price'],
    'BUTTON' => $button_data['price'],
));

// выводим шаблон
print_page('test.tpl');
Жалуется на открывающий php в test.php и на 17 строку common.php. Я уже что только не писал.

Warning: Cannot modify header information - headers already sent by (output started at E:\Winginx\home\testtp.ru\public_html\test.php:1) in E:\Winginx\home\testtp.ru\public_html\common.php on line 17
 

Begemot

Пользователь
#6
Суйчас попробовал предложенный выше код, в корне сайта вылазит аналогичная ошибка
 

Begemot

Пользователь
#8
в админке не надо добавлять common.php
он подгружается в pagestart.php
Я его в админке и не добавляю Что пишу в админке, идет парой сообщений выше. Все равно идет ошибка, которую я выше указал. Если брать корень сайта, и там добавлять, по примеру, который привел @Exile, ошибка та же самая. Я с этой проблемой уже неделю бьюсь, но что сделать, раз бестолковка в этом направлении не работает.
 

Begemot

Пользователь
#10
@Begemot случаем пустой строки или пробела перед <?php нет? Файл в UTF-8 без BOM сохранен?
Так, была пустая строка и с кодировкой проблемы. Но теперь другая проблема. Когда нажимаю на пункт в меню, мне выводит надпись "Настройки Сохранены", без всяких полей для изменения оных.
 
Сверху