Page 1 sur 1

format de date - php et base de données

Posté : 30 mai 2007, 11:16
par sand
Bonjour,

J'ai un petit souci concernant le format de ma date. La date se trouve dans une table Mysql. Donc je lui demande de récupérer la date et de la convertir soit en format français pour afficher la date soit en format américain pour l'entrée dans la base de données



Dans la page principale, je souhaite afficher un tableau comportant la date, le poste, une description du poste, etc...

Donc dans mon tableau, j'ai utilisé la fonction include pour l'affichage de la date :
<?php do { ?> 
<tr> 
<td height="92"><?php include 'date1.php'?></td> 
<td><?php echo $row_Recordset1['Poste']; ?></td> 
... 
Dans la page "date1.php" voici le code :
<? php 
// Transformer date de aaaa-mm-jj à jj-mm-aaaa 
if (ereg ("([0-9]{1,2}).([0-9]{1,2}).([0-9]{4})",$row_Recordset1['date'], $regs)) 
{ 
echo $row_Recordset1['date']= "$regs[3]$regs[2]$regs[1]"; 
} 

// TRansformer date de jj-mm-aaaa en aaaa-mm-jj 
if (ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})",$ligne["date"], $regs)) 
{ 
echo "$regs[3].$regs[2].$regs[1]"; 
} 
?> 
Voici le message d'erreur qu'il m'affiche sur le navigateur :

Parse error: parse error in c:\program files\easyphp1-8\www\bo\date1.php on line 11

la line 11 la voici :
if (ereg ("([0-9]{1,2}).([0-9]{1,2}).([0-9]{4})",$row_Recordset1['date'], $regs))


Je n'arrive pas à trouver mon erreur. Es ce quelkun peut m'aider ?
Merci

Posté : 30 mai 2007, 12:09
par Ryle
Je pense que l'erreur provient de l'ouverture de ton tag php, tu as un espace entre trop entre le "<?" et "php" :)

Posté : 30 mai 2007, 14:05
par sand
oui cé exact.. mais apparemment cé pas ça... ;-(

Posté : 30 mai 2007, 14:18
par Ryle
Toujours le même message d'erreur ? Essaye de mettre sur deux lignes l'affichage et l'affectation :
$row_Recordset1['date'] = "$regs[3]$regs[2]$regs[1]";
echo $row_Recordset1['date'];
Sinon postes tout ton fichier 'date1.php' (ou du moins les 20 premières lignes)

Attention sinon, tes commentaires ne correspondent pas au traitement effectué (les formats ne sont pas bien associés) :)

Posté : 30 mai 2007, 14:29
par sand
ben je pense que j'ai du me tromper de ce coté la ... au niveau de la fonction ereg.. on me l'a indiqué
en me relisant, j'ai 'impression que c'est le contraire en fait

Posté : 30 mai 2007, 14:30
par MrPink
Hello,

Peut-être me trompe-je ? Mais,

Si tu envois la date (quelque soit le format) contenue dans ta variable dans un timestamp unix

Code : Tout sélectionner

mktime($ma_var);
et tu affiches et/ou tu stocke par la function date()

Code : Tout sélectionner

[..]=date(mktime($ma_var));
Cela ne fonctionne pas ?

Posté : 30 mai 2007, 14:37
par jed
Ben si, je vois vraiment pas l'intérêt de se compliquer la vie avec des regex! Tu insères la date avec mktime() et tu la récupère avec date('d-m-Y', $timestamp).

date

Posté : 30 mai 2007, 14:38
par sand
bjr,

euh a vrai dire je débute ...

si tu pouvais etre un peu plus explicite stp ...
Merci

Posté : 30 mai 2007, 14:40
par jed
http://www.manuelphp.com/php/function.mktime.php

http://www.manuelphp.com/php/function.date.php

Avec ça tu vas réduire ton usine à gaz à deux lignes de code.

Posté : 30 mai 2007, 14:41
par sand
bon je vais tenter si c'est plus simple..

Posté : 30 mai 2007, 14:44
par jed
Il suffit d'insérer dans ta bdd le timestamp unix avec la fonction mktime() (du genre $date=mktime(); 'INSERT INTO dates values ("'.$date.'")'); ) et tu la récupère comme ceci: $date = mysql_query('SELECT date FROM dates'); echo date ('d-m-Y', $date);

Posté : 30 mai 2007, 14:50
par sand
ok
Merci je vais tenter

Posté : 30 mai 2007, 15:05
par Ryle
Tu peux également le faire directement dans ta requête sql et ainsi ne pas te prendre la tête en php ensuite :)

Un topic de la FAQ à lire absolument : Quelques petites manipulations avec les dates (PHP/MySQL)

date

Posté : 30 mai 2007, 16:15
par sand
Merci à tous pour votre aide, j'ai enfin trouver une solution.... pas forcemment ce qui faut fiare mais ca marche en tout cas


Sur la page listant les offres "offres.php" voici le code
<td bordercolor="#999999" class="texte"><?php include 'date1.php'?></td>
<td bordercolor="#999999" class="texte"><?php echo $row_offre['Poste']; ?></td>
...



Sur la page date1.php :

<?php
$dateSQL = $row_offre['date'];
list($annee, $mois, $jour) = explode("-", $dateSQL);
$row_offre['date'] = $jour.'/'.$mois.'/'.$annee;
echo $row_offre['date'];
?>

Ici il me transforme la date au format français

et lorsque l'admin est sur le formulaire d'ajout une offre, j'ai inséré dans le champ date, la date au format Iso, ainsi il l'affiche au format français dans la page offre.php et l'affiche au format Iso dans la base de données.

Voila

Posté : 30 mai 2007, 16:17
par jed
Mouais... Manière bien tordue pour moi d'avoir la date, mais si tu dis que ça fonctionne... :D