remplir un base MySQL automatiquement à partir d'excel et dans différentes tables

antbal
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 2
Inscription: 23 Sep 2011

remplir un base MySQL automatiquement à partir d'excel et dans différentes tables

Message le Ven Sep 23, 2011 10:02

Bonjour à tous,

mon cas est un peu complexe. J'aimerai savoir si il serait possible à partir d'un fichier excel de remplir une base de données sur différentes tables. La base (en MySQL), les tables et les propriétés (types de data dans les tables), sont déjà crées devront pouvoir continuer d'être rempli par formulaire après ce remplissage. Les tables sont également reliées entre elles.

L'objectif est de remplir différentes propriétés (dans différentes tables) tout en reliant ces propriétés.

En bref, comment garder les relations des colonnes d'excel alors qu'elles vont être dispersée dans plusieurs table, tout en ayant un remplissage automatique ?


exemple : j'ai une liste d'entreprise, leurs adresses et leurs numéro de téléphone, fax et email et service

Ma table principale est entreprise qui contient en propriétés (nom, années de création, CA, ect)
mes tables secondaires sont :
-contacts avec comme propriétés : nom du service, téléphone, email, fax
-sites avec comme propriétés : adresse, ville, pays et code postal


si les tables secondaires existent c'est parce qu'une entreprise peut avoir plusieurs sites et plusieurs services.

Peut importe la mise en forme sous excel je peux la retoucher selon vos solutions (si elles existent).


Merci d'avance


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3974
Inscription: 16 Nov 2004

Re: remplir un base MySQL automatiquement à partir d'excel et dans différentes tables

Message le Sam Sep 24, 2011 2:45

1° exporter votre fichier au format CVS standard depuis excel
2° placez votre fichier dans un tableau ligne par ligne

Code: Tout sélectionner
if (($handle = fopen("files/".$_nomdufichier."", "r")) !== FALSE) {

   while (($data = fgetcsv($handle, 3000, ",")) !== FALSE) {
        $num = count($data);
        $row++;
        for ($c=0; $c < $num; $c++) {
            $tab[] = $data[$c];
        }
    }
}
fclose($handle);


3° ensuite il vous faut tester chaque ligne selon vos besoins

Code: Tout sélectionner
$i=0;
while ($i < count($tab)) {
   preg_match_all('#([^;]+)#',$tab,$out);
   
   if (condition)    UPDATE(table  SET champ = $out[0][1] )
 
}


Koogar


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités