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éros de semaines


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 15
    Par défaut Numéros de semaines
    Bonjour,

    J'aimerai traduire un champ date (de format date classique) d'une table de ma base de donnée, en numéro se semaine.
    Mais ne sais absolument pas comment m'y prendre... une idée??
    Merci beaucoup

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut

    En PHP : tout est dans la doc : ici. Regarde le paramètre 'W'
    En base de données, il faudrait préciser quel SGBD tu utilises.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 15
    Par défaut
    Merci,
    C'est la première fois que je fais ça, alors je ne sais carrément pas comment m'y prendre.
    Est-ce que dois mettre directement une formule dans le champ de la base de donnée? Là, j'ai mis en champ en date, mais je ne vois rien pour convertir cela en numéro de semaine...

  4. #4
    Membre émérite
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Par défaut
    Salut,

    Suffit de convertir la date récupérée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $date = new DateTime($dateBdd);
    $numSemaine = $date->format('W');
    echo $numSemaine;

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2013
    Messages : 22
    Par défaut
    Dans ta table, ton champs ne doit pas etre au format date mais en numérique alors.
    Et, dans ton php tu transformes ta variable date.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 15
    Par défaut
    Merci pour vos réponses.
    Quand je fais ma requête:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $req = $DB->query('SELECT id,title,date,datemaj FROM events etc...

    Est-ce que je peux insérer une fonction pour directement convertir le contenu de mon champ date?

  7. #7
    Membre émérite
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Par défaut
    Si tu veux récupérer le numéro de semaine directement dans ta requête tu peut faire ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $req = $DB->query('SELECT id, title, date, DATE_FORMAT(dateMaj, "%U") AS numSemaine FROM events');

  8. #8
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2013
    Messages : 22
    Par défaut
    Essai le code ici

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 15
    Par défaut
    Merci Amoiraud, je n'ai pas d'affichage de bug en mettant en place ta requête.
    Par contre, je n'obtiens pas la date convertie en numéro de semaine...

    Je n'obtiens rien du tout... voici le résultat de la requête:
    (
    [0] => Array
    (
    [2] => Array
    (
    [numéro semaine] => Array
    (
    [2013-08-06 10:46:47] => Test
    )

    )

    )

    )
    ce que je voudrais convertir, c'est "date" et non "datemaj", mais je l'ai corrigé dans le requête, et cela ne fonctionne pas.
    Dans le crochet contenant "numéro semaine", je n'ai plus rien, c'est vide, alors qu'avant, j'avais la date, renvoyée par la base de données...
    Mais je pense qu'on est sur la bonne voie, c'est super!

  10. #10
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Il faudrait quand même que tu répondes à la question concernant le SGBD sur lequel tu travailles.
    Et ensuite : donner le format de la date dans la base de données.

    Enfin à tout hasard y a des chances que le mot "date" soit un mot réservé donc il faudrait l'écrire comme ça `date` avec les `` autour

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 15
    Par défaut
    Oui, pardon, j'ai oublié, je travaille avec MySQL, version 5.5.24.
    J'utilise Wamp.
    J'ai essayé de mettre les cotes autour de `date`, mais ça ne change rien...
    Mon format de date dans la base de données est de type aaaa-mm-jj

  12. #12
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Bon, est ce que ceci te renvoie quelque chose de viable :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT WEEK(`date`, 3) FROM `events`

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 15
    Par défaut
    Merci, mais non, cela me renvoie une page blanche.

    Mais quand j'ai cette requête :
    $req = $DB->query('SELECT id, title, datemaj, date FROM events');
    On a une bonne lecture de ce qu'il y a dans la base de données, étant donné qu'on obtient:
    Array
    (
    [0] => Array
    (
    [2] => Array
    (
    [2013-01-06] => Array
    (
    [2013-08-06 10:46:47] => Capacité de production disponible
    )

    )

    )

    )
    [2013-01-06] correspond à ce qu'il y a dans la colonne date, et que je voudrais convertir en numéro de semaine

  14. #14
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Je voudrais savoir comme un simple SELECT comme le tien peut te renvoyer un tableau multidimensionnel comme celui que tu indiques :
    array(
        0 => array(
            2 => array(
                '2013-01-06' => array(
                    '2013-08-06 10:46:47' => 'Capacité de production disponible'
                )
            )
        )
    )
    Tous les codes qui t'ont été proposés sont corrects, essaie les dans phpmyadmin, tu verras, le problème est ailleurs.

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 15
    Par défaut
    En fait, j'ai deux fichiers principaux :
    mon index.php:
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    <body>
            <?php
          	require('config.php');
            require('date.php');
            $date = new Date();
            $year = date('Y');
    		$events = $date->getEvents($year);
            $dates = $date->getAll($year);
            ?>
            <div class="periods">
                <div class="year"><?php echo $year; ?></div>
     
               <?php date('W'); ?>
     
                <?php $dates = current($dates); ?>
                <?php foreach ($dates as $d=>$semaines): ?>
                   <div class="semaine" id="semaine<?php echo $d; ?>">
     
     
     
                  <table>
     
    <?php foreach (array_chunk($semaines, 8) as $row) { ?>
        <tr>
        <?php foreach ($row as $date) { ?>
            <td>	
            	<div class="relative">
                	<div class="day"><?php echo $d; ?></div>
               	</div>
                     <div class="daytitle">
                     <?php echo ('Semaine&nbsp;'); ?><?php echo $d; ?>
                     </div>
                          <ul class="events">
                           <?php if(isset($events[$time])): foreach($events[$time] as $e): ?>
                                 <li><?php echo $e; ?></li>
                                     <?php endforeach; endif;  ?>
                          </ul>
     
             </td>
        <?php } ?>
        </tr>
    <?php } ?>
    </table>
     
                   <table>
                       <thead>
                           <tr>
                             <?php $end = end($semaines); foreach($semaines as $d=>$w): ?>
     
                               <td>
                                    <div class="relative">
                                        <div class="day"><?php echo $d; ?></div>
                                    </div>
                                   <div class="daytitle">
                                       <?php echo ('Semaine&nbsp;'); ?><?php echo $d; ?>
                                   </div>
                                   <ul class="events">
                                       <?php if(isset($events[$time])): foreach($events[$time] as $e): ?>
                                            <li><?php echo $e; ?></li>
                                       <?php endforeach; endif;  ?>
                                   </ul>
                               </td>
                                </tr><tr>
                           <?php endforeach; ?>
                                <td class="padding"></td>
                           </tr>
                       </thead>
                       <tbody>
                           <tr>
     
                           </tr>
                       </tbody>
                   </table>
                   </div>
                <?php endforeach; ?>
            </div>
            <div class="clear"></div>
            <pre><?php print_r($events); ?></pre>
        </body>
    Mon fichier date.php:
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    <?php
    class Date{
     
    	var $semaines     = array('S01', 'S02', 'S03', 'S04', 'S05', 'S06', 'S07', 'S08', 'S09', 'S10', 'S11', 'S12', 'S13', 'S14', 'S15', 'S16', 'S17', 'S18', 'S19', 'S20', 'S21', 'S22', 'S23', 'S24', 'S25', 'S26', 'S27', 'S28', 'S29', 'S30', 'S31', 'S32', 'S33', 'S34', 'S35', 'S36', 'S37', 'S38', 'S39', 'S40', 'S41', 'S42', 'S43', 'S44','S45','S46','S47','S48','S49','S50','S51','S52','S01');
     
        function getEvents($year){
            global $DB;
    		$req = $DB->query('SELECT id,title, WEEK(date, "%U") FROM events WHERE YEAR(date)='.$year);
            $r = array();
     
            while($d = $req->fetch(PDO::FETCH_OBJ)){
     
    			 $r[strtotime($d->date)][$d->id]= $d->title;
            }
     
            return $r;
        }
     
        function getAll($year){
            $r = array();
     
            $date = new DateTime($year.'-01-01');
            while($date->format('Y') <= $year){
     
                $y = $date->format('Y');
                $d = $date->format('W');
                $w = $date->format('w');
                $r[$y][$m][$d] = $w;
                $date->add(new DateInterval('P1W'));
            }
            return $r; 
        }
     
    }
    et le fichier config.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    try{
        $DB = new PDO('mysql:host=localhost;dbname=calendrier','root','',array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8'));
    }
    catch(PDOException $e){
        echo 'Erreur de connexion';
        exit();
    }
    ?>
    Mais je ne vois vraiment pas où est le souci!!

  16. #16
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Euh tu t'es mélangé les pinceaux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req = $DB->query('SELECT id,title, WEEK(date, "%U") FROM events WHERE YEAR(date)='.$year);
    C'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req = $DB->query('SELECT id, title, `date`, WEEK(`date`, 3) AS num_semaine FROM events WHERE YEAR(date)='.$year);
    et dans ce bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $r[strtotime($d->date)][$d->id]= $d->title;
    je ne vois pas où tu récupères le numéro de semaine...

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 15
    Par défaut
    ok, mais ça ne change toujours rien...

  18. #18
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Je me cite :
    Citation Envoyé par rawsrc Voir le message
    je ne vois pas où tu récupères le numéro de semaine...

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 15
    Par défaut
    Ben le numéro de la semaine est déclaré dans date.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $d = $date->format('W');
    Puis je récupère mes noms de semaine dans un array dans index.php, mais j'ai des soucis pour mettre mon tableau en forme aussi, j'ai réussi à le mettre "en page", mais les valeurs de mes numéros de semaines ne s'affichent pas...

    Brefs j'ai quelques soucis!!!

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, 09h41
  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, 16h33
  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, 11h57
  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, 11h44
  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, 21h29

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