Problème pour récupérer les données d'un fichier texte vers une table mysql ! !

barriau76 Messages postés 10 Date d'inscription dimanche 20 juillet 2003 Statut Membre Dernière intervention 31 janvier 2008 - 26 janv. 2008 à 21:41
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 - 31 janv. 2008 à 14:04
Bonsoir,

Je vous explique ce que je veux faire. Je suis en train de développer un site internet dynamique. j'ai un problème de récupération de données se trouvant dans un fichier texte se trouvant dans un fichier zipper envoyé par un logiciel par FTP. La base de données est une base Mysql. J'ai réussi à dézipper le fichier déplacer et renommer tout mes fichier avec du code PHP. Mais je n'arrive pas à insérer ce qu'il y a dans le fichier texte dans la table "biens".

Voila le code : Je suis débutant en PHP, donc soyez indulgent. ;o))

<?php
$host = "localhost";
$user = "root";
$pass = "";
$db = "al936ne36";
$connect = mysql_connect ($host, $user, $pass);
mysql_select_db ($db, $connect) or die(mysql_error());





$fileName="vente.txt";
$tableName="biens";
$con= '$connect';
function insertIntoTable($fileName,$tableName,$con)
{
    $file = fopen( $fileName, 'r' );
    $k = 0;
    while ( ! feof( $file ) )
    {
        $k++;
        $line = fgets( $file, 5000 );
        if ( strlen( $line ) > 2 )
        {
            $requete = 'INSERT INTO '.$tableName.' VALUES ( \''.$line.'\' ) ';
            if ( ! mysql_query ( $requete, $con ) )
                echo 'Erreur Ligne '.$k.' : '.mysql_error().'
'.$requete.'
';
        }
        else
            echo 'Ligne '.$k.' ignorée.
';
    }



    echo 'Insertion du fichier '.$fileName.' terminé.

<hr>';



    fclose( $file );
}
?>

17 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
26 janv. 2008 à 22:31
Hello, décris le problème précisément ?
As-tu une erreur ? Que se passe t il au juste ?
0
barriau76 Messages postés 10 Date d'inscription dimanche 20 juillet 2003 Statut Membre Dernière intervention 31 janvier 2008
26 janv. 2008 à 23:46
Je n'ais pas de message d'erreur, je tombe sur une page blanche et ma table dans ma base de donnée n'a pas bougée.




   - Les champs dans le fichiers texte sont séparés par des virgules et les lignes se terminent par ,FIN
   - Il y a autant colonnes dans la table que de champs dans le fichier texte.

HELP ME, je ne vois pas ce qui ne marche pas.
0
barriau76 Messages postés 10 Date d'inscription dimanche 20 juillet 2003 Statut Membre Dernière intervention 31 janvier 2008
26 janv. 2008 à 23:50
Désolé, je ne t'ais pas remercier pour t'être intéressé à mon cas malalam. (Pas très poli le gars)
MERCI DE M'AIDER ! ! !
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
27 janv. 2008 à 09:19
Fais un echo de ta requête, tu verras bien si tu arrives jusque là et à quoi elle ressemble.
Et mets :
error_reporting(E_ALL);
en haut de ton script...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
barriau76 Messages postés 10 Date d'inscription dimanche 20 juillet 2003 Statut Membre Dernière intervention 31 janvier 2008
27 janv. 2008 à 13:21
Que veux-tu dire par faire un echo de ma requète ?
Tu ne vois pas d'erreur majeur dans mon code?
0
barriau76 Messages postés 10 Date d'inscription dimanche 20 juillet 2003 Statut Membre Dernière intervention 31 janvier 2008
27 janv. 2008 à 13:22
J'ai déja des echo dans mon code et on dirais que cela n'arrive pas jusqu'à eux !
0
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
27 janv. 2008 à 21:37
Plusieurs choses bizarres :
$con= '$connect';
function insertIntoTable($fileName,$tableName,$con)

? pourquoi tu met une variable $con équivalente au texte $connect ?

De plus tu place cette valeur là dans ta fonction, ton echo $con te retournera $connect.

Par ailleur tu n'appel pas ta fonction, essaye de faire :

insertIntoTable ("vente.txt", "biens", $connect);
et d'enlever les trois lignes avant (
$fileName="vente.txt";
$tableName="biens";
$con= '$connect';
)

et ca devrait déjà faire évoluer la situation ; C'est pour cela que tes échos n'affichaient rien
0
barriau76 Messages postés 10 Date d'inscription dimanche 20 juillet 2003 Statut Membre Dernière intervention 31 janvier 2008
29 janv. 2008 à 09:48
J'ai bien fait ce que tu m'as dis mais j'ai un message d'erreur.



Fatal error: Call to undefined function: insertintotable() in c:\program files\easyphp1-8\www\pasquier\maj.php on line 11




Peux-tu me dire ce qui ne va pas, car
personnellement je ne vois pas.

Je te remets mon code :



<?php
$host = "localhost";
$user = "root";
$pass = "";
$db = "al936ne36";
$connect = mysql_connect ($host, $user, $pass);
mysql_select_db ($db, $connect) or die(mysql_error());





insertIntoTable ("vente.txt", "biens", $connect);
{
    $file = fopen( $fileName, 'r' );
    $k = 0;
    while ( ! feof( $file ) )
    {
        $k++;
        $line = fgets( $file, 5000 );
        if ( strlen( $line ) > 2 )
        {
            $requete = 'INSERT INTO '.$tableName.' VALUES ( \''.$line.'\' ) ';
            if ( ! mysql_query ( $requete, $connect ) )
                echo 'Erreur Ligne '.$k.' : '.mysql_error().'
'.$requete.'
';
        }
        else
            echo 'Ligne '.$k.' ignorée.
';
    }


    echo 'Insertion du fichier '.$fileName.' terminé.

<hr>';


    fclose( $file );
}
?>




 Merci pour ton aide ! ! !
0
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
29 janv. 2008 à 11:26
quand je disais de mettre insertIntoTable ("vente.txt", "biens", $connect);, c'était l'appel de la fonction, pour la déclarer, c'est :
function insertIntoTable ($fileName,$tableName,$con) {
/// ton code ici
}

et ensuite l'appeler : insertIntoTable ("vente.txt", "biens", $connect);

Toi soi tu déclare la fonction sans l'appeler, soit tu appele la fonction avec son contenu direct : c'est incohérent

Je te donne pas le résultat complet, histoire que tu cherche et que tu comprenne tes erreurs
0
barriau76 Messages postés 10 Date d'inscription dimanche 20 juillet 2003 Statut Membre Dernière intervention 31 janvier 2008
31 janv. 2008 à 11:34
Merci pour le coup de pompe au cul ! ! !

Donc voila, je pense que c'est bon, cela à l'air de fonctionner mais j'ai ci-dessous qui apparait.



Erreur Ligne 1 : Column count doesn't match value count at row 1
INSERT INTO biens VALUES ( 'VAI10009;AI1;T;108000,00;LES TROIS PIERRES;0;0;0;0,00;1200;;0;0;;0;0;<?XML:NAMESPACE PREFIX = SKYPE /??><skype:span onmouseup="javascript:skype_tb_imgOnOff(this,1,'0',true,16,'');return skype_tb_stopEvents();" class="skype_tb_injection" onmousedown="javascript:skype_tb_imgOnOff(this,2,'0',true,16,'');return skype_tb_stopEvents();" id="softomate_highlight_0" onmouseover="javascript:skype_tb_imgOnOff(this,1,'0',true,16,'');" title="Call this phone number in France with Skype: +33235216800" onclick="javascript:doRunCMD('call','0',null,0);return skype_tb_stopEvents();" onmouseout="javascript:skype_tb_imgOnOff(this,0,'0',true,16,'');" iamrtl="0" context="02.35.21.68.00" durex="0"><skype:span onmouseup="javascript:doSkypeFlag(this,'0',1,1,16);return skype_tb_stopEvents();" class="skype_tb_imgA" onmousedown="javascript:doSkypeFlag(this,'0',2,1,16);return skype_tb_stopEvents();" id="skype_tb_droppart_0" onmouseover="javascript:doSkypeFlag(this,'0',1,1,16);" title="Skype actions" style="BACKGROUND-IMAGE: url(C:\DOCUME~1\MOI\LOCALS~1\Temp\__SkypeIEToolbar_Cache\e70d95847a8f5723cfca6b3fd9946506\static\inactive_a.compat.flex.w16.gif)" onclick="javascript:skype_tb_SwitchDrop(this,'0','sms=0');return skype_tb_stopEvents();" onmouseout="javascript:doSkypeFlag(this,'0',0,1,16);"><skype:span class="skype_tb_imgFlag" id="skype_tb_img_f0" style="BACKGROUND-IMAGE: url(C:\DOCUME~1\MOI\LOCALS~1\Temp\__SkypeIEToolbar_Cache\e70d95847a8f5723cfca6b3fd9946506\static\famfamfam/FR.gif)"></skype:span></skype:span><skype:span class="skype_tb_imgS" id="skype_tb_img_s0"></skype:span><skype:span class="skype_tb_injectionIn" id="skype_tb_text0"><skype:span class="skype_tb_innerText" id="skype_tb_innerText0">02.35.21.68.00</skype:span></skype:span><skype:span class="skype_tb_imgR" id="skype_tb_img_r0"></skype:span></skype:span>;FIN' )


