Insertion d'un fichier csv dans BDD

debutant -  
 debutant -
Bonjour,

Je voudrais insérer des fichiers en .csv dans ma base de donnée(Xampp, PHPMyAdmin)
J'ai crée sous PhpMyAdmin une table nommée cout et je voudrais donc le remplir en insérant le fichier .csv

Ma table cout est composé de : Id_Cout, MontantB, MontantN

J'ai crée un formulaire avec un bouton parcourir(qui va aller chercher le fichier)
Maintenant je dois crée un script en php et c'est la que je bloque....
j'ai cherché un peu partout mais je n'ai malheureusement pas trouvé la solution...

voici mon formulaire en html :

<form action="ajouter.php" method="post" enctype="multipart/form-data" name="form1">


<p><input type="file" name="file" /></p>

<input type="submit" name="Submit" value="Submit">
</form>


Merci de m'aider pour le script SVP



A voir également:

39 réponses

jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Il faut le faire en deux fois ;-)

Tu fais deux requetes, donc deux fois :
$sql1="INSERT INTO ma table VALUES (mes valeurs)";
$req1=mysql_query($sql1)or die (mysql_error());

$sql2="INSERT INTO ma table 2 VALUES (mes autres valeurs)";
$req2=mysql_query($sql2)or die (mysql_error());


0
debutant
 
oui merci tout marche :)
0
debutant
 
$sql="INSERT INTO couts VALUES ('".$tableauValeurs[0]."', '".$tableauValeurs[12]."', '".$tableauValeurs[15]."')";

$sql1="INSERT INTO rub VALUES ('".$tableauValeurs[9]."', '".$tableauValeurs[10]."', '".$tableauValeurs[16]."', '".$tableauValeurs[17]."')";

$sql2="INSERT INTO rem VALUES ('".$tableauValeurs[13]."', '".$tableauValeurs[14]."')";

$req=mysql_query($sql)or die (mysql_error());
$req2=mysql_query($sql1)or die (mysql_error());
$req3=mysql_query($sql2)or die (mysql_error());

}

//vérification et réponse
if ($req)
{
echo"Ajout dans la base de données effectué avec succès";
}
else
{
echo"Echec dans l'ajout dans la base de données";
}

if ($req2)
{
echo"Ajout dans la base de données effectué avec succès";
}
else
{
echo"Echec dans l'ajout dans la base de données";
}

if ($req3)
{
echo"Ajout dans la base de données effectué avec succès";
}
else
{
echo"Echec dans l'ajout dans la base de données";
}

Sa rajoute les lignes mais pas les valeurs(qui sont vides ou des zéro)
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Bah ca veut dire que ton $tableauValeurs est vide alors !
Fais un print_r($tableauValeurs) pour voir ce qu'il y a dedans
0

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

Posez votre question
debutant
 
"Numéro du centre de facturation","Numéro de référence de la facture","Nom du client","Numéro de l'utilisateur","Nom et prénom de l'utilisateur","Numéro de référence de l'utilisateur","Numéro de téléphone","Période de la facture","Nom de la rubrique","Nom de la sous-rubrique","Quantité ou volume","Montant brut","Taux de remise","Montant des remises","Montant Net"," Nom de la rubrique de niveau 1"," Nom de la rubrique de niveau 2"
"7.22548.11",20001720010313," SERVICE FINANCIER","7.22548.11.00.100006","1 COMMUNE DE SEVRAN","0842048077-0842048077",143101060,27/03/13,"Communications",,,"47,9",,"-9,35","38,55",,
"7.22548.11",20001720010313," SERVICE FINANCIER","7.22548.11.00.100006","1 COMMUNE DE SEVRAN","0842048077-0842048077",143101060,27/03/13,"Communications",,,"47,9","19,52","-9,35","38,55","Depuis le fixe",
"7.22548.11",20001720010313," SERVICE FINANCIER","7.22548.11.00.100006","1 COMMUNE DE SEVRAN","0842048077-0842048077",143101060,27/03/13,"Communications",,,0,0,0,0,"Depuis le fixe","Communications incluses"
"7.22548.11",20001720010313," SERVICE FINANCIER","7.22548.11.00.100006","1 COMMUNE DE SEVRAN","0842048077-0842048077",143101060,27/03/13,"Communications","Appels Fixes vers Fixes",03:52:06,0,0,0,0,"Depuis le fixe","Communications incluses"
"7.22548.11",20001720010313," SERVICE FINANCIER","7.22548.11.00.100006","1 COMMUNE DE SEVRAN","0842048077-0842048077",143101060,27/03/13,"Communications","Appels Fixes vers International",01:29:51,0,0,0,0,"Depuis le fixe","Communications incluses"
"7.22548.11",20001720010313," SERVICE FINANCIER","7.22548.11.00.100006","1 COMMUNE DE SEVRAN","0842048077-0842048077",143101060,27/03/13,"Communications","Appels Fixes vers Interne",03:13:18,0,0,0,0,"Depuis le fixe","Communications incluses"

