Page 1 sur 1

inserer contenu de fichier csv dans base mysql

Posté : 09 juil. 2007, 23:29
par ninous
Bonjour a tous le monde ;

Voila j'ai trouvé un script sur le web me permettant d'insérer le contenu d'un fichier CSV dans une table MySQL. J'ai mis ce script dans un fichier php, j'ai donné a $fileName comme valeur le nom de mon fichier, a $tableName le nom de la table qui recevra les données. Au lancement voici sur quoi je tombe :

Parse error: parse error in c:\web\csv\index.php on line 3

voici le code :
<?php

 $fileName  : insert.csv
 $tableName : nom_prenom
 $con       : 1
function insertIntoTable( $fileName, $tableName, $con )
{
    $file = fopen( $fileName, 'r' );
    $k = 0;
  
    while ( ! feof( $file ) )
    {
        $k++;
        $line = fgets( $file, 1024 );

        if ( strlen( $line ) > 2 )
        {
            $line = addslashes( $line );
            $line = str_replace( ";", "', '", $line );
            $requete = 'INSERT INTO '.$tableName.' VALUES ( \''.$line.'\' ) ';
            if ( ! mysql_query( $requete, $con ) )
                echo 'Erreur Ligne '.$k.' : '.mysql_error().'<br>'.$requete.'<br>';
        } 
        else
            echo 'Ligne '.$k.' ignorée.<br>';
    }

    echo '<p>Insertion du fichier '.$fileName.' terminé.</p><hr>';

    fclose( $file );
}

?>
Quelqu'un a t'il une idée ?

Merci d'avance a tous

Posté : 10 juil. 2007, 00:23
par chrislabricole
essaye de mettre sa :
 $fileName  = "insert.csv";
 $tableName= "nom_prenom";
 $con       ="1";
à la place de sa :
 $fileName  : insert.csv
 $tableName : nom_prenom
 $con       : 1  

Posté : 10 juil. 2007, 09:41
par Invité
essaye de mettre sa :
 $fileName  = "insert.csv";
 $tableName= "nom_prenom";
 $con       ="1";
à la place de sa :
 $fileName  : insert.csv
 $tableName : nom_prenom
 $con       : 1  
bonjour et merci pour ton aide ;

non ca marche toujours pas meme erreur

Posté : 10 juil. 2007, 09:43
par ninous
essaye de mettre sa :
 $fileName  = "insert.csv";
 $tableName= "nom_prenom";
 $con       ="1";
à la place de sa :
 $fileName  : insert.csv
 $tableName : nom_prenom
 $con       : 1  
bonjour et merci pour l'aide

il n'y a plus d'erreur mais les données se sont pas inseré dans la table nom_prenom

merci encore

Posté : 10 juil. 2007, 09:47
par zeus
Est-ce que tu as réalisé la connexion à la base de données avant l'appel à la fonction ?
Dans le corps de la fonction, je vois un mysql_query() mais aucun mysql_connect() :-k

De plus, pour insérer du CSV dans une table MySQL, il existe la commande SQL LOAD DATA INFILE

Posté : 10 juil. 2007, 14:52
par Invité
Est-ce que tu as réalisé la connexion à la base de données avant l'appel à la fonction ?
Dans le corps de la fonction, je vois un mysql_query() mais aucun mysql_connect() :-k

De plus, pour insérer du CSV dans une table MySQL, il existe la commande SQL LOAD DATA INFILE
et comme ca :

<?php require_once('Connections/exercice.php'); ?>
<?php
mysql_select_db($database_exercice, $exercice);
$query_Recordset1 = "SELECT * FROM csv";
$Recordset1 = mysql_query($query_Recordset1, $exercice) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);


 $fileName  = "insert.csv";
 $tableName = "nom_prenom";
 $con       = "1";