Insertion du fichier vente.txt terminé.




La structure de ma table est comme ci dessous :




'Dossier_Biens';'CodeAgen_Biens';'Type_Biens';'Prix_Biens';'Local_Biens';'NbPiece_Biens';'NbCh_Biens';'SurfHab_Biens';'SurfSej_Biens';'SurfTer_Biens';'Expo_Biens';'Etage_Biens';'NbEtage_Biens';'Cuisine_Biens';'Sdb_Biens';'Garage_Biens';'TelAgence_Biens';'Fin_Biens'




Les données de mon fichier texte sont :




VAI10009;AI1;T;108000,00;LES TROIS PIERRES;0;0;0;0,00;1200;;0;0;;0;0;02.35.21.68.00;FIN

Et voila mon code :


<?php
$host = "localhost";
$user = "root";
$pass = "";
$db = "al936ne36";
$connect = mysql_connect ($host, $user, $pass);
mysql_select_db ($db, $connect) or die(mysql_error());



$fileName="vente.txt";
$tableName="biens";
function insertIntoTable ($fileName,$tableName,$connect)
{
    $file = fopen( $fileName, 'r' );
    $k = 0;
    while ( ! feof( $file ) )
    {
        $k++;
        $line = fgets( $file, 5000 );
        if ( strlen( $line ) > 0 )
        {
            $requete = 'INSERT INTO '.$tableName.' VALUES ( \''.$line.'\' ) ';
            if ( ! mysql_query ( $requete, $connect ) )
                echo 'Erreur Ligne '.$k.' : '.mysql_error().'
'.$requete.'
';
        }
        else
            echo 'Ligne '.$k.' ignorée.
';
    }



    echo 'Insertion du fichier '.$fileName.' terminé.

<hr>';



    fclose( $file );
}



insertIntoTable ($fileName,$tableName,$connect);



?>
0
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
31 janv. 2008 à 11:42
Ta requete :
INSERT INTO biens VALUES ( 'VAI10009;AI1;T;108000,00;LES TROIS PIERRES;0;0;0;0,00;1200;;0;0;;0;0;02.35.21.68.00;FIN' )

Tu n'insere qu'une seule colonne ! en effet, ton premier quote commence avant VAI10009 et fini à FIN.
Si tu veux séparer les éléments grâce aux points virgules, utilise la fonction split

http://php.net/split
Il faudra donc que tu fasse se tri avant cette ligne dans ta fonction :
$requete = 'INSERT INTO '.$tableName.' VALUES ( \''.$line.'\' ) ';

Ensuite, est-ce que tu es sur que les valeurs sont dans le bon ordre ?
que VAI10009 correspond à la premiere colonne dans ta table, AI1 à la deuxieme, T à la troisieme, etc ?
0
barriau76 Messages postés 10 Date d'inscription dimanche 20 juillet 2003 Statut Membre Dernière intervention 31 janvier 2008
31 janv. 2008 à 12:32
- L'ordre des valeurs est bon.
- Tu me conseilles quoi pour séparer mes valeurs pour ne pas avoir de problèmes?
J'avais mis de points vigules pour l'exportation de la base du logiciel car dans le prix du bien il y a deux décimales et il y a une virgule dans le prix.

J'espère que je ne te fais pas trop chier avec mes questions de débutants?
0
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
31 janv. 2008 à 12:56
Si tu me faisais chier j'aurai arreté de te répondre :)

Pour séparer une chaine de caractères avec des ; tu peux utiliser la fonction explode
http://php.net/explode

