begin process at 2012 05 29 00:45:17
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

CSV à Mysql : probleme des accents sur les majuscules


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

CSV à Mysql : probleme des accents sur les majuscules

mardi 12 août 2008 à 12:10:49 | CSV à Mysql : probleme des accents sur les majuscules

kataVB



boujour tout le monde

boujour tout le monde
Pour un site j'ai eu besoin de faire un petit script pour importer des fichies csv vers une table Mysql.
le script marche bien, ça n'affiche aucun erreur, et en plus j'ai fait attention aux accent et j'ai pas de souci sauf pour les accents sur les majuscules : "Â","Ë", ... je ne comprends pas prq ça marche pas pour les majuscules ... dans ma base de donnée le  est supprimé.
Ex : dans mon fichier csv j'ai " Âme ", après l'exécution de mon script le mot devient "me" et ça s'enregistre comme ça dans ma base de donné.
voila voila j'ai regardé sur plein de forum, ça parle sur les autres accents mais pas les accents sur les majuscules, donc si vous avez une solution je serais très reconnaissant, merci d'avance.


je vous passe mon script aussi si vous voulez jeter un coup d'oeil, et si vous avez des remarques seront les bienvenues, merci d'avance


<?php
//Se connecter à Mysql 
include 'sql/connection.php';

//Démarrer une session 


//Début.
//Initialisations 
$_SESSION['fichiersCSV'] = null; 
$_SESSION['tables'] = null; 
$_SESSION["Erreurs"] = null; 
function NoAccent($texte)
{
$acc='Âàáâãäåòóôõöøéèêëìíîïùúûüÿ';
$noacc='Âaaaaaaooooooeeeeiiiiuuuuy';
$texte = strtr($texte,$acc,$noacc);
return $texte;
}
function enlever($text)
{
$liste = array(' ','-','_',')','(',']','[',':',',','!',"'",'/','?',',');
$text=str_replace($liste,'',$text);
$text=str_replace('$','s',$text);
$text=strtolower($text);
$text=NoAccent($text);
return $text;
}
//Dossier de travail contenant les fichiers CSV   
$dir= "csv/";
//Extraire la liste des fichiers dans le dossier de travail 
$dh  = opendir($dir);
while (false !== ($fichier = readdir($dh))) {           
        //Ne traiter que les fichiers 
        if (!is_file("$dir/$fichier")) continue; //reboucle 
        $_SESSION['fichiersCSV'][] = $fichier;
        //Déterminer le nom de la table à partir de celui du fichier 
        $nomTable = explode(".", $fichier); //Sépare le nom de l'extension du fichier
        $nomTable = str_replace('-', '_', $nomTable[0]); //reformate le nom 
        $_SESSION['tables'][] = $nomTable; //stock le nom dans la session 
        //Créer la table si n'existe pas 
        $supprimerTable = "DROP TABLE `$nomTable` ";
        if (! @mysql_query($supprimerTable, $connexion))
        {
        $_SESSION["Erreurs"][] ='Erreur suppression de la table ' . $nomTable. " (".mysql_error().")";
        }
        $creerTable = " 
        CREATE TABLE IF NOT EXISTS `$nomTable` ( 
               
            `id` INT( 100 ) NOT NULL AUTO_INCREMENT ,
            `titre` VARCHAR( 200 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL ,
            `lien` VARCHAR( 200 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL ,
            PRIMARY KEY ( `id` )            
            )"; 
        if (! @mysql_query($creerTable, $connexion))  
            $_SESSION["Erreurs"][] ='Erreur Création de la table ' . $nomTable. " (".mysql_error().")"; 
         
        //Effectuer l'importation de données dans la table 
       
        //echo "<br><br>";
        $fichier_csv_ouvert = @fopen ("$dir/test.csv", "r"); //ouverture csv en lecture 
        if ( !$fichier_csv_ouvert)  
            $_SESSION["Erreurs"][] ='Erreur Import dans la tables ' . $nomTable . " (Erreur de lecture du fichier CSV)"; 
        // 
        $valeurs_import = array(); //liste des valeurs pour la requête SQL INSERT 
      
       //Lecture CSV 

        $var =0;
        while ($data = @fgetcsv($fichier_csv_ouvert, 10000, ";")) //lire toute une ligne csv 
        {
       
        //echo utf8_encode($data[0]."<br>");
        //echo enlever($data[0])."<br>";
        //echo addslashes($data[0])."<br>";
        //echo $var."<br>".$data[0]."<br>";
            //Format d'une ligne Values pour SQL INSERT  
       
            $valeurs_import[] = "('".addslashes($data[0])."','"."ser_".enlever($data[0]).".html"."')";
        }
       
        //SQL INSERT étendu 
       
        /*or ($i=0;$i<=count($valeurs_import);$i++)
        {
        echo"<br>";
        echo $valeurs_import[$i];
        }*/
       
        //echo count($valeurs_import);
       
        if (count($valeurs_import)>0) 
        { 
       
            //Import 
            $import = "INSERT INTO `$nomTable` (`titre`,`lien`)  
                        VALUES " . implode(",",$valeurs_import); 
               if (! @mysql_query($import, $connexion))  
                $_SESSION["Erreurs"][] ='Erreur Import dans la table ' . $nomTable . " (".mysql_error().")";
            //echo $import;
        } 
        else $_SESSION["Erreurs"][] ='Erreur Import dans la tables ' . $nomTable . " (Fichier CSV vide)";

       
        @fclose ($fichier_csv_ouvert); //fin d'usage du fichier csv 


//Debug 
echo "<b>Résultat de l'importation à partir de $dir :</b>"; 
print_r ($_SESSION['fichiersCSV']); 
echo"<br>";
print_r ($_SESSION['tables']); 
echo"<br>";
print_r ($_SESSION['Erreurs']); 
echo"<br>";

?>
mardi 12 août 2008 à 12:51:10 | Re : CSV à Mysql : probleme des accents sur les majuscules

Evangun

Salut,

tu pouvais aussi continuer à poster sur le sujet où tu as posé la question la première fois...

Bref je vais peut-être me répéter, mais as-tu mis SET NAMES UTF8 au moment de ta connexion à la base de données, est-ce que l'encodage de ton fichier php est bien utf8 (à vérifier dans ton éditeur de texte), et est-ce que tu as bien mis le header utf8 dans la page envoyée au navigateur ?

PS: tu peux demander plus d'explication si tu ne comprends pas ce que je dis mais évite de reposer la question comme si je n'avais rien dit


Cette discussion est classée dans : fichier, session, echo, import, csv


Répondre à ce message

Sujets en rapport avec ce message

Affichage données fichier csv [ par flopad ] Salut à vous!J'ai le code suivant : A la place d'afficher le fichier, je voudrais seulement afficher la ligne contenant la variable tapée dans le form Import fichier csv dans une BBD (mysql) [ par onylink ] Bonjour,Je cherche à importer un fichier de type csv pour ensuite rentrer les valeurs dans la bdd.        <input type="file" name="fichie encoder un fichier distant csv en utf8 sans bom [ par hdh ] Bonjour petite question sur l'utf8 avec bom :-) gnark gnark !!! On me livre des fichier csv à importer dans mysql. Je les importe avec un 'LOAD DATA L J' ai un souci avec une Session php [ par Bxapero ] Mon souci est le suivant, quand je clic sur le lien de la page index.php, la session se créée sans aucun souci et je peux cliquer sur le lien de la pa afficher un lien de téléchargement d'un fichier stocké dans une base de données [ par hamzvb ] bonjour tout le monde [^^happy13] dans mon site j'ai crée deux espaces(membre et administrateur),l'admin dans son espace ajoute des fichier dans la BD imoprtation d'un fichier excel en php [ par firdaousgenie ] bjr, je fait un script qui affiche un fichier excel en php, voilà mon script: setOutputEncoding('CP1251'); $data->read('testfile.xls'); f PFE [ par samia22 ] bonsoir a tous, j'ai une probleme lors de l'ajout des produits au pannier.. le client doit s'authentifier avant d'ajouter des produits mais ca ne mar Ecraser des données de champ d'une table php [ par senateur17 ] Bonjour , J'ai un table avec des champs par exemple nom,prenom,adresse Et ici j'ai un fichier en csv qui comporte ces trois champs Mon souci c'est d importer un fichier CSV dans une base MySQL [ par omonpedro ] Bonjour, J'ai besoin d'importer un fichier CSV (en provenance d'une base MSSQL) dans une base MySQL. Ce fichier contient un champ Date au format JJ/M Upload un fichier [ par michimichid ] Bonjour, je suis entrain de créer un formulaire d'inscription qui contient un champs Logo où je dois uploader un logo puis l'insérer dans ma base de


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,827 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales