IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Warning: date_default_timezone_set() + php


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 252
    Points : 85
    Points
    85
    Par défaut Warning: date_default_timezone_set() + php
    Bonjour a tous,

    J'ai un code qui utilise la fonction CONVERT_TZ().
    J'ai le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    <?php
    include ('includes/header.html');
    date_default_timezone_set();
    if (isset($_SESSION['user_tz'])) {
    	$first="CONVERT_TZ(p.posted_on, 'UTC', '{$_SESSION['user_tz']}')";
    	$last="CONVERT_TZ(p.posted_on, 'UTC', '{$_SESSION['user_tz']}')";
    } else {
    	$first='p.posted_on';
    	$last='p.posted_on';
    }
    $q= "SELECT t.thread_id, t.subject, username, COUNT(post_id)-1 AS responses, MAX(DATE_FORMAT($last, '%e-%b-%y %l:%i %p')) AS last, MIN(DATE_FORMAT($first, '%e-%b-%y %l:%i %p')) AS first FROM threads AS t INNER JOIN posts AS p USING (thread_id) INNER JOIN users AS u ON t.user_id=u.user_id WHERE t.lang_id={$_SESSION['lid']} GROUP BY (p.thread_id) ORDER BY last DESC";
    $r=mysqli_query($dbc, $q);
    if(mysqli_num_rows($r) > 0) {
    	echo '<table width="100%" border = "2" callspacing="2" cellspading="2" align="center">
    	<tr>
    	<td align="left" width="50%"><em>' . $words['subject'] . '</em>: </td>
    	<td align="left" width="20%"><em>' . $words['posted_by'] . '</em>: </td>
    	<td align="left" width="10%"><em>' . $words['posted_on'] . '</em>: </td>
    	<td align="left" width="10%"><em>' . $words['replies'] . '</em>: </td>
    	<td align="left" width="10%"><em>' . $words['latest_reply'] . '</em>: </td>
    	</tr>';
     
    	while ($row=mysqli_fetch_array($r, MYSQLI_ASSOC)) {
    		echo '<tr>
    		<td align="left"><a href="read.php?tid=' . $row['thread_id'] . '">' . $row['subject'] . '</a></td>
    		<td align="left" >' . $row['username'] . ' </td>
    		<td align="left" >' . $row['first'] . '</td>
    		<td align="left" >' . $row['responses'] . '</td>
    		<td align="left" >' . $row['last'] . '</td>
    		</tr>';
    	}
    	echo '</table>';
    } else {
    	echo '<p> There are currently no messages in this forum. </p>';
    }
    include ('includes/footer.html');
    ?>
    Dans mon navigateur. j'obtiens un avertissement:

    Warning: date_default_timezone_set() expects exactly 1 parameter, 0 given in D:\wamp\www\PHP-TESTS\forum.php on line 3
    Si je remplace directement, $first et $last par p.posted_on dans la requete suivante:

    $q= "SELECT t.thread_id, t.subject, username, COUNT(post_id)-1 AS responses, MAX(DATE_FORMAT($last, '%e-%b-%y %l:%i %p')) AS last, MIN(DATE_FORMAT($first, '%e-%b-%y %l:%i %p')) AS first FROM threads AS t INNER JOIN posts AS p USING (thread_id) INNER JOIN users AS u ON t.user_id=u.user_id WHERE t.lang_id={$_SESSION['lid']} GROUP BY (p.thread_id) ORDER BY last DESC";
    j'arrive a obtenir les dates. Mais moi je souhaite convertir les dates avant de les afficher.
    Comment puis je faire pour enlever cet avertissement?

    Merci d'avance.

    Best,
    Billy

  2. #2
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    tu confonds entre PHP et MySQL, "date_default_timezone_set" configure les dates PHP et la fonction "CONVERT_TZ" travaille avec MySQL

    montre nous un exemple de ce que tu veux obtenir
    GNAP !

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 252
    Points : 85
    Points
    85
    Par défaut
    Bonjour,

    Ce que je voudrais formater toutes les dates et heures en les convertissant dans le fuseau horaire de l'utilisateur si celui ci est connecte. ie formater p.posted_on (heure et date d'un post) dans le fuseau horaire d'un utilisateur connecte. Si l'utilisateur n'est pas connecte, il vera l'heure exacte a laquelle un message a ete poste sans formatage prealable. c'est pourquoi j'ai invoque la fonction CONVERT_TZ() de MySQL.

    Au depart je n'avais pas ajouter le date_default_timezone_set(). Mais les instructions ne renvoient pas la date et l'heure formatees.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $first="CONVERT_TZ(p.posted_on, 'UTC', '{$_SESSION['user_tz']}')";
    	$last="CONVERT_TZ(p.posted_on, 'UTC', '{$_SESSION['user_tz']}')";

    J'utilise $first et $last dans ma requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $q= "SELECT t.thread_id, t.subject, username, COUNT(post_id)-1 AS responses, MAX(DATE_FORMAT($last, '%e-%b-%y %l:%i %p')) AS last, MIN(DATE_FORMAT($first, '%e-%b-%y %l:%i %p')) AS first FROM threads AS t INNER JOIN posts AS p USING (thread_id) INNER JOIN users AS u ON t.user_id=u.user_id WHERE t.lang_id={$_SESSION['lid']} GROUP BY (p.thread_id) ORDER BY last DESC";
    J'ai remarque que si je ne fais pas le formatage ci dessus, tout fonctionne tres bien (ie j'utilise directement p.posted_on dans la requete). Mais des que je le fais, les dates et heures ne sont plus renvoyees par la requete.

    Merci

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 252
    Points : 85
    Points
    85
    Par défaut
    Un exemple de ce que je voudrais obtenir:
    J'ai un utilisateur appele SILJE qui a un "time zone" = 'EUROPE/Oslo'
    Cet utilisateur poste un message le 2007-10-29 a 04:15:52 UTC.
    Mais je voudrais que quand SILJE se connecte et consulte le message qu'il a poste il voit la date et l'heure de son post avec son time zone qui est 'EUROPE/Oslo' ie au lieu de 2007-10-29 a 04:15:52 UTC, ce sera 2007-10-29 a 12:15:52.

    merci de votre aide

Discussions similaires

  1. PHP Warning: include
    Par TangoZoulou dans le forum Langage
    Réponses: 1
    Dernier message: 30/03/2007, 11h20
  2. [ODBC] PHP/Acess pb warning
    Par Trunks dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 21/11/2006, 15h01
  3. Réponses: 17
    Dernier message: 02/07/2006, 17h58
  4. Réponses: 1
    Dernier message: 09/06/2006, 17h06
  5. Desactiver les warning en php ?
    Par linkowich dans le forum Langage
    Réponses: 3
    Dernier message: 02/02/2006, 10h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo