begin process at 2010 02 10 10:53:05
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Date / Heure

 > CALENDRIER DE SAISIE PHP ET JAVASCRIPT

CALENDRIER DE SAISIE PHP ET JAVASCRIPT


 Information sur la source

Note :
7,73 / 10 - par 15 personnes
7,73 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Date / Heure Classé sous :calendrier, date, mysql, javascript, saisie Niveau :Initié Date de création :07/12/2005 Date de mise à jour :10/06/2006 21:45:39 Vu / téléchargé :58 336 / 8 897

Auteur : djroulo

Ecrire un message privé
Site perso
Commentaire sur cette source (39)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
C'est un calendrier que j'ai tiré de phpMyAdmin et que j'utilise dans mes formulaires.
Pour l'utiliser, vous devez :

- nommer votre formulaire, ex : <form name="form_test">
- "nommer" et "IDer" vos champs texte, ex : <input type="text" id="id_ddn" name="ddn" />
- utiliser la fonction implémentée "create_calendar" pour créer les 3 bouttons permettants de remplir le champs texte.
Regardez l'exemple dans index.php pour mieux comprendre.

Ces fonctions sont très facilement réutilisables avec les images et les fonctions JavaScript et PHP que je vous ai donné en source.

2 fichier pour tester : test.html et test.php4

Source

  • <?php
  • require("req_buttons.php4");
  • /**
  • * calendar.php4
  • *
  • * @version 2.0
  • * @copyright 2006
  • */
  • $t_calendar_months_full=array(1=>"Janvier","F&eacute;vrier","Mars","Avril","Mai","Juin","Juillet","Ao&ucirc;t","Septembre","Octobre","Novembre","D&eacute;cembre");
  • $t_calendar_days_abreviate=array(1=>"Lu","Ma","Me","Je","Ve","Sa","Di");
  • $mois_chiffre=array(1=>"01","02","03","04","05","06","07","08","09","10","11","12");
  • $mois_full=$t_calendar_months_full;
  • //$mois_abrege=array(1=>"Jan","F&eacute;v","Mar","Avr","Mai","Jun","Jul","Ao&ucirc;","Sep","Oct","Nov","D&eacute;c");
  • //$semaine_full=array(1=>"Lundi","Mardi","Mercredi","Jeudi","Venredi","Samedi","Dimanche");
  • $semaine_abrege=$t_calendar_days_abreviate;
  • // Variables
  • // mois
  • if (isset($_POST["mois"])) {$mois_selectionne=$_POST["mois"];}
  • else{$mois_selectionne=date("n");}
  • // années
  • if (isset($_POST["annee"])) {$annee_selectionne=$_POST["annee"];}
  • else{$annee_selectionne=date("Y");}
  • ?>
  • <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  • <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
  • <head>
  • <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  • <meta http-equiv="Content-Language" content="fr" />
  • <meta name="Distribution" content="Private" />
  • <meta name="Robots" content="None" />
  • <meta name="Rating" content="General" />
  • <link rel="stylesheet" type="text/css" href="css/style.css" />
  • <title>Calendrier</title>
  • <script language="JavaScript" type="text/javascript" src="js/dates.js"></script>
  • <body>
  • <table class="calendar">
  • <tr>
  • <th width="50%">
  • <table border="0" align="center">
  • <tr>
  • <?php if ($mois_selectionne==1) { ?>
  • <td style="background-color: transparent;text-align: right"><form action="<?php echo $_SERVER["PHP_SELF"];?>" method="post"><input type="hidden" name="mois" value="12" /><input type="hidden" name="annee" value="<?php echo $annee_selectionne-1;?>" /><button type="submit" name="bt_month_less" title="-" class="im">&laquo;</button></form></td>
  • <?php }else{ ?>
  • <td style="background-color: transparent;text-align: right"><form action="<?php echo $_SERVER["PHP_SELF"];?>" method="post"><input type="hidden" name="mois" value="<?php echo ($mois_selectionne=="1") ? $mois_selectionne : $mois_selectionne-1;?>" /><input type="hidden" name="annee" value="<?php echo $annee_selectionne;?>" /><button type="submit" name="bt_month_less" title="-" class="im">&laquo;</button></form></td>
  • <?php } ?>
  • <td style="background-color: transparent;">
  • <form name="form_mois" action="<?php echo $_SERVER["PHP_SELF"];?>" method="post"><input type="hidden" name="annee" value="<?php echo $annee_selectionne;?>" />
  • <select name="mois" onchange="form_mois.submit()">
  • <?php
  • $i=0;
  • foreach ($mois_full as $value){
  • $i++;
  • ?>
  • <option value="<?php echo $i;?>"<?php echo ($mois_selectionne==$i) ? (" selected=\"selected\""):("");?>><?php echo $value;?></option>
  • <?php
  • }
  • ?>
  • </select>
  • </form>
  • </td>
  • <?php if ($mois_selectionne==12) {/* permettre d'augmenter d'une année vers année n+1 et mois==1 */ ?>
  • <td style="background-color: transparent;text-align: left"><form action="<?php echo $_SERVER["PHP_SELF"];?>" method="post"><input type="hidden" name="mois" value="1" /><input type="hidden" name="annee" value="<?php echo $annee_selectionne+1;?>" /><button type="submit" name="bt_month_plus" title="+" class="im">&raquo;</button></form></td>
  • <?php }else{ ?>
  • <td style="background-color: transparent;text-align: left"><form action="<?php echo $_SERVER["PHP_SELF"];?>" method="post"><input type="hidden" name="mois" value="<?php echo ($mois_selectionne==12) ? $mois_selectionne : $mois_selectionne+1;?>" /><input type="hidden" name="annee" value="<?php echo $annee_selectionne;?>" /><button type="submit" name="bt_month_plus" title="+" class="im">&raquo;</button></form></td>
  • <?php } ?>
  • </tr>
  • </table>
  • </th>
  • <th width="50%">
  • <table border="0" align="center">
  • <tr>
  • <td style="background-color: transparent;text-align: right"><form action="<?php echo $_SERVER["PHP_SELF"];?>" method="post"><input type="hidden" name="mois" value="<?php echo $mois_selectionne;?>" /><input type="hidden" name="annee" value="<?php echo ($annee_selectionne>1920) ? $annee_selectionne-1 : $annee_selectionne;?>" /><button type="submit" name="bt_year_less" title="-" class="im">&laquo;</button></form></td>
  • <td style="background-color: transparent;">
  • <form name="form_annee" action="<?php echo $_SERVER["PHP_SELF"];?>" method="post">
  • <input type="hidden" name="mois" value="<?php echo $mois_selectionne;?>" />
  • <select name="annee" onchange="form_annee.submit()">
  • <?php
  • $annee_depart = 1920;
  • $annee_max = date("Y")+1;
  • $j=0;
  • for($j=$annee_max;$j>=$annee_depart;$j--){
  • ?>
  • <option value="<?php echo $j;?>"<?php echo ($annee_selectionne==$j) ? (" selected=\"selected\""):("");?>><?php echo $j;?></option>
  • <?php
  • }
  • ?>
  • </select>
  • </form>
  • </td>
  • <td style="background-color: transparent;text-align: left"><form action="<?php echo $_SERVER["PHP_SELF"];?>" method="post"><input type="hidden" name="mois" value="<?php echo $mois_selectionne;?>" /><input type="hidden" name="annee" value="<?php echo ($annee_selectionne<(date("Y")+1)) ? $annee_selectionne+1 : $annee_selectionne;?>" /><button type="submit" name="bt_year_plus" title="+" class="im">&raquo;</button></form></td>
  • </tr>
  • </table>
  • </th>
  • </tr>
  • </table>
  • <table class="calendar" align="center">
  • <tr>
  • <?php
  • $nombre_jours_mois = cal_days_in_month(CAL_GREGORIAN,$mois_selectionne,$annee_selectionne);
  • $premier_jour_mois = jddayofweek(cal_to_jd(CAL_GREGORIAN,$mois_selectionne,1,$annee_selectionne),0);
  • //echo $premier_jour_mois;
  • $premier_jour_mois = ($premier_jour_mois==0)? 7 : ($premier_jour_mois);
  • foreach ($semaine_abrege as $value){
  • ?>
  • <th><?php echo $value; ?></th>
  • <?php
  • }
  • ?>
  • </tr>
  • <?php
  • $num_col=0;
  • $bg=0;
  • for($k=-$premier_jour_mois+2;$k<=$nombre_jours_mois;$k++){
  • if ($num_col==0) {
  • $tdbg=(($bg%2)==0)?"two":"one";?>
  • <tr>
  • <?php
  • }
  • if ($mois_selectionne<10) {$mois_aff=$mois_chiffre[$mois_selectionne];}
  • else{$mois_aff=$mois_selectionne;}
  • if ($k<10) {$jour_aff="0".$k;}
  • else{$jour_aff=$k;}
  • if (($k>=$premier_jour_mois) AND ($k<=$nombre_jours_mois)) {
  • echo ($k==date("j"))?("\t\t<td class=\"selected\"><a href=\"javascript:returnDate('$jour_aff/$mois_aff/$annee_selectionne')\">$jour_aff</a></td>\n"):("\t\t<td class=\"$tdbg\"><a href=\"javascript:returnDate('$jour_aff/$mois_aff/$annee_selectionne')\">$jour_aff</a></td>\n");
  • }
  • else{
  • if ($k<$premier_jour_mois AND $k>0) {
  • echo "\t\t<td class=\"$tdbg\"><a href=\"javascript:returnDate('$jour_aff/$mois_aff/$annee_selectionne')\">$jour_aff</a></td>\n";
  • }
  • else{
  • echo "\t\t<td class=\"$tdbg\">&nbsp;</td>\n";
  • }
  • }
  • if ($num_col==6) {echo "\t</tr>\n\t\t";}
  • $num_col=($num_col+1)%7;
  • $bg++;
  • }
  • ?>
  • <tr>
  • <td colspan="7"><?php buttons("close");?></td>
  • </tr>
  • </table>
  • <br />
  • </body>
  • </html>
