Posez votre question Signaler

[PHP/SQL SERVER] Pb Semaine incroyable

Kyra13 17Messages postés 5 décembre 2005Date d'inscription - Dernière réponse le 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
Lire la suite 

[PHP/SQL SERVER] Pb Semaine incroyable »

10 réponses
Réponse
+0
moins plus
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 ?
Kyra13- 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.
Ajouter un commentaire
Réponse
+0
moins plus
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]) ?
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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 .
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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 !!
Ajouter un commentaire
Réponse
+0
moins plus
As-tu le code de ta fonction ISOWEEK ?
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Ce document intitulé « [PHP/SQL SERVER] Pb Semaine incroyable » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?