8795 sujets

Développement web côté serveur, CMS

Pages :
Bonjour,
Je voudrais savoir comment on peut faire pour changer le format d'une date en php vu que dans ma base de donnée la date est mise par défaut en format anglais et moi je voudrais que le format soit au format français avec 12-01-1985 par exemple et pas inversé comme les anglais le font!!
Merci d'avance
Bonjour,

Pourrais-tu préciser ta demande ? C'est la manière dont les dates sont stockées en base que tu veux modifier (si c'est bien cela l'idée n'est pas bonne car le format yyyy-mm-dd favorise le tri ; je ne suis d'ailleurs pas sûr qu'un autre format soit disponible ...). Si il s'agit d'un affichage sur un document web, tu peux soit utiliser (en php) substr pour remettre un peu d'ordre entre jour, mois et années soit (si tu souhaites avoir plus d'informations comme le nom du jour par exemple) créer le timestamp correspondant et le traiter (par contre là encore tu seras contraint de faire de la traduction de l'anglais vers le français) ...

Bonne contination.
Romain
Modifié par yodaswii (26 Jun 2007 - 10:38)
Une solution rapide est de faire un explode() sur ta date obtenue et de représenter comme tu veux les données.
a écrit :
Une solution rapide est de faire un explode() sur ta date obtenue et de représenter comme tu veux les données.


En effet, solution comment dire "quelque peu plus élégante" que ce que j'ai évoqué (qui serait à classer dans la catégorie des méthodes de bourrin) Smiley cligne .
Et bien c'est simple. L'instruction explode permet de créer un tableau d'éléments (grâce à un séparateur) à partir d'une chaîne.

Dans ton cas :

$elemdate = explode("-",$date);
// 0 : année ; 1 : mois ; 2 : jour
echo $elemdate[2].'/'.$elemdate[1] .'/'.$elemdate[0];
Oui c'est cela que je veux mais par contre ou ej le met dans mon code??
Voici mon code :
<?php require_once('Connections/portail_as.php'); ?>
<?php
$maxRows_rslisteactu = 3;
$pageNum_rslisteactu = 0;
if (isset($_GET['pageNum_rslisteactu'])) {
  $pageNum_rslisteactu = $_GET['pageNum_rslisteactu'];
}
$startRow_rslisteactu = $pageNum_rslisteactu * $maxRows_rslisteactu;

mysql_select_db($database_portail_as, $portail_as);
$query_rslisteactu = "SELECT * FROM actu ORDER BY Id_Actu DESC";
$query_limit_rslisteactu = sprintf("%s LIMIT %d, %d", $query_rslisteactu, $startRow_rslisteactu, $maxRows_rslisteactu);
$rslisteactu = mysql_query($query_limit_rslisteactu, $portail_as) or die(mysql_error());
$row_rslisteactu = mysql_fetch_assoc($rslisteactu);

if (isset($_GET['totalRows_rslisteactu'])) {
  $totalRows_rslisteactu = $_GET['totalRows_rslisteactu'];
} else {
  $all_rslisteactu = mysql_query($query_rslisteactu);
  $totalRows_rslisteactu = mysql_num_rows($all_rslisteactu);
}
$totalPages_rslisteactu = ceil($totalRows_rslisteactu/$maxRows_rslisteactu)-1;

$maxRows_rslisteuser = 3;
$pageNum_rslisteuser = 0;
if (isset($_GET['pageNum_rslisteuser'])) {
  $pageNum_rslisteuser = $_GET['pageNum_rslisteuser'];
}
$startRow_rslisteuser = $pageNum_rslisteuser * $maxRows_rslisteuser;

mysql_select_db($database_portail_as, $portail_as);
$query_rslisteuser = "SELECT * FROM `user`";
$query_limit_rslisteuser = sprintf("%s LIMIT %d, %d", $query_rslisteuser, $startRow_rslisteuser, $maxRows_rslisteuser);
$rslisteuser = mysql_query($query_limit_rslisteuser, $portail_as) or die(mysql_error());
$row_rslisteuser = mysql_fetch_assoc($rslisteuser);

if (isset($_GET['totalRows_rslisteuser'])) {
  $totalRows_rslisteuser = $_GET['totalRows_rslisteuser'];
} else {
  $all_rslisteuser = mysql_query($query_rslisteuser);
  $totalRows_rslisteuser = mysql_num_rows($all_rslisteuser);
}
$totalPages_rslisteuser = ceil($totalRows_rslisteuser/$maxRows_rslisteuser)-1;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
<link href="Feuille%20Css.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="actu">
  <h1>ACTUALITES</h1>
<?php do { ?>
    <h2><?php echo $row_rslisteactu['Titre_Actu']; ?></h2>
	<table width="1013" border="0">
      <tr>
        <td width="80"><h3>Fait par : </h3></td>
        <td width="300"><h4><?php echo $row_rslisteuser['Nom_User']; ?></h4></td>
        <td width="30"><h3>Le : </h3></td>
        <td width="80"><h4><?php echo $row_rslisteactu['Date_Actu']; ?></h4></td>
      </tr>
    </table>
	<p><?php echo $row_rslisteactu['Contenu_Actu']; ?></p>
<table width="800" border="0">
  <tr>
    <td width="211"><h5><a href="Indexcss.htm"><?php echo $row_rslisteactu['Lien_Actu']; ?></a></h5></td>
    <td width="579"><h3><?php echo $row_rslisteactu['Adresse_Photo_Actu']; ?></h3></td>
  </tr>
</table>
	<hr />
<?php } while ($row_rslisteactu = mysql_fetch_assoc($rslisteactu)); ?>
</div>
</body>
</html>
<?php
mysql_free_result($rslisteactu);

mysql_free_result($rslisteuser);
?>

Je ne vois pas trop ou le placé ce bout de code... Smiley confused
Merci d'avance yodaswii Smiley smile
On la refait ... en fait, par rapport à ton code il faut exécuter l'explode sur ta date d'actualité soit :

$elemdate = explode("-",$row_rslisteactu['Date_Actu']);

Puis à l'endroit où tu souhaites effectuer l'affichage (à la place de echo $row_rslisteactu['Date_Actu']) il suffit de faire :

// 0 : année ; 1 : mois ; 2 : jour
echo $elemdate[2].'/'.$elemdate[1] .'/'.$elemdate[0];
Sauf qu'on se retrouve précisément dans la configuration que Laurent préconisait d'éviter.
a écrit :
Dans tous les cas, utiliser en front un format de date explicite, et non un format ambigu type 12-01-1985


a écrit :
Sauf qu'on se retrouve précisément dans la configuration que Laurent préconisait d'éviter.


Là c'est moi qui comprend pas Smiley confused ?
12-01-1985 <> 12/01/1985

Problème de format ou de concept. En quoi le format dd/mm/yyyy est-il ambigu ?

<edit>Selon le besoin, certes ... mais quel intérêt ? Par exemple, si il s'agissait de dates de naissance quel intérêt de savoir que ce soit un dimanche ou autres ?</edit>
Modifié par yodaswii (26 Jun 2007 - 12:00)
Bon,

- le format de stockage et de traitement des dates côté serveur est normalisé, on n'y touche effectivement pas
- ce format a toutes d'avantages techniques, mais il est aussi tout sauf intuitif pour le visiteur du site
- donc on le transcrit en publication
- la technique de transcription est une broutille
- mais tout cela ne sert à rien si c'est pour réécrire des dates normalisées d'un format imbittable dans un autre format tout aussi imbittable, type conversion de MM-DD-YYYY en DD-MM-YYYY

Question: dans un Web par définition internationalisé, 12-01-1985 affiché dans la fenêtre d'un navigateur, c'est:
- le 12 janvier 2005 (convention européenne la plus commune) ?
- le 1er décembre 2005 (convention US) ?

(Et encore, on a de la chance, l'année est exprimée avec 4 chiffres, ce qui évacue le format japonais).

Faire des dates sans ambiguité, c'est écrire par exemple 12 janvier 2005, tout bêtement.

(On laisse de côté la question des séparateurs, à l'usage ingérable et culturellement surréaliste tant elle est imprévisible)

petits effets, grandes causes...
Modifié par Laurent Denis (26 Jun 2007 - 12:06)
Merci sa marche bien mais j'ai envi d'utiliser la méthode suivante : string date ( string format [, int timestamp] ) car c'est celle là que je suis censé utiliser pour mon stage... Smiley decu
Merci d'avance
a écrit :
Faire des dates sans ambiguité, c'est écrire par exemple 12 janvier 2005, tout bêtement.


En effet, je comprend le raisonnement ... C'est indéniablement mieux.

Mais dans le cas du choix d'un rendu au format 12-01-1985, la question posée n'est-elle pas résolue selon la langue utilisée dans le document ?
grefer2luxe a écrit :
Merci sa marche bien mais j'ai envi d'utiliser la méthode suivante : string date ( string format [, int timestamp] ) car c'est celle là que je suis censé utiliser pour mon stage... Smiley decu
Merci d'avance
Tu aurais peux être pu commencer par cela Smiley cligne .

Si $date1 est la date dans ta BDD et qu'elle est sous la forme "AAAA-MM-JJ" voici le code :
<?php
$date1 = "2007-09-12"; // pour l'exemple
$dat = explode("-", $date1);
$timestamp1 = mktime(0, 0, 0, $dat[1], $dat[2], $dat[0]);
$date = date('d/m/Y', $timestamp1);
echo $date;
?>


A+
Oui merci mais moi j'ai fait comme ceci :
[code]$jour=array("dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi","dimanche");
$mois=array("décembre","Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","décembre")
echo $jours[date("w")]." ".date("j")." ".$mois[date("n")]." ".date("y");

Et sa ma l'ere pas mal n'es ce pas??
++
Plop à tous,

pour formater une date directement dans la requête MySQL, utilisez DATE_FORMAT

pour formater la date en PHP combinez date() et strtotime() et virez moi ces "explode" que je ne saurais voir Smiley smile

++
Pages :