Fonction affichage jour

Eléphanteau du PHP | 15 Messages

09 janv. 2008, 15:30

Bonjour,

J'ai une fonction dans mes pages qui permet d'afficher une date définie dans un calendrier. Par exemple, j'ai défini comme date dans ma base de donnée le 09/01/2008 et la fonction doit m'afficher Mercredi 9 janvier 2008.

Cette fonction marchait très bien avec les date de 2007, mais depuis le passage à 2008, la fonction affiche un jour de retard, dans ce cas-ci elle affiche Mardi 9 janvier, au lieu de mercredi.

Je ne sais cependant pas où se trouve l'erreur, quelqu'un pourrait-t-il m'aider, sachant que je n'ai pas envie que le problème soit inversé et que ce soit maintenant les jours de 2007 qui ne soient pas les bons. Voici la fonction, merci de m'aider svp


<?   
							
				function getday($jour, $mois, $annee){
					$anne=$anne2+200;
					if ($anne%4===0){
					//pour les années bisextiles, on est obligé de prévoir deux tableaux
					//si l'anée est bisextille
						$day_per_month=array(31,29,31,30,31,30,31,31,30,31,30,31);
					}else{
						//si elle ne l'est pas
						$day_per_month=array(31,28,31,30,31,30,31,31,30,31,30,31);
					}
					//Le nombre de jours de décalage entre les jours de la semaine en fonction du mois.
					$mois_nombre=array(0,3,3,6,1,4,6,2,5,0,3,5);
					return ($mois_nombre[$mois-1]+($anne-$anne%4)/4+$anne%7+1+$jour)%7;
				}
				function nom_jour($num){ 

					switch($num)
				  {
				  
					case '0': 
					$nom_jour= "Lundi";
					return $nom_jour;
					break;
					
					case '1': 
					$nom_jour= "Mardi"; 
					return $nom_jour;
					break;
					
					case '2': 
					$nom_jour= "Mercredi";
					return $nom_jour; 
					break;
					
					case '3': 
					$nom_jour= "Jeudi";
					return $nom_jour; 
					break;
					
					case '4': 
					$nom_jour= "Vendredi";
					return $nom_jour; 
					break;
					
					case '5': 
					$nom_jour= "Samedi";
					return $nom_jour; 
					break;
					
					case '6': 
					$nom_jour= "Dimanche";
					return $nom_jour; 
					break;
					
				  
				  }
				 }function nom_mois($num)
{
 switch($num)
  {
	
	
	
	case '1': 
	$mois= "Janvier"; 
	break;
	
	case '2': 

	$mois= "Fevrier"; 
	break;
	
	case '3': 
	$mois= "Mars"; 
	break;
	
	case '4': 
	$mois= "Avril"; 
	break;
	
	case '5': 
	$mois= "Mai"; 
	break;
	
	case '6': 
	$mois= "Juin"; 
	break;
	
	case '7': 
	$mois= "Juillet"; 
	break;
	
	case '8': 
	$mois= "Aout"; 
	break;
	
	case '9': 
	$mois= "Septembre"; 
	break;
	
	case '10': 
	$mois= "Octobre"; 
	break;
	
	case '11': 
	$mois= "Novembre"; 
	break;
	
	case '12': 
	$mois= "Décembre"; 
	break;
	
	
	echo $mois;
 
 
  }
  return $mois;
}
				
							{
								
								$match = $donnees3['id'] ;
								$jour = substr($donnees3['date'],8,2);
								$moi = substr($donnees3['date'],5,2);
								$annee = substr($donnees3['date'],0,4);									
								$nom_j = getday($jour, $moi, $annee) ;
								$moi = nom_mois($moi) ;
								$nom_j = nom_jour($nom_j) ;
								echo "<strong><font color=\"#CC6600\">$nom_j ".$jour." ".$moi." ".$annee." - ".$donnees3['heure'] ;
								?>

Mammouth du PHP | 1885 Messages

09 janv. 2008, 15:51

<?php
// $date est au format timestamp de Unix
function format_date($format, $date, $translation) {
    return strtr( date($format,$date), $translation);
}

// Exemples de traductions
$translation['Sunday'] = 'Dimanche';
$translation['Monday'] = 'Lundi';
$translation['Tuesday'] = 'Mardi';
$translation['Wednesday'] = 'Mercredi';
$translation['Thursday'] = 'Jeudi';
$translation['Friday'] = 'Vendredi';
$translation['Saturday'] = 'Samedi';

$translation['Sun'] = 'Dim';
$translation['Mon'] = 'Lun';
$translation['Tue'] = 'Mar';
$translation['Wed'] = 'Mer';
$translation['Thu'] = 'Jeu';
$translation['Fri'] = 'Ven';
$translation['Sat'] = 'Sam';

$translation['January'] = 'Janvier';
$translation['February'] = 'Fevrier';
$translation['March'] = 'Mars';
$translation['April'] = 'Avril';
$translation['May'] = 'Mai';
$translation['June'] = 'Juin';
$translation['July'] = 'Juillet';
$translation['August'] = 'Aout';
$translation['September'] = 'Septembre';
$translation['October'] = 'Octobre';
$translation['November'] = 'Novembre';
$translation['December'] = 'Decembre';

$translation['Jan'] = 'Jan';
$translation['Feb'] = 'Fev';
$translation['Mar'] = 'Mar';
$translation['Apr'] = 'Avr';
$translation['May'] = 'Mai';
$translation['Jun'] = 'Juin';
$translation['Jul'] = 'Juil';
$translation['Aug'] = 'Aou';
$translation['Sep'] = 'Sep';
$translation['Oct'] = 'Oct';
$translation['Nov'] = 'Nov';
$translation['Dec'] = 'Dec';

// Affichera "Mercredi 9 Janvier 2008"
echo format_date('l j F Y', strtotime('2008/01/09'), $translation)
?>
Autrement tu peux utiliser la fonction getdate() pour avoir un tableau d'informations sur une date donnée, ceci inclut le nom du jour.
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Eléphanteau du PHP | 15 Messages

09 janv. 2008, 15:54

Merci pour ta réponse rapide mais ça ne répond pas tout à fait à ma demande.

Tu affiches ici la date en fonction de la date du serveur, or moi je voudrais afficher "Mercredi 9 janvier 2008" car une variable dans la base de données comprend 09/01/08

Je voudrais garder mon code actuel et juste modifier l'erreur, mais je ne la trouve pas :s

ViPHP
ViPHP | 4039 Messages

09 janv. 2008, 15:55

Ta fonction suppose que le 1er janvier est un lundi (c'est ce que je crois discerner en tout cas..)

C'était le cas en 2007, mais ce ne le sera plus avant 2018.

edit: non, ça n'a pas l'air d'être ça.. mais d'ou vient $anne2 ?
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphanteau du PHP | 15 Messages

09 janv. 2008, 16:13

Pour tout t'avouer je ne sais pas ce que représente le $anne2

Ca doit être un problème d'année bisextile ou quoi car ça marchait très bien avant 2008 :?

Mammouth du PHP | 1885 Messages

09 janv. 2008, 16:18

Est-ce que ton champ de date dans ta base de données est DATE ou DATETIME?
Si c'est VARCHAR, je te recommende fortement de migrer le tout vers DATE afin de bénéficier des fonctions date de MySQL et faciliter la conversion du format. Le format que tu utilises est propre aux Français et PHP peut ne pas le comprendre lorsqu'il la parse.
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

09 janv. 2008, 16:20

Modération :
fcjuventus, le multipostage est interdit sur le forum.

Merci de prendre le temps de lire les règlements.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 15 Messages

09 janv. 2008, 16:21

Il est en format texte, mais j'ai peur de tout faire bugguer si je modifie, je dois avouer que je ne suis pas un expert en Php :?

ViPHP
ViPHP | 4039 Messages

09 janv. 2008, 16:43

si c'est un script que tu as trouvé, essaye de retourner la ou tu l'as pris, peut-être qu'un correctif à été réalisé.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphanteau du PHP | 15 Messages

09 janv. 2008, 22:04

Est-ce que ton champ de date dans ta base de données est DATE ou DATETIME?
Si c'est VARCHAR, je te recommende fortement de migrer le tout vers DATE afin de bénéficier des fonctions date de MySQL et faciliter la conversion du format. Le format que tu utilises est propre aux Français et PHP peut ne pas le comprendre lorsqu'il la parse.
Quelqu'un pourrait-il m'aider à adapter mon script actuel et à l'adapter en variable DATE pour simplifier les choses?

Je vous en serais vraiment très reconnaissant

Vous pouvez me contacter par mp ...