Rechercher : dans
Par :

[PHP/SQL SERVER] Pb Semaine incroyable

Dernière réponse le 28 jan 2009 à 10:45:17 Kyra13, le 26 jan 2009 à 16:24:50 
 Signaler ce message aux modérateurs

Bonjour,

Depuis que nous sommes passés à 2009 je rencontre ce problème.
J'ai une fonction sous SQL Server 2005 qui me calcul le numéro de la semaine de la date envoyée, de ce côté aucun problème : la fonction marche correctement.

D'un autre coté, je travail sur un site web qui cherche des colis, sur chaque recherche vous avez une barre de date qui vous permet de trier par semaine, mois, ...
Cette barre de date est une simple balise <select> contenant les n° de semaine avec les années.

Si un utilisateur vient choisir une semaine, je rajoute à ma requête l'argument :
ISOWEEK(Date_envoyée)=2 AND YEAR(Date_envoyée)=2009 (où isoweek est la fonction sous SQL Server)
Rien de savant, PHP ne calcul rien et SQL Server vient tout simplement exécuter la requête.

Là où ça devient bizarre :
Les données renvoyées sur le site web ne correspondent pas à la semaine choisie, MAIS si j'exécute cette même requête dans Sql server 2005 j'ai les bons résultats...

Du coup, on peut identifier le décalage suivant :

S01
Site web : Du 05/01 au 09/01
SQL Server : Du 01/01 au 02/01

S02
Site web : Du 12/01 au 16/01
SQL Server : Du 05/01 au 09/01

S03
Site web : Du 19/01 au 23/01
SQL Server : Du 12/01 au 16/01

S04
Site web : Du 26/01 au 30/01
SQL Server : Du 19/01 au 23/01

Je ne comprend vraiment pas ce problème, j'ai vidé le cache en pensant que cela venait de là, mais aucun changement.

Merci d'avance

Marlène

Configuration: Windows 2003
Firefox 3.0.5

1

mikebzh, le 26 jan 2009 à 16:54:17

Coucou,
Manifestement ton site web à oublier les premiers jours de janvier, semaine 1 commençant le 5/01 bizarre ?
Comment tes semaines sont-elles gérées sur le site ?

Répondre à mikebzh

2

Kyra13, le 26 jan 2009 à 17:43:06

Salut,

Sur mon site web, il n'y a pas de gestion des semaines, c'est juste une balise <select> avec des chiffres correspondant aux n° des semaines.
Donc mon site ne fait aucun calcul de semaine, c'est juste un numéro qui est envoyé à SQL Server qui lui retourne les informations correspondant au numéro de la semaine.

Répondre à Kyra13

3

mikebzh, le 26 jan 2009 à 18:05:18

Question toute bête, dans ton select, la première occurence est sans doute 0 pour la semaine 1, en tient tu comptes pour la requête ? (semaine 1 serait en faites select[0]) ?

Répondre à mikebzh

4

Kyra13, le 26 jan 2009 à 18:15:49

Le Select ne commence pas par 0, il commence à 1, car il n'y a pas de semaine 0.

Il est mis à jour à partir d'une table que j'ai dans SQL Server qui liste toute les semaines existantes dans mes bases de données.

Répondre à Kyra13

5

mikebzh, le 26 jan 2009 à 18:31:56

Là je bosse donc c'est pas évident mais il va falloir qu'on récupère exactement la requéte qui par du site et celle qui arrive au serveur .

Répondre à mikebzh

6

Kyra13, le 26 jan 2009 à 18:41:09

Je viens de découvrir quelque chose en faisant des tests.

Exemple : on sélectionne la semaine 2-2009 sur le site web
=> Le site web renvoi la semaine 3 en résultat

=> Si on copie la requête sql qui est envoyé au site web et qu'on la met sous SQL Server, j'ai bien les résultats de la semaine 2

=> Si on fait afficher en plus à SQL Server, le n° de semaine dans les réponses renvoyées par la requête, on a bien la semaine 3

Je dois avouer que je ne comprends plus grand choses à ça ...

Il n'y a d'incrémentation null part dans le code, donc si je comprends bien : dans sql server tout va bien, mais la transition avec le site web lui fait sauter une semaine.
Sans compter que ce problème n'existe uniquement sur 2009, car (je pense) cela le perturbe que le 1er janvier soit un jeudi.

Répondre à Kyra13

7

mikebzh, le 26 jan 2009 à 18:44:50

Est-ce possible de lui ôter une unité sur la semaine avant la requête ?
J'ai eu ce genre de problème, il y a longtemps et dans une fonction on pouvait définir le jour de début d'une semaine mais c'est loin !!

Répondre à mikebzh

8

mikebzh, le 26 jan 2009 à 19:31:01

As-tu le code de ta fonction ISOWEEK ?

Répondre à mikebzh

9

 Kyra13, le 28 jan 2009 à 10:45:17

Bonjour,

Merci de ton aide, mais je vais tout simplement stocker les semaines dans une table.
Je pense que le probléme vient de là : seules les années dont le jour de l'an est un jeudi auront 53 semaines.

Du coup ça me fait un décalage, et si je fais -1 à ma semaine, je perds les données de la semaine 1 vu qu'il y a pas de semaine 0.

Encore merci et bonne continuation

Répondre à Kyra13