inserer contenu de fichier csv dans base mysql

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : inserer contenu de fichier csv dans base mysql

par ninous » 11 juil. 2007, 13:19

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

par zeus » 11 juil. 2007, 09:35

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);*/
?>

par Invité » 11 juil. 2007, 08:57

A quel endroit appelles-tu la fonction insertIntoTable() ? ;)
tout le code est la, je comprends pas ta question.

Merci encore pour l'aide

par zeus » 10 juil. 2007, 15:31

A quel endroit appelles-tu la fonction insertIntoTable() ? ;)

par Invité » 10 juil. 2007, 14:52

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]

par zeus » 10 juil. 2007, 09:47

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

par ninous » 10 juil. 2007, 09:43

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

par Invité » 10 juil. 2007, 09:41

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

par chrislabricole » 10 juil. 2007, 00:23

essaye de mettre sa :
 $fileName  = "insert.csv";
 $tableName= "nom_prenom";
 $con       ="1";
à la place de sa :
 $fileName  : insert.csv
 $tableName : nom_prenom
 $con       : 1  

inserer contenu de fichier csv dans base mysql

par ninous » 09 juil. 2007, 23:29

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