ensuite pour remettre un tableau en chaine de caractere, utilise implode
http://php.net/implode

comme ca tu explode ta chaine de caractère en fonction des ; et ensuite tu l'implode avec des ', '

Par contre faut que ton fichier soit sur sinon tu peux avoir des soucis ! (genre si le fichier provient d'un utilisateur, il peux rentrer n'importe quoi dans ta base)
0
barriau76 Messages postés 10 Date d'inscription dimanche 20 juillet 2003 Statut Membre Dernière intervention 31 janvier 2008
31 janv. 2008 à 13:24
ce que je voulais dire par ma question d'avant. Avec quel caractère penses-tu que je devrais séparer mes valeurs.
Je t'explique le processus :

     - Je paramètre un logiciel pour que celui-ci exporte par FTP un fichier ZIP qui est composé de fichiers images et d'un fichier texte dans lequel se trouvent les données exporté.
      - dans le logiciel, je peux choisir le séparateur de champ et le délimiteur de champ. donc ma question est pour cette partie. Quel caractères me conseilles-tu d'utiliser pour cette partie. Afin que je puisse importer les données dans ma base Mysql avec le moins de problèmes.
0
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
31 janv. 2008 à 13:26
ca va dépendre de ce que contiennent tes données, si c'est juste des nombres, le ; est convenable. Maintenant si t'a du texte, et que pis encore, tu sais pas quel type de texte, alors c'est plus genant. Tu peux prendre un marqueur qui à le moin de chance d'etre utilisé, style §&§# (4 caractères) et tu découpe par ce même marqueur.

A toi de voir
0
barriau76 Messages postés 10 Date d'inscription dimanche 20 juillet 2003 Statut Membre Dernière intervention 31 janvier 2008
31 janv. 2008 à 13:53
Premièrement, je voulais dire que j'allucine pour la vitesse avec laquelle vous répondez aux questions sur le forum. C'est super agréable. Vous assurez grave sur ce site. Voila, ça c'est dit ! ! !

Pour ce qui est de mon problème, je suis limité à deux caractères pour le marqueur, et le texte est composé de texte et des nombres.

lorsque je mets des ; j'ai ce message d'erreur :

Erreur Ligne 1 : Column count doesn't match value count at row 1
INSERT INTO biens VALUES ( 'VAI10009;AI1;T;108000,00;LES TROIS PIERRES;0;0;0;0,00;1200;;0;0;;0;0;<?XML:NAMESPACE PREFIX = SKYPE /??><skype:span onmouseup="javascript:skype_tb_imgOnOff(this,1,'0',true,16,'');return skype_tb_stopEvents();" class="skype_tb_injection" onmousedown="javascript:skype_tb_imgOnOff(this,2,'0',true,16,'');return skype_tb_stopEvents();" id="softomate_highlight_0" onmouseover="javascript:skype_tb_imgOnOff(this,1,'0',true,16,'');" title="Call this phone number in France with Skype: +33235216800" onclick="javascript:doRunCMD('call','0',null,0);return skype_tb_stopEvents();" onmouseout="javascript:skype_tb_imgOnOff(this,0,'0',true,16,'');" durex="0" context="02.35.21.68.00" iamrtl="0"><skype:span onmouseup="javascript:doSkypeFlag(this,'0',1,1,16);return skype_tb_stopEvents();" class="skype_tb_imgA" onmousedown="javascript:doSkypeFlag(this,'0',2,1,16);return skype_tb_stopEvents();" id="skype_tb_droppart_0" onmouseover="javascript:doSkypeFlag(this,'0',1,1,16);" title="Skype actions" style="BACKGROUND-IMAGE: url(C:\DOCUME~1\MOI\LOCALS~1\Temp\__SkypeIEToolbar_Cache\e70d95847a8f5723cfca6b3fd9946506\static\inactive_a.compat.flex.w16.gif)" onclick="javascript:skype_tb_SwitchDrop(this,'0','sms=0');return skype_tb_stopEvents();" onmouseout="javascript:doSkypeFlag(this,'0',0,1,16);"><skype:span class="skype_tb_imgFlag" id="skype_tb_img_f0" style="BACKGROUND-IMAGE: url(C:\DOCUME~1\MOI\LOCALS~1\Temp\__SkypeIEToolbar_Cache\e70d95847a8f5723cfca6b3fd9946506\static\famfamfam/FR.gif)"></skype:span></skype:span><skype:span class="skype_tb_imgS" id="skype_tb_img_s0"></skype:span><skype:span class="skype_tb_injectionIn" id="skype_tb_text0"><skype:span class="skype_tb_innerText" id="skype_tb_innerText0">02.35.21.68.00</skype:span></skype:span><skype:span class="skype_tb_imgR" id="skype_tb_img_r0"></skype:span></skype:span>;FIN' )

