zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden Standortänderung

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 15.10.2011, 15:40
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 01.06.2010
Beiträge: 126
steve46 befindet sich auf einem aufstrebenden Ast
Standard Standortänderung

Hallo!!!

Auf meiner Seite haben User die Möglichkeit ihren Standort zu ändern, dem entsprechend soll dann die richtige Uhrzeit und die richtige Landesflagge angezeigt werden!

Wie realisiere ich so etwas? Mit PHP und MySQL? Oder doch besser mit JavaScript?

Vor allem wie gebe ich die richtige Flagge aus?

lg steve46
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 15.10.2011, 18:05
Benutzerbild von fox
fox fox ist offline
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 11.09.2006
Beiträge: 1.008
fox sorgt für eine eindrucksvolle Atmosphärefox sorgt für eine eindrucksvolle Atmosphäre
Standard

Die einfachste Methode für die Flagge:

Speichere das Land als String, z.B. nach ISO 3166 und lege eine gleichnamige Datei mit der Flagge an. Dazu brauchst du aber natürlich für *jede* Eingabemöglichkeit auch eine entsprechende Datei.
Mit Javascript würde ich da nicht operieren, wieso auch?

Zur Uhrzeit: Ich bin mir fast sicher, dass es noch elegantere Methoden gibt, konnte sie jetzt aber leider nicht finden.
Du kannst für jedes Land die Abweichung von der GMT speichern und jedesmal dazuaddieren / abziehen:
PHP-Code:
$diff 60*60*2// + 2 Stunden verschiebung
$time time() + $diff;

$yourTime gmdate('H:i'$time); 
Prinzip verstanden?
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 15.10.2011, 18:28
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 01.06.2010
Beiträge: 126
steve46 befindet sich auf einem aufstrebenden Ast
Standard

Schon klar. Das Land speichern in der Datenbank. Und dazu eine gleichnamige Datei für jedes Land. Aber wie gebe ich dann wenn in der Datenbank z.B steht "Österreich", Österreich.png aus?

lg steve46
Mit Zitat antworten
  #4 (permalink)  
Alt 15.10.2011, 18:41
Benutzerbild von Praktikant
Semantikbremse.
XHTMLforum-Kenner
 
Registriert seit: 22.04.2008
Beiträge: 4.985
Praktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz sein
Standard

PHP-Code:
$result mysql_query("SELECT `name` FROM `bilder` WHERE iso = 'at'");
$row mysql_fetch_assoc($result);
echo 
$row['name']; 
Vielleicht so?

Im Grunde genommen ist das aber eigentlich viel zu kompliziert. Du musst du nur den ISO-Code (Primary), die Zeitverschiebung und den Ländernamen in der Datenbank speichern.
Mit dem Namen und dem ISO-Code gibst du dann eine Liste aus zum Wechseln des Standortes. Klickt nun einer auf den Link suchst du dir in der Datenbank die entsprechende Zeitverschiebung und gibst das dann aus. Sieht dann ungefähr so aus:

PHP-Code:
$result mysql_query("SELECT `zeitverschiebung` FROM `bilder` WHERE iso = '" $iso "'");
$row mysql_fetch_assoc($result);
echo 
time() + 60*60* (int) $row['zeitverschiebung'];
echo 
'<img src="./laenderbilder/' $iso '" />'
__________________
Rettet die Erde.... sie ist der einzige Planet mit Schokolade!
Mit Zitat antworten
  #5 (permalink)  
Alt 15.10.2011, 18:51
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 01.06.2010
Beiträge: 126
steve46 befindet sich auf einem aufstrebenden Ast
Standard

Danke! Jetzt wo du das hier gepostet hast, bin ich selbst draufgekommen. Aber danke!!!!
Mit Zitat antworten
  #6 (permalink)  
Alt 18.10.2011, 01:12
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 13.07.2006
Beiträge: 745
mermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblick
Standard

Bindet das lieber an die „korrekten“ Zeitzonen-Identifier.

- PHP: List of Supported Timezones - Manual

Die Zeitzone eines Scripts lässt sich dann sehr leicht zentral setzen:

- PHP: date_default_timezone_set - Manual

PHP-Code:
<?php

function f($timezoneIdentifier)
{
    echo 
$timezoneIdentifier"\n",
         
str_repeat('='strlen($timezoneIdentifier)), "\n";
        
    
date_default_timezone_set($timezoneIdentifier);

    
var_dump(date('Y-m-d H:i:s'));    
    
    
$dt = new DateTime();
    
var_dump($dt->format('Y-m-d H:i:s'));
    
    echo 
"\n";
}


f('Australia/Perth');
f('Europe/Berlin');
f('UTC');
Code:
Australia/Perth
===============
string(19) "2011-10-18 05:43:40"
string(19) "2011-10-18 05:43:40"

Europe/Berlin
=============
string(19) "2011-10-17 23:43:40"
string(19) "2011-10-17 23:43:40"

UTC
===
string(19) "2011-10-17 21:43:40"
string(19) "2011-10-17 21:43:40"
Außerdem besteht damit der Vorteil, dass sich PHP um die ganzen dreckigen Details wie Sommerzeit/Winterzeit kümmert.

Dazu dann noch alle Zeitangaben in UTC in der Datenbank speichern.

PHP-Code:
<?php

function utcToLocalTime($dateTimeStr$format 'Y-m-d H:i:s')
{
    
$dt DateTime::createFromFormat($format$dateTimeStr, new DateTimeZone('UTC'));
    
    if (
$dt === false) {
        throw new 
Exception('Could not convert time string');
    }
    
    
$dt->setTimezone(new DateTimeZone(date_default_timezone_get()));
    
    return 
$dt;
}

function 
localTimeToUtc($dateTimeStr$format 'Y-m-d H:i:s')
{
    
$dt DateTime::createFromFormat($format$dateTimeStr, new DateTimeZone(date_default_timezone_get()));
    
    if (
$dt === false) {
        throw new 
Exception('Could not convert time string');
    }
    
    
$dt->setTimezone(new DateTimeZone('UTC'));
    
    return 
$dt;    
}



#date_default_timezone_set('Australia/Perth');
date_default_timezone_set('Europe/Berlin');



// UTC to local time

$dateTimeFieldFromDb '2011-10-17 21:43:40';

$localDt utcToLocalTime($dateTimeFieldFromDb);

var_dump($localDt->format('Y-m-d H:i:s'));



// Local time to UTC

$utcDt localTimeToUtc(date('Y-m-d H:i:s'));

var_dump($utcDt->format('Y-m-d H:i:s'));


Der aktuelle Zeitpunkt kann gleich in UTC generiert werden:

- PHP: gmdate - Manual

Oder auch in (My)SQL:

- MySQL :: MySQL 5.6 Reference Manual :: 11.7 Date and Time Functions

Hände weg von NOW().



Das sieht auf den ersten Blick etwas umständlich aus und ich möchte nicht ausschließen, dass sich die Funktionen eleganter schreiben lassen. Aber ich halte es für den korrekten Weg im Umgang mit Zeitzonen.
Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus



Alle Zeitangaben in WEZ +2. Es ist jetzt 12:51 Uhr.