format de date - php et base de données

sand
Invité n'ayant pas de compte PHPfrance

30 mai 2007, 11:16

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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

30 mai 2007, 12:09

Je pense que l'erreur provient de l'ouverture de ton tag php, tu as un espace entre trop entre le "<?" et "php" :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

sand
Invité n'ayant pas de compte PHPfrance

30 mai 2007, 14:05

oui cé exact.. mais apparemment cé pas ça... ;-(

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

30 mai 2007, 14:18

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) :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

sand
Invité n'ayant pas de compte PHPfrance

30 mai 2007, 14:29

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

Petit nouveau ! | 7 Messages

30 mai 2007, 14:30

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 ?

jed
Eléphant du PHP | 218 Messages

30 mai 2007, 14:37

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).

sand
Invité n'ayant pas de compte PHPfrance

30 mai 2007, 14:38

bjr,

euh a vrai dire je débute ...

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

jed
Eléphant du PHP | 218 Messages

30 mai 2007, 14:40

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.
Modifié en dernier par jed le 30 mai 2007, 14:41, modifié 1 fois.

sand
Invité n'ayant pas de compte PHPfrance

30 mai 2007, 14:41

bon je vais tenter si c'est plus simple..

jed
Eléphant du PHP | 218 Messages

30 mai 2007, 14:44

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);

sand
Invité n'ayant pas de compte PHPfrance

30 mai 2007, 14:50

ok
Merci je vais tenter

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

30 mai 2007, 15:05

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)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

sand
Invité n'ayant pas de compte PHPfrance

30 mai 2007, 16:15

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

jed
Eléphant du PHP | 218 Messages

30 mai 2007, 16:17

Mouais... Manière bien tordue pour moi d'avoir la date, mais si tu dis que ça fonctionne... :D