<?php
require("req_buttons.php4");
/**
 * calendar.php4
 *
 * @version 2.0
 * @copyright 2006
 */
$t_calendar_months_full=array(1=>"Janvier","F&eacute;vrier","Mars","Avril","Mai","Juin","Juillet","Ao&ucirc;t","Septembre","Octobre","Novembre","D&eacute;cembre");
$t_calendar_days_abreviate=array(1=>"Lu","Ma","Me","Je","Ve","Sa","Di");
$mois_chiffre=array(1=>"01","02","03","04","05","06","07","08","09","10","11","12");
$mois_full=$t_calendar_months_full;
//$mois_abrege=array(1=>"Jan","F&eacute;v","Mar","Avr","Mai","Jun","Jul","Ao&ucirc;","Sep","Oct","Nov","D&eacute;c");
//$semaine_full=array(1=>"Lundi","Mardi","Mercredi","Jeudi","Venredi","Samedi","Dimanche");
$semaine_abrege=$t_calendar_days_abreviate;

// Variables
// mois
if (isset($_POST["mois"])) {$mois_selectionne=$_POST["mois"];}
else{$mois_selectionne=date("n");}
// années
if (isset($_POST["annee"])) {$annee_selectionne=$_POST["annee"];}
else{$annee_selectionne=date("Y");}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="fr" />
<meta name="Distribution" content="Private" />
<meta name="Robots" content="None" />
<meta name="Rating" content="General" />
<link rel="stylesheet" type="text/css" href="css/style.css" />
<title>Calendrier</title>
<script language="JavaScript" type="text/javascript" src="js/dates.js"></script>
<body>
<table class="calendar">
	<tr>
		<th width="50%">
			<table border="0" align="center">
				<tr>
					<?php if ($mois_selectionne==1) { ?>
					<td style="background-color: transparent;text-align: right"><form action="<?php echo $_SERVER["PHP_SELF"];?>" method="post"><input type="hidden" name="mois" value="12" /><input type="hidden" name="annee" value="<?php echo $annee_selectionne-1;?>" /><button type="submit" name="bt_month_less" title="-" class="im">&laquo;</button></form></td>
					<?php }else{ ?>
					<td style="background-color: transparent;text-align: right"><form action="<?php echo $_SERVER["PHP_SELF"];?>" method="post"><input type="hidden" name="mois" value="<?php echo ($mois_selectionne=="1") ? $mois_selectionne : $mois_selectionne-1;?>" /><input type="hidden" name="annee" value="<?php echo $annee_selectionne;?>" /><button type="submit" name="bt_month_less" title="-" class="im">&laquo;</button></form></td>
					<?php }	?>
					<td style="background-color: transparent;">
						<form name="form_mois" action="<?php echo $_SERVER["PHP_SELF"];?>" method="post"><input type="hidden" name="annee" value="<?php echo $annee_selectionne;?>" />
							<select name="mois" onchange="form_mois.submit()">
<?php
$i=0;
foreach ($mois_full as $value){
$i++;
?>
								<option value="<?php echo $i;?>"<?php echo ($mois_selectionne==$i) ? (" selected=\"selected\""):("");?>><?php echo $value;?></option>
<?php
}
?>
							</select>
						</form>
					</td>
					<?php if ($mois_selectionne==12) {/* permettre d'augmenter d'une année vers année n+1 et mois==1 */ ?>
					<td style="background-color: transparent;text-align: left"><form action="<?php echo $_SERVER["PHP_SELF"];?>" method="post"><input type="hidden" name="mois" value="1" /><input type="hidden" name="annee" value="<?php echo $annee_selectionne+1;?>" /><button type="submit" name="bt_month_plus" title="+" class="im">&raquo;</button></form></td>
					<?php }else{ ?>
					<td style="background-color: transparent;text-align: left"><form action="<?php echo $_SERVER["PHP_SELF"];?>" method="post"><input type="hidden" name="mois" value="<?php echo ($mois_selectionne==12) ? $mois_selectionne : $mois_selectionne+1;?>" /><input type="hidden" name="annee" value="<?php echo $annee_selectionne;?>" /><button type="submit" name="bt_month_plus" title="+" class="im">&raquo;</button></form></td>
					<?php } ?>
				</tr>
			</table>
		</th>
		<th width="50%">
			<table border="0" align="center">
				<tr>
					<td style="background-color: transparent;text-align: right"><form action="<?php echo $_SERVER["PHP_SELF"];?>" method="post"><input type="hidden" name="mois" value="<?php echo $mois_selectionne;?>" /><input type="hidden" name="annee" value="<?php echo ($annee_selectionne>1920) ? $annee_selectionne-1 : $annee_selectionne;?>" /><button type="submit" name="bt_year_less" title="-" class="im">&laquo;</button></form></td>
					<td style="background-color: transparent;">
						<form name="form_annee" action="<?php echo $_SERVER["PHP_SELF"];?>" method="post">
							<input type="hidden" name="mois" value="<?php echo $mois_selectionne;?>" />
							<select name="annee" onchange="form_annee.submit()">
<?php
$annee_depart = 1920;
$annee_max = date("Y")+1;
$j=0;
for($j=$annee_max;$j>=$annee_depart;$j--){
?>
								<option value="<?php echo $j;?>"<?php echo ($annee_selectionne==$j) ? (" selected=\"selected\""):("");?>><?php echo $j;?></option>
<?php
}
?>
							</select>
						</form>
					</td>
					<td style="background-color: transparent;text-align: left"><form action="<?php echo $_SERVER["PHP_SELF"];?>" method="post"><input type="hidden" name="mois" value="<?php echo $mois_selectionne;?>" /><input type="hidden" name="annee" value="<?php echo ($annee_selectionne<(date("Y")+1)) ? $annee_selectionne+1 : $annee_selectionne;?>" /><button type="submit" name="bt_year_plus" title="+" class="im">&raquo;</button></form></td>
				</tr>
			</table>
		</th>
	</tr>
</table>
<table class="calendar" align="center">
	<tr>
<?php
$nombre_jours_mois = cal_days_in_month(CAL_GREGORIAN,$mois_selectionne,$annee_selectionne);
$premier_jour_mois = jddayofweek(cal_to_jd(CAL_GREGORIAN,$mois_selectionne,1,$annee_selectionne),0);
//echo $premier_jour_mois;
$premier_jour_mois = ($premier_jour_mois==0)? 7 : ($premier_jour_mois);

foreach ($semaine_abrege as $value){
?>
		<th><?php echo $value; ?></th>
<?php
}
?>
	</tr>
<?php
$num_col=0;
$bg=0;

for($k=-$premier_jour_mois+2;$k<=$nombre_jours_mois;$k++){
	if ($num_col==0) {
		$tdbg=(($bg%2)==0)?"two":"one";?>
	<tr>
<?php
	}

	if ($mois_selectionne<10) {$mois_aff=$mois_chiffre[$mois_selectionne];}
	else{$mois_aff=$mois_selectionne;}
	if ($k<10) {$jour_aff="0".$k;}
	else{$jour_aff=$k;}

	if (($k>=$premier_jour_mois) AND ($k<=$nombre_jours_mois)) {
		echo ($k==date("j"))?("\t\t<td class=\"selected\"><a href=\"javascript:returnDate('$jour_aff/$mois_aff/$annee_selectionne')\">$jour_aff</a></td>\n"):("\t\t<td class=\"$tdbg\"><a href=\"javascript:returnDate('$jour_aff/$mois_aff/$annee_selectionne')\">$jour_aff</a></td>\n");
	}
	else{
		if ($k<$premier_jour_mois AND $k>0) {
		    echo "\t\t<td class=\"$tdbg\"><a href=\"javascript:returnDate('$jour_aff/$mois_aff/$annee_selectionne')\">$jour_aff</a></td>\n";
		}
		else{
			echo "\t\t<td class=\"$tdbg\">&nbsp;</td>\n";
		}
	}

	if ($num_col==6) {echo "\t</tr>\n\t\t";}

	$num_col=($num_col+1)%7;
	$bg++;
}
?>
	<tr>
		<td colspan="7"><?php buttons("close");?></td>
	</tr>
</table>
<br />
</body>
</html>

 Conclusion

Fonctionne avec IE et FireFox
Inspiré de phpMyAdmin

Permet d'inscrire une date depuis un calendrier au format :
JJ-MM-AAA
ou si vous préférez
DD-MM-YYYY

Utilise JavaScript et CSS pour la mise en forme.
D'autres fonctions sont disponibles dans "req_calendrier" pour pouvoir avec la date de la fin du mois par exemple.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

10 juin 2006 21:45:39 :
Cette mise à jour permet d'ajouter quelques foncitons à la librairie des dates. Elle permet aussi d'écrire les dates au format le plus reconnu par les utilisateurs : dd/mm/aaaa, bref ça fait longtemps que je le promettais, voici enfin un script PHP qui servira à tout le monde je pense :-) J'ai ajouté pour ceux que ça intéresse une classe PHP4 qui permet de manipuler des formulaires (création facilitée). Cette classe utilise aussi une classe DataAccess (dite DAO) qui reprend les fonctions de base de MySQL... à voir.

 Sources du même auteur

Source avec Zip Source avec une capture GÉNÉRATION DE CLASSES D'ACCÈS AUX DONNÉES À PARTIR DES TABLE...
GÉNÉRATION DE FORMULAIRES XHTML
CLASSE OBJET DAO COUCHE D'ACCÈS À MYSQL DATA ACCESS OBJECT

 Sources de la même categorie

Source avec Zip Source avec une capture CALENDRIER + AGENDA TRÈS SIMPLE (GERER LES JOURS FÉRIÉS ET L... par mondherclubiste
Source avec Zip Source avec une capture CALENDRIER DES RÉSERVATIONS EN PHP par mathieubond
Source avec Zip GÉNÉRATEUR DE DATE DANS TOUTES LES LANGUES DU MONDE EN (PHP)... par abdelaziz_info
CALCULER LA PHASE DE LA LUNE - MOON PHASE par CristianCCDB
Source avec Zip Source avec une capture UN CALENDRIER SOUS LA FORME D'UN TABLEAU par d54

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture CALENDRIER + AGENDA TRÈS SIMPLE (GERER LES JOURS FÉRIÉS ET L... par mondherclubiste
Source avec Zip Source avec une capture CALENDRIER par pichpoich
CALCUL SIMPLE DU NOMBRE DE JOURS OUVRÉS ENTRE DEUX DATES (JO... par Astemius
Source avec Zip Source avec une capture CALENDRIER DE RÉSERVATION DYNAMIQUE REVUE ET AMÉLIORÉ par laryflashkod
Source avec Zip UN PETIT CALENDRIER SYMPA PHP/JAVASCRIPT/MYSQL par lamine11

Commentaires et avis

Commentaire de coucou747 le 07/12/2005 19:01:29

salut
ton code est bien documenté, et a l'air sympas, quelques petites remarques : dans req_calendrier.php, tu ne ferme pas ta balise php à la fin.
tu utilises des " comme des ' alors que les ' sont beaucoups plus rapides (sans changer ton code, juste en remplaçant tes " par des ', ton code serait optimisé... franchement, comme t'as pas beaucoups de modifications, ça vaut le coups...)
t'as quelques lignes de codes inutiles : dans req_bouttons.php
default:
break;
Bon, à part ça, ça a l'air pas mal
Bonne continuation

Commentaire de J_G le 13/12/2005 19:22:52

Marche pas...

L'idée est bonne pourtant ! Et ça fesait un moment que j'avais envie d'un calendrier... mais ce ne sera vraissemblablement pas celui-ci

1. Pour ceux qui utilise linux est qui n'ont pas compilé PHP avec --enable-calendar (et qui n'ont pas envi de ce le taper aujourd'hui)
Voici un petit patch rapide à mettre en haut de calendrier.php :
-----------------------------
if( !defined('CAL_GREGORIAN') ) define('CAL_GREGORIAN', 0);
if( !function_exists('cal_days_in_month') ) {
function cal_days_in_month($no, $month, $year) {
return date('t', mktime(0, 0, 0, 12, $month, $year));
}
}
if( !function_exists('jddayofweek') ) {
function jddayofweek($day, $no) {
return date('w'); // You can also specify a date
}
}
if( !function_exists('cal_to_jd') ) {
function cal_to_jd($no, $month, $day, $year) {
return date('z'); // You can also specify a date
}
}
-----------------------------------


2. Ensuite, le défilements des jours ne fonctionne pas avec mon FF (quand on change de mois ou d'année)... C'est un proiblème de JS, et là j'ai cracké...


3. Pourquoi ça ?
$mois_chiffre=array(1=>"01","02","03","04","05","06","07","08","09","10","11","12");
$mois_full=array(1=>"Janvier","F&eacute;vrier","Mars","Avril","Mai","Juin","Juillet","Ao&ucirc;t","Septembre","Octobre","Novembre","D&eacute;cembre");
//$mois_abrege=array(1=>"Jan","F&eacute;v","Mar","Avr","Mai","Jun","Jul","Ao&ucirc;","Sep","Oct","Nov","D&eacute;c");
//$semaine_full=array(1=>"Lundi","Mardi","Mercredi","Jeudi","Venredi","Samedi","Dimanche");
$semaine_abrege=array(1=>"Lu","Ma","Me","Je","Ve","Sa","Di");

Alors que ça :
set_local(LC_ALL, 'fr');
et strftime( X , mktime(,,,,));


4. Pourquoi les fonctions de calendrier qui sont destinées à convertir les calendriere entre eux ? Regarde mon patch... la fonction date, et strftime font très bien se que tu demandes à cal_...


5. Bien commenté !?!@#'\)('m,à"tr'"mojzkg)àj'"p ???

Des choses à revoir selon moi...
A+

Commentaire de djroulo le 14/12/2005 09:18:14

Le calendrier gregorien date de 1582 et c'est celui que nous utilisons aujourd'hui.
Le calendrier julien me permet de calculer le numéro du jour de la semaine 1 soit le premier jour du mois que je calcule à la volée, par exemple : jour 1 du mois 4 est un Mercredi.

1 - La plupart des compilations de PHP incluent par défaut --enable-calendar
2 - Si ta version de PHP n'a pas l'option --enable-calendar activée, tu risque de ne pas pouvoir utiliser correctement le défilement de ces différentes fonctions...
3 - Pour l'affichage en Français. Les dates avec des zéros exemple : 2005-08-04 pour le 4 aout 2005.
Je ne connaissais pas set_local(LC_ALL,'fr'); mais si ça marche je te propose de nous le montrer, avec plaisir j'attends ta source préviens moi...
4 - Je n'utilise pas strftime car justement je calcule la date dans le format de mysql c'est-à-dire
'YYYY-MM-DD'
5 - Je vais rajouter des commentaires pour toi c'est promis je reverrai ma version je ferai une mise à jour.

Commentaire de J_G le 14/12/2005 12:41:12

Puisque tu me le demande...
Voici ce que je met dans mon fichier de configuration :



setlocale(LC_ALL,'fr','FR','FR_fr'); // LC_ALL => tout est en format français, tu eux limiter à LC_TIME pour les dates
// 'fr','FR','FR_fr' => PHP essaye ces différents format dans l'ordre... par exemple, pour un site québécois : 'CA_fr','fr','FR','FR_fr'
define('DATEISO','%Y-%m-%d %T'); // format MySQL : 2000-01-02 13:33:45
define('DATEFR_XL','%A, %e %B %Y à %R'); // format très long lundi, 2 janvier 2000 à 23:33:45
define('DATEFR_L','%A, %e %B %Y'); // format long : lundi, 2 janvier 2000
define('DATEFR','%e %B %Y'); // format classique : 2 janvier 2000
define('DATEFR_S','%a %e %b %y'); // format court : lun 2 jan 2000
define('DATEFR_XS',%d/%m/%y); // format très court : 02/01/00


Ensuite, il te suffit de faire :
echo strftime(DATEFR_XL, time());
pour avoir l'heure actuelle en format très long...


Autre chose, tu peux facilement faire l'opération inverse (SOUS PHP5)  :
$str_time = strftime(DATEFR_XL, time());
$arr_time = strptime(DATEFR_XL, $str_time);
print_r($arr_time);
Array
(
    [tm_sec] => 19
    [tm_min] => 54
    [tm_hour] => 15
    [tm_mday] => 3
    [tm_mon] => 9
    [tm_year] => 104
    [tm_wday] => 0
    [tm_yday] => 276
    [unparsed] =>  // ici, il y'aura tout ce que la fonction n'a pas compris
)

Sans PHP5, il y'a strtotime($str_time); mais cette fonction ne comprend pas le français... Donc à n'utiliser qu'avec les DATEISO (dates sorties de MySQL)


Voilà pour strftime... qui est bien mieux que date car parle français. Bien sur, je ne conseil que trop d'aller voir sur fr.php.net la notice d'tilisation de ces fonctions.

Après, tu as raison pour le calendrier Julien. Mais comme je fais des logiciel de gestion, je n'ai jamais eu à remonter jusqu'à JC... Mais bien sûr, pour le plaisir intellectuel, il est intéressant de savoir que son calendrier vaut pour toute l'air chrétienne.



Ne prends pas la mouche avec mon dernier message. (désol' si j'ai été un peu trop virulant). Par décéption, je me suis lancé dans mon propre calendrier... En Javascript/HTML uniquement.

J'en suis aux finitions. Si tu veux, je te filerais la source.

A+

Commentaire de EagleEye le 08/01/2006 12:14:35

Un calendrier ?  Tiens interessant :)
Beau boulot :)

Commentaire de djroulo le 09/01/2006 10:46:47

Pour ceux que ça intéresse, j'ai modifié le calendrier pour qu'il envoie une date au format français dd/mm/aaaa avec en PHP des scripts pour transformer la date en date mysql et détcter le format des dates...
Si vous le voulez faites moi signe...

Commentaire de momin84 le 20/01/2006 12:23:18

Bonjour,
  Je suis au point d'integrer ce calendrier à un de mes projets. Comment ça se passe pour la licence d'utilisation ? Est ce que j'ai le droit d'utiliser ce calendrier ?
  Merci de me repondre
A très bientôt

Commentaire de djroulo le 23/01/2006 10:51:20

GPL, je l'ai pas mis dans les commentaires, mais je vais dès à présent mettre une autre source de ce calendrier qui permet d'écrire au format jj/mm/aaaa et qui sera sous licence GPL.
Je vous propose de l'améliorer et de l'utiliser comme bon vous semble, fourvu que vous faisiez de bons sites avec :-)
Je vous donnerez des nouvelles sur cette source dans les news de cette source.
Bon codage et à bientôt, donc utilisation gratuite et partage tant que tu veux...

Commentaire de gyome314 le 15/05/2006 11:03:28

Très bonne source, relativement simple à réutiliser et à adapter à ses besoins...

Merci.

Gyome

Commentaire de voodoo_chile le 18/05/2006 10:45:55

très utile ce petit calendrier et très simple à intégrer
j'ai juste modifier le format de renvoi de la date pour qu'il soit jj/mm/aaaa
sinon tout est nickel
sauf le fond vert :p lool

Commentaire de JMPoux le 13/07/2006 22:48:41

Enfin, le calendrier de saisie que je cherchais.

Le calendrier s'ouvre sur la date du jour... Serait-il possible qu'il s'ouvre sur la date déjà saisie dans le champs pour faciliter la mise à jour d'une date ?

Merci.

Jean-Michel.

Commentaire de tonton39 le 21/08/2006 11:53:38

Il serait interessent de pouvoir changer les couleur des jours suivant plusieur état paramétrable sur une db, pour par exemple mettre du vert pour libre et rouge pour occupé et tout autre ...

Commentaire de djroulo le 22/08/2006 13:57:02

Ca fait un moment que je doit repondre... alors voici :
- Pour la date au format ISO yyyy-mm-dd il suffit de changer cela dans la source du fichier calendar.php4
- pour ce qui est de changer la couleur des jours suivants, il suffit de mettre un style="background: green" dans la balise TD du jour que tu veux modifier.

Attention tout de meme, le but de ce calendrier est l'aide a la saisie et en aucun cas c'est un calendrier qui represente les jours speciaux (jours feries, dimanche, noel et jour de l'an et companie...)

SI vous avez d'autres suggestions je suis preneur :-)

Commentaire de elsadelatoundra le 13/09/2006 11:53:54

Salut DJROULO,

Je suis débutante en PHP mais je dois intégrer un calendrier aidant à la saisie de dates dans un projet.

Quand je veux tester ton calendrier, une "erreur sur la page" empêche la fermeture du pop up et la récupération de la date choisie quand je clique sur un jour ... je ne sais pas du tout d'où ça peut venir et je pense que tu en sais plus que moi à ce sujet ;-)

Je te remercie d'avance pour ton aide, bonne continuation !!

Commentaire de djroulo le 13/09/2006 20:41:00

Ok alors première chose à faire dans ces cas là, c'est regarder que tu as bien fait générer ta case input par la fonction

create_input_date("Votre date de naissance","form_caltest","caltest",10,10,NULL,NULL);

A partir de là, regarde bien que :
- le name de ton formulaire est bien form_caltest
- le name de ton input text est bien caltest et son id est bien id_caltest

Est-ce une erreur javascript, dans ce cas, c'est à cause du nommage du formulaire de ta page de base (la page comportant l'input text) ?
Est-ce une erreur PHP, peux-tu me donner la Stack Trace et ta source modifiée je jète un coup d'oeil.

Est-tu sûre d'avoir bien mis tous les fichiers requis (req_*.php) dans le répertoire courant ?

Commentaire de le papa de greg le 24/09/2006 03:04:41

Hello! ce calendrier semble convenir à merveille à mon application ... mais chez moi, il n'est pas css'isé, y'a pas d'couleurs... et ça m'affiche Warning: getimagesize(images/logout.gif): failed to open stream: No such file or directory in c:\php\client\agenda\req_buttons.php4 on line 30
nota:
je travaille avec firefox et easyPHP en local pour l'instant avant de mettre en ligne sur un intranet société
merci de tes lumières

Commentaire de djroulo le 25/09/2006 10:13:11

Je pense que tu n'as pas copie entierement le repertoire /images fourni dans la source.
Dans ce repertoire se trouve tous les fichiers necessaire a la creation des boutons permettant d'afficher les icones d'assistance de lancement du pop-up calendrier.
De meme pour le fichier css, c'est pour cela que tu n'as pas de style (couleur de fond, police sympa, date du jour en gras...)
Pour le warning, la fonction getimagesize plante lorsque le stream (le fichier) n'es pas trouve, donc rien de plus normal si tu n'as pas tout copier ;-)

Mon conseil :
- copier les images necessaires pour le calendrier dans le repertoire /images (necessaire pour req_buttons.php4 et calendar.php4)
- copier la feuille de style dans le repertoire /css
- copier le javascript dans /js
- bien regarder les references faites depuis : req_buttons.php4, test.php4 et calendar.php4 (tous utilisent la meme feuille de style)

Renommer les fichiers de ce code source pour que cela match avec ton application mais attention aux references dans calendar.php4 et test.php4

Bonne chance :-)

Commentaire de le papa de greg le 25/09/2006 12:36:46

OK, en plein dans le mil, merci
Bel outil, pratique, et facile à intégrer dans une application php
Bravo

Commentaire de mikaelcom le 29/03/2007 15:27:52

Merci!!!
Franchement, j'avais regardé le code de phpmyadmin et j'avais cracké..
T'as géré, trop bien, trop beau, je vais enfin pouvoir faire ce que je voulais !!
:)
Encore merci!!!

Commentaire de sellig60 le 17/05/2007 22:56:28

Alors là! Chapeau ! Moi aussi je lorgnais avec envie vers ce système de remplissage de champ date dans une zone de texte que l'on trouve dans phpmyadmin mais je suis trop nul encore en php et javascript pour le faire moi-même.
Merci car cela m'évite de m'arracher les cheveux pour le faire.
Sellig60

Commentaire de hug4u le 22/06/2007 12:11:45

Hello,

J'ai une petite question,
Comment faire afin de changer les dates de début et de fin du calendrier?

Il commence en 1920 (trop loin) et finit en 2008 (trop proche)

Commentaire de sellig60 le 22/06/2007 17:45:59

Salut
Il me semble que la réponse est ici:
<code>
# <?php
# $annee_depart = 1920;
# $annee_max = date("Y")+1;
</code>
lignes 79 et 80 du script calendar.php4
Sell

Commentaire de Jaick le 30/11/2007 01:13:15 9/10

Boujour,

Tout d'abord merci pour ce bon calendrier, c'est justement ce dont j'avais besoin pour mon site.

Cependant j'ai un petit problème :
Quand je click sur le champs où doit s'afficher la date, le calendrier s'ouvre (firefox bloque le popup mais c'est pas l'objet de mon problème) et lorsque je saisie ma date ou que je ferme la fenêtre, elle s'ouvre à nouveau.
Je dois mettre le curseur sur un autre champs de mon formulaire pour pouvoir enfin la fermer.

Cela vient-il de mes navigateurs (même problème pour ie7 et firefox) ou bien du code lui même?

Merci :)

Commentaire de reisduif le 04/04/2008 09:05:50

Bonjour,

j'ai donc utilisé votre formulaire qui est très intéressant mais je ne parviens pas à afficher la date dans le champ concerné.

En fait, quand je clique sur une date du calendrier, je reçois une erreur javascript.

Exemple :

Je sélectionne le 24/04/2008 et il appelle la fonction suivante : javascript:returnDate('24/04/2008').

Voici le message :

Error on page.

Détail :

