Récuperer le n° du mois en nb entier dans un champ date

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 : Récuperer le n° du mois en nb entier dans un champ date

par gandalf25 » 14 août 2006, 15:44

grand merci à tous pour ces réponses ... j'ai pris le temps de tout tester et j'ai finalement opté pour
$mois = array('', 'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet','Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'); 
						list($year, $month, $day) = explode("-", $date_recuperee);
						$numMois = sprintf("%d", $month); // conversion en entier 
						$date_recuperee = "$mois[$numMois] $year";
... les autres solutions sont utiles aussi. Beaucoup de forums ou de FAQ donnent l'équivalent de mon script initial en oubliant de transformer le numéro du mois en entier .... evidemment à partir d'octobre plus de problèmes :)

par thehawk » 14 août 2006, 14:29

oui bon d accod personnelement je prefere les timestamp c tout ...

par ouckileou » 14 août 2006, 14:17

je voulais juste qu il sache qu il y avait plusieur solutions c tout
Ah ben pas de problème, mais tu as quand même dis "c'est plus simple" ;)

par thehawk » 14 août 2006, 14:15

je voulais juste qu il sache qu il y avait plusieur solutions c tout

par ouckileou » 14 août 2006, 14:12

je devie legement pk tu utiliste un truc date en mysql alors que tu peux utilisser et c plus simple le timestamp...
Pas forcément, chaque type à ses particularités et fonctionne différement. Une date est plus facile à manipuler si on veut juste l'afficher par exemple, et il y a des fonctions de calcul.

gandalf25:
Pour récupérer un entier, tu peux faire ceci. Plutôt que de mettre une cellule vide en début de ton tableau de mois, fais le commencer à zéro. Tu devra s donc enlever 1 au numéro de mois récupéré, ce qui convertira la chaine en entier.
$mois = array('Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 
'Juillet','Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'); 

$numMois = "04";
echo $numMois;
echo '<br />';
echo $mois[$numMois-1];
Sinon, si tu veux faire démarrer un tableau à 1 et non 0, plutôt que de mettre une valeur vide, tu peux préciser l'indice de départ :
<?php
$mois = array(1 => 'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 
'Juillet','Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'); 

$numMois = "04";
$numMois = sprintf("%d", $numMois); // conversion en entier
echo $mois[$numMois];
?>
Regarde la doc sur la fonction sprintf() pour plus de détails

Edit : je maintiens que le choix entre un type DATE et TIMESTAMP n'a rien à voir avec le problème, c'ets suivant ce qu'on veut en faire. Une colonne TIMESTAMP sera par exemple automatiquement mise à jour lors d'une requête UPDATE.
De plus, pour récupérer une date au format "affichable" (jj/mm/aaa) il faudra bien manipuler le timestamp, donc des opérations en plus. Et la même manipulation pour obtenir le nom du mois en français, qui n'est pas disponible directement.

Je ne vois donc pas ce que ça apporte pour ce problème précis :)

par polo » 14 août 2006, 14:10

Bonjour,
Voici, quelques infos sur mktime() et timestamp qui te seront utiles je pense:

Lien1:
Clique ici

Lien 2 (timestamp comme conseillé par thehawk):
Clique ici
Clique ici

voila en espérant t'avoir été utile :D

par thehawk » 14 août 2006, 13:18

je devie legement pk tu utiliste un truc date en mysql alors que tu peux utilisser et c plus simple le timestamp...

Récuperer le n° du mois en nb entier dans un champ date

par gandalf25 » 14 août 2006, 13:15

Bonjour,
J'essaie de récuperer une date dans une base sql au format initial 2006-04-01 pour afficher au final "Avril 2006".
Mon script :
<?php
						include("connect/connect.php");
						$sql = "SELECT * FROM Catalogue WHERE xxxx LIKE 'xxx ";
						$query = mysql_query ($sql) or mysql_die("Aucun enregistrement");
						$result = mysql_fetch_array($query);
						$date_recuperee = $result[date_parution];
						$mois = array('', 'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 
'Juillet','Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'); 
						list($year, $month, $day) = explode("-", $date_recuperee);
						echo $date_recuperee = "$mois[$month] $year";
						mysql_close($dp);
						?>
le problème est que $month retourne 04 et donc $mois[$month] n'affiche rien (pas de msg erreur dans ce script ; l'année est bonne).

A quel moment, et surtout comment convertir le numéro du mois en entier (car si j'utilise $mois[4] cela fonctionne) ?

merci d'avance