voici les données que je dois importé dans déférent tables(rub,rem,couts)

et le code :

$sql="INSERT INTO couts VALUES ('".$tableauValeurs[11]."', '".$tableauValeurs[14]."')";
$sql1="INSERT INTO rub VALUES ('".$tableauValeurs[9]."', '".$tableauValeurs[10]."', '".$tableauValeurs[16]."', '".$tableauValeurs[17]."')";
$sql2="INSERT INTO rem VALUES ('".$tableauValeurs[13]."', '".$tableauValeurs[14]."')";


$req=mysql_query($sql)or die (mysql_error());
$req2=mysql_query($sql1)or die (mysql_error());
$req3=mysql_query($sql2)or die (mysql_error());


Mais sa insère les lignes mais pas les données....
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Fais plutot un print_r de chaque variable que tu veux inséré, genre print_r($tableauValeurs[11]) pcq le tableau est un peu long pour chercher le 11 et les autres x)
0
debutant
 
quand je fait print_r j'ai une page blanche qui s'affiche...
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Ah j'ai mieux :)

print_r($sql);
print_r($sql1);
print_r($sql2);

Mais avant de les executé
0
debutant
 
$sql="INSERT INTO couts VALUES ('".$tableauValeurs[11]."', '".$tableauValeurs[14]."')";
$sql1="INSERT INTO rub VALUES ('".$tableauValeurs[9]."', '".$tableauValeurs[10]."', '".$tableauValeurs[16]."', '".$tableauValeurs[17]."')";
$sql2="INSERT INTO rem VALUES ('".$tableauValeurs[13]."', '".$tableauValeurs[14]."')";

print_r($sql);
print_r($sql1);
print_r($sql2);

$req=mysql_query($sql)or die (mysql_error());
$req2=mysql_query($sql1)or die (mysql_error());
$req3=mysql_query($sql2)or die (mysql_error());


ça va donc se présenter comme ça ?
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Ouais voilà :)
0
debutant
 
INSERT INTO couts VALUES ('', '')INSERT INTO rub VALUES ('', '', '', '')

voila ce qui s'affiche....
Tout en bas de la page il y a écrit Query was empty
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Bah voila, les élements de ton tableau que tu veux inséré sont vide ;-)
0
debutant
 
Bonjour, tout est fini mais une dernière question...
Je dois sélectionner le fichier avec un bouton parcourir. Or, dans mon code il y a le chemin et donc le bouton parcourir ne sert plus a rien...
Comment faire pour changer ?

$fichier = fopen("C:\Fichier\ex.csv", "r");

merci
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Attention, le bouton parcourir agit sur l'ordinateur de l'utilisateur, afin de prendre l'élement sélectionner sur l'ordi de l'utilisateur et de le copier sur ton serveur.

Si c'est ce que tu veux faire, tu récupères avec le fichier sous cette forme : $_FILES[nom du fichier][informations du fichier]
Donc si tu as un <input type="file" name="monFichier">
Tu le récupère avec $_FILES['monFichier']['tmp_name'] sur le quel tu peux faire un fopen
0
debutant
 
//Le chemin d'acces

$fichier = fopen($_FILES['monFichier']['tmp_name'], "r");

Merci pour de votre aide, ca fonctionne :)
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Ouais ! Et si ca marche pas, essaye fopen(real_path($_FILES['monFichier']['tmp_name']))
0
debutant
 
ok c'est noté :)
Merci
0
debutant
 
Bonjour,
Une dernière question(je sais je suis lourd :D)
Comment faire pour ne pas prendre la première ligne(nom de colonne)

Code :

$uneLigne = fgets($fichier, 1024);

Merci
0
debutant
 
Bonjour,

j'ai réussi :)
Mais un ultime problème persiste...
ca ne prend pas les chiffre a virgule (47.5 devient 47)
pourtout j'ai essayé avec tout(float,decimal etc...)

Merci
0