Line: 1
Char: 1
Error: Object Expected
Code: 0
URL: http://www.etat-des-lieux-facile.be/Temp/Calendar/calendar.php4

Merci d'avance pour votre aide

Titi

Commentaire de djroulo le 04/04/2008 12:09:05

Je pense que votre problème se situe dans le nommage de votre formulaire ainsi que le nommage de votre input_text.

Vérifiez bien encore une fois que votre formulaire se nomme :
form_calendrier_test
Que votre input text se nomme (name) et que son Id est :
input_cal     -     id_input_cal
Afin de ne pas vous tromper, je vous propse d'utiliser la fonction PHP :
<code>
create_input_date("Votre date de naissance","form_calendrier_test","input_cal",10,10,NULL,NULL);
</code>

Si vous n'arrivez toujours pas à le faire marcher, alors vérifiez bien que votre browser comporte les bonnes normes (utilisez Firefox ou IE7).
Ce calendrier est basé sur celui de PhpMyAdmin alors tout le mondre devrait être en mesure de l'utiliser :-) le javascript est importé depuis PMA...

Commentaire de reisduif le 04/04/2008 13:40:09

Bonjour DJROULO,

tout d'abord, je tiens à vous remercier pour votre réponse rapide à mon message.

En fait, voici la page test que j'utilise :

<form id="form_caltest" name="form_caltest" method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
<table align="center">
<?php
create_input_date("Votre date de naissance","form_caltest","caltest",10,10,NULL,NULL);
?>
</table>
</form>

En fait, je ne comprends pas très bien comment la valeur du calendrier que l'on sélectionne est rapatriée vers le formulaire qui appelle ce calendrier ?

Merci d'avance pour votre aide

Thierry

P.S. : en cas de problème persistant, puis-je vous fournir les sources ?

Commentaire de djroulo le 21/04/2008 13:32:59

Ca y est j'ai trouvé !
L'ID de ton input et le name sont pareil !!!
Or, pour que ça marche, il faut que l'id soit du style : id_hello et le name : hello.
Essaye et ça devrait passer.
Sinon utilise le générateur de input type calendrier....

Commentaire de baldy le 09/06/2008 09:45:03

Bonjour

Je tente à l'heure actuelle de comprendre et d'intégrer ce code.

Après un rapide tour sur les différentes pages, j'ai tenté de tester simplement le code. 2 soucis se posent à moi :

- quand je clic sur la première images (censée ouvrir le calendrier de saisie je suppose) le navigateur (FF) m'ouvre la fenêtre habituel de téléchargement et me propose d'ouvrir le fichier "calendar.php4" via un éditeur de texte ...

- quand on clic sur l'icone permettant d'ajouter la date du jour il affiche "10/06/2006", pas très utile comme bouton, non?

Commentaire de baldy le 09/06/2008 14:33:51

Premier problème régler, visiblement le .php4 ne plaisait pas au navigateur. Donc la pop up s'ouvre bien maintenant. Le soucis secondaire, c'est que celle ci le code s'affiche comme du HTML à partir de :

# "Janvier","F&eacute;vrier",etc...

En regardant le code source on dirait qu'il "sort" du PHP dès l'ouvrture d'une simple ou double quote.

Commentaire de frank_85 le 11/09/2008 11:45:31

je viens d'installer ce script mais j'ai beau cliquer sur une date rien ne se passe...des erreurs dans les scripts? Quelqu'un a-t-il des infos ou uen version "finale" modifiée par les différentes remarques des posts?
Merci!!

Frank

Commentaire de onlyge le 18/01/2009 21:29:03

Merci pour ce script, super! Est-il possible de mettre les fichiers en .php et non .php4?

Autre chose, tout fonctionne sauf quand je sélectionne une date dans le calendrier, celle-ci n'apparait pas dans le champ par la suite. J'ai utilisé la fonction php

create_input_date("Votre date de naissance","form_caltest","caltest",10,10,NULL,NULL);

J'arrive à faire afficher la date du jour et a supprimer les infos du champs. Mais ça ne marche pas pour avoir la date tiré du calendrier... Avez-vous une id de l'erreur? J'ai pas touché aux fichiers sources du tout..!

Commentaire de mohamedsalma le 30/03/2009 23:45:41

SALUT
je suis un debutant a la domaine d'informatique je fais une copie de code php de la calendrier et je travail avec une version1.6 mais la calendrier ne marche pas
je te demande quel qu'un me guide pas a pas pour mieux comprendre
merci

Commentaire de jpkirkbride le 19/11/2009 11:58:16

Bonjour,
je suis en trains de tester mais j'ai un petit soucis. Le calendrier fonctionne bien (après renommage de tout php4 en php et création de sous-répertoires css/ js/ images/ afin d'y mettre les fichiers qui vont bien).

voilà mon soucis.
Dans mon formulaire, sur le bouton "submit", je demande à une fonction de valider le formulaire si certains champs sont saisis. Cela fonctionne bien mais depuis que j'ai ajouté le code pour intégrer le calendrier : mon formulaire ne se submit plus.

je n'arrive pas à comprendre où cela bloque si qq'un pouvait un oeil !

jean-paul


formulaire :
<form id="form_creation" name="form_creation" method="post" action="gestion_identites.php">

je déclare le script dans le formulaire :
<script language="javascript" type="text/javascript">
/**
* Opens calendar window.
* @param   string      calendar.php
* @param   string      form name
* @param   string      field name
* @param   string      edit type - date/timestamp
*/
function openCalendar(form, field, type) {
    window.open("calendar.php", "Cal", "width=400,height=250,status=yes");
    dateField = eval("document." + form + "." + field);
    dateType = type;
}
</script>


dans mon formulaire, pas mal de choses dont :
echo "<td>Date arriv&eacute;e : </td><td><input type=\"text\" name=\"arrivee\" id=\"id_arrivee\"/>";
echo "<a title=\"Ouvrir Calendrier\" href=\"javascript:openCalendar('form_creation','arrivee','date')\"><img src=\"images/cal.png\" border=\"0\" width=\"16\" height=\"16\" alt=\"Cal\" title=\"Calendrier\" /></a></td>";


fin de formulaire :
echo "<tr><th colspan=\"4\"><input type=\"button\" value=\"Cr&eacute;er Identit&eacute;\" onClick=\"valide_form_creation(this.form)\"></th></tr>";
echo "</table>";
echo "</form>";


// cette fonction validate_form est positionnée dans les balises html après les métas mais avant le header

<script language="javascript"><!--
     function valide_form_creation(form) {
                if((form.form_prenom.value=="") || (form.form_prenom.value==null)){
                        document.open="Merci de saisir le PRENOM !";
                        alert(document.open);
                        return false;
                } else {
                       form.submit();
                       return true;
                }
//-->
</script>

Commentaire de djroulo le 19/11/2009 12:09:26

Il y a plusieurs solutions :
- Utiliser Firebug si vous utiliser FireFox
- Utiliser Devbar si vous utiliser IE7

- Pour l'appel au javascript valide_form_submit(), je l'écrirait autrement :
Prototype : valide_form_sumbit(form_name)
Appel depuis le bouton : onclick="valide_form_submit('form_creation');"
Code de le fonction : else{
document.getElementById(form_name).submit();
return true;
}

L'autre solution consisterait à remplacer button par submit, et ajouter onsubmit="valide_form_submit('form_creation');" à la balise <form>.

Bon courage !

Commentaire de jpkirkbride le 19/11/2009 14:05:46

Merci pour ton soutien DJROULO, d'autant que ton code fonctionne très bien ! c'est seulement un problème javascript autre que je rencontre. J'ai fait les modifs comme proposé et le formulaire submit SANS controler le contenu (sans controler la fonction appelé par le submit)

je ne sais pas comment résoudre...
si tu as une idée....  en attendant je vais essayer avec firebug si je peux repérer un truc.


mon formulaire :

début formulaire :
<form id="form_creation" name="form_creation" method="post" action="gestion_identites.php">
<script language="javascript" type="text/javascript">
//déclaration de la fonction
function openCalendar(form, field, type) {
    .....
}
</script>

dans le formulaire :
<td><input type="text" name="arrivee" id="id_arrivee"><a title="Ouvrir Calendrier" href="javascript:openCalendar('form_creation','arrivee','date')"><img src="images/cal.png" border="0" width="16" height="16" alt="Cal" title="Calendrier" /></a></td>

fin de formulaire, dans la déclaration du bouton submit :
<input type="submit" value="Creer" onclick="valide_form_creation('form_creation')>
</form>



avant le <head> :

<script language="javascript"><!--
function valide_form_creation(form_name) {
      if((form_name.form_prenom.value=="") || (form_name.form_prenom.value==null)){
           document.open="Merci de saisir le PRENOM !";
           alert(document.open);
           return false;
      } else {
           document.getElementById(form_name).submit();
           return true;
      }
}

Commentaire de djroulo le 19/11/2009 14:14:15

Hello !
- Votre bouton submit devrait être de la forme :
<input type="submit" name="btnSubmit" value="Cr&eacute;er" />

- Votre formulaire devrait être de la forme :
<form name="form_creation" onsubmit="valide_form_creation('form_creation');"

- Les fonctions Javascript ne sont plus échapées par <!-- --> mais par CDATA, voire documentation sur Internet à ce propos.

- ajouter type="text/javascript" à votre balise <script></script>

Commentaire de djroulo le 19/11/2009 14:15:36

Erratum :
pour Votre formulaire, il devrait être de la forme : onsubmit="return valide_form_creation('form_creation');"

Commentaire de jpkirkbride le 19/11/2009 15:52:15

Un grand merci pour la somme de mes petites erreurs...  le javascript ! faut que je m'y mettre !

et bravo pour ton script qui est très souple, j'ai pu facilement modifier la plage d'années et j'ai aussi pu modifier le format de la date.

merci !

Commentaire de aperitif31 le 07/01/2010 14:14:39 10/10

Génial ! Merci

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

comparer une date saisie avec une date mysql [ par cLilie ] Salut,je cherche comment comparer une date saisie au clavier dans une zone de texte et une date provenant de mysql.et aussi j'aimerais pouvoir ajouter Les dates avec MySQL [ par ImmortalPC ] Salut,je deviens fou avec mon calendrier J' ai une date de commencement et une date de finrespectivement : date_start et date_endLeur type : datetime CALENDRIER PHP OU JAVASCRIPT [ par eric93 ] Bonjour à tous.Je suis débutant, et je suis en stage.Je dois réaliser un formulaire php pour la saisi d'un menu avec la date.Et mon tuteur veut que je Recupérer la date depui un calendrier [ par lebasketeur ] bonjour tt le monde,voila je suis nouveau dans le php et je travaille actuellement sur un premier projet.dans un formulaire d'ajout, j'ai une zone de insérer contenu xml dans bdd mysql [ par indutec ] Bonjour à tous, Voilà, j'aimerais encoder le contenu d'un fichier xml, que je ne génère pas, vers une base de données mysql. Pour l'instant, il m'enc insérer contenu xml dans bdd mysql [ par indutec ] Bonjour, Je souhaite insérer le contenu d'un fichier xml externe dans une base de données sur mon serveur. Pour l'instant, il me génère une erreur code php [ par parrain3000 ] salut j'ai besoin de votre aide au sujet du code php d'une sélection de date sous forme de calendrier c'est à dire j'aierais selectionner une date en Insertion a partir d'une liste deroulante dynamique [ par meego ] Bonjour ,voici mon problème  , j'ai 2 liste déroulante alimentée par une base de données MySqlla première liste déroulante est alimenté par une table Ajout de données via formulaire [ par peanut38 ] Bonjour,Je ne comprends pas pourquoi rien ne se passe lorsque je remplis mon formulaire.j'ai deux pages : ajoutrfc.php et traitementajout.phpje me tir calcul des dates [ par nader19 ] Bonjour, j'ai problème pour ne pas compter des jours comme par exemple 8 mai ou 1 mai. en effet ce script parcours table et calcul nombre des jours en


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,217 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales