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 :

Comment Importer automatiquement un fichier cvs dans ma table Phpmyadmin [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    460
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 460
    Par défaut Comment Importer automatiquement un fichier cvs dans ma table Phpmyadmin
    Bonjour,

    Je bloque pour importer Importer automatiquement un fichier cvs dans ma table Phpmyadmin


    J'aurai besoin d'aide car je suis bloquer dans mon projet et surtout faire la manip à la main me prend bcp de temps.

    Voici ma table dan phpmyadmin :
    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
    Structure de la table `tfi2003_contacts`
    #
     
    DROP TABLE IF EXISTS tfi2003_contacts;
    CREATE TABLE tfi2003_contacts (
      id_contact int(11) NOT NULL auto_increment,
      id_cat int(11) NOT NULL default '0',
      societe varchar(128) NOT NULL default '',
      titre varchar(64) NOT NULL default '',
      nom varchar(128) NOT NULL default '',
      prenom varchar(128) NOT NULL default '',
      rue varchar(128) NOT NULL default '',
      no varchar(16) NOT NULL default '',
      cp varchar(8) NOT NULL default '',
      localite varchar(128) NOT NULL default '',
      region varchar(64) NOT NULL default '',
      pays varchar(64) NOT NULL default '',
      phone varchar(25) NOT NULL default '',
      phone2 varchar(25) NOT NULL default '',
      fax varchar(25) NOT NULL default '',
      email varchar(255) NOT NULL default '',
      website varchar(255) NOT NULL default '',
      note longtext NOT NULL,
      PRIMARY KEY  (id_contact)
    ) TYPE=MyISAM COMMENT='Table des contacts';
    comment puis-je faire cela automatiquement si c'est possible ?
    ou dois-je placer le code ? à quel endroit ?

    MERCI POUR VOTRE AIDE CAR j'arrive pas à avancer MERCI

    ci-dessous un exemple mais est-il adaptable pour mon cas ???

    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
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    <?php 
    ////include ("inc/prive.inc.php");
    include("../haut.inc.php");
    include ("../inc/fonctions.inc.php");
    ////include ("config/constantes.inc.php");
    Normalisation();
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
      <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
      <title>Gestion de l'importation des données de Sconet</title>
    <a href="index.php">****Accueil Général de la Gestion des sanctions du collège Ponsard****</a>
        <script language="javascript" type="text/javascript" src="inc/fonctions.js">
      </script>
    </head>
    <body>
    <?php
    // autorisations pour la page
    ////autoriser ("admin");
    // menu
    //require ("inc/menu.inc.php");
    ?>
    <div id="texte">
    <h2>Importation du fichier CSV de Sconet, cette importation est longue, veuillez patienter</h2>
    <?php
    $mode = isset($_POST['mode']) ? $_POST['mode'] : Null;
     
    switch ($mode)
     {
     case 'Confirmer': 
    	// ouvrir la BD
    	include ("../variables.inc.php");
    	$lienDB = mysql_connect($bddserver, $bddlogin, $bddpassword);
    	mysql_select_db ($bdd);
    			//Vide la table 'nom_de_la_table'
    	$query = "DELETE FROM elevescomplete";
    	$result = mysql_query($query);
    	echo $query;
    	$handle = fopen("./eleves.csv", "r");
    	$ligne = 1;
     
    	while (($data = fgetcsv($handle, 5000, ";","\"")) !== FALSE) 
    		{
    		$num = count($data);
    		if ($ligne == 1)
    			{
    			// sur la première ligne, on trouve les intitulés des colonnes
     
     
    			$debutsql = "INSERT INTO elevescomplete (";
    			for ($i=0; $i < $num; $i++) 
    				{
    				$debutsql .= "`$data[$i]";
    				if ($i < $num-1) $debutsql .= "`,";
    				}
    			$debutsql .= "`) VALUES (";
    			}
    			else
    			{
    			// sur les lignes suivantes, on trouve les infos à introduire dans la BD
    			$sql = $debutsql;
    			for ($i=0; $i < $num; $i++) 
    				{
    				$sql .= "'".mysql_real_escape_string($data[$i])."'";
    				if ($i < $num-1) $sql .= ","; else $sql .= ");";
    				}
    			mysql_query($sql);
    			if (mysql_error()) 
    				{ 
    				echo mysql_error() ."<br>\n";  
    				$erreur = true;
    				}
    			}
    			$ligne++;
    			//echo "$sql <br />";
    			//mysql_query($sql);
     
    		}
            echo "L'importation des données semble s'être bien passée.";
    		fclose($handle);
    		mysql_close ($lienDB);
            if ($erreur == false)
    			{
    			$texte = "L'importation des données semble s'être bien passée.";
    			//redir ("index.php","",$texte, 5000);
                }
    			else 
    			{
    			$texte = "Il s'est produit une erreur durant l'importation.";
    			//redir ("index.php","",$texte, 10000);
    			}
     break;
     case 'Envoyer':
    	// recopie du fichier sous un nom définitif
    	$nomTemporaire = $_FILES['fichierCSV']['tmp_name'];
    	if( !move_uploaded_file($nomTemporaire, "./eleves.csv") )
    		exit("Impossible de copier le fichier.");
     
    		echo "<div style=\"text-align: center\">\n";
            echo "<form name=\"form1\" method=\"post\" action=\"{$_SERVER['PHP_SELF']}\">\n";
            echo "<p>Le fichier CSV a été copié sur le serveur.</p>\n";
            echo "<p>Veuillez confirmer l'exportation des données.</p>\n";
    		echo "<p>\n<input type=\"reset\" name=\"submit\" value=\"Annuler\"";
    		echo "onclick=\"javascript:history.go(-1)\">\n";
            echo "<input type=\"submit\" value=\"Confirmer\" name=\"mode\"></p>\n";
            echo "</form>\n";
            echo "</div>\n";
     
    	// tableau de prévisualisation
    	echo "<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\">\n";
    	$handle = fopen("./eleves.csv", "r");
    	//while (($data = fgetcsv($handle, 5000, ",","\"")) !== FALSE) 
    	while (($data = fgetcsv($handle, 5000, ";","\"")) !== FALSE) 
    		{
    		$num = count($data);
    		echo "<tr>\n";
    		for ($i=0; $i < $num; $i++) 
    			echo "<td>".$data[$i] . "</td>\n";
    		echo "</tr>\n";
    		}
    	fclose($handle);
    	echo "</table>\n";
    	break;
     default:
    	echo "<form method=\"post\" action=\"{$_SERVER['PHP_SELF']}\" ";
    	echo "name=\"form1\" enctype=\"multipart/form-data\">\n";
    	echo "<input name=\"fichierCSV\" type=\"file\">\n";
    	echo "<input name=\"mode\" value=\"Envoyer\" type=\"submit\">\n";
    	echo "</form>\n";
     break;
     }
    ?>
    </div>
     
    </body>
    </html>
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2010
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2010
    Messages : 347
    Par défaut
    Tu vas dans importer et tu cliques sur parcourir pour choisir le fichier zip que tu veux importer.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    460
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 460
    Par défaut
    Citation Envoyé par feldi Voir le message
    Tu vas dans importer et tu cliques sur parcourir pour choisir le fichier zip que tu veux importer.
    Mais ce que j'essai de faire si tu as lu le code plus haut c'est d 'importer automatiquement! merci au expert pour m 'aider dans ma démarche car sous PHPmyadmin cela existe.

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2010
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2010
    Messages : 347
    Par défaut
    T'as essayé de modifier comme ça :
    ligne 37 à 51 :

    Code php : 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
    $query = "DELETE FROM tfi2003_contacts";
    	$result = mysql_query($query);
    	echo $query;
    	$handle = fopen("./tfi2003_contacts.csv", "r");
    	$ligne = 1;
     
    	while (($data = fgetcsv($handle, 5000, ";","\"")) !== FALSE) 
    		{
    		$num = count($data);
    		if ($ligne == 1)
    			{
    			// sur la première ligne, on trouve les intitulés des colonnes
     
     
    			$debutsql = "INSERT INTO tfi2003_contacts(";

    et remplacer les noms eleve.csv en tfi2003_contacts.csv ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    460
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 460
    Par défaut
    Bonjour

    J'avais en tête de modifier mais je pense que la problématique est bien plus compliqué que cela j'ai testé comme vous m'aviez dit mais cela ne fonctionne pas. Je pense qu'il faut placer le code à un bon endroit avec un lien mais je ne vois pas où Y-a-t-il des experts ? qui maîtrise le pHp et sql pour mon cas

    faire au plus simple merci pour votre aide


    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
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    <?php 
    ////include ("inc/prive.inc.php");
    include("../haut.inc.php");
    include ("../inc/fonctions.inc.php");
    ////include ("config/constantes.inc.php");
    Normalisation();
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
      <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
      <title>Gestion de l'importation des données de Sconet</title>
    <a href="index.php">****Accueil Général de la Gestion des sanctions du collège Ponsard****</a>
        <script language="javascript" type="text/javascript" src="inc/fonctions.js">
      </script>
    </head>
    <body>
    <?php
    // autorisations pour la page
    ////autoriser ("admin");
    // menu
    //require ("inc/menu.inc.php");
    ?>
    <div id="texte">
    <h2>Importation du fichier CSV de Sconet, cette importation est longue, veuillez patienter</h2>
    <?php
    $mode = isset($_POST['mode']) ? $_POST['mode'] : Null;
     
    switch ($mode)
     {
     case 'Confirmer': 
    	// ouvrir la BD
    	include ("../variables.inc.php");
    	$lienDB = mysql_connect($bddserver, $bddlogin, $bddpassword);
    	mysql_select_db ($bdd);
    			//Vide la table 'nom_de_la_table'
    	$query = "DELETE FROM elevescomplete";
    	$result = mysql_query($query);
    	echo $query;
    	$handle = fopen("./tfi2003_contacts.csv", "r");
    	$ligne = 1;
     
    	while (($data = fgetcsv($handle, 5000, ";","\"")) !== FALSE) 
    		{
    		$num = count($data);
    		if ($ligne == 1)
    			{
    			// sur la première ligne, on trouve les intitulés des colonnes
     
     
    			$debutsql = "INSERT INTO elevescomplete (";
    			for ($i=0; $i < $num; $i++) 
    				{
    				$debutsql .= "`$data[$i]";
    				if ($i < $num-1) $debutsql .= "`,";
    				}
    			$debutsql .= "`) VALUES (";
    			}
    			else
    			{
    			// sur les lignes suivantes, on trouve les infos à introduire dans la BD
    			$sql = $debutsql;
    			for ($i=0; $i < $num; $i++) 
    				{
    				$sql .= "'".mysql_real_escape_string($data[$i])."'";
    				if ($i < $num-1) $sql .= ","; else $sql .= ");";
    				}
    			mysql_query($sql);
    			if (mysql_error()) 
    				{ 
    				echo mysql_error() ."<br>\n";  
    				$erreur = true;
    				}
    			}
    			$ligne++;
    			//echo "$sql <br />";
    			//mysql_query($sql);
     
    		}
            echo "L'importation des données semble s'être bien passée.";
    		fclose($handle);
    		mysql_close ($lienDB);
            if ($erreur == false)
    			{
    			$texte = "L'importation des données semble s'être bien passée.";
    			//redir ("index.php","",$texte, 5000);
                }
    			else 
    			{
    			$texte = "Il s'est produit une erreur durant l'importation.";
    			//redir ("index.php","",$texte, 10000);
    			}
     break;
     case 'Envoyer':
    	// recopie du fichier sous un nom définitif
    	$nomTemporaire = $_FILES['fichierCSV']['tmp_name'];
    	if( !move_uploaded_file($nomTemporaire, "./tfi2003_contacts.csv") )
    		exit("Impossible de copier le fichier.");
     
    		echo "<div style=\"text-align: center\">\n";
            echo "<form name=\"form1\" method=\"post\" action=\"{$_SERVER['PHP_SELF']}\">\n";
            echo "<p>Le fichier CSV a été copié sur le serveur.</p>\n";
            echo "<p>Veuillez confirmer l'exportation des données.</p>\n";
    		echo "<p>\n<input type=\"reset\" name=\"submit\" value=\"Annuler\"";
    		echo "onclick=\"javascript:history.go(-1)\">\n";
            echo "<input type=\"submit\" value=\"Confirmer\" name=\"mode\"></p>\n";
            echo "</form>\n";
            echo "</div>\n";
     
    	// tableau de prévisualisation
    	echo "<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\">\n";
    	$handle = fopen("./tfi2003_contacts.csv", "r");
    	//while (($data = fgetcsv($handle, 5000, ",","\"")) !== FALSE) 
    	while (($data = fgetcsv($handle, 5000, ";","\"")) !== FALSE) 
    		{
    		$num = count($data);
    		echo "<tr>\n";
    		for ($i=0; $i < $num; $i++) 
    			echo "<td>".$data[$i] . "</td>\n";
    		echo "</tr>\n";
    		}
    	fclose($handle);
    	echo "</table>\n";
    	break;
     default:
    	echo "<form method=\"post\" action=\"{$_SERVER['PHP_SELF']}\" ";
    	echo "name=\"form1\" enctype=\"multipart/form-data\">\n";
    	echo "<input name=\"fichierCSV\" type=\"file\">\n";
    	echo "<input name=\"mode\" value=\"Envoyer\" type=\"submit\">\n";
    	echo "</form>\n";
     break;
     }
    ?>
    </div>
     
    </body>
    </html>

  6. #6
    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 : 49
    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
    Bonjour,

    Pour les importations de fichier, tu as à ta disposition LOAD_DATA_INFILE qui importe dans une table et à grande vitesse les données des fichiers textes/csv.

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

Discussions similaires

  1. Importer automatiquement un fichier cvs dans ma table Mysql
    Par nader1987 dans le forum Administration
    Réponses: 1
    Dernier message: 25/04/2012, 22h21
  2. [AC-2007] Import automatique de fichiers text dans une table unique
    Par dol75 dans le forum VBA Access
    Réponses: 1
    Dernier message: 06/10/2009, 13h20
  3. [XL-2003] Importer automatiquement un fichier CSV dans une feuille
    Par Mikayel dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/06/2009, 10h35
  4. importation d'un fichier txt dans une table
    Par pierre.egaud dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/09/2006, 16h26
  5. Réponses: 7
    Dernier message: 04/10/2005, 18h21

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