これを試して:
CREATE TABLE color_scheme (
id_color_sheme INT AUTO_INCREMENT PRIMARY KEY,
color_esquema VARCHAR(30),
color_front_banners VARCHAR(7),
color_front_banners_bottom VARCHAR(7),
color_front_botoes VARCHAR(7),
color_front_links VARCHAR(7),
color_front_menu VARCHAR(7),
color_front_rodape VARCHAR(7),
index(color_esquema)
);
CREATE TABLE user_interface (
id INT AUTO_INCREMENT PRIMARY KEY,
color_front_banners VARCHAR(7),
color_front_banners_bottom VARCHAR(7),
color_front_botoes VARCHAR(7),
color_front_links VARCHAR(7),
color_front_menu VARCHAR(7),
color_front_rodape VARCHAR(7)
);
-- SAMPLE DATA
INSERT INTO user_interface (
color_front_banners,
color_front_banners_bottom,
color_front_botoes,
color_front_links,
color_front_menu,
color_front_rodape)
VALUES ('#FFFFFF','#FFFFFF','#FFFFFF','#FFFFFF','#FFFFFF','#FFFFFF'),
('#EEEEEE','#EEEEEE','#EEEEEE','#EEEEEE','#EEEEEE','#EEEEEE') ;
INSERT INTO color_scheme (color_esquema,
color_front_banners,
color_front_banners_bottom,
color_front_botoes,
color_front_links,
color_front_menu,
color_front_rodape)
VALUES ('black','#FFFFFF','#FFFFFF','#FFFFFF','#FFFFFF','#FFFFFF','#FFFFFF'),
('grey','#EEEEEE','#EEEEEE','#EEEEEE','#EEEEEE','#EEEEEE','#EEEEEE') ;
-- UPDATE based on color_esquema
SET @color_name := 'black';
UPDATE user_interface
SET
color_front_banners = (
SELECT color_front_banners FROM color_scheme
WHERE color_esquema = @color_name ),
color_front_banners_bottom = (
SELECT color_front_banners_bottom FROM color_scheme
WHERE color_esquema = @color_name ),
color_front_botoes = (
SELECT color_front_botoes FROM color_scheme
WHERE color_esquema = @color_name ),
color_front_links = (
SELECT color_front_links FROM color_scheme
WHERE color_esquema = @color_name ),
color_front_menu = (
SELECT color_front_menu FROM color_scheme
WHERE color_esquema = @color_name ),
color_front_rodape = (
SELECT color_front_rodape FROM color_scheme
WHERE color_esquema = @color_name )
WHERE id = 2;
-- If you want to change just one color, you can use this query.
UPDATE user_interface
SET
color_front_botoes = '#DDDDDD'
WHERE id = 1;
これはどのように作動しますか?まず、色のテーブルを作成します (例: 'color_scheme')。次に、「user_interface」テーブルに挿入されたこのテーブルから値 (「blue」、「#....」、...) を取得します。ところで、これをユーザー インターフェイスに使用すると仮定しました。とにかく、あなたのニーズに合わせて採用することができます。データベースに最初に挿入されたデータのみを更新できることに注意してください。したがって、ユーザーを追加するときは、デフォルトの色から始める必要があります。ユーザーテーブルとは別に、色を含む別のテーブルを作成することをお勧めします。
次に、選択した配色に基づいてデフォルトの色を更新します。「青」を使いたいとしましょう。次に、更新クエリを使用して、user_interface テーブル (または色テーブル) の値を更新する必要があります。最も基本的な方法は、私が行ったようにサブクエリを実行し、WHERE color_esquema = 'blue' と言う方法です。エントリを簡単にするために set color_name 変数を追加しました。このステートメントで、color_name という名前の変数の宣言を開始し、クエリ全体で一度宣言するだけで済みます。元に戻したい場合は、color_esquema 名を挿入できます。
SQL フィドルのデモ
まず、user_interface の最後の行に灰色を追加します。次に、更新クエリを使用して、値を黒の新しいカラー スキーマに変更します。それをステップに分解します。
CREATE TABLE color_scheme (
id_color_sheme INT AUTO_INCREMENT PRIMARY KEY,
color_esquema VARCHAR(30),
color_front_banners VARCHAR(7),
color_front_banners_bottom VARCHAR(7),
color_front_botoes VARCHAR(7),
color_front_links VARCHAR(7),
color_front_menu VARCHAR(7),
color_front_rodape VARCHAR(7),
index(color_esquema)
);
CREATE TABLE user_interface (
id INT AUTO_INCREMENT PRIMARY KEY,
color_front_banners VARCHAR(7),
color_front_banners_bottom VARCHAR(7),
color_front_botoes VARCHAR(7),
color_front_links VARCHAR(7),
color_front_menu VARCHAR(7),
color_front_rodape VARCHAR(7)
);
-- SAMPLE DATA
INSERT INTO user_interface (
color_front_banners,
color_front_banners_bottom,
color_front_botoes,
color_front_links,
color_front_menu,
color_front_rodape)
VALUES ('#FFFFFF','#FFFFFF','#FFFFFF','#FFFFFF','#FFFFFF','#FFFFFF'),
('#EEEEEE','#EEEEEE','#EEEEEE','#EEEEEE','#EEEEEE','#EEEEEE') ;
INSERT INTO color_scheme (color_esquema,
color_front_banners,
color_front_banners_bottom,
color_front_botoes,
color_front_links,
color_front_menu,
color_front_rodape)
VALUES ('black','#FFFFFF','#FFFFFF','#FFFFFF','#FFFFFF','#FFFFFF','#FFFFFF'),
('grey','#EEEEEE','#EEEEEE','#EEEEEE','#EEEEEE','#EEEEEE','#EEEEEE') ;
最初の一歩
その後、更新と同じデータ。ところで、フィドルでは、右側のパネルでこれを行うことはできません。上部の決勝を参照してください。
第二段階
PHP
配色を変更する PHP スクリプト。
<?php
$color_name = 'black';
$host = 'host';
$user = 'user';
$password = 'password';
$database = 'database';
$link = mysqli_connect($host, $user, $password, $database);
IF (!$link) {
echo ('Unable to connect to database');
}
ELSE{
$query = "
SET @color_name := '".$color_name."';
UPDATE user_interface
SET
color_front_banners = (
SELECT color_front_banners FROM color_scheme
WHERE color_esquema = @color_name ),
color_front_banners_bottom = (
SELECT color_front_banners_bottom FROM color_scheme
WHERE color_esquema = @color_name ),
color_front_botoes = (
SELECT color_front_botoes FROM color_scheme
WHERE color_esquema = @color_name ),
color_front_links = (
SELECT color_front_links FROM color_scheme
WHERE color_esquema = @color_name ),
color_front_menu = (
SELECT color_front_menu FROM color_scheme
WHERE color_esquema = @color_name ),
color_front_rodape = (
SELECT color_front_rodape FROM color_scheme
WHERE color_esquema = @color_name )
WHERE id = 2;
";
mysqli_query($link, $query);
}
mysqli_close($link);
?>
**Edit Wordpress udpate **
これは、配色名のみをロードします。
<?php
// insert database connection to get the colors from the color scheme
function retrieve_color_scheme() {
$host = 'host';
$user = 'user';
$password = 'password';
$database = 'database';
$link = mysqli_connect($host, $user, $password, $database);
IF (!$link) {
echo ('Unable to connect to database');
} ELSE {
$query = "SELECT color_esquema FROM color_scheme";
$result = mysqli_query($link, $query);
$choices = mysql_fetch_array($result);
return $choices;
}
mysqli_close($link);
}
$this->add_control( 'color_esquema', array(
'label' => 'Esquema de cores:',
'section' => 'custom_colors',
'type' => 'select',
'priority'=> 9,
'choices' => retrieve_color_scheme()
) );
$this->add_setting( 'color_menu', array(
'default' => '#65696E',
'type' => 'option',
'capability' => 'edit_theme_options',
'transport' => 'postMessage',
'priority' => 10
) );
$this->add_control( new WP_Customize_Color_Control( $this, 'color_menu', array(
'label' => __( 'Fundo do Menu'),
'section' => 'custom_colors',
'settings' => 'color_menu',
'priority' => 10
) ) );
$this->add_setting( 'color_titulo_menu', array(
'default' => '#FFFFFF',
'type' => 'option',
'capability' => 'edit_theme_options',
'transport' => 'postMessage',
'priority' => 15
) );
$this->add_control( new WP_Customize_Color_Control( $this, 'color_titulo_menu', array(
'label' => __( 'Título'),
'section' => 'custom_colors',
'settings' => 'color_titulo_menu',
'priority' => 15
) ) );
?>
<!-- Page -->
<?php $color_menu = get_option('color_menu'); ?>
<?php $color_titulo_menu = get_option('color_titulo_menu');?>
#container{border-top:82px solid <?php if(empty($color_menu)){echo "#65696E";} else { echo "$color_menu";}; ?>}
#logo a span{color:<?php if(empty($color_titulo_menu)){echo "#FFFFFF";} else { echo "$color_titulo_menu";}; ?>}
<!-- My try - In Page -->