Bonjour à tous.

j'ai ce fichier qui permet de charger les données dans une base Mysql, il fait trois choses:
1. modification des produits déja existant dans la base
2. ajout de nouveau produits
3. garder les produits deja existant intact(donc pas de traitement specifique)

quand je charger la base(en csv)pour mettre à jour la base, j'ai cette erreur :
(You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'écriture avec corps en métal et attributs en métal dorés. Plume en acier inoxyda' at line 1)
mon fichier si qqn peut jetter un coup d'oeil.
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
<?php
if(!empty($_POST['send'])) {
 $csv_file = $_FILES['csv_file']['name'];
 
if(!empty($csv_file)) {
        //On simplifie le nom des variables $_FILES
     $tmp_name=$_FILES['csv_file']['tmp_name'];
     $name=$_FILES['csv_file']['name'];
     $size=$_FILES['csv_file']['size'];
     $type=$_FILES['csv_file']['type'];
     $erreur=$_FILES['csv_file']['error'];
 
   //On affiche les différentes variables
 
   echo "Nom du fichier :".$name;
   echo "<br>Taille du fichier :".$size;
   echo "<br>Type de fichier :".$type;
   //echo "<br>Nom temporaire :".$tmp_name;
   echo "<br>Erreur :".$erreur;
   echo "<br />";
 
//On crée une variable contenant le répertoire de destination
$uploadpath="/var/www/apache2-default/script/";
 
//On déplace le fichier du dossier temporaire vers le dossier de destination
 
move_uploaded_file($tmp_name,$uploadpath.$name);
 
$fichier= fopen($name, 'rb');
$references= array();                                                   //on crée un tableau pour les références
mysql_connect("localhost","root","root");                       //on se connecte à la BD
mysql_select_db("produits");
$query="select ref from objets" or die(mysql_error());  //on récupère toutes les références éxistantes dans la base pour les comparer
$reponse= mysql_query($query);                  //on stoque le résultat de la requete dans la variable $reponse
$r=0;
while ($donnees = mysql_fetch_array($reponse))
{
        $references[$r]=$donnees['ref'];
        //echo $references[$r]."<br />";
        $r++;
}
 
$tab=array();                                                                   // tab va servir à stocker les valeur des champs de chaque ligne du fichier csv
echo "<table border='1'>\n";
 
$prem = fgetcsv($fichier,1024, ";");                    //on lie la première ligne du fichier pour que le pointeur commence par la 2ème lors du traitement
 
for ($ligne = fgetcsv($fichier, 1024, ";"); !feof($fichier); $ligne = fgetcsv($fichier, 1024, ";")) {           //on parcourt le fichier ligne par ligne
echo "<tr>";
$j = sizeof($ligne);
$bool = false;
  for($m=0; $m < sizeof($references); $m++){
        if($ligne[0] == $references[$m])
        {
                $bool =true;
        }
  }
        if($bool== true){
                $query="update prix set P1=$ligne[11]*$ligne[10], P2=$ligne[12]*$ligne[10], P4=$ligne[13]*$ligne[10], P5=$ligne[14]*$ligne[10], P10=$ligne[15]*$ligne[10], P15=$ligne[16]*$ligne[10], P20=$ligne[17]*$ligne[10], qte=$ligne[9] where ref= '$ligne[0]'" or die(mysql_error());
                //echo $ligne[9];
                mysql_query($query);
        }
if(!$bool){
        for ($i = 0; $i < $j; $i++) {
    $tab[$i]=$ligne[$i];
   if($i == 7){
        $categories = explode("-",$tab[$i]);
        $k= sizeof($categories);
        //on parcours les valeurs multiples des catégories
        for($l=0;$l<$k;$l++){
                //s'il n'y a pas de catégories on sort de la boucle
                if($categories[$l]==''){break;}
                //on insère les couples catégorie référence dans la table de liaison
                $query="insert into int_obj_cat(cid,ref) values($categories[$l],'$tab[0]')";
                mysql_query($query)or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
                //echo "categories : ".$categories[$l]."&nbsp";
 
          }
       }
 
    else if($i == 8){
        $couleurs=explode("-",$tab[$i]);
        $k=sizeof($couleurs);
        //on parcourt ttes les valeures multiples de couleurs
        for($l=0;$l<$k;$l++){
                        // si le champs couleurs est vide on sort de la boucle
                if($couleurs[$l] ==''){break;}
                //on insère les couples couleur référence dans la table de liaison
                $query="insert into int_obj_coul(cid,ref) values($couleurs[$l],'$tab[0]')";
                mysql_query($query)or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
                //echo "couleurs : ".$couleurs[$l]."&nbsp";
        //mysql_close();
          }
       }
     else if($i == 22){
        $tailles=explode("-",$tab[$i]);
        $k=sizeof($tailles);
        //on parcourt ttes les valeures multiples de tailles
        for($l=0;$l<$k;$l++){
                        // si le champs taille est vide on sort de la boucle
                if($tailles[$l] ==''){break;}
                //on insère les couples taille référence dans la table de liaison
                $query="insert into int_obj_tail(tid,ref) values($tailles[$l],'$tab[0]')";
                mysql_query($query)or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
                //echo "tailles : ".$tailles[$l]."&nbsp";
        }
    }
 
    echo "<td>$tab[$i]</td>";
    }
 
$query1 = "insert into objets(ref,nom,descriptif,nom_all,descriptif_all,prix,fournisseur,type)values('".$tab[0]."','".$tab[2]."','".$tab[4]."','".$tab[3]."','".$tab[5]."',$tab[10],$tab[1],'".$tab[6]."')";
    $query2= "insert into prix(id,ref,P1,P2,P4,P5,P10,P15,P20,qte) values('','$tab[0]',$tab[11]* $tab[10],$tab[12] * $tab[10],$tab[13] * $tab[10],$tab[14] * $tab[10],$tab[15] * $tab[10],$tab[16] * $tab[10],$tab[17] * $tab[10],$tab[9])";
 
        mysql_query($query1)or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
        mysql_query($query2)or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    echo "</tr>";
  }
}
echo "</table>\n";
mysql_close();
}
}
?>
 
</body>
</html>

voici le fichier csv comment il est constitué:

OM190033;19; DELGADO ANTHRACITE OU BLEU/ALU STYLO PLUME;;Instruments d'écriture avec corps en métal et attributs en métal dorés. Plume en acier inoxydable doré à pointe iridium (M).;;Objet;396;15-40;50;4.733;2.00;0.00;2.00;0.00;2.00;0.00;2.00;;;;;;;

Merci de votre aide
j'ai oublié une chose, sur un poste WX avec easyPHP ça marche nickel.le problème je le veux sur Linux.
j'ai pensé à faire la procedure sur windows ensuite importé la base, mais j'ai un gros problème d'affichage de caractère, donc j'ai aussitot arreter car je connais ce genre de problème.