Pb importation .csv vers mysql via php

Fermé
laetiheu Messages postés 2 Date d'inscription jeudi 26 juillet 2007 Statut Membre Dernière intervention 26 juillet 2007 - 26 juil. 2007 à 12:08
 gewix - 6 nov. 2009 à 12:21
Voilà la situation : je dois faire une interface via php qui permet de faire un import d'un fichier .csv vers une base de donnée mysql deja existante et remplie... J'ai trouvé ce code

<html> 
<body> 
<font face="verdana"><h4 align="center">Importer un fichier .csv dans la base de donnée</h4></font>
 
<?
 switch($action) {
   case "ajouter":
   $bdd = "contacts";
   $host= "localhost";
   $user= "root";
   $pass= "";
   $table= "import"
  
mysql_connect($host,$user,$pass) or die("Impossible de se connecter à la base de données"); 
mysql_select_db($bdd); 
 
 $fichier = $_FILES['fichier']['name'];
if (file_exists($fichier))
  {
  $fp = fopen($fichier['tmp_name'], 'r'); 
  if( $fichier == false )
    {
    echo "Impossible d’ouvrir le fichier");
    }
  }
else
  {
  echo "Fichier introuvable !<br>Importation stoppée.";
  die("Erreur...");
  }

    while (!feof($fp))
    {
       $ligne = fgets($fp,4096);
       $liste = explode( ";",$ligne);
	   
       $numeroImport = $liste[0];
	   echo '<pre>';
	   print_r($liste[0]);
	   echo '</pre>';
	   
       $datemisejourImport = $liste[1]; 
	   echo '<pre>';
	   print_r($liste[1]);
	   echo '</pre>';

       $datearchivageImport = $liste[2]; 
	   echo '<pre>';
	   print_r($liste[2]);
	   echo '</pre>';
	   
       $pacImport =  $liste[3]; 
	   echo '<pre>';
	   print_r($liste[3]);
	   echo '</pre>';
	   
       $clientImport =  $liste[4]; 
	   echo '<pre>';
	   print_r($liste[4]);
	   echo '</pre>';
	   
	   $societeImport =  $liste[5]; 
	   echo '<pre>';
	   print_r($liste[5]);
	   echo '</pre>';
	   
       $brancheImport =  $liste[6];  
	   echo '<pre>';
	   print_r($liste[6]);
	   echo '</pre>';
	   
       $populationImport =  $liste[7];  
	   echo '<pre>';
	   print_r($liste[7]);
	   echo '</pre>';
	   
       $nomImport =  $liste[8]; 
	   echo '<pre>';
	   print_r($liste[8]);
	   echo '</pre>';
	   
       $prenomImport =  $liste[9];  
	   echo '<pre>';
	   print_r($liste[9]);
	   echo '</pre>';
	   
       $emailImport =  $liste[10];  
	   echo '<pre>';
	   print_r($liste[10]);
	   echo '</pre>';
	   
       $datedebutImport =  $liste[11];  
	   echo '<pre>';
	   print_r($liste[11]);
	   echo '</pre>';
	   
	   $datefinImport =  $liste[12];
	   echo '<pre>';
	   print_r($liste[12]);
	   echo '</pre>';

       $telephoneImport =  $liste[13];
	   echo '<pre>';
	   print_r($liste[13]);
	   echo '</pre>'; 

       $query = "INSERT INTO import VALUES('$numeroImport','$datemisejourImport','$datearchivageImport','$pacImport','$clientImport','$societeImport','$brancheImport','$populationImport','$nomImport','$prenomImport','$emailImport','$datedebutImport','$datefinImport','$telephoneImport')"; 
       $result= mysql_query($query); 
  
       if(mysql_error())
        {
           print "Erreur dans la base de données : ".mysql_error();
           print "<br>Importation stoppée.";
           exit();
        } 
     echo "<br>Importation terminée, avec succès."; 

     fclose($fp); 
     mysql_close(); 
   break;
   default: 
   ?>
<font face="verdana">
<form name='form1' method='post' action="" enctype='multipart/form-data'>
     <table border="0" cellspacing="0" cellpadding="3" align="center">
      <tr>
       <td>Fichier :</td> 
       <td> <input type="file" name="fichier"> </td> 
      </tr>
      <tr>
        <td></td>  
       <td> <input type="submit" name="submit" value="Importer"> </td> 
      </tr>
	  <tr><td>
<a href=
     </table>
     <input type="hidden" name="action" value="ajouter"> 
    </form> </font>
</body> 
</html>
<?   break;   
   }
?>


Il ne me met pas d'erreur, mais il ne fait rien!! pas d'erreur, il remet la page php mais n'importe rien dans la base de donnée (la table est deja créer dans la bae de donnée)

Merci d'avance pour votre aide...

Laeti

PS : Je suis une débutante en php/mysql...
A voir également:

1 réponse

un an et toujours pas de réponse ...:'(
J'ai le même problème
0
essayez ce bout de code aprés avoir fait la connexion à la BD:
attention il faut que les colonnes de l'entete du fichier csv aient les memes nom que les chapms de la table(si vous ne voulez pas faire avec cette méthode vous pouvez modifier le code)
	
if($fp = fopen("$content_dir"."$name_file", 'r'))   //$content_dir est le nom du repertoire contenant le fichier et $name_file est le nom du fichier à uploader 
	{
		
	$cpt_import=0;	
	
	
  	$ARRAY[0]=fgetcsv($fp,2000,";");      // saute la 1ere ligne
	$DATA[]=$ARRAY[0];	
	$nbre_ligne=0;

switch($i2)
{
 case "0":												// Ajouter les données a la table
 case "":
  while(!feof($fp)) 
  {
  	$ARRAY[0]=fgetcsv($fp,0,";");      // lire ligne par ligne
	$width=sizeof($ARRAY[0]);

	if ($ARRAY[0][0]!="")							// si ligne pas vide
	{
		$query="insert into concours_admis (";

    	for($j=0;$j<$width;$j++)
    	{
      			$query .= "{$DATA[0][$j]}";
      	if ($j != $width-1) $query .= ", ";
    	}

	    $query .= ") values (";                           // creation 2e partie INSERT
    
		for($j=0;$j<$width;$j++)
    	{
    		if ( $ARRAY[0][$j] == "" )
       			$xls ="";
     		else
       			$xls=htmlspecialchars($ARRAY[0][$j], ENT_QUOTES);

		    $pos=str_pad("c", strlen($j) + 1, $j, STR_PAD_RIGHT);

     		if ($pos=="1")
     		{
        		$jj=substr($xls,0,2);
        		$mm=substr($xls,3,2);
        		$aaaa=substr($xls,6,4);
        		$xls="$aaaa-$mm-$jj";
     		}
     		$query .= "'$xls'";
     		if ($j != $width-1) $query .= ", ";
    	}
    	$query .=")";                                     // ferme l'insertion
    
		$resul=mysql_query($query);
		if (!$resul)		$html.= "$query<br>Ajout impossible <br>";

	$nbre_ligne++;

		$cpt_import++; 
		
	}
  }
break;
}
}	
	
0
gewix > wassim
6 nov. 2009 à 12:21
Merci pour ton exemple.
Question concernant un switch de $i2: il n'est déclaré nul part?
0