Conseil - Calendrier dynamique en PHP - obtimisation et organisation

Mammouth du PHP | 804 Messages

28 févr. 2008, 18:11

Bonjour,

Je me suis lancé dans le développement d'un petit script calendrier en PHP, que je vais utiliser dans mes divers applications, le moteur principal est en place et maintenant je vais commencer l'utilisation de celui ci avec des événements se trouvant dans des bases de données.

Je me pause la question suivante !
Suis-je obligé de faire 31 requêtes (soit 31 jours) pour chaque affichage ?
Ou existe t-il une méthode qui me permettra de faire plus simple ?

Merci d'avance pour vos conseils

Eléphant du PHP | 445 Messages

28 févr. 2008, 18:19

Je pense qu'en une seule requête c'est faisable, tout dépends de la structure de ta(tes) table(s).

Mammouth du PHP | 804 Messages

28 févr. 2008, 18:25

voilà un exemple de table:
`ID` smallint(5) unsigned NOT NULL auto_increment,
`Texte` text collate utf8_bin NOT NULL,
`Date` datetime NOT NULL default '0000-00-00 00:00:00',
le champ le plus important sur le quel va reposer mon calendrier:
Date datetime NOT NULL default '0000-00-00 00:00:00'

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

28 févr. 2008, 18:34

Surtout pas 31 requêtes malheureux :) (ou 30 ou 29 ou 28, selon le nombre de jour dans le mois)

Une seule requête avec une clause WHERE filtrant le mois ( WHERE MONTH(ton_champ_date) = mois_souhaité ORDER BY ton_champ_date) sera bien plus optimisée. Il te suffit ensuite de parcourir le résultat et de construire ton calendrier au fur et à mesure, voire stocker le résultat de la requête dans un tableau php que tu pourras facilement interroger pour savoir ce qui se passe tel jour :)

A noter que "Date" est un mot clé sql réservé, et même si MySQL est très tolérant et te permet de l'utiliser comme nom de colonne avec des ``, c'est franchement pas le meilleur nom que tu puisse donner à un champ :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Mammouth du PHP | 804 Messages

28 févr. 2008, 18:42

c'est noter ,

je vais essayer tout de suite avec les tableaux

merci pour les conseils



Bon voilà j'ai mis en place ton conseil c'est tout simplement excellent, je m'attendais à trouver beaucoup plus de problème pour developper un calendrier.

Mais biensure j'ai quand même un petit souci qui je pense va être rapidement réglé :wink:

Dans mon calendrier j'utilise une variable $even[$n]
$n représente le jour, et me permeait de chercher mes evenements ($even[jour]) liés à cette date

selement en sortie de table les dates de 1 à 9 on un zéro
01, 02, 03 etc

Du coup tous mes evenements de 1 à 9 ne sont pas affichés dans mon calendrier puisque il sont initiés à des valeur de type 1 2 3 4 etc..

existe il une fonction php pour me sortir mes dates sans le 0 ?

ma sortie de table
        

$DB_Date = $row['Date_info']; // ma date brut

$DB_jour = substr($DB_Date, 8, 2); // je sort le jour

                // petite condition pour mettre en tableau mes evenement du mois

	if($DB_annee == $annee && $DB_mois == $mois){

	$even[$DB_jour] = $DB_Date;

	echo "Le $DB_Date: $DB_Titre<br>";

	


je viens de solutionner avec
		 if($DB_jour < 10){
		 $DB_jour = substr($DB_jour, -1, 1); 
		 $even[$DB_jour] = $DB_Date;
		 echo "Le $DB_Date: <i>$DB_Titre</i><br>";
		 }else{
		 $even[$DB_jour] = $DB_Date;
		 echo "Le $DB_Date: $DB_Titre<br>";
		 }
mais ca me plait pas trop :?