modifier date et heure du serveur ?

Eléphanteau du PHP | 14 Messages

24 févr. 2015, 16:50

Bonjour ,
j'utilse un code en php4 qui permet lors d'un enregistrement , d'enregistrer l'heure locale (heure de paris) .
par exemple
modifié le xx/xx/xx à 12h30 (heure de paris) .

je voudrais utiliser le meme code mais pour des utilisateurs etrangers (australie) . seulement je veux que l heure enregistrée corresponde à l heure de la bas (et meme la date)

dois je configurer mon serveur ? ou le code ?
je suis hebergé chez ovh en mutualisé
peut etre modifier la zone dns ?

quelle est la solution la plus simple ?

merci

Mammouth du PHP | 688 Messages

24 févr. 2015, 17:38

le plus simple, c'est d'enregistrer l'heure à l'heure de ton serveur, et de changer à l'affichage d'une heure en php pour le bon fuseau horaire.

Eléphanteau du PHP | 14 Messages

24 févr. 2015, 19:30

ok
si je veux mettre l heure de mon serveur à l heure de l'australie
c est possible ? je suis chez ovh en mutualisé.

Mammouth du PHP | 571 Messages

25 févr. 2015, 15:01

comme ça été dit précédemment tu n'as pas besoin d'enregistrer dans la BD l'heure en fonction du pays.Tu pars du principe que toutes heures enregistrées ont pour référence le fuseau horaire Europe/Paris(généralement spécifié dans le fichier php.ini du serveur apache) et c'est au moment d'afficher que tu dois localiser ton utilisateur pour pouvoir afficher l'heure en fonction de sa localisation.

si ton serveur est configuré en heure de Paris c-a-d que dans le fichier de configuration php.ini tu as ceci:
date.timezone = "Europe/Paris"
Pour afficher l'heure de Paris tu n'as plus besoin de spécifier dans le code php le fuseau horaire.Par ailleurs si veux afficher l'heure en fonction d'un pays(autre que Europe/Paris,Europe/Berlin,...) il faudra alors spécifier les fuseaux horaires de chaque pays.
$ny = new DateTime('now',new DateTimeZone('America/New_York'));

echo "heure de ny=", $ny->format("d-m-Y H:i:s"),'<br>'; //25-02-2015 07:58:16

$paris = new DateTime('now');

echo "heure de paris=", $paris->format("d-m-Y H:i:s"),'<br>';//25-02-2015 13:58:16


$sydney=new DateTime('now',new DateTimeZone('Australia/Sydney'));
echo "heure de sydney=", $sydney->format("d-m-Y H:i:s"),'<br>';//25-02-2015 23:58:16
sachant que l'Australie a plusieurs fuseaux horaires.liste des fuseaux horaires

Eléphanteau du PHP | 14 Messages

26 févr. 2015, 11:23

merci yann , je regarde et te tiens au courant .

Eléphanteau du PHP | 14 Messages

26 févr. 2015, 15:20

j ai essayé mais rien ne se passe sur ma page
meme pas de message d erreur
je voudrais mettre au jour et l heure de la nouvelle caledonie
maintenant nous sommes le 27/02

Code : Tout sélectionner

