8792 sujets

Développement web côté serveur, CMS

Bonjour,

Quelqu'un peut-il me dire quelles sont les modifications à apporter dans ce bout de codage d'un calendrier, pour retirer 4h (GMT-4) et tant qu'à faire pour commencer la semaine avec le dimanche au lieu du lundi.

Merci d'avance,
Amitiés, Pierre AP
<?php
/* On déclare à zéro un compteur de jours. 
* Il compte les jours et donc permet d'afficher
* le numéro du jour et permetra de controler le
* nombre de jours à afficher (voir la suite). */
$calendrier_compteur_jours = 0;

/* Une boucle While (tant que) :
* Tant que le compteur de jours n'a pas atteint
* le nombre de jour total du mois on fait tout
* ce qu'il y a a faire... */
while ($calendrier_compteur_jours <= $calendrier_date_mois_nombrejour)
{
?>
<tr> 
<?php 
		/* Une boucle For:
		 * On incrémente $i jusqu'a ce qu'il soit égal a 6
		 * De 0 à 6 il y a 7 chiffres, cette boucle correspond
		 * à l'affichage en ligne des 7 jours de la semaine. */
		for ($i = 0 ; $i <= 6 ; $i++)
		{
		 	/* Si $i est égale au jour de la semaine de la date
			 * selectionnée on incrémente le compteur de jour.
			 * Cette condition permet de commencer à incrémenter 
			 * le compteur de jour que lorsque le 1er jour de moi
			 * correspond a jour de la semaine de la colonne
			 * Si date retourne 1 le premier jour du mois est un 
			 * mardi on va donc commencer a compter a partir de 
			 * la 2nde case de la ligne. */
			if ($i == date('w', mktime(0,0,0, $calendrier_date_mois, $calendrier_compteur_jours, $calendrier_date_annee)))
			{
				$calendrier_compteur_jours++;		
			}
				
			/* Si le jour auquel le compteur de jour est correspond
			 * à un jour dans le tableau de dates importantes 
			 * on défini le style à afficher pour que la case de la
			 * date soit differente (voir CSS).
			 * Sinon c'est le style normal qui s'affiche. */
			if ($calendrier_compteur_jours.'_'.$calendrier_date_mois.'_'.$calendrier_date_annee == $calendrier_dateDuJour) 
			{
				$class_jour  = 'calendrier_dateDuJour';
			} 
			else 
			{	
				if (in_array($calendrier_compteur_jours.'_'.$calendrier_date_mois.'_'.$calendrier_date_annee, $calendrier_dates_importantes))
				{	
					$class_jour = 'calendrier_date_importante';
				}
				else
				{	
					$class_jour = 'calendrier_date';
				}
			}
?>
<td class="<?php echo $class_jour ?>"> 
<?php 
			/* Si le jour auquel le compteur de jour est
			 * n'est pas égal 0 (0 s'affiche tant le compteur
			 * de jours n'a pas commencer a etre incrémenté) et
			 * que le compteur de jour est plus petit ou égal au
			 * nombre de jour on affiche le jour (son numéro). */
			if ($calendrier_compteur_jours != 0 && $calendrier_compteur_jours <= $calendrier_date_mois_nombrejour)
			{
				echo $calendrier_compteur_jours;
			}
			else 
			{
				echo '&nbsp;';
			}
			?>

Modifié par pierreandre (30 Mar 2007 - 06:44)
Salut,
pour ton histoire de décalage horaire, si tu fais partir ton calendrier du moment ou on l'affiche, tu es marron, php utilisant la date du serveur, normal puisqu'il bosse côté serveur...

Du coup, pour biaiser le truc, il ne te reste plus qu'à récupérer le timestamp du moment, lui retirer 4h et commencer à bosser depuis ce nouveau timestamp.

Marrant ton histoire de faire commencer la semaine à dimanche puisque justement, tu utilises w dans date() qui donne les jour de la semaine de 0 à 6 en commençant par... dimanche

Have swing
Ah ah ah ! Bonjour,
Merci beaucoup de m'avoir répondu.
Vaut mieux que je rie de mon ignorance !

Tu as parfaitement raison pour php. Mon site est en France et j'habite au Québec.

Quand tu dis récupérer le timestamp et lui enlever 4h, me donnerais-tu une place où je pourrais m'informer du «comment faire» ?

Enfin à part 'w', quoi écrire qui me ferait commencer par dimanche (au moins pour le site de ma blonde) ?

J'imagine que tu as compris que tu avais affaire à un ignorant et que tu ne te choqueras pas de mes questions.

Amitiés, pierreandre
salut,
oh, ne te bile pas, on a tous commencé un jour avant de devenir addict...

ben pour le timestamp, c'est assez simple tu fais
$now=time();

et hop, $now contient le timestamp. Comme il est exprimé en sec (depuis l'origine d'Unix, et oui, chacun ses prophètes Smiley smile ) pour lui enlever 4 heures, tu crées une variable genre
$decalage=4*60*60;

que tu soustrais à ton timestamp d'origine
$now=$now-$decalage;

et maintenant $now contient le temps serveur moins 4 heures et tu as un bon point de départ pour ta fonction.

Maintenant je ne comprends toujours pas le problème avec dimanche puisque comme je te le disais, w, que tu utilises, démarre justement à 0 pour dimanche jusqu'à 6 pour samedi donc toute boucle autour des résultats date('w'...) démarrera bien sur les dimanches. Dis-m'en plus sur ce qui te tracasse

Have swing
Bonjour virtualgo,

Merci pour ton appui et tes excellentes suggestions. Tu m'as mis sur la voie et j'ai rencontré sur MacBidouille (http://forum.macbidouille.com/index.php?showtopic=214403) No3, qui m'as mis les points sur les i.

Ce qui fait que ça marche super pour moi.

Amitiés, pierreandre
P.S. voici l'adresse où tu peux voir le calendrier corrigé :
http://ppzx.net/pierre/pier.php5
Modifié par pierreandre (04 Apr 2007 - 00:12)
salut,
my pleasure Smiley smile
et, au passage, je comprends ce que je ne comprennais pas, en fait tu voulais que la semaine commence par lundi ! Smiley smile

have swing
Bonjour virtualgadjo,

oui, ma blonde préférait que la semaine commence par dimanche, comme c'est en ce moment et moi je préférais qu'elle commence par lundi. il y en a toujours un de content.

Par contre avec le W3C en transitional 1.0 le calendrier est correct. Mais en 1.1 strict comme mes autres pages il y a ces 2 erreurs que je voudrais bien solutionner. Tu peux voir le calendrier ici
[URL]http://ppzx.net/3colonnes/calendrierbase.php5[/URL] :
	1.	Below are the results of checking this document for XML well-formedness and validity.
	Error Line 34, column 24: there is no attribute "align" .
	<table border="0" align="center" cellpadding="1" cellspacing="1">
	You have used the attribute named above in your document, but the document type you are using does not support that attribute for this element. This error is often caused by incorrect use of the "Strict" document type with a document that uses frames (e.g. you must use the "Transitional" document type to get the "target" attribute), or by using vendor proprietary extensions such as "marginheight" (this is usually fixed by using CSS to achieve the desired effect instead).
	This error may also result if the element itself is not supported in the document type you are using, as an undefined element will have no supported attributes; in this case, see the element-undefined error message for further information.
	How to fix: check the spelling and case of the element and attribute, (Remember XHTML is all lower-case) and/or check that they are both allowed in the chosen document type, and/or use CSS instead of this attribute. If you received this error when using the <embed> element to incorporate flash media in a Web page, see the FAQ item on valid flash.

	2.	Error Line 36, column 11: there is no attribute "width" .
		<td width="30"><a href="?mois=2&&annee=2007"><</a></td>
Si tu as une solution, je l'ajoute tout de suite,
Amitiés, pierreandre
Modifié par pierreandre (04 Apr 2007 - 00:13)
Salut,
là c'est tout simple, le môssieur te dit Smiley smile que tu travailes sous un doctype transitionnel et que, du coup, tu ne devrais pas mettre d'attributs genre
align="center" 
sous cette forme mais à l'aide de styles, dans l'idéal, dans une feuille de style mais, ça, c'est juste pour la facilité de maintenance, sinon, les styles en ligne sont valides aussi.

Pour satisfaire le môssieur Smiley smile il te faut donc écrire
<table id="moncalendrier">

et coller les styles qui t'intéressent dans la feuille de style que tu ne manques pas d'avoir.

Pour l'histoire du jour de la semaine, c'est un problème venant de moi qui ne saisis pas l'acadien Smiley smile mais cette fois, ça-y-est
a écrit :
je préférais que la semaine commence par dimanche, comme c'est en ce moment et moi je préférais qu'elle commence par lundi

le deuxième "je préfèrerais" m'a mis sur la voie Smiley smile et c'est relativement simple. En ce moment, tu fais ta boucle de 0 à 6, fais là de 1 à 7 en prévenant d'abord php Smiley smile que si ton jour est égal à 0, il est égal à 7.
Je ne sais pas si je me fais bien comprendre sur ce coup-là mais si tu veux, j'ai pondu un calendrier perpétuel de ce goût-là, avec justement un affichage qui va de lundi à dimanche, si ça t'intéresse je te colle la source en ligne en l'expurgeant des trucs Ajax et dhtml qui me servent à aller d'un mois à l'autre sans recharger la page et à afficher les infos des dates dans un tip mootools.

Je les entends déjà, et ben si, ça marche sans javascript aussi, because les liens vont rechercher la page normalement en cas d'absence de javascript et le contenu des tips est dans le title des a, na Smiley smile

Have swing
Bojour virtualgadjo,

Oui, c'est super, j'aimerais bien recevoir ton calendrier.

Maintenant, celui-là est correct 1.1 strict W3C. Tu peux le voir en fonction à :
[http://ppzx.net/pierre/pier.php5] et le télécharger en mode texte.

Merci pour ton indication de «lundi» Je vais l'essayer et je t'en donne des nouvelles.

Pour l'adresse de courriel, comme je me méfie des spams sur un forum, à l'adresse ci-dessus, tu pourras m'écrire, si tu le désires.

Merci encore beaucoup. pierreandre
Modifié par pierreandre (04 Apr 2007 - 00:10)
Salut,
dis-moi, depuis hier je vais de temps en temps me connecter sur ton site pour t'envoyer le calendrier perpétuel mais il semble en rideau...

J'y retournerai de temps en temps en espérant pour toi qu'il revienne sur la toile Smiley smile

have swing
Bonjour virtualgadjo,

Ouais je suis resté plus d'une journée sans serveur. Il vient juste de reprendre vie et encore des fois, il tombe.

Si tu veux je te mets une adresse de courriel qui je le souhaite ne sera pas trop spammée. pierreap - at - ppzx.net (évidemment tu as compris qu'il faut changer at par @)

Finalement le calendrier a passé positivement le test du W3C. Je L'envoie sans problème sur demande.

À bientôt,

Pierre
Salut Pierre-André,
en fait, je l'ai regardé tourner et dedans tu surlignes des dates, du coup tu aurais peut-être plutôt besoin de la version complète ou, au moins avec l'ajout d'un type de date (le mien est prévu pour afficher des évènements récurrents ou ponctuels) que du simple calendrier perpétuel.

Jette un oeil là-dessus (en passant sur la puce rose Smiley smile tu verras qu'il se customise aisément) et, si c'est ce dont tu as besoin, je te ponds vite fait une petite admin pour pouvoir insérer les dates, pour le moment, comme cette version était juste un petit jeu pour ma pomme sur ce site où je ne fais que des tests, en bon sauvage, je le nourris direct dans phpMyAdmin Smiley smile

Have swing
Bonjour virtualgadjo,

eihhhh ! Je trouve ton calendrier superbe et je suis très intéressé. J'aime aussi ton site.

J'ai 2 questions :
1- as-tu besoin d'une table MySQL pour le faire fonctionner. Je n'en ai pas.
2- serait-il possible de remplace le js par du php ?

Voilà mon ami, Maintenant mon serveur est correct... Jusqu'à la prochaine fois !

Amitiés, Pierre

Nouvel URL (L'autre a sauté avec mon serveur) :
[URL]http://ppzx.net/pierre/pier.php5(/URL)
Modifié par pierreandre (03 Apr 2007 - 19:37)
Salut,
désolé d'être un peu à eclipse en ce moment, un poil harcelé par le taf... c'est vrai que par habitude je stocke les commentaires des bulles dans une base mais, tu pourrais imaginer un truc avec un fichier texte par ex. En revanche, le calendrier perpétuel lui-même est 100% php sans mysql, la seule intervention de javascript c'est pour "l'ajaxifier" mais si tu vires le javascript il fonctionne exactement pareil simplement la page se recharge quand tu changes de mois ou d'année.

Javascript intervient aussi pour les tips (les infobulles) mais ça, ça doit pourvoir se gérer en css, bien qu'à mon avis moins solide et propre. Ceci dit, tout le contenu des bulles étant dans le title des liens il apparaît sans javascript de façon clair. Voilou, merci pour le site, un peu vide mais je n'ai jamais le temps de jouer avec, trop de boulot !

Je vais essayer de t'en faire une version sans ajax rapidement et on verra comment tu veux faire pour stocker les commentaires, si toutefois tu veux en stocker d'ailleurs parce que sans, le script est tout prêt à fonctionner, une page php et une feuille de styles et le tour est joué Smiley smile

@ sous peu
Modifié par virtualgadjo (04 Apr 2007 - 20:54)
pétard, j'ai voulu faire éditer pour l'orthographe et voilà que je me retrouve dans citer... désolé, la fatigue Smiley smile
allez tchin

have swing
Modifié par virtualgadjo (04 Apr 2007 - 20:54)
Salut mes amis,

Prends ça cool, ce n'est pas un boulot que tu dois faire. Je souhaite même que cela fasse partie de tes distractions. en plus, j'ai tout mon temps.

Justement avec ce temps, j'ai appris que pour des tips ou infobulles c'était bien meilleur en javascript.

ah ah ah ! En fait je ne les voudrais que pour me rappeler ce qu'il y a dans ces jours spéciaux (habituellement ce sont des anniversaire pour la famille de ma femme) je ne tiens pas trop à montrer que j'ai tout oublié !

En fait j'aimerais ajouter un petit texte dans chaque jour important, comme dans cet exemple : voir l'image jointe :
upload/684-rendez-vous.jpg

Est-ce aussi possible en bidouillant dans ce style '$param['highlight'] = array( ''8_4_2007' => 'Rendez-vous', '4_5_2007' => 'Rendez-vous', '200704051330' => 'Rendez-vous')'

Merci d'avance, Pierre AP

Voilà, c'est à peu près tout.
À part ça, je trouve que tu travailles rudement bien.

Amitiés, Pierre AP
Modifié par pierreandre (05 Apr 2007 - 03:50)
Bonjour à tous et merci à virtualgadjo particulièrement,

J'ai finalisé avec ceci http://ppzx.net/pierre/pier.php5 [/url] vous verrez en cliquant sous le calendrier avec tout simplement
<a href="pensez_y.php5">#<span>Anniversaires et RV : </span></a>


Et voila ! En piste pour un autre problème...

Amitiés, Pierre AP