function insertIntoTable( $fileName, $tableName, $con )
{
    $file = fopen( $fileName, 'r' );
    $k = 0;
  
    while ( ! feof( $file ) )
    {
        $k++;
        $line = fgets( $file, 1024 );

        if ( strlen( $line ) > 2 )
        {
            $line = addslashes( $line );
            $line = str_replace( ";", "', '", $line );
            $requete = 'INSERT INTO '.$tableName.' VALUES ( \''.$line.'\' ) ';
            if ( ! mysql_query( $requete, $con ) )
                echo 'Erreur Ligne '.$k.' : '.mysql_error().'<br>'.$requete.'<br>';
        } 
        else
            echo 'Ligne '.$k.' ignorée.<br>';
    }

    echo '<p>Insertion du fichier '.$fileName.' terminé.</p><hr>';

    fclose( $file );
}


mysql_free_result($Recordset1);
?>

merci pour ton aide[/code]

Posté : 10 juil. 2007, 15:31
par zeus
A quel endroit appelles-tu la fonction insertIntoTable() ? ;)

Posté : 11 juil. 2007, 08:57
par Invité
A quel endroit appelles-tu la fonction insertIntoTable() ? ;)
tout le code est la, je comprends pas ta question.

Merci encore pour l'aide

Posté : 11 juil. 2007, 09:35
par zeus
Dans le code que tu nous montres, tu créer la fonction InserToTable(), mais tu ne l'appelles jamais.

Pour faire une métaphore, c'est comme si tu préparais un joli feu d'artifice, mais que tu n'allumais jamais la mèche ;)

Regarde ce code que j'ai commenté et légèrement modifié et essaye de comprendre ce que j'ai fait ;)
<?php 
// Je pense que la connexion à la base de données doit se trouver dans ce fichier
require_once('Connections/exercice.php');

// Sélection de la base de données à utiliser
mysql_select_db($database_exercice, $exercice);

/* Tout le contenu de ce commentaire est inutile. En effet, pas besoin de SELECT pour un INSERT.
Tu peut donc le supprimer
$query_Recordset1 = "SELECT * FROM csv";
$Recordset1 = mysql_query($query_Recordset1, $exercice) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);*/


$fileName  = "insert.csv";
$tableName = "nom_prenom";
$con       = "1";

// Définition de la fonction permettant d'insérer le CSV dans la base de données
function insertIntoTable( $fileName, $tableName, $con )
{
    $file = fopen( $fileName, 'r' );
    $k = 0;
  
    while ( ! feof( $file ) )
    {
        $k++;
        $line = fgets( $file, 1024 );

        if ( strlen( $line ) > 2 )
        {
            $line = addslashes( $line );
            $line = str_replace( ";", "', '", $line );
            $requete = 'INSERT INTO '.$tableName.' VALUES ( \''.$line.'\' ) ';
            if ( ! mysql_query( $requete, $con ) )
                echo 'Erreur Ligne '.$k.' : '.mysql_error().'<br>'.$requete.'<br>';
        } 
        else
            echo 'Ligne '.$k.' ignorée.<br>';
    }

    echo '<p>Insertion du fichier '.$fileName.' terminé.</p><hr>';

    fclose( $file );
}

// Appel de la fonction (C'est là qu'on allume la mèche)
insertIntoTable($filename, $tablename, $exercice); // Tu remarques que le 3ème parametre, c'est la connexion à ta base de données


/* Comme tu n'utilises pas le SELECT, pas la peine de libérer de la ressource
mysql_free_result($Recordset1);*/
?>

Posté : 11 juil. 2007, 13:19
par ninous
Dans le code que tu nous montres, tu créer la fonction InserToTable(), mais tu ne l'appelles jamais.

Pour faire une métaphore, c'est comme si tu préparais un joli feu d'artifice, mais que tu n'allumais jamais la mèche ;)

Regarde ce code que j'ai commenté et légèrement modifié et essaye de comprendre ce que j'ai fait ;)
Ok merci pour ton aide je vais voir se que je peux faire avec ca. Comprendre je pense pas car j'ai justement pris un script sur le web car je ne sais pas coder en PHP

Merci encore