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 :

Numéro de semaine


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 78
    Par défaut Numéro de semaine
    bonjour tout le monde,
    j'ai un probleme avec le script suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?php 
    // connection a la bd et execution de la requete pr remplir la table semaine
     
    $num_semaine = 1;
    $diff=$tsp_jour_fin_annee - $tsp_jour_deb_annee;
    //require('../conn/connexion.php');
    mysql_connect("localhost","root","") or die("Ouverture base impossible"); 
    mysql_select_db("planning");
    // suppression des semaines deja remplies
    mysql_query('DELETE FROM semaine');
    // remplissage de la table semaine 
    $timestamp_fin = '';
    while ($timestamp_fin != $tsp_jour_fin_annee && $num_semaine <=$diff )
    {
    //432000=5 jours et 172800=2jours le week end
    $timestamp_fin = $tsp_jour_deb_annee + 432000;
    mysql_query("INSERT INTO semaine values($num_semaine, $tsp_jour_deb_annee, $timestamp_fin)");
    $tsp_jour_deb_annee = $timestamp_fin + 172800;
    $num_semaine++;
    }
     
    ?>
    en gros c'est un script pour l'insertion des semaines dans une table "semaine" existante dans la base de données, il y a un formulaire ou l'utilisateur selectionne le debut et la fin de l'année, et au niveau de la base je veux que ces dates s'inserent en tant que tiemstamp. mais a chaque fois que j'utilise ce script et je verifie au niveau de la base je me rend compte que toute les semaines de l'année s'inserent, ca veux dire 53 semaines. je sais plus comment faire j'ais reverifier le script, j'ais tout essayer mais en vain. je demande de l'aide et MERCI d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par ned_kelly Voir le message
    1- c'est un script pour l'insertion des semaines dans une table "semaine"
    2- je me rend compte que toute les semaines de l'année s'inserent
    Bonjour,
    ton script est censé faire quoi exactement ?
    Dernière modification par Invité ; 09/04/2009 à 14h24.

  3. #3
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 78
    Par défaut
    oui mais l'insertion des semaines doit dependre des deux dates entrées par l'utilisateur, la date de debut des formation et la dates de fin, je donne un exemple pour que ca soit plus clair : l'utilisateur entre 1 janvier 2009 comme date debut , et 30 janvier 2009 comme date fin . quand il clique sur le boutton, on doit avoir juste 4 semaines au niveau de la table "semaine" pas plus, mais mon script insere 53 semaines (la totalité des semaines de l'année, c-à-d du 1 janvier 2009 au 31 decembre 2009).

  4. #4
    Invité
    Invité(e)
    Par défaut
    En remplacant (je crois) :
    $tsp_jour_deb_annee = $timestamp_fin + 172800;
    par :
    $tsp_jour_deb_fin += 172800;

  5. #5
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 78
    Par défaut
    bonjour,

    merci de m'avoir repondu, juste pour reclarifier de nouveau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //432000=5 jours et 172800=2jours le week end
    		$timestamp_fin = $tsp_jour_deb_annee + 432000;
    		mysql_query("INSERT INTO semaine values($num_semaine, $tsp_jour_deb_annee, $timestamp_fin)");
    		$tsp_jour_deb_annee = $timestamp_fin + 172800;
    		$num_semaine++;
    ce code sert a l'insertion de semaine, la semaine aura comme debut le lundi et samedi comme fin ca veux dire le week end est exclu,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $timestamp_fin = $tsp_jour_deb_annee + 432000;
    ca veux dire qu'on ajoute 5 jours a lundi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tsp_jour_deb_annee = $timestamp_fin + 172800;
    on ajoute 2 jours : samedi et dimanche.

    voilà j'espere qu'il n'y a pas d'autres ambiguités et j'espere que j'aurais une reponse exacte parceque je commence a baisser les bras :s

  6. #6
    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
    Je ne comprends pas ce que tu ecris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $diff=$tsp_jour_fin_annee - $tsp_jour_deb_annee;
    $diff est donc le nombre de secondes entre ton début et ta fin.
    Quel rapport cela a t'il avec $num_semaine ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 78
    Par défaut
    bah je dois avouer que j'ai totalement pas remarqué ca

    mais ce que je voulais faire c'est d'avoir le nombre de semaines du debut de l'année jusqu'a la fin, sauf que j'ai pas fais attention que ca n'a rien a voir avec le num_semaine qui est un entier. bon maintenant je reflechis au fait de convertir le tiemstamp stocké dans la variable: $diff en un entier mais comment faire aucune idée pour l'instant

    merci beaucoup pour la remarque , et si vous avez des solutions a me proposer je suis preneur ..

  8. #8
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 78
    Par défaut
    je sais pas pourquoi je cherche une telle solution!!

    je pense que la variable $diff n'a aucune importance dans ce code.

    bon j'ai remplacé $diff par 53 : c'est le nombre de semaine d'une année et apparemment faut que ca marche, mais le probleme persiste :S

    voila le nouveau code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?php
    if (!empty($_GET['jr_debut']) && !empty($_GET['mois_debut']) && !empty($_GET['jr_fin']) && !empty($_GET['mois_fin']))
    {
    // connection a la bd et execution de la requete pr remplir la table semaine
     
      	$num_semaine = 1;
     
    	//require('../conn/connexion.php');
    	mysql_connect("localhost","root","") or die("Ouverture base impossible"); 
        mysql_select_db("planning");
    	// suppression des semaines deja remplies
        mysql_query('DELETE FROM semaine');
    	// remplissage de la table semaine année= 53 semaines
    	$timestamp_fin = '';
    	while ($timestamp_fin != $tsp_jour_fin_annee && $num_semaine <=53)
    	{
    	//432000=5 jours et 172800=2jours le week end
    		$timestamp_fin = $tsp_jour_deb_annee + 432000;
    		mysql_query("INSERT INTO semaine values($num_semaine, $tsp_jour_deb_annee, $timestamp_fin)");
    		$tsp_jour_deb_annee = $timestamp_fin + 172800;
    		$num_semaine++;
    	}

  9. #9
    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
    Ta méthode entière est à revoir :
    - une journée ne fait pas toujours 24heures (horaire d'été)
    - une année ne fait pas toujours 53 semaines
    donc ton timestamp de début et ton timestamp d'arrivée peuvent ne jamais coincider.

    Il faudrait remettre a plat ce dont tu as besoin comme informations car je ne pense pas qu'utiliser les timestamp pour parcourir des jours soit la meilleure méthode.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 78
    Par défaut
    salut,

    si ma methode n'est pas meilleure proposez moi svp une autre methode ou d'autres idées, bon voilà ce que je veux faire, je veux stockez dans la table "semaine" : le debut de la formation qui sera le premier lundi de la date choisi par l'utilisateur. et je lui ajoute 5 jours afin que dans le 2eme attribut j'aurai le samedi suivant. pares j'ajoute 2 jr (samedi et dimanche) pour exclur le week-end, et ainsi de suite jusqu'a ce que j'arrive au dernier jour des formations qui est determinez par l'utilisateur.

    voilà c'est en gros tout.

    ce qui louche, c'est que les semaines s'enregistrent mais ne respecte pas le debut et la fin determinez par l'utilisateur. je pensais en premier temps que les parametres ne se transmettaient pas, et j'ai mis o lieu du POST un GET et j'ai remarqué que le probleme n'est pas ici.

    en fait pour determinez le 1er lundi et le dernier samedi j'ai un code et qui marche surement. le probleme alors est dans le code que j'ai deja mis dans le post dessus :p .

    s'il y a d'autres methodes sauvez moi svp.

  11. #11
    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
    J'ai bien compris ce que vous cherchez a obtenir mais si on doit revoir le principe il faut surtout savoir ce que vous faites de ces données et pourquoi vous avez besoin de les stocker de cette manière.

    De manière directe, j'aurais besoin de stocker qu'un utilisateur a pris une formation de 24/10/2009 au 04/04/2010, j'enregistrerais simplement ces deux dates au format DATE dans ma base.

    Je suppose que si vous en etes arrivé a vouloir stocker le numero de semaine, des timestamp, et de decouper les plages, c'est que vous avez des problématiques ailleurs.
    Mais peut être qu'il y a plus simple que de les traiter au niveau de la bdd.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  12. #12
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 78
    Par défaut
    bonjour,

    bah l'utilité de la table semaine est d'etre utilisé comme un calendrier où les semaines stockées seront limitées entre un lundi et samedi, le projet sous lequel je travaille est un projet de gestion de planning, j'aurai besoin de la table "semaine" parceque chaque planning concerne une semaine précise.

    l'utilisation des timestamp ici au lieu des dates est inspirée du fait que les timestamp sont plus flexibles a gerer.

  13. #13
    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
    Pour continuer sur mon exemple ou je ne stockerais que la date de debut et la date de fin ; pour afficher le planning de la semaine 36, je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM table WHERE WEEK(datedebut) <= 36 AND WEEK(datefin) >= 36
    et j'ai toutes les formations de cette période.

    Jusque la je suis plus flexible a l'enregistrement et a l'utilisation.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  14. #14
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 78
    Par défaut
    merci SABOTAGE pour tes reponses, j'ais pas essayer la methode mais apperement il est bonne, meme si je crois plus au apparence , me faut l'essayer , mais c' le week-end je pense que je merite du repos alors j'arrete un peu le travail, et dès que je reprend je vous tiendrais au courant.

    dans votre methode vous traitez les dates au niveau de la BD. une premiere reflexion me donne l'impression que ca sera compliqué le fait de gerer l'affichage des dates au niveau de l'IHM .

  15. #15
    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
    Des données bien stockées sont facile a utiliser.

    C'est pour cela qu'il vaut mieux stocker des données "pures" et les travailler quand on a en besoin.

    Pour l'affichage, il suffit de definir les jours qu'on veut afficher, et il n'y a plus qu'a comparer avec les informations qu'on a recuperé de la base.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. [Crystal] transformation d'une date en numéro de semaine
    Par barna dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 24/03/2017, 10h41
  2. [C#] Comment récupérer le numéro de semaine d'une date ?
    Par farfadet dans le forum Windows Forms
    Réponses: 9
    Dernier message: 17/07/2013, 17h33
  3. [excel]calcul du numéro de semaine
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 13/10/2005, 12h57
  4. [Calendar] Problème de numéro de semaine de l'année
    Par gaia_dev dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 29/11/2004, 12h44
  5. Calcul des numéros de semaine d'un calendrier
    Par Invité dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 06/11/2002, 22h29

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