IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Décalage dans le numéro de la semaine


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 10
    Par défaut Décalage dans le numéro de la semaine
    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

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu as bien affiché ta requete finale pour la controler ? (on pourrait imaginer par exemple que name et value sont decalés dans ton select).

    Sinon fait le test le plus simple comme afficher SELECT ISOWEEK('20090126') depuis PHP et comparer avec sql server management.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 10
    Par défaut
    Oui j'ai affiché la requête finale, et le numéro de la semaine est correct.

    Si je sais le test que tu dis, il me retourne le numéro de la semaine +1, alors que sur SQL tout va bien ...

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu pourrais nous donner ta configuration php et sql server exact et nous donner le code précis du test dont on vient de parler ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 10
    Par défaut
    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

  6. #6
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    En php une semaine commence le lundi (assez logique) et a 7 jours,
    janvier ayant commencer un jeudi , le 01/01 ne fait pas partit de la première semaine de php mais de la dernière semaine de 2008.

    Ton décalage provient de la gestion des semaines de php qui ne semble pas réellement respecter la norme ISO8601:2000
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. numéro de la semaine dans le mois
    Par Invité dans le forum Langage
    Réponses: 3
    Dernier message: 04/07/2011, 16h56
  2. [VB.NET] Obtenir le numéro de la semaine d'une date
    Par alain&&thomas dans le forum Windows Forms
    Réponses: 9
    Dernier message: 07/09/2009, 17h54
  3. [batch] - Décalage de date et numéro de la semaine
    Par avaujour dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 26/11/2007, 09h24
  4. [C++ - MFC] numéro de la semaine en cours...?
    Par Gothico dans le forum MFC
    Réponses: 10
    Dernier message: 18/11/2003, 14h31
  5. Réponses: 14
    Dernier message: 01/09/2003, 22h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo