Мое веб-приложение должно позволять пользователю вводить шестнадцатеричные значения для цвета метки, фона и цвета шрифта. Мне нужно иметь возможность обновлять цвет фона, цвет метки и цвет шрифта в зависимости от шестнадцатеричных значений, которыепользовательские входы, которые сохраняются в таблице MySQL.Моя цель - извлечь значения шестнадцатеричных цветов из базы данных в начале файла common.php (который является моим css) и назначить их трем цветным переменным ($ clabel, $ cbackground и $ cfont) и использовать их внутри моего css, так чточто все изменения цвета находятся в одном месте.Но я сталкиваюсь с некоторыми проблемами, и корень всех проблем в том, что $ this не находится в контексте объекта внутри common.php - - - Мне было интересно, что я делаю, чтобы добиться того же результата в будущем.(Я также хочу упомянуть здесь, что я попытался включить класс и создать экземпляр объекта этого класса внутри common.php. Он не работает, и вся моя веб-страница теряет все свое форматирование, определенное в commom.php)
Сценарий 1:
<?php header("Content-type: text/css");
$con = mysql_connect("localhost","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("shiprequ_sr", $con);
$userid = $this->user->id;
$resultUser = mysql_query("SELECT * FROM users Where Id=$userid");
while($row = mysql_fetch_array($resultUser,MYSQL_NUM))
{
$templateId =$row[15];
}
$resultTemplates = mysql_query("SELECT * FROM templates Where Id=$templateId");
while($row = mysql_fetch_array($resultTemplates,MYSQL_NUM))
{
$clabel = '#'.$row[14];
$cbackground = '#'.$row[13];
$cfont = '#'.$row[16];
}
mysql_close($con);
?>
<style type='text/css'>
.text4
{
color: <?=$clabel?>;// font and bkg colors are referred to likewise
}
Приведенный выше код работает только тогда, когда $ userid = $ this-> user-> id;заменяется определенным идентификатором пользователя, например $ userid = 101;По какой-то причине $ это не доступно в common.php.
Сценарий: 2
<?php header("Content-type: text/css");
include('C:/sr/application/models/getdata.php');
$clabel = getLabelColor();
$cbackground = getBkgColor();
$cfont = getFontColor();
?>
<style type='text/css'>
.text4
{
color: <?=$clabel?>;// font and bkg colors are referred to likewise
}
</style>
getdata.php выглядит следующим образом:
function getLabelColor() {
$con = mysql_connect("localhost","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("shiprequ_sr", $con);
$userid = $this->user->id;
$resultUser = mysql_query("SELECT * FROM users Where Id=$userid");
while($row = mysql_fetch_array($resultUser,MYSQL_NUM))
{
$templateId =$row[15];
}
$resultTemplates = mysql_query("SELECT * FROM templates Where Id=$templateId");
while($row = mysql_fetch_array($resultTemplates,MYSQL_NUM))
{
$clabel = '#'.$row[14];
}
mysql_close($con);
return $clabel;
}
//getFontColor() and getBkgColor() defined likewise
Этот код портит всю веб-страницу, как будто CSS не существует.
Когда я использую тот же код из layout.phtml (в качестве теста):
<!--In layout.phtml-->
<?php
include('C:/sr/application/models/getdata.php');
echo $clabel = getLabelColor(); //purple 51:0:153
echo $cbackground = getBkgColor(); //Light blue 102:102:204
echo $cfont = getFontColor();
?>
Я получаю следующую ошибку:
Fatal error: Using $this when not in object context in C:\sr\application\models\getdata.php on line 14
Мне интересно, почему$ это не в контексте объекта, как оно используется в моем коде или как его можно поместить в контекст объекта?