Importation fichier csv dans mysql (php)
Résolu/Fermé
Solmhyrn
Messages postés
1
Date d'inscription
samedi 23 décembre 2006
Statut
Membre
Dernière intervention
13 juin 2007
-
13 juin 2007 à 09:50
kio - 18 juil. 2011 à 14:51
kio - 18 juil. 2011 à 14:51
A voir également:
- Lire fichier csv php
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Lire fichier epub - Guide
- Fichier rar - Guide
- Lire fichier bin - Guide
- Fichier host - Guide
2 réponses
// ****************************************************************** *
// ******Lire un csv et l'importer dans la base de donnée *
// ******2 fichiers nécessaires : formulaire.php et ajouter.php *
// *********l'un pour choisir le fichier csv et l'autre pour *
// ***************enregistrer dans la bdd *
**** le fichier csv doit etre du type ci dessous *
*** link,email *
*** www.mafonction.com,axel@tueslemeilleur.com *
*** www.csvfacile.com,csv@insert.com *
///************************************************************ *********
//formulaire.php
<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>
________________________________________________
//ajouter.php
//lire un csv et ajouter le couple email,url dans la base de donnee
if (isset($_FILES['file'])) {
$file = $_FILES['file']['tmp_name'];
$handle = fopen($file,'r');
$row = 1;
$handle = fopen("$file", "r");
while (($data = fgetcsv($handle, 4096, ",")) !== FALSE) {
$num = count($data);
//echo "<p> $num fields in line $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
//je met les donnees en miniscule et detecte si l'email est dans la colonne 0 ou 1
//meme chose pour l'url
//je les transformes en miniscule
$data[1]=strtolower($data[1]);
$data[0]=strtolower($data[0]);
//je controle l'entete du csv
if ($data[1]=='emails' && $data[0] == 'links' ) $mode=1 ;
if ($data[1]=='email' && $data[0] == 'link' ) $mode=1 ;
if ($data[1]=='email' && $data[0] == 'links' ) $mode=1 ;
if ($data[1]=='emails' && $data[0] == 'link' ) $mode=1 ;
////meme chose pour le mode 2 il faut changer $data[0] par $data[1]
///c'est à dire si l'on souhaite avoir email,link, il faut recopier le
///meme code et changer tous les $data[0] par $data[1] et $data[1] par $data[0]
}
if ($mode==1)
{
//je controle l'email
$avant_arobase = '[-a-z0-9!#$%&\'*+\\/=?^_`{|}~]';
$nomdudomaine = '([a-z0-9]([-a-z0-9]*[a-z0-9]+)?)';
$caract_allow_before_arobase = '/^' . $atom . '+' .
'(\.' . $avant_arobase . '+)*' .
'@' .
'(' . $nomdudomaine . '{1,63}\.)+' .
$domain . '{2,63}$/i';
// test de l'adresse e-mail
if (preg_match($caract_allow_before_arobase, $data[1])) {
}
else
{
$data[1] = NULL ;
}
$data[1]=strtolower($data[1]);
$data[0]=strtolower($data[0]);
//je controle tous les donnees s'il s'agit bien d'un url et d'un email
///dans le cas contraire, ils seront filtrées
$point = strpos($data[0],".");
if($point=='')
{
$data[0]=NULL;
}
$point = strpos($data[0],"@");
if($point=='')
{
$data[0]=$data[0];
}
else
{
$data[0]=NULL;
}
if ( $data[1] != NULL && $data[0] != NULL )
{
$numberdownload=$numberdownload+1;
$marequete = "INSERT INTO matable SET
monurl ='$data[0]' ,
monemail ='$data[1]'
";
$resultat=mysql_query ($marequete) or die (mysql_error());
}
}
}
//if ( $resultat ){ echo "<p> insertion with Succesfully </p> <p>
//" ;
//si des adresses ont ete enregistrer
if ($numberdownload>0){
echo " <p>You have downloaded $numberdownload combinaisons </p>";
echo "<p>The list Id is : $rowIdListNext </p>";
}
///si aucune adresse a ete enregistrer
if ($existadresse==0 && $numberdownload==0)
{
echo " <p> Error .. Your Csv file has a problem.</p>";
echo " <p> Please notice that your csv file has a header</p>";
}
//si les adresses existe deja
if ($existadresse>0 )
{
echo " <p>$existadresse combinaisons already exist! </p>";
}
//renvoie à la page qui a valider le formulaire...c'est à dire vers formulaire.php
$departure=$_SERVER['HTTP_REFERER'];//recover the adress which the user come from
echo "<meta HTTP-EQUIV=\"Refresh\" content=\"5;URL=$departure \"> " ;
// ******Lire un csv et l'importer dans la base de donnée *
// ******2 fichiers nécessaires : formulaire.php et ajouter.php *
// *********l'un pour choisir le fichier csv et l'autre pour *
// ***************enregistrer dans la bdd *
**** le fichier csv doit etre du type ci dessous *
*** link,email *
*** www.mafonction.com,axel@tueslemeilleur.com *
*** www.csvfacile.com,csv@insert.com *
///************************************************************ *********
//formulaire.php
<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>
________________________________________________
//ajouter.php
//lire un csv et ajouter le couple email,url dans la base de donnee
if (isset($_FILES['file'])) {
$file = $_FILES['file']['tmp_name'];
$handle = fopen($file,'r');
$row = 1;
$handle = fopen("$file", "r");
while (($data = fgetcsv($handle, 4096, ",")) !== FALSE) {
$num = count($data);
//echo "<p> $num fields in line $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
//je met les donnees en miniscule et detecte si l'email est dans la colonne 0 ou 1
//meme chose pour l'url
//je les transformes en miniscule
$data[1]=strtolower($data[1]);
$data[0]=strtolower($data[0]);
//je controle l'entete du csv
if ($data[1]=='emails' && $data[0] == 'links' ) $mode=1 ;
if ($data[1]=='email' && $data[0] == 'link' ) $mode=1 ;
if ($data[1]=='email' && $data[0] == 'links' ) $mode=1 ;
if ($data[1]=='emails' && $data[0] == 'link' ) $mode=1 ;
////meme chose pour le mode 2 il faut changer $data[0] par $data[1]
///c'est à dire si l'on souhaite avoir email,link, il faut recopier le
///meme code et changer tous les $data[0] par $data[1] et $data[1] par $data[0]
}
if ($mode==1)
{
//je controle l'email
$avant_arobase = '[-a-z0-9!#$%&\'*+\\/=?^_`{|}~]';
$nomdudomaine = '([a-z0-9]([-a-z0-9]*[a-z0-9]+)?)';
$caract_allow_before_arobase = '/^' . $atom . '+' .
'(\.' . $avant_arobase . '+)*' .
'@' .
'(' . $nomdudomaine . '{1,63}\.)+' .
$domain . '{2,63}$/i';
// test de l'adresse e-mail
if (preg_match($caract_allow_before_arobase, $data[1])) {
}
else
{
$data[1] = NULL ;
}
$data[1]=strtolower($data[1]);
$data[0]=strtolower($data[0]);
//je controle tous les donnees s'il s'agit bien d'un url et d'un email
///dans le cas contraire, ils seront filtrées
$point = strpos($data[0],".");
if($point=='')
{
$data[0]=NULL;
}
$point = strpos($data[0],"@");
if($point=='')
{
$data[0]=$data[0];
}
else
{
$data[0]=NULL;
}
if ( $data[1] != NULL && $data[0] != NULL )
{
$numberdownload=$numberdownload+1;
$marequete = "INSERT INTO matable SET
monurl ='$data[0]' ,
monemail ='$data[1]'
";
$resultat=mysql_query ($marequete) or die (mysql_error());
}
}
}
//if ( $resultat ){ echo "<p> insertion with Succesfully </p> <p>
//" ;
//si des adresses ont ete enregistrer
if ($numberdownload>0){
echo " <p>You have downloaded $numberdownload combinaisons </p>";
echo "<p>The list Id is : $rowIdListNext </p>";
}
///si aucune adresse a ete enregistrer
if ($existadresse==0 && $numberdownload==0)
{
echo " <p> Error .. Your Csv file has a problem.</p>";
echo " <p> Please notice that your csv file has a header</p>";
}
//si les adresses existe deja
if ($existadresse>0 )
{
echo " <p>$existadresse combinaisons already exist! </p>";
}
//renvoie à la page qui a valider le formulaire...c'est à dire vers formulaire.php
$departure=$_SERVER['HTTP_REFERER'];//recover the adress which the user come from
echo "<meta HTTP-EQUIV=\"Refresh\" content=\"5;URL=$departure \"> " ;
amira_t
Messages postés
2
Date d'inscription
mercredi 15 juillet 2009
Statut
Membre
Dernière intervention
17 juillet 2009
17 juil. 2009 à 10:20
17 juil. 2009 à 10:20
bonjour,
j'ai essayer a importer un fichier csv dans easyphp mais il m'envoie un message d'erreur.
voila le message:
MySQL a répondu:Documentation
#1065 - Query est vide
merci de m'avoir repondre le plutot possible.
bonne journee. :)
j'ai essayer a importer un fichier csv dans easyphp mais il m'envoie un message d'erreur.
voila le message:
MySQL a répondu:Documentation
#1065 - Query est vide
merci de m'avoir repondre le plutot possible.
bonne journee. :)