Probleme csv à mysql : accent

kataVB Messages postés 31 Date d'inscription dimanche 18 novembre 2007 Statut Membre Dernière intervention 11 décembre 2009 - 4 août 2008 à 11:04
cs_Vins974 Messages postés 104 Date d'inscription lundi 19 janvier 2009 Statut Membre Dernière intervention 20 février 2009 - 23 janv. 2009 à 05:29
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 le "Â" je ne comprends pas prq ça marche pas pour cette lettre ... 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 "Â", donc si vous avez une solution je serais très reconnaissant, merci d'avance.

4 réponses

Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
4 août 2008 à 15:05
Salut,

ta lettre n'est différente des autres lettres accentuées pour php a priori. Fais plutôt voir ton script; s'occupe-t-il de l'encodage et tu aurais oublié le  ?

PS: en français on ne met pas d'accent aux majuscules, j'ai envie de te dire que ton problème n'a pas lieu d'être :)
0
kataVB Messages postés 31 Date d'inscription dimanche 18 novembre 2007 Statut Membre Dernière intervention 11 décembre 2009
4 août 2008 à 15:29
boujour tout le monde

oui je sais qu'on met pas d'accent mais j'ai pas tro le choix parce que je dois respecter le cahier de charge ...
non, mon script s'occupe pas de l'encodage, mais j'ai respecté les même normes dans ma bbd ainsi que dans mon fichier csv ( UTF-8 )

sinon voici mon script :

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

//Démarrer une session 
session_start() ; 

//Début.
//Initialisations 
$_SESSION['fichiersCSV'] = null; 
$_SESSION['tables'] = null; 
$_SESSION["Erreurs"] = null; 
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 "

";
        $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]."
");
        echo enlever($data[0])."
";
        echo addslashes($data[0])."
";
        //echo $var."
".$data[0]."
";
            //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"
";
        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 "Résultat de l'importation à partir de $dir

"; 
print_r ($_SESSION['fichiersCSV']); 
echo"
";
print_r ($_SESSION['tables']); 
echo"
";
print_r ($_SESSION['Erreurs']); 
echo"
";

?>
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
4 août 2008 à 15:41
Là comme ça à première vue, je soupçonne ta fonction NoAccent, surtout si tu le fais après un utf8_encode. Mais je n'ai pas tout lu en détail, je peux me tromper.
Autrement, au moment d'ouvrir la connexion SQL, n'oublie pas mysql_query('SET NAMES utf8 ;'); si tu ne l'as déjà fait.
à+
0
cs_Vins974 Messages postés 104 Date d'inscription lundi 19 janvier 2009 Statut Membre Dernière intervention 20 février 2009
23 janv. 2009 à 05:29
Salut kataVB

Je voulais savoir comment t'as fait ton script en gérant en même temps, les accents ??? moi j'ai utilisé AJAX pour ma liste déroulante, et je vois des "?" ..; Aide moi stp merciiii

[ 'Tu trouveras toujours plus fort que toi' ]
0
Rejoignez-nous