<? if (isset($_POST['detruire']) && ($_POST['detruire']==1)) { session_destroy(); $requete2="UPDATE groupe SET connecte=0 WHERE login_g='".$_SESSION['username']."'"; $res2=mysql_query($requete2); echo "<script language='Javascript'>location.href='index.php'</script>"; } else { echo "<form name='frmSession' method='post'><input type='hidden' name='detruire' value=".(isset($_POST['detruire'])?'1':'0')."></form>"; echo "<i>Connecté sous ".$_SESSION['username']."<br>"; echo "Votre statut est ".$_SESSION['fonction']."<br></i>"; echo "<a href='#' onClick='session()'>Se déconnecter</a>"; } // 25/02/15 - XLE - Correction noumea $dateTimeZoneNoumea = new DateTimeZone("Pacific/Noumea"); $dateTimeNoumea = new DateTime("now", $dateTimeZoneNoumea); ?> </div> </TD> </TR> <TBODY> <TR> <TD id=fd_bleu_clair2 width=832 height=190> <TABLE width=830 height="153" border=0 cellPadding=0 cellSpacing=0> <TBODY> <TR> <TD valign="top"> <div align="center" class='Style6'> <p align='center' class='Style7'>COMPTES RENDUS EXPLOITATION</p> <table border="0"> <tr> <td> <? require_once 'conf/connect.php'; if ( (isset($_POST['tech'])) || (isset($_POST['crew'])) || (isset($_POST['esc'])) || (isset($_POST['inc'])) || (isset($_POST['div'])) || (isset($_POST['meteo'])) ) { $requete2="SELECT nom_g FROM groupe WHERE login_g='".$_SESSION['username']."'"; $res2=mysql_query($requete2); $nomCDQ=mysql_fetch_array($res2); if ((isset($_POST['num2']) && ($_POST['num2']!='')) && (isset($_POST['popup']) && ($_POST['popup']==1))) { // 25/02/15 - XLE - Correction noumea $requete3= "INSERT INTO compterendu(date_cr,heure_cr,vacation_cr,cdq_cr,technique_cr,crew_cr,dama_cr,airs_cr,meteo_cr,arpt_cr,acmi_cr,prog_cr,escale_cr,retard_cr,surete_cr,divers_cr,volService_cr,evenement_cr,reduc_cr,volRC_cr,volAnnule_cr,resume_cr) VALUES('".$dateTimeNoumea->format('Y/m/d')."','".$dateTimeNoumea->format('H:i:s')."','".$_POST['vac']."','".$nomCDQ[0]."','".addslashes($_POST['tech'])."','".addslashes($_POST['crew'])."','".addslashes($_POST['dama'])."','".addslashes($_POST['airs'])."','".addslashes($_POST['meteo'])."','".addslashes($_POST['arpt'])."','".addslashes($_POST['acmi'])."','".addslashes($_POST['prog'])."','".addslashes($_POST['escale'])."','".addslashes($_POST['retard'])."','".addslashes($_POST['surete'])."','".addslashes($_POST['divers'])."','".addslashes($_POST['volService'])."','".addslashes($_POST['evenement'])."','".addslashes($_POST['reduc'])."','".addslashes($_POST['volRC'])."','".addslashes($_POST['volAnnule'])."','".addslashes($_POST['resume'])."')"; $res3 = mysql_query($requete3); //selection de la derniere insertion dans la base + ouverture Pop up echo "<script language='JavaScript'>popupEnvoi(\"".(mysql_insert_id())."\")</script>"; } else { // 25/02/15 - XLE - Correction noumea $requete3= "INSERT INTO compterendu(date_cr,heure_cr,vacation_cr,cdq_cr,technique_cr,crew_cr,dama_cr,airs_cr,meteo_cr,arpt_cr,acmi_cr,prog_cr,escale_cr,retard_cr,surete_cr,divers_cr,volService_cr,evenement_cr,reduc_cr,volRC_cr,volAnnule_cr,resume_cr) VALUES('".$dateTimeNoumea >format('Y/m/d')."','".$dateTimeNoumea->format('H:i:s')."','".$_POST['vac']."','".$nomCDQ[0]."','".addslashes($_POST['tech'])."','".addslashes($_POST['crew'])."','".addslashes($_POST['dama'])."','".addslashes($_POST['airs'])."','".addslashes($_POST['meteo'])."','".addslashes($_POST['arpt'])."','".addslashes($_POST['acmi'])."','".addslashes($_POST['prog'])."','".addslashes($_POST['escale'])."','".addslashes($_POST['retard'])."','".addslashes($_POST['surete'])."','".addslashes($_POST['divers'])."','".addslashes($_POST['volService'])."','".addslashes($_POST['evenement'])."','".addslashes($_POST['reduc'])."','".addslashes($_POST['volRC'])."','".addslashes($_POST['volAnnule'])."','".addslashes($_POST['resume'])."')"; $res3 = mysql_query($requete3); } } ?> <form name="frmRecherche" method="post" action="compteRendu.php"> <input type="hidden" name="numCR" value="<? echo (isset($_POST['numCR'])?$_POST['numCR']:''); ?>"> <!--ex 00075--> <input type="hidden" name="vacation" value="<? echo (isset($_POST['vacation'])?$_POST['vacation']:''); ?>"> <!--<font size="2"><b>Liste des comptes rendus : </b></font> --> <center><select name="liste" onChange="valider()" ></center> <option value="-1" selected>------------------------------------------------------------- Choisissez un compte rendu ---------------------------------------------------------</option> <!--Insertion des champs de la liste déroulante--> <? // TODO XLE - Deprecated a supprimer $dateJp1=date("Y/m/d",mktime(0,0,0,substr(gmdate("Y/m/d"),5,2),substr(gmdate("Y/m/d"),8,2)+1,substr(gmdate("Y/m/d"),0,4))); //date J+1 (en fait + 2 car il faut compter la journée) $dateJm1=date("Y/m/d",mktime(0,0,0,substr(gmdate("Y/m/d"),5,2),substr(gmdate("Y/m/d"),8,2)-1,substr(gmdate("Y/m/d"),0,4))); //date J-1 $requete1="SELECT num_cr FROM compterendu GROUP BY date_cr,vacation_cr HAVING count(*) = 1"; $res1=mysql_query($requete1); $requete2="SELECT date_cr,vacation_cr FROM compterendu GROUP BY date_cr,vacation_cr HAVING count(*) > 1"; $res2=mysql_query($requete2); //parcours les doublons $i=0; $final=array(); while ($resultat2=mysql_fetch_array($res2)) { $date=$resultat2[0]; $vacation=$resultat2[1]; //on repasse une requete pour selectionner le bon enregistrement $requete3 = "SELECT num_cr FROM compterendu WHERE date_cr='".$date."' AND vacation_cr='".$vacation."' ORDER BY heure_cr DESC LIMIT 0,1"; $res3=mysql_query($requete3); $resultat3=mysql_fetch_array($res3); $final[$i]=$resultat3[0]; $i++; } //ensuite je parcours les resultats non doublons pour les ajouter a la fin while($resultat1=mysql_fetch_array($res1)) { $final[$i]=$resultat1[0]; $i++; } //il nous reste a verifier que ceux afficher correspondent a l'intervalle de date $rep=""; foreach ($final as $val) $rep=$rep.",".$val; //liste $rep=substr($rep,1,strlen($rep)); $requete4="SELECT * FROM compterendu WHERE date_cr='". $dateTimeNoumea ->format('Y/m/d')."' AND num_cr IN (".$rep.") ORDER BY date_cr,vacation_cr"; $res4=mysql_query($requete4); if (isset($_POST['numCR'])) { $requete2 = "SELECT * FROM compterendu WHERE num_cr='".$_POST['numCR']."'"; $res2=mysql_query($requete2); $result=mysql_fetch_array($res2); } $i=0; while ($row = mysql_fetch_row($res4)) { $date=substr($row[1],8,2)."/".substr($row[1],5,2)."/".substr($row[1],0,4); $rep=$row[4]." n°".$row[0]." // ".$row[3]." // ".$date." // modif : ".$row[2]." UTC // CDQ : ".$row[5].""; if (($_POST['liste']==$rep) || (mysql_insert_id()==$row[0])) { echo "<option value='".$rep."' selected>".$rep."</option>"; if ($_POST['num2']!='') echo "<option><script language='Javascript'>valider()</script></option>"; } else echo "<option value='".$rep."'>".$rep."</option>"; $i++; if ($i==2) echo "<option value='-1'>-----------------------------------------------------------------------------------------------------------------------------------------------------------------</option>"; } //une fois que la liste est remplie, si aucune ligne n'a été crée (cad que l'on est en dbt de journée / vacation matin) //on crée les 2 compte rendu vierges de la journée $nb=mysql_num_rows($res4); if ($nb=='') { //reprendre le bon ident du CDQ dans la base $requete2="SELECT nom_g FROM groupe WHERE login_g='".$_SESSION['username']."'"; $res2=mysql_query($requete2); $nomCDQ=mysql_fetch_array($res2); // 25/02/15 - XLE - Correction noumea $requete5="INSERT INTO compterendu(date_cr,heure_cr,vacation_cr,cdq_cr) VALUES('"$dateTimeNoumea ->format('Y/m/d')."','01:01','matin','".$nomCDQ[0]."')"; $res5=mysql_query($requete5); $requete6="INSERT INTO compterendu(date_cr,heure_cr,vacation_cr,cdq_cr) VALUES('".$dateTimeNoumea ->format('Y/m/d')."','01:01','soir','".$nomCDQ[0]."')"; $res6=mysql_query($requete6); echo "<option><script language='Javascript'>window.location.reload()</script></option>"; } ?> </select><br><br><? //echo $requete4; ?> </form> <? //reviens à faire un else de la 1ere boucle mais impossible a gerer avec la mise en page if (isset($_POST['liste']) && ($_POST['liste']!=-1)) { ?>