8739 sujets

Développement web côté serveur, CMS

Décidément, PhP n'est pas simple !
Je voulais extraire le jour de la semaine d'une date donnée.
Voici le code :

// On vérifie ...
	echo "On vérifie  ";
	if(!empty($_POST)){
	var_dump($_POST);
	echo "   ça marche   ";
	}
// Et jusque là ça marche 	

	$datinv = $jour.' '.$mois.' '.$annee;
	$periode = strtoupper($periode);
	$datecle = $annee.$mois.$jour;
	$frdate = $mois.','.$jour.','.'20'.$annee;
	echo $datecle.' ';
	echo $datinv.' ';
	echo $frdate;

	$lesjours = array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi");

	// extraction des jour, mois, an de la date
	list($wjour, $wmois, $wannee) = explode(',', $frdate);

	// calcul du timestamp
	$timestamp = mktime (0, 0, 0, $wmois, $wjour, $wannee);

	// affichage du jour de la semaine
	echo $lesjours[date("w",$timestamp)];

	$joursem = $lesjours[date("w",$timestamp)]; 
/code]
Malheureusement, le résultat n'est pas à la hauteur de mes attentes !

On vérifie array(6) { ["jour"]=> string(1) "9" ["mois"]=> string(1) "1" ["annee"]=> string(2) "24" ["heure"]=> string(0) "" ["motif"]=> string(12) "Test du mois" ["periode"]=> string(0) "" } ça marche 240109 09 01 24 01,09,2024Dimanche
Contrôle
240109
09 01 24
Dimanche
Le code vient des exemples d'utilisation de 'date' en PhP, trouvé dans le manuel PhP sur le net dont voici l'original : [code=php] <?php $frdate="02/02/2009"; $joursem = array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"); // extraction des jour, mois, an de la date list($jour, $mois, $annee) = explode('/', $frdate); // calcul du timestamp $timestamp = mktime (0, 0, 0, $mois, $jour, $annee); // affichage du jour de la semaine echo $joursem[date("w",$timestamp)]; ?>
.
Mais dans mon application, j'obtiens régulièrement dimanche, et parfois, 1 fois sur 10, le jour exact !
Qu'en est-il ? Je ne suis pas Herr Doktor en PhP !
Merci de vous pencher sur ce problème
Cordialement
H.
Bonjour,
Attention à l'ordre,
dans l'exemple qui fonctionne: $mois, $jour, $annee

Et dans ton test, apparemment, c'est du jour, mois année :

09 01 24 = 1er septembre 2024 = dimanche
01 09 24 = 9 janvier 2024 = mardi
Bonjour,

tu peux essayer avec la fonction date() de php.

par exemple :


$weekDays = ['Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi', 'Dimanche'];
$today = $weekDays[date('N') - 1];
echo "Nous sommes $today";


Gillesr
Merci loicbcn,
Effectivement, dès que je mets la date $frdate dans l'ordre jj mm aaaa, ça marche parfaitement bien. J'ai été abusé par le manuel PHP qui impose de mettre la date dans mktime sous forme mm jj aaaa!
Merci à tous de votre attention et de votre aide !
Et encore BONNE ANNEE !
H.