IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Problème d'insertion de données dans une base MySql à partir d'un fichier csv


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 23
    Points : 16
    Points
    16
    Par défaut Problème d'insertion de données dans une base MySql à partir d'un fichier csv
    Bonjour,
    Je suis en train de faire un exemple simple d'import csv dans une base MySql, avec un script php.

    Quand j'exécute le fichier, il me fait pas d'erreur, mais je vérifie ma table "exportscv" crée avec phpmyadmin avec les mêmes champs et type de données du fichier csv, et je trouve que la table reste vide avec phpmyadmin, voici mon code, Merci.

    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
     
    <html>
    <header><title>Formulaire d'export d'un fichier csv dans bdd MySql</title></header>
    	<body>
    	<h1>Formulaire d'export d'un fichier CSV dans une bdd MySql</h1>
    	<form method="post"  enctype="multipart/form-data"action="Exports.php";
     
    	<b>Merci d'indiquer l'emplacement du fichier csv à uploader: </b><br/><br/>
    	<input type="file" name="monfichier" file>
    	<input type="submit" value="Envoyer">
    	</form>
     
    	<?php
    	include ('functions.php');
    		// Testons si le fichier a bien été envoyé et s'il n'y a pas d'erreur
    	if (isset($_FILES['monfichier']) AND $_FILES['monfichier']['error'] == 0)
    		{
    		//echo 'success';
    		// Testons si le fichier n'est pas trop gros
    		if ($_FILES['monfichier']['size'] <= 10000000)
    			{
    			// Testons si l'extension est autorisée
    			$infosfichier = pathinfo($_FILES['monfichier']['name']);
    			$extension_upload = $infosfichier['extension'];
    			$extensions_autorisees = array('csv');
    			if (in_array($extension_upload, $extensions_autorisees))
    				{
    			// On peut valider le fichier et le stocker définitivement
    				move_uploaded_file($_FILES['monfichier']['tmp_name'], 'uploads/' .
    				basename($_FILES['monfichier']['name']));
    				echo 'L\'envoi a bien été effectué !<br/><br/>';
    				echo '<b>Informations sur le fichier uploadé: </b><br/>';
    				echo '<b>Nome du fichier : </b>' .$_FILES['monfichier']['name']. '<br/>';
    				echo '<b>Type du fichier : </b>' .$_FILES['monfichier']['type']. '<br/>';
    				echo '<b>Taille du fichier : </b>' .$_FILES['monfichier']['size']. ' Octets<br/>';
     
    				//$data = importcsv($_FILES['monfichier']['name'],true,";",1000)
     
    				//Connexion à la base de donnée
    				$bdd = connectMaBase();
     
    				//echo "<table>\n";
     
    				$row = 0;
    				$handle = fopen($_FILES['monfichier']['name'], "r");
     
     
    				while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) 
    					{
    					if ($row == 0) 
    						{
    						// this is the first line of the csv file
    						// it usually contains titles of columns
    						$num = count($data);
    						//echo "<thead>\n<tr>";
    						$row++;
    						$i = 0;
    						$champs = array($num);
    						for ($c=0; $c < $num; $c++) 
    							{
    							//echo "<th>" . $data[$c] . "</th>";
    							$champs[$i] = $data[$c];
    							$i++;
    							}
    						for ($i = 0; $i< $num; $i++)
    							echo $champs[$i].'   ';
    						//echo "</tr>\n</thead>\n\n<tbody>";
    						} 
    					else 
    						{
    						// this handles the rest of the lines of the csv file
    						$num = count($data);
    						//echo "<tr>";
    						$row++;
    						for ($c=0; $c < $num; $c++) 
    							{
    							$bdd->exec('INSERT INTO exportcsv("'.$champs[$c].'")VALUES("'.$data[$c].'")');
    							//echo 'inertion en base <br/>';
    							//echo "<td>" . $data[$c]. "</td>";
    							}
    						//echo "</tr>\n";
    						}
    					}
    				fclose($handle);
     
    				//echo "</tbody>\n</table>";
     
     
    				}
    			else echo 'Le format de fichier est incorrect. Merci d\'envoyer un fichier csv';
     
     
     
    			//$today = date("y-m-d");
    			/*
    			//Connexion à la base de donnée
    			$bdd = connectMaBase();
    			$bdd->exec('INSERT INTO utilisateurs VALUES("","ms","G","25","'.$today.'")');
    			*/
     
    			//suppression du fichier
    			//unlink ('uploads/'.$_FILES['monfichier']['name']);
    			//suppression('uploads/' , 'exe', '60');
     
     
    			}
    		}
     
    	?>
     
     
     
     
    	</body>
    </html>

  2. #2
    Membre actif
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Points : 210
    Points
    210
    Par défaut
    le plus simple, je crois serait de faire afficher ta requête avec un echo pour voir ce qui est transmis à la BD:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    for ($c=0; $c < $num; $c++) 
    							{
    							$bdd->exec('INSERT INTO exportcsv("'.$champs[$c].'")VALUES("'.$data[$c].'")');
    echo 'INSERT INTO exportcsv("'.$champs[$c].'")VALUES("'.$data[$c].'")'; //un echo pour voir la requete
    							//echo 'inertion en base <br/>';
    							//echo "<td>" . $data[$c]. "</td>";
    							}
    						//echo "</tr>\n";
    						}

Discussions similaires

  1. [MySQL] Insertion de données dans une base MySQL via un formulaire
    Par rcomlan dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 09/02/2015, 19h53
  2. Insertion de données dans une base MySQL
    Par arm3366 dans le forum SGBD
    Réponses: 4
    Dernier message: 26/02/2013, 09h46
  3. Problème d'insertion de données dans une base
    Par fraisa1985 dans le forum Général Java
    Réponses: 1
    Dernier message: 10/12/2012, 09h09
  4. Insertion de donnée dans une base MySql
    Par jep33 dans le forum Langage
    Réponses: 4
    Dernier message: 05/11/2008, 07h44
  5. [VB6]problème d'insertion des donneés dans une base d'Access2003
    Par lanbok dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/05/2006, 12h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo