26 mars 2010
Cette fonction permet de mettre à jour une table MySQL à partir d’un fichier CSV. Si la valeur n’existe pas dans la table, elle est ajoutée, sinon on la met à jour.
Dans un premier temps on parse le fichier CSV, puis on génère les requêtes nécessaires à la mise à jour de la table MySQL.
<?php
/*
$fichier : lien relatif vers le fichier CSV
$table_mysql : nom de la table MySQL à remplir ou à mettre à jour
$id_table : id primaire de la table, si l'id existe, on met à jour, sinon on insert
$champs : tableau contenant les nom des champs MySQL de la table $table_mysql dans l'ordre d'apparition dans le fichier CSV
*/
function CSVtoMySQL($fichier, $table_mysql, $id_table, $champs){
$separateur=";";
$delimiteur='"';
$saut_ligne="\n";
//Fonction de connexion à la base de donnée
getconnection();
//Si le fichier existe
if(file_exists($fichier)){
if($chaine = @implode("",@file($fichier))) {
$lignes=explode($saut_ligne,$chaine);
//On parcours toutes les lignes du fichier
foreach($lignes as $ligne){
//On récupère les valeurs
$champs_valeur=explode($separateur,$ligne);
//On enlève le délimiteur
foreach($champs_valeur as $key=>$val){
$valeur_temp=trim($val);
if($valeur_temp!='""'){
//On enlève les délimiteurs
if(substr($valeur_temp,0,1)==$delimiteur){
$valeur_temp=substr($valeur_temp,1);
}
if(substr($valeur_temp,-1)==$delimiteur){
$valeur_temp=substr($valeur_temp,0,-1);
}
}else{
$valeur_temp='';
}
$champs_valeur[$key]=$valeur_temp;
}
$position_clef=array_search($id_table,$champs);
//On regarde si la valeur existe déjà dans la table
$select="select * from ".$table_mysql." where ".$id_table."=\"".$champs_valeur[$position_clef]."\"";
$res=mysql_query($select);
//Si existe deja on met à jour
if(mysql_num_rows($res)>0){
$ligne_existante=mysql_fetch_array($res);
$update="update ".$table_mysql." set ";
foreach($champs as $key=>$champ){
if($champ!=$id_table){
$update.=" ".$champ."=\"".$champs_valeur[$key]."\",";
}else{
$valeur_id_table=$champs_valeur[$key];
}
}
$update=substr($update,0,-1);
$update.=" where ".$id_table."=\"".$valeur_id_table."\"";
mysql_query($update);
}else{
// Sinon on insert
$insert="insert into ".$table_mysql." set ";
foreach($champs as $key=>$champ){
$insert.=" ".$champ."=\"".$champs_valeur[$key]."\",";
}
$insert=substr($insert,0,-1);
mysql_query($insert);
}
}
}
}
}
?>Loïc Baumont
Vous devez être identifié pour poster un commentaire. Merci de vous enregistrer ou de vous connecter sur la page d'identification
Depuis le 3 Septembre 2010, les sites tournant sous la version 2.1 de Spip ont vu tous leurs (...)
Sur les RPS proposés par OVH, beaucoup de personnes ont des problèmes avec l’anti-virus Clamav qui (...)
Pourquoi mettre à jour votre serveur ? Les patchs : apportent des améliorations aux logiciels (...)
Lorsque vous redémarrez QMail ou si vous ne recevez plus d’e-mails et que l’une des erreurs (...)
Voici la marche à suivre pour utiliser une connexion distante MySQL. C’est à dire se connecter à (...)
.. Sites & applications pour mobiles
.. Conseil, Gestion de projet & A.M.O.
.. Formations
.. Infos du web
C-Stan, 42 rue de la gare - 54460 Liverdun / Mentions légales
Aucun commentaire