Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/02/2008, 15h02   #1
Invité régulier
 
Inscription : janvier 2008
Messages : 29
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 29
Points : 5
Points : 5
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
Type de fichier : xls Classeur1.xls (58,0 Ko, 9 affichages)
scofield69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2008, 13h57   #2
Membre Expert
 
Inscription : août 2002
Messages : 1 036
Détails du profil
Informations forums :
Inscription : août 2002
Messages : 1 036
Points : 1 166
Points : 1 166
Bonjour,

Sans m'attarder sur le reste, qui n'est pas du tout limpide, un année peut comporter 53 semaines.
jeca est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2008, 16h43   #3
Invité régulier
 
Inscription : janvier 2008
Messages : 29
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 29
Points : 5
Points : 5
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?
scofield69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2008, 18h48   #4
Membre Expert
 
Inscription : août 2002
Messages : 1 036
Détails du profil
Informations forums :
Inscription : août 2002
Messages : 1 036
Points : 1 166
Points : 1 166
Si tu cherches à mettre en colonne ce qui est en ligne, un truc comme ça doit faire :
Code :
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);
jeca est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 11h34   #5
Invité régulier
 
Inscription : janvier 2008
Messages : 29
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 29
Points : 5
Points : 5
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 :
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!!
scofield69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h24.


 
 
 
 
Partenaires

Hébergement Web