begin process at 2012 05 28 19:53:08
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

BDD a caractere bizar ...


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

BDD a caractere bizar ...

mercredi 17 octobre 2007 à 17:26:28 | BDD a caractere bizar ...

Teclis01

Bonjour,
Voilà ma bdd contient ce genre de caractere:
é pour é
ê pour ê
et je voulais savoir si il y avait un moyen de transformer tout le contenu de ma bdd via des update en caracteres dit speciaux pour le html soit:
é pour é
etc...

j'avais fait ce script mais qui ne fait pas ca il il ne sait pas definir quel type un champ attend.
Si qqun a une idée ou une proposition, je suis preneur

<?php
$rLink = mysql_connect("localhost", "root", "")or die("Impossible de se connecter : " . mysql_error());
$rListTable = mysql_list_tables("bdd");
$iTables = mysql_num_rows($rListTable);
$sContent='';
for ($i=0;$i<$iTables;$i++) {
    $sTable=mysql_tablename($rListTable,$i);
    $sSql='SELECT * FROM '.$sTable;
    $rSql=mysql_query($sSql);
    $iFields=mysql_num_fields($rSql)-1;
    for($iField=0;$iField<=$iFields;$iField++){
        $sNameField=mysql_field_name($rSql,$iField);
        $aTable[$sTable][]=$sNameField;
    }
    while ($aResult = mysql_fetch_assoc($rSql)) {
        foreach($aTable as $sTable=>$aField){
            foreach($aField as $iField=>$sField){
                $sResult=$aResult[$sField];
                $sResult2=utf8_decode($aResult[$sField]);
                $aFieldValueOrigin[$sField]=$sResult;
                $mPosition=strpos($sResult2,'?');
                if($mPosition===false || $sField=='id'){
                    $aFieldValueChange[$sField]=$sResult2;
                }
            }
        }
        $sSqlUpdate='update '.$sTable.' set';
        $sSqlClause='where';
        foreach($aFieldValueChange as $sField=>$sValue){
            $sSqlUpdate.=' '.$sField."='".utf8_encode($sValue)."',";
            $sSqlClause.=' '.$sField."='".$aFieldValueOrigin[$sField]."' AND";
        }
        $sSqlUpdate=substr($sSqlUpdate,0,strlen($sSqlUpdate)-1);//on vire la virgule
        $sSqlClause=substr($sSqlClause,0,strlen($sSqlClause)-3);//on vire le AND
        $sSqlUpdateEnreg=$sSqlUpdate.$sSqlClause;
        $sContent.=$sSqlUpdateEnreg;
        mysql_query($sContent);
    }
}
mysql_free_result($rListTable);
mysql_close($rLink);
echo $sContent;
file_put_contents('./utf8.txt','');
file_put_contents('./utf8.txt',$sContent);
echo '<pre>';
print_r($aTable);
echo '</pre>';
?>

--------------------------------------------------------------------------------------------------
         Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

mercredi 17 octobre 2007 à 20:11:36 | Re : BDD a caractere bizar ...

malalam

Administrateur CodeS-SourceS
Hello Alex,

soit tu encodes ta table en utf8, en faisant gaffe à la sortie
soit tu décodes tes chaînes utf8 avant de les insérer en base
et l'autre truc, tu peux faire un htmlentities() sur tes chaînes avant de les insérer en base ?

mercredi 17 octobre 2007 à 20:12:22 | Re : BDD a caractere bizar ...

malalam

Administrateur CodeS-SourceS
Réponse acceptée !
et sinon, un utf8_decode() sur tes sorties de base devrait fonctionner, avec tes données déjà mal-en-point.
Sinon, un bête str_replace () ;-)

mercredi 17 octobre 2007 à 21:21:12 | Re : BDD a caractere bizar ...

Teclis01

kikoo johan
en fait pour expliquer le topo, la bdd contient ces données étranges mais aussi des données "normales"

je peux très bien avoir par exemple comme donnée euh ...:
donnée1
donnée
et ce dans le meme champs de la même table.
En fait elle contient un dump d'une table iso je suppose et maintenant elle fonctionne en utf8 de ce fait j'ai les 2 dans la table.
Pour faire encore plus drole, la classe qui recupere les données de cette table fait 40ko avec un code hyper crade du coup je pensais faire un script pour mettre a jour les données qui sont "moches".

Je suis arrivé a la conclusion de faire un script qui liste les tables, les champs, qui recupere les contenu de tous les enregistrements de tous les champs de toutes les tables et regarder si les caracteres caracteristique de l'encodage utf8 sont présent.

S'ils le sont, je str_replace par le caractère qui va bienet j update via les vielles valeurs.
C'est bcp pour pas grand chose mais bon ... au moins ca a l air de marcher et je crois que bcp de sites devrait en faire autant vu certains affichages pourris

Merci en tt cas de t'etre penché sur le problème


--------------------------------------------------------------------------------------------------
         Il vaut mieux poser une question et passer pour bête que le rester toute sa vie



Cette discussion est classée dans : mysql, bdd, sfield, ssqlupdate, ssqlclause


Répondre à ce message

Sujets en rapport avec ce message

MySQL [ par intello2001 ] j'ai fait une base MySQL toute neuve, toute VIDE !!je voudrai avoir des exemple de création de table et tt sa...je c juste sa :$host="sql.free.fr";$ba BDD mysql --> Access [ par YarbY ] SalutJ'ai un site qui tourne avec une base de donées mysql, et je voudrais récupérer les données dans Access, en gardant ma base sur le serveur. Je ve postgresl --> mysql [ par NDK ] Bonjour, Je dois reprendre un site qui a été réalisé en php avec une bdd en Postgresql, et j'aimerais convertire le code pour qu il travaille avec une image php Mysql [ par arnaldo21 ] bonjour pourriez-vous me donner un exemple concret d'affichage d'image a partir d'une bdd. J'utilise un upload qui stock le nom de l'image dans la bdd Php & MySql ??? [ par nova85 ] Je voudrai savoir si il est possible de realiser un site assez important juste avec une BDD mysql , si c'est capable de resister , et surtout savoir s liste deroulante bdd mysql [ par lagombe ] Voilà je tente désespérement de monter sur un formulaire deux listes déroulantes, la première apparaît toute seule (contenu d'une bdd, ça ça marche... Help !!! probleme de connection BDD et affichage dans une pasge php [ par chapata ] Bonjour a tous,J'ai installer EasyPHP en début de semaine et je me suis mit depuis peu aux BDD (mysql et php), et j'ai une question pour vous :J'ai cr MYSQL - verifier si une donnée est dans la bdd [ par ] Bonjour , je suis debutant en php/MYSQL et j'aimerai bien savoir comment verifier si un un pseudo est deja dans la bdd pour eviter des doubles inscrip Intégrité BDD [ par isis26 ] Bonjour,Je suis débutante en PHP. Je dois charger un fichier texte dans une base de données MySQL.Une ligne du fichier permet de remplir plusieurs tab Lister une bdd sans les doublons [ par NewSky ] Bonjour,Je suis à la recherche d'une façon pour lister une colonne d'une bdd MySQL sans les doublons.Je m'explique:j'ai une base avec 2 colonnes: une


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

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 : 1,030 sec (3)

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