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 :

[SQL] Insertion de fichier en base


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 29
    Par défaut [SQL] Insertion de fichier en base
    Bonjour à tous!

    Voici mon problème:

    Volonté de départ:

    J'ai un fichier en .csv à uploader en base (via PhpMyAdmin) de façon hebdomadaire.
    Je selectionne les différentes colonnes de ce fichier que je souhaite mettre dans ma base.
    J'ai donc déjà créer ma tables et donc mes différents champs.

    Le problème:

    Dans ce fichier, il y a des colonnes comportant les numéros de semaines de l'année (de S1 à S52).
    Chaque semaine (représenté par une colonne) correspond une valeur que je souhaite afficher dans ma base.
    Mais je ne sais pas comment créer une fonction qui me charge automatiquement le numéro de semaine suivante en fonction de sa valeure.

    Ce que j'ai déjà fait:

    J'ai donc déjà crée ma table sous PhpMyAdmin avec les champs suivants: ID, Département ID, Année, Numéro de semaine et indice qui doit etre associé à chaque semaine.
    J'ai crée une page Php qui me permet de charger ces données.
    J'ai aussi crée une requete SQL (en include dans le fichier php) avec les requetes correspondantes aux champs que je souhaite incrémenter.


    J'aimerais donc que vous m'aidiez à trouver cette fonction qui me permettrais d'incrémenter les semaines de la facon suivante:

    S1 S2 S3 S4 S5 S6 ................................ S52
    12 23 45 2 65 12 ................................ 41

    Voici mon fichier pour mieux comprendre

    Merci à tous de votre aide, c'est assez urgent.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    Bonjour,

    Sans m'attarder sur le reste, qui n'est pas du tout limpide, un année peut comporter 53 semaines.

  3. #3
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 29
    Par défaut
    Citation Envoyé par jeca Voir le message
    Bonjour,

    Sans m'attarder sur le reste, qui n'est pas du tout limpide, un année peut comporter 53 semaines.

    Je me suis mal exprimé lors de mon message?

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    Si tu cherches à mettre en colonne ce qui est en ligne, un truc comme ça doit faire :
    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
    <?php
      function litFic($fichier, $annee)
      {
        global $connexion;
     
        $f = fopen($fichier, 'r');
        $i = 0;
        while (($ligne = fgetcsv($f, 4096, ',')) !== FALSE)
        {
          $nb = sizeof($ligne) - 6;
          $j = 0;
          while ($j < $nb)
          {
            $sql = 'insert into test (id, no_dep, annee, no_semaine, indice)
                    values(0, \'' . $ligne[2] . '\', \'' . $annee . '\', ' . $j . ', ' . $ligne[$j + 6] . ')';
            mysql_query($sql, $connexion);
            $j ++;
          }
          $i ++;
        }
        fclose($f);
      }
    //-----------------------------------------------------
    //-----------------------------------------------------
    //-----------------------------------------------------
     
    //-- à remplacer par tes paramètres de connexion ----------
      include ('SetPath.php');
     
      $connexion = connexion();
     
      $fichier = 'test.csv';
      $annee = 2007;
     
      litFic($fichier, $annee);

  5. #5
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 29
    Par défaut
    Citation Envoyé par jeca Voir le message
    Si tu cherches à mettre en colonne ce qui est en ligne, un truc comme ça doit faire :
    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
    <?php
      function litFic($fichier, $annee)
      {
        global $connexion;
     
        $f = fopen($fichier, 'r');
        $i = 0;
        while (($ligne = fgetcsv($f, 4096, ',')) !== FALSE)
        {
          $nb = sizeof($ligne) - 6;
          $j = 0;
          while ($j < $nb)
          {
            $sql = 'insert into test (id, no_dep, annee, no_semaine, indice)
                    values(0, \'' . $ligne[2] . '\', \'' . $annee . '\', ' . $j . ', ' . $ligne[$j + 6] . ')';
            mysql_query($sql, $connexion);
            $j ++;
          }
          $i ++;
        }
        fclose($f);
      }
    //-----------------------------------------------------
    //-----------------------------------------------------
    //-----------------------------------------------------
     
    //-- à remplacer par tes paramètres de connexion ----------
      include ('SetPath.php');
     
      $connexion = connexion();
     
      $fichier = 'test.csv';
      $annee = 2007;
     
      litFic($fichier, $annee);

    Merci beaucoup jeca!

    J'essaie ca et je te dis ensuite!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Insertion de fichiers dans une base de données sql server
    Par stefsas dans le forum Accès aux données
    Réponses: 1
    Dernier message: 30/06/2010, 20h22
  2. Réponses: 4
    Dernier message: 12/10/2006, 17h48
  3. [SQL] Importer un fichier .sql dans une base de données avec PHP
    Par budiste dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 23/06/2006, 14h15
  4. Réponses: 4
    Dernier message: 03/03/2006, 10h39
  5. [Conception] insertion sql en php, dans une base de donnée ?
    Par artotal dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 24/10/2005, 04h34

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