pb importation csv vers 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 : pb importation csv vers MySQL

Re: pb importation csv vers MySQL

par Mazarini » 29 nov. 2011, 10:02

Bonjour,

Il te manque également un contrôle du contenu de fichier. En particulier, tu devrais vérifier que les données lues aient la bonne longueur pour les chaines de caractères et que les nombres soient bien numérique. Un peu comme si tu traitais la saisie d'un utilisateur.

Pour ce qui est de ton code, il serai bien de faire des fonctions, surtout pour remplacer le code qui est inclut dans des boucles.

Par exemple :
while (($fileop=fgetcsv($open,1000,";")) !==false)
{
   traiter_un enregistrement($fileop);
} 
ou
while (($fileop=fgetcsv($open,1000,";")) !==false)
{
  $message = controle_enregistrent($fileop);
  if ($message == '')
  {
      traiter_un enregistrement($fileop);
  }
  else
  {
     erreur_enregistrement($message);
  }
} 
me semble plus lisible.

Re: pb importation csv vers MySQL

par xTG » 29 nov. 2011, 07:51

Il faudrait déjà protéger les valeurs que tu utilises dans tes requêtes.
Regardes dans la documentation l'utilisation de la fonction mysql_real_escape_string().

pb importation csv vers MySQL

par angelina88 » 29 nov. 2011, 02:23

Bonjour,
Je suis étudiante, j'ai un projet à faire et j'ai un probleme concernant l'importation de fichier .CSV vers la base de données MySQL .Voilà mon code :
J'ai fait 2 pages la premiere "AjoutPr.php" pour selectionner le fichier et la page "ajout_produit2.php" pour le traiter :
-AjoutPr.php
"<?php
mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("alu"); // Sélection de la base
?>
<br><br>
<form action="ajout_produit2.php" method="post" name="form1" class="Style6" enctype="multipart/form-data">
<fieldset ><legend class="Style12">Veuillez saisir les champs suivants:</legend>
<br><br>
<table width="600" height="350" border="0">
<tr>
<td><div align="left"><strong>Sélectionnez le borderaux client pour la demande concernée <br/></strong></div></td>
<td><div align="left"><strong>:</strong></div></td>
<td>
<div align="left">
<select name="borderaux_client" >
<?php
$reponse = mysql_query("SELECT borderaux_client FROM demande");
while($donnees=mysql_fetch_array($reponse))
{
echo"<option>".$donnees['borderaux_client']."</option>";
}
?>
</select>
</div></td></tr>
<tr>
<td><div align="left"><strong>Sélectionnez le nom du transitaire <br/></strong></div></td>
<td><div align="left"><strong>:</strong></div></td>
<td>
<div align="left">
<select name="nom_transitaire" >
<?php
$reponse = mysql_query("SELECT nom_transitaire FROM transitaire");
while($donnees=mysql_fetch_array($reponse))
{
echo"<option>".$donnees['nom_transitaire']."</option>";
}
?>
</select>
</div></td>
</tr>
</table> </fieldset>
<table width="150" border="1" align="center">
<tr>
<td colspan="2"><strong>Importation</strong></td>
</tr>
<tr>
<td>Fichier:</td>
<td><input name="userfile" type="file" id="userfile" value=""></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="Submit" value="ET HOP!">
</tr>
</table>
</form>
"
-Ajout_produit2.php:
"<?php
//connection au serveur
$cnx = mysql_connect( "localhost", "root", "" ) or die("Impossible de se connecter à la base de données");
//sélection de la base de données:
$db = mysql_select_db( "alu" ) or die("Impossible de se connecter à la base de données");
//récupération des valeurs des champs:
$borderaux_client = $_POST["borderaux_client"] ;
$nom_transitaire = $_POST["nom_transitaire"] ;
//trouver le nom de projet correspondant à la demande
$reponse= mysql_query("SELECT projet.nom_projet FROM demande_projet,demande,projet WHERE demande_projet.id_demande=demande.id_demande AND projet.id_projet=demande_projet.id_projet AND demande.borderaux_client='$borderaux_client'")or die(mysql_error());
$donnees=mysql_fetch_array($reponse);
$nom_projet=$donnees['nom_projet'];
?>
<br><br>
<p><strong>Nom projet</strong> :<?php echo $donnees['nom_projet'];?></p>
<input type="hidden" name="nom_projet" value=<?php echo $donnees['nom_projet'];?>>
<p> </p><br/>
<?php
$req2 = "SELECT statut_demande FROM demande WHERE borderaux_client='".$borderaux_client."'";
$result3 = mysql_query($req2) or die('Erreur SQL !'.$req.'<br>'.mysql_error());
if ($result_statut = mysql_fetch_array($result3))
$statut_demande = $result_statut['statut_demande'];
if($statut_demande=="En cours")
{
//on importe le fichier à inserer dans sql
$file=$_FILES["userfile"]["tmp_name"];
if (file_exists($file))
{
$open=fopen($file,"r");
}
else
{
echo "Fichier introuvable !<br>Importation stoppée.";
exit();
}
while (($fileop=fgetcsv($open,1000,";")) !==false)
{
$num_serie=$fileop[2];
$code_article=$fileop[3];
$designation=$fileop[1];
$reponse1 = mysql_query("SELECT * FROM produit where @num_serie='$num_serie' ")or die( mysql_error() );
$i=0;
while($donnees=mysql_fetch_array($reponse1))
{
$i=1;
}
if($i==0)
{
$req = "SELECT id_projet FROM projet WHERE nom_projet='" . $nom_projet . "'";
$result = mysql_query($req) or die('Erreur SQL !'.$req.'<br>'.mysql_error());
if ($result_projet = mysql_fetch_array($result))
$id_projet = $result_projet['id_projet']; // récupère id_projet dans le tableau résultat
$query = "INSERT INTO produit(num_serie,code_article,designation,id_projet)VALUES('$num_serie','$code_article','$designation','$id_projet')";
$requete1 = mysql_query($query, $cnx) or die( mysql_error() ) ;
$req1 = "SELECT id_demande FROM demande WHERE borderaux_client='" . $borderaux_client. "'";
$result1 = mysql_query($req1) or die('Erreur SQL !'.$req.'<br>'.mysql_error());
if ($result_demande = mysql_fetch_array($result1))
$id_demande = $result_demande['id_demande']; // récèpure id_demande dans le tableau résultat
$sql2 = "INSERT INTO demande_produit (id_demande,num_serie)
VALUES ('$id_demande','$num_serie')" ;
$requete2 = mysql_query($sql2, $cnx) or die( mysql_error() ) ;
$sql3 = "INSERT INTO transit_produit (nom_transitaire,num_serie)
VALUES ('$nom_transitaire','$num_serie')";
$requete3 = mysql_query($sql3, $cnx) or die( mysql_error() ) ;
//affichage des résultats, pour savoir si l'insertion a marché:
if($requete1 && $requete2 && $requete3)
{
echo("L'insertion a été correctement effectuée") ;
}
else
{
echo("L'insertion a échouée") ;
}
}
else{
echo"<SCRIPT language=\"Javascript\">
alert(\"Ce produit existe!\");
window.location.replace(\"ajout_produit.php\");
</SCRIPT>";
exit();
}
}
fclose($open);
print '<h2>Importation terminée</h2>';
}
else{
echo"<SCRIPT language=\"Javascript\">
alert(\"Cette demande est déjà close !\");
window.location.replace(\"AjoutPr.php\");
</SCRIPT>";
}
?>
"
et Quand j'execute voilà l'erreur que j'ai:
"Incorrect string value: '\xB0 de S...' for column 'Num_serie' at row 1"
Mercii d'avance ^^ J'attends vos suggestions impatiemment :)
Bonne journée