[PHP/SQL SERVER] Pb Semaine incroyable

Fermé
Kyra13 Messages postés 18 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 21 octobre 2009 - 26 janv. 2009 à 16:24
 fky - 11 janv. 2010 à 10:40
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 samedi 20 décembre 2008 Statut Membre Dernière intervention 11 mars 2009 28
26 janv. 2009 à 16:54
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 lundi 5 décembre 2005 Statut Membre Dernière intervention 21 octobre 2009
26 janv. 2009 à 17:43
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 samedi 20 décembre 2008 Statut Membre Dernière intervention 11 mars 2009 28
26 janv. 2009 à 18:05
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 lundi 5 décembre 2005 Statut Membre Dernière intervention 21 octobre 2009
26 janv. 2009 à 18:15
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 samedi 20 décembre 2008 Statut Membre Dernière intervention 11 mars 2009 28
26 janv. 2009 à 18:31
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 lundi 5 décembre 2005 Statut Membre Dernière intervention 21 octobre 2009
26 janv. 2009 à 18:41
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 samedi 20 décembre 2008 Statut Membre Dernière intervention 11 mars 2009 28
26 janv. 2009 à 18:44
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 samedi 20 décembre 2008 Statut Membre Dernière intervention 11 mars 2009 28
26 janv. 2009 à 19:31
As-tu le code de ta fonction ISOWEEK ?
0
Kyra13 Messages postés 18 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 21 octobre 2009
28 janv. 2009 à 10:45
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
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