changer le format de la date = casse tete

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : changer le format de la date = casse tete

par Ryle » 12 avr. 2006, 19:39

Y a pas de quoi :)

Par contre si tu ne fais pas de calcul ou de controle sur la date, tu n'es pas obligé de passer par le strtotime et tu peux simplifier ton code :
while($data = mysql_fetch_assoc($result)) { 

  if ($data['nom'] != $save_nom) // rupture 
    echo '<strong>','<br><br><br><br><br> .:'.$data['nom'] ,'</strong><br />'; // code de rupture (nouvelle entete) 

  $tab_mois = array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Décembre"); // tableau des mois fr 
   
  $dateTab=explode('/', $data['date']); // sépare les valeurs de la date 
  // Rappel : annee = $dateTab[0]; mois = $dateTab[1]; jour = $dateTab[2]; 
   
  echo '<br>'.$dateTab[2].' '. $tab_mois[$dateTab[1]-1] .' '.$dateTab[0]. ' - '.$data['lieu']; // code d'affichage des informations 
  $save_nom = $data['nom']; // sauver le nom 
} 
Ce qui doit normalent revenir au même, mais est quand même plus léger à exécuter et à lire ou maintenir ;)

par Lesfabuleux » 12 avr. 2006, 19:00

Merci beaucoup !
J'ai reussi à m'en sortir grâce à ton code et en le bidouillant un peu, ça a l'air de marcher...

Tu m'a vraiment sortit du fond du gouffre là !

Encore merci !

Code : Tout sélectionner

<?php // on se connecte à MySQL $db = mysql_connect('xxxxx, 'xxxxx', 'xxxxxx'); // on seléctionne la base mysql_select_db('vomusicdates',$db); $select = 'SELECT nom,date,lieu FROM concerts WHERE date >= NOW() ORDER BY nom,date'; $result = mysql_query($select,$db) or die ('Erreur : '.mysql_error() ); $save_nom = ''; // initialiser a rien pour forcer une rupture au 1er passage de la boucle while($data = mysql_fetch_assoc($result)) { if ($data['nom'] != $save_nom) // rupture echo '<strong>','<br><br><br><br><br> .:'.$data['nom'] ,'</strong><br />'; // code de rupture (nouvelle entete) $time = strtotime($data['date']); $date = date('d F Y', $time); $date1 = date('d', $time); $date2 = date('Y', $time); $tab_mois = array( /* Mois de l'année en entier */ 'January' => 'Janvier', 'February' => 'Février', 'March' => 'Mars', 'April' => 'Avril', 'May' => 'Mai', 'June' => 'Juin', 'July' => 'Juillet', 'August' => 'Août', 'September' => 'Septembre', 'October' => 'Octobre', 'November' => 'Novembre', 'December' => 'Décembre', ); $format = "F"; $mois = date($format, $time); echo '<br>'.$date1.' '. $tab_mois[$mois] .' '.$date2. ' - '.$data['lieu']; // code d'affichage des informations $save_nom = $data['nom']; // sauver le nom } if ( ! mysql_num_rows($result)) echo '<br><br><br><br><br><br><br><br><br><br><br><center>Il n\'y a pas de concert prévu pour l\'instant </center>'; mysql_free_result($result); mysql_close(); ?>

par Ryle » 12 avr. 2006, 18:02

Que dirais tu d'une fonction basique du genre :
<?
// $date est au format aaaa/mm/jj
function formateDate($date) {
	
  $listeMois = array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Décembre"); // tableau des mois fr
  
  $dateTab=explode('/', $date); // sépare les valeurs de la date
  
  $annee = $dateTab[0]; // le premier element est l'année
  $mois = $dateTab[1]; // le deuxieme est le mois
  $jour = $dateTab[2]; // le dernier est le jour

  // retourne la date formatée :
  return $jour." ".$listeMois[$mois-1]." ".$annee; // ($mois-1 pour avoir le bon index dans la liste des mois de 0 à 11)
}

echo formateDate("2006/02/31"); // affiche 31 Février 2006 
?>
Il ne te reste alors plus qu'à passer les valeurs que tu récupères en base en argument de cette fonction et à les afficher où tu le souhaite :

trop, mais trop, mais trop marre.

par lesfabuleux » 12 avr. 2006, 17:45

Merci beaucoup pour ton aide et ton lien.
J'en ai vraiment trop marre, je te jure, je deviens barjo devant mon pc, image, ça fait deux jours que je ne fais QUE ça, et ca ne marche JAMAIS !

Je suis allé voir le site en lien, et j'ai reussi a l'intégré, mais ca me donne le mois actuel, et non le mois résultat de ma base.

Je vous en prie, estc-e que quel'un pourrait vraiment m'aider, j'en peux plus de chercher ce truc. J'en peux plus.

Merci

LF

par Shenryu » 12 avr. 2006, 17:21

Bon une méthode comme une autre.

Tu récupère le chiffre du mois par la méthode substr() et tu vas chercher le mois dans un tableau (1 -> Janvier, 2 -> Février etc...). Cette même méthode te permettra de remettre de l'ordre dans la chaîne de caractère que tu voudras afficher.

Ensuite tu fais un str_replace("/", " ", $var). Je crois que c'est ça la syntaxe. Tu remplaces ainsi le caractère / par un espace dans la variable $var.

Va voir à cette adresse pour une méthode plus propre : http://www.laltruiste.com/document.php? ... ormat.html

changer le format de la date = casse tete

par Lesfabuleux » 12 avr. 2006, 17:01

Bonjour à tous !
Je me casse la tete depuis deux jours sur un truc qui semble tout bête. J'ai suivi de nombreux tutoriaux et tenté pleins de façon de faire et ça marche jamais, et là, franchement j'en peux plus... en plus, ça me bloque pour avancer le reste...

Voilà, j'ai des dates dans ma base de donnée, comme ça : 2006/12/31

Et je voudrais que après ma requete, il me les classe en écrivant :
31 Décembre 2006

Je suis arrivé a avoir 31 December 2006, mais je n'arrive pas à passer le mois en francais.

J'ai tenté vraiment pleins de truc :
-setLocale(LC_TIME, "fr_FR", "FRA");
-select date_format(madate,'%d-%m-%Y') as madate
- faire un array avec les mois en français...

Rien ne marche et ça m'enerve trop

Voici mon code actuel :

Code : Tout sélectionner

$select = 'SELECT nom,date,lieu FROM concerts WHERE date >= NOW() ORDER BY nom,date'; $result = mysql_query($select,$db) or die ('Erreur : '.mysql_error() ); $save_nom = ''; // initialiser a rien pour forcer une rupture au 1er passage de la boucle while($data = mysql_fetch_assoc($result)) { if ($data['nom'] != $save_nom) // rupture echo '<strong>','<br><br><br><br><br>'.$data['nom'] ,'</strong><br />'; // code de rupture (nouvelle entete) $time = strtotime($data['date']); $date = date('d F Y', $time); echo '<br>'.$date.' - '.$data['lieu']; // code d'affichage des informations $save_nom = $data['nom']; // sauver le nom } if ( ! mysql_num_rows($result)) echo 'Il n\'y a pas de concert prévu pour l\'instant'; mysql_free_result($result); mysql_close(); ?>
Si vous aviez une idée pour me débloquer, j'en ai trop marre de perdre du temps sur ça !

Merci