C-Stan, Création de solutions web, Ingéniérie informatique

Création de solutions web, Ingéniérie informatique

C-Stan, Création de solutions web, Ingéniérie informatique
Accueil > Blog > Le coin des développeurs > Mise à jour d’une table MySQL à partir d’un fichier CSV en PHP
 
Mise à jour d'une table MySQL à partir d'un fichier CSV en PHP

Mise à jour d’une table MySQL à partir d’un fichier CSV en PHP

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

Commentaires Commentaires

Aucun commentaire

Ajouter un commentaire

Vous devez être identifié pour poster un commentaire. Merci de vous enregistrer ou de vous connecter sur la page d'identification


 

Articles dans Le coin des développeurs

Spip 2.1 : mes articles ont disparu !

Depuis le 3 Septembre 2010, les sites tournant sous la version 2.1 de Spip ont vu tous leurs (...)

Redémarrage automatique de Clamav après un plantage

Sur les RPS proposés par OVH, beaucoup de personnes ont des problèmes avec l’anti-virus Clamav qui (...)

Mise à jour d’un serveur releases OVH

Pourquoi mettre à jour votre serveur ? Les patchs : apportent des améliorations aux logiciels (...)

QMail : corriger l’erreur "multilog : fatal : unable to lock directory"

Lorsque vous redémarrez QMail ou si vous ne recevez plus d’e-mails et que l’une des erreurs (...)

MySQL : créer une connexion distante

Voici la marche à suivre pour utiliser une connexion distante MySQL. C’est à dire se connecter à (...)


Membres

Espace Membre

57 square Herzog - ZAC Ban la Dame - Parc Eiffel Energie - 54390 FROUARD - 03 83 50 43 74 / Mentions légales

Thumbnails powered by Thumbshots