Seite 2 von 2

Re: Automatisch wechselnde Styles

Verfasst: 23.07.2009 11:18
von Ruhrpottler
Also die Wechsel funktionieren GRUNDSÄTZLICH nur nach dem Löschen des Caches.
Gibt es denn vielleicht ne Möglichkeit auch den Cache zeitlich automatisch löschen zu lassen? ;)

Re: Automatisch wechselnde Styles

Verfasst: 23.07.2009 11:41
von Mahony
Hallo
Ruhrpottler hat geschrieben:Also die Wechsel funktionieren GRUNDSÄTZLICH nur nach dem Löschen des Caches.
Gibt es denn vielleicht ne Möglichkeit auch den Cache zeitlich automatisch löschen zu lassen? ;)
Das ist Quatsch - Das wechseln des Styles funktioniert natürlich ohne löschen des caches. Wäre dies nicht so, dann könnte kein User seinen Style alleine wechseln.
Du solltest mal deine Browser-Einstellungen überprüfen.

Internet Explorer 8
Extras - Internetoptionen - Browserverlauf - Einstellungen - Neuere Versionen der gespeicherten Seiten suchen - Bei jedem Zugriff auf die Webseite <-- dort anklicken und bestätigen.



Grüße: Mahony

Re: Automatisch wechselnde Styles

Verfasst: 23.07.2009 15:07
von Ruhrpottler
Hm und warum sagen mir dann auch alle Mods im Forum (immerhin 6 Stück), dass der Stylewechsel nicht klappt, bis ich auf den Cache löschen Button geklickt hab.
Ich weiß ja nicht ...vielleicht hab ich auch im Code was falsch gemacht (obwohl man da ja nur die Zahlen anpassen musste, weil meine Styles eine andere ID haben).

Code: Alles auswählen

if (date("H")>7 && date("H")<21){
    $sql = 'UPDATE ' . USERS_TABLE . '
            SET user_style = 6';
            $db->sql_query($sql);
           
   
    $sql = 'UPDATE ' . CONFIG_TABLE . '
            SET config_value = 6
    WHERE config_name = "default_style"';
            $db->sql_query($sql);
           
           
   
    $sql = 'UPDATE ' . CONFIG_TABLE . '
             [color=#FF0000]SET config_value = 6[/color]
    WHERE config_name = "override_user_style"';
            $db->sql_query($sql);
       
           
           
                   
  } else {
    $sql = 'UPDATE ' . USERS_TABLE . '
            SET user_style = 3';
            $db->sql_query($sql);
           
           
    $sql = 'UPDATE ' . CONFIG_TABLE . '
            SET `config_value` = 3
    WHERE config_name = "default_style"';
            $db->sql_query($sql);
           
    $sql = 'UPDATE ' . CONFIG_TABLE . '
             SET config_value = 3
    WHERE config_name = "override_user_style"';
            $db->sql_query($sql);       
                   
  } 
Der Style der tagsüber genutzt wird, hat die ID 6 und der für Nachts hat die ID 3. Die eingefährbte Zeile habe ich gestern mal testweise geändert. Dort stand vorher die 3, statt 6.

Re: Automatisch wechselnde Styles

Verfasst: 23.07.2009 19:14
von Mahony
Hallo
Also erstens sind deine Abfragen falsch statt

Code: Alles auswählen

if (date("H")>7 && date("H")<21){
    $sql = 'UPDATE ' . USERS_TABLE . '
            SET user_style = 6';
            $db->sql_query($sql);
           
   
    $sql = 'UPDATE ' . CONFIG_TABLE . '
            SET config_value = 6
    WHERE config_name = "default_style"';
            $db->sql_query($sql);
           
           
   
    $sql = 'UPDATE ' . CONFIG_TABLE . '
             SET config_value = 6
    WHERE config_name = "override_user_style"';
            $db->sql_query($sql);
       
           
           
                   
  } else {
    $sql = 'UPDATE ' . USERS_TABLE . '
            SET user_style = 3';
            $db->sql_query($sql);
           
           
    $sql = 'UPDATE ' . CONFIG_TABLE . '
            SET `config_value` = 3
    WHERE config_name = "default_style"';
            $db->sql_query($sql);
           
    $sql = 'UPDATE ' . CONFIG_TABLE . '
             SET config_value = 3
    WHERE config_name = "override_user_style"';
            $db->sql_query($sql);       
                   
  }  

müsste es

Code: Alles auswählen

if (date("H")>7 && date("H")<21){
    $sql = 'UPDATE ' . USERS_TABLE . '
            SET user_style = 6';
            $db->sql_query($sql);
           
   
    $sql = 'UPDATE ' . CONFIG_TABLE . '
            SET config_value = 6
    WHERE config_name = "default_style"';
            $db->sql_query($sql);
           
           
   
    $sql = 'UPDATE ' . CONFIG_TABLE . '
             SET config_value = 1
    WHERE config_name = "override_user_style"';
            $db->sql_query($sql);
       
           
           
                   
  } else {
    $sql = 'UPDATE ' . USERS_TABLE . '
            SET user_style = 3';
            $db->sql_query($sql);
           
           
    $sql = 'UPDATE ' . CONFIG_TABLE . '
            SET `config_value` = 3
    WHERE config_name = "default_style"';
            $db->sql_query($sql);
           
    $sql = 'UPDATE ' . CONFIG_TABLE . '
             SET config_value = 1
    WHERE config_name = "override_user_style"';
            $db->sql_query($sql);       
                   
  }  
heißen.

Zweitens, solltest du besser das Snippet von DerPate verwenden, da man damit eine Menge unnötiger SQL-Abfragen einspart.

Das sollte dann für dich so aussehen:

Code: Alles auswählen

$style_day = 6;
$style_night = 3;

if ((date('H') >= 7 && date('H') <= 21) && $config['default_style'] != $style_day)
{
   set_config('default_style', $style_day);
}
elseif ((date('H') < 7 || date('H') > 21) && $config['default_style'] != $style_night)
{
   set_config('default_style', $style_night);
} 
Anm: "Benutzer-Style überschreiben" muss bei dieser Variante aktiviert sein. Allerdings spart man die SQL-Abfragen bei jedem Seitenaufruf ein.


Grüße: Mahony