lorsque je mets des , j'ai ce message d'erreur :

Erreur Ligne 1 : Column count doesn't match value count at row 1
INSERT INTO biens VALUES ( 'VAI10009,AI1,T,108000,00,LES TROIS PIERRES,0,0,0,0,00,1200,,0,0,,0,0,<skype:span onmouseup="javascript:skype_tb_imgOnOff(this,1,'0',true,16,'');return skype_tb_stopEvents();" class="skype_tb_injection" onmousedown="javascript:skype_tb_imgOnOff(this,2,'0',true,16,'');return skype_tb_stopEvents();" id="softomate_highlight_0" onmouseover="javascript:skype_tb_imgOnOff(this,1,'0',true,16,'');" title="Call this phone number in France with Skype: +33235216800" onclick="javascript:doRunCMD('call','0',null,0);return skype_tb_stopEvents();" onmouseout="javascript:skype_tb_imgOnOff(this,0,'0',true,16,'');" durex="0" context="02.35.21.68.00" iamrtl="0"><skype:span onmouseup="javascript:doSkypeFlag(this,'0',1,1,16);return skype_tb_stopEvents();" class="skype_tb_imgA" onmousedown="javascript:doSkypeFlag(this,'0',2,1,16);return skype_tb_stopEvents();" id="skype_tb_droppart_0" onmouseover="javascript:doSkypeFlag(this,'0',1,1,16);" title="Skype actions" style="BACKGROUND-IMAGE: url(C:\DOCUME~1\MOI\LOCALS~1\Temp\__SkypeIEToolbar_Cache\e70d95847a8f5723cfca6b3fd9946506\static\inactive_a.compat.flex.w16.gif)" onclick="javascript:skype_tb_SwitchDrop(this,'0','sms=0');return skype_tb_stopEvents();" onmouseout="javascript:doSkypeFlag(this,'0',0,1,16);"><skype:span class="skype_tb_imgFlag" id="skype_tb_img_f0" style="BACKGROUND-IMAGE: url(C:\DOCUME~1\MOI\LOCALS~1\Temp\__SkypeIEToolbar_Cache\e70d95847a8f5723cfca6b3fd9946506\static\famfamfam/FR.gif)"></skype:span></skype:span><skype:span class="skype_tb_imgS" id="skype_tb_img_s0" style="BACKGROUND-IMAGE: url(C:\DOCUME~1\MOI\LOCALS~1\Temp\__SkypeIEToolbar_Cache\e70d95847a8f5723cfca6b3fd9946506\static\inactive_s.compat.gif)"></skype:span><skype:span class="skype_tb_injectionIn" id="skype_tb_text0" style="BACKGROUND-IMAGE: url(C:\DOCUME~1\MOI\LOCALS~1\Temp\__SkypeIEToolbar_Cache\e70d95847a8f5723cfca6b3fd9946506\static\inactive_m.compat.gif)"><skype:span class="skype_tb_innerText" id="skype_tb_innerText0">02.35.21.68.00</skype:span></skype:span><skype:span class="skype_tb_imgR" id="skype_tb_img_r0" style="BACKGROUND-IMAGE: url(C:\DOCUME~1\MOI\LOCALS~1\Temp\__SkypeIEToolbar_Cache\e70d95847a8f5723cfca6b3fd9946506\static\inactive_r.compat.gif)"></skype:span></skype:span>,FIN' )

lorsque je mets des , en séparateur et ' en délimiteur j'ai ce message d'erreur :

Erreur Ligne 1 : Erreur de syntaxe près de 'VAI10009','AI1','T','108000,00','LES TROIS PIERRES','0','0','0',' à la ligne 1
INSERT INTO biens VALUES ( ''VAI10009','AI1','T','108000,00','LES TROIS PIERRES','0','0','0','0,00','1200','','0','0','','0','0','<skype:span onmouseup="javascript:skype_tb_imgOnOff(this,1,'0',true,16,'');return skype_tb_stopEvents();" class="skype_tb_injection" onmousedown="javascript:skype_tb_imgOnOff(this,2,'0',true,16,'');return skype_tb_stopEvents();" id="softomate_highlight_0" onmouseover="javascript:skype_tb_imgOnOff(this,1,'0',true,16,'');" title="Call this phone number in France with Skype: +33235216800" onclick="javascript:doRunCMD('call','0',null,0);return skype_tb_stopEvents();" onmouseout="javascript:skype_tb_imgOnOff(this,0,'0',true,16,'');" durex="0" context="02.35.21.68.00" iamrtl="0"><skype:span onmouseup="javascript:doSkypeFlag(this,'0',1,1,16);return skype_tb_stopEvents();" class="skype_tb_imgA" onmousedown="javascript:doSkypeFlag(this,'0',2,1,16);return skype_tb_stopEvents();" id="skype_tb_droppart_0" onmouseover="javascript:doSkypeFlag(this,'0',1,1,16);" title="Skype actions" style="BACKGROUND-IMAGE: url(C:\DOCUME~1\MOI\LOCALS~1\Temp\__SkypeIEToolbar_Cache\e70d95847a8f5723cfca6b3fd9946506\static\inactive_a.compat.flex.w16.gif)" onclick="javascript:skype_tb_SwitchDrop(this,'0','sms=0');return skype_tb_stopEvents();" onmouseout="javascript:doSkypeFlag(this,'0',0,1,16);"><skype:span class="skype_tb_imgFlag" id="skype_tb_img_f0" style="BACKGROUND-IMAGE: url(C:\DOCUME~1\MOI\LOCALS~1\Temp\__SkypeIEToolbar_Cache\e70d95847a8f5723cfca6b3fd9946506\static\famfamfam/FR.gif)"></skype:span></skype:span><skype:span class="skype_tb_imgS" id="skype_tb_img_s0" style="BACKGROUND-IMAGE: url(C:\DOCUME~1\MOI\LOCALS~1\Temp\__SkypeIEToolbar_Cache\e70d95847a8f5723cfca6b3fd9946506\static\inactive_s.compat.gif)"></skype:span><skype:span class="skype_tb_injectionIn" id="skype_tb_text0" style="BACKGROUND-IMAGE: url(C:\DOCUME~1\MOI\LOCALS~1\Temp\__SkypeIEToolbar_Cache\e70d95847a8f5723cfca6b3fd9946506\static\inactive_m.compat.gif)"><skype:span class="skype_tb_innerText" id="skype_tb_innerText0">02.35.21.68.00</skype:span></skype:span><skype:span class="skype_tb_imgR" id="skype_tb_img_r0" style="BACKGROUND-IMAGE: url(C:\DOCUME~1\MOI\LOCALS~1\Temp\__SkypeIEToolbar_Cache\e70d95847a8f5723cfca6b3fd9946506\static\inactive_r.compat.gif)"></skype:span></skype:span>','FIN'' )

lorsque je mets des ; en séparateur et ' en délimiteur j'ai ce message d'erreur :

Erreur Ligne 1 : Erreur de syntaxe près de 'VAI10009';'AI1';'T';'108000,00';'LES TROIS PIERRES';'0';'0';'0';' à la ligne 1
INSERT INTO biens VALUES ( ''VAI10009';'AI1';'T';'108000,00';'LES TROIS PIERRES';'0';'0';'0';'0,00';'1200';'';'0';'0';'';'0';'0';'<skype:span onmouseup="javascript:skype_tb_imgOnOff(this,1,'0',true,16,'');return skype_tb_stopEvents();" class="skype_tb_injection" onmousedown="javascript:skype_tb_imgOnOff(this,2,'0',true,16,'');return skype_tb_stopEvents();" id="softomate_highlight_0" onmouseover="javascript:skype_tb_imgOnOff(this,1,'0',true,16,'');" title="Call this phone number in France with Skype: +33235216800" onclick="javascript:doRunCMD('call','0',null,0);return skype_tb_stopEvents();" onmouseout="javascript:skype_tb_imgOnOff(this,0,'0',true,16,'');" durex="0" context="02.35.21.68.00" iamrtl="0"><skype:span onmouseup="javascript:doSkypeFlag(this,'0',1,1,16);return skype_tb_stopEvents();" class="skype_tb_imgA" onmousedown="javascript:doSkypeFlag(this,'0',2,1,16);return skype_tb_stopEvents();" id="skype_tb_droppart_0" onmouseover="javascript:doSkypeFlag(this,'0',1,1,16);" title="Skype actions" style="BACKGROUND-IMAGE: url(C:\DOCUME~1\MOI\LOCALS~1\Temp\__SkypeIEToolbar_Cache\e70d95847a8f5723cfca6b3fd9946506\static\inactive_a.compat.flex.w16.gif)" onclick="javascript:skype_tb_SwitchDrop(this,'0','sms=0');return skype_tb_stopEvents();" onmouseout="javascript:doSkypeFlag(this,'0',0,1,16);"><skype:span class="skype_tb_imgFlag" id="skype_tb_img_f0" style="BACKGROUND-IMAGE: url(C:\DOCUME~1\MOI\LOCALS~1\Temp\__SkypeIEToolbar_Cache\e70d95847a8f5723cfca6b3fd9946506\static\famfamfam/FR.gif)"></skype:span></skype:span><skype:span class="skype_tb_imgS" id="skype_tb_img_s0" style="BACKGROUND-IMAGE: url(C:\DOCUME~1\MOI\LOCALS~1\Temp\__SkypeIEToolbar_Cache\e70d95847a8f5723cfca6b3fd9946506\static\inactive_s.compat.gif)"></skype:span><skype:span class="skype_tb_injectionIn" id="skype_tb_text0" style="BACKGROUND-IMAGE: url(C:\DOCUME~1\MOI\LOCALS~1\Temp\__SkypeIEToolbar_Cache\e70d95847a8f5723cfca6b3fd9946506\static\inactive_m.compat.gif)"><skype:span class="skype_tb_innerText" id="skype_tb_innerText0">02.35.21.68.00</skype:span></skype:span><skype:span class="skype_tb_imgR" id="skype_tb_img_r0" style="BACKGROUND-IMAGE: url(C:\DOCUME~1\MOI\LOCALS~1\Temp\__SkypeIEToolbar_Cache\e70d95847a8f5723cfca6b3fd9946506\static\inactive_r.compat.gif)"></skype:span></skype:span>';'FIN' ' )

Je ne comprends plus rien ! ! !
0
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
31 janv. 2008 à 14:04
Attention, tu mélange tout :p
(Jte tutoie, tu me tutoie aussi ! :))

Apparement, toi, ce que tu fait, c'est
Tu récupere une ligne de ton fichier (tu boucle pour chaques lignes), et pour chaque ligne, tu fait un insert et comme valeur pour tes colonnes, tu met ta ligne complete. Ca marche pas comme ca ! :p

Pour mysql, une colonne est represéntée par une valeur, deux colonnes, par une valeur VIRGULE une autre valeur, dans ton cas, si on considere le délimitateur ;

INSERT INTO biens VALUES ( 'VAI10009', 'AI1', T', '108000,00', 'LES TROIS PIERRES', '0', '0', '0', '0', '00', '1200', '', '0', '0', '', '0', '0;<skype:span class="skype_tb_injection" id="softomate_highlight_0" title="Call this phone number in France with Skype: +33235216800" durex="0" context="02.35.21.68.00" iamrtl="0"><skype:span class="skype_tb_imgA" id="skype_tb_droppart_0" title="Skype actions"><skype:span class="skype_tb_imgFlag" id="skype_tb_img_f0"></skype:span></skype:span><skype:span class="skype_tb_injectionIn" id="skype_tb_text0"><skype:span class="skype_tb_innerText" id="skype_tb_innerText0">', '02.35.21.68.00</skype:span></skype:span><skype:span class="skype_tb_imgR" id="skype_tb_img_r0"></skype:span></skype:span>', 'FIN' );

Tu vois la différence ?

Apres, si c'est des chiffres, tu peux aussi ne pas mettre de '' ('0' => 0), mais bon ca marche pareil (je crois :p)

Tu fait un $reultat = explode ($tonDélimiter, $taLigneCourante);
et ensuite tu fait $insert = "'".implode ("', '", $resultat)."'";
et tu à la valeur à mettre dans les parenthèses apres VALUES de ta requete SQL (normalement, si j'ai pas fait de bêtises !)
0
Rejoignez-nous