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

Eléphanteau du PHP | 10 Messages

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

Mammouth du PHP | 991 Messages

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...
DevOps, Symfony4, Hoa

Eléphant du PHP | 216 Messages

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
Le PHP c'est bien, surtout quand ça marche ;) mon site
Hébergement gratuit et sans pub => Image

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

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 :)
Modifié en dernier par ouckileou le 14 août 2006, 14:17, modifié 1 fois.

Mammouth du PHP | 991 Messages

14 août 2006, 14:15

je voulais juste qu il sache qu il y avait plusieur solutions c tout
DevOps, Symfony4, Hoa

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

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

Mammouth du PHP | 991 Messages

14 août 2006, 14:29

oui bon d accod personnelement je prefere les timestamp c tout ...
DevOps, Symfony4, Hoa

Eléphanteau du PHP | 10 Messages

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