[PHP/SQL SERVER] Pb Semaine incroyable

Kyra13 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -  
 fky -
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
A voir également:

9 réponses

mikebzh Messages postés 127 Date d'inscription   Statut Membre Dernière intervention   28
 
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 ?
0
Kyra13 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
 
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.
0
mikebzh Messages postés 127 Date d'inscription   Statut Membre Dernière intervention   28
 
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]) ?
0
Kyra13 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
 
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.
0
mikebzh Messages postés 127 Date d'inscription   Statut Membre Dernière intervention   28
 
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 .
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Kyra13 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
 
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.
0
mikebzh Messages postés 127 Date d'inscription   Statut Membre Dernière intervention   28
 
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 !!
0
mikebzh Messages postés 127 Date d'inscription   Statut Membre Dernière intervention   28
 
As-tu le code de ta fonction ISOWEEK ?
0
Kyra13 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
 
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
0
fky
 
La façon de numéroter les semaines n'est pas la même pour l'Europe et les Us. Apparemment ça dépend de la locale.
0