IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Insertion du sigle €


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    490
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 490
    Par défaut Insertion du sigle €
    Bonjour,

    j'ai un soucis, mais je ne sais pas d'où ça vient.
    Si j'insère dans une base de données en php, le sigle € est parfaitement inséré et afficher.
    Le pb, c'est quand je l'insère dans une base avec un formulaire.
    J'ai un formulaire , avec des input type text.
    mon insertion se fait ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sql = "INSERT INTO ".$this->tableName. "
                        (idBloc,titre,urlTitre,chapeau,contenu,titreLienComplementaire,urlLienComplementaire,nbMaxiAffichage,remplissageAlgo,remplissageParametres,remplissagenbLivreMax)
              VALUES ('".utf8_decode(strtoupper($idBloc))."','".utf8_decode($titre)."','".$urlTitre."','".utf8_decode($chapeau)."','".utf8_decode($contenu)."','".utf8_decode($titreLienComplementaire)."','".$urlLienComplementaire."',".$nbMaxiAffichage.",'".$remplissageAlgo."','".$remplissageParam."',".$remplissageNbLivreMax.");";
    Si je ne mets pas utf8_decode. voici ce que j'ai dans la base, pour nos livres à 1 € => Nos livres Ã* 1 €
    avec utf8_decode => Nos livres à 1 ?.
    C'est mieux, mais le sigle € est mal interprété.

    Est ce que quelqu'un à une idée ?
    Merci d'avance

    MySQL 5.0.84-0
    Jeu de caractères pour MySQL: UTF-8 Unicode (utf8)
    Interclassement pour la connection MySQL UTF8_general_ci

  2. #2
    Membre Expert Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Par défaut
    Citation Envoyé par maysa Voir le message
    Si je ne mets pas utf8_decode. voici ce que j'ai dans la base, pour nos livres à 1 € => Nos livres Ã* 1 €
    cela veut dire que tu as la bonne information dans la base de données mais tu l'affiches mal
    montre nous le code que tu utilises pour afficher "Nos livres Ã* 1 €"

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Moi je dirais le contraire, "Ã* 1 €" doit être un symbole euro UTF8 lu comme si c'etait de l'iso, donc l'insertion n'est pas bonne.

    Je pense qu'en executant la requete avant ton insertion ca devrait marcher.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    490
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 490
    Par défaut
    Merci pour vos réponses à tous les deux...

    alors

    nosferapti :

    je récupère ma variable normalement : et là j'ai Nos livres à 1 ?
    si je fais : j'ai : Nos livres à 1 ?
    si je fais : j'ai : Nos livres ? ?

    nosferapti :
    en faisant set name utf8 en premier voici le résultat :

    Nos livres ? 1 ?

    Je pense que le pb vient de l'insertion, car en mettant utf8_decode au moment de l'insertion mon à est correct, alors que si je ne mets rien, il ne l'est pas... c'est juste le € qui pose pb dans ce cas là et non le à...

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    490
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 490
    Par défaut
    Citation Envoyé par nosferapti Voir le message
    cela veut dire que tu as la bonne information dans la base de données mais tu l'affiches mal
    montre nous le code que tu utilises pour afficher "Nos livres Ã* 1 €"
    en fait oui, j'ai presque la bonne info dans la base, juste le € qui est transformé en ?

  6. #6
    Membre Expert Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Par défaut
    montre nous la page où se trouve le formulaire
    si ce n'est pas possible montre nous le code html de cette page

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    490
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 490
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Modification de blocs</title>
    {literal}
     
    <link href="../../style.css" rel="stylesheet" type="text/css" />
     
     
    {/literal}
    </head>
     
        <body>
    <div class="containtGlobal">
     
    	<form name="affiche" id="affiche" method="get" action="{$smarty.server.PHP_SELF}">
     
     
      </form>
       <form name="crea" method="get"> 
     
       <table width="918">
     
    <tr>
     
                         <td width="325">Identifiant*</td>
     
                         <td colspan="4"><input {$disableIdBloc} type="text" id="idBloc" class="required" name="idBloc" value="{$bloc->idBloc}" onkeyup="javascript:verifField(this);" size="50"/>                        <span id="idBloc-error" class="textError"></span>{if $smarty.get.affiche}<input type="button" name="rendreVisible" onclick="javascript:voir(idBloc);" value="rendre visible"/>
     
                         {/if}</td>
             </tr>
                      <tr>
                         <td><div align="left">Contenu*</div></td>
                         <td colspan="4">
                                <select name="contenu" id="contenu" class="required" onchange="javascript:verifField(this);" >
                                     {html_options options=$optionContenu selected=$SelectedContenu}
                               </select>   <span id="contenu-error" class="textError"></span></td>
                      </tr>
                      <tr>
                         <td><div align="left">Titre</div></td>
                         <td colspan="4"><input onfocus="this.value='';" type="text" id="titre" name="titre" size="50" value="{$bloc->titre}" />                        <span id="titre-error" class="textError"></span></td>
                      </tr>
                      <tr>
                         <td><div align="left">URL du titre</div></td>
                         <td colspan="4"><input onfocus="this.value='';" type="text" id="urlTitre" size="50" name="urlTitre"  value="{$bloc->urlTitre}" />                        <span id="titre-error" class="textError"></span></td>
                      </tr>
                      <tr>
                         <td><div align="left">Nb de livres maxi &agrave; afficher*</div></td>
                         <td colspan="4"><input onfocus="this.value='';"  type="" id="nbMaxiAffichage" name="nbMaxi" onkeypress="javascript:verifField(this);" value="{$bloc->nbLivreMaxiAffichage}" class="required"/>
                         <span id="nbMaxiAffichage-error" class="textError"></span></td>
                      </tr>
                      <tr>
                         <td height="63" valign="top"><div align="left">Chapeau</div></td>
                         <td colspan="4" valign="top"><textarea  id="chapeau" cols="80" size="80" name="chapeau" />{$bloc->chapeau}</textarea>                        <span id="chapeau-error" class="textError"></span></td>
                      </tr>
     
                  <tr><td><input type="button" id="save" value="Enregistrer le bloc" onclick="javascript:sendBlocTo('creation');return false;"/></td></tr>
     
         </table>
      </form>
     
    				</div>
     
    </div>
     
     
    </body>
    PHP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    <?php require_once("Bloc.php");
    $dataSmarty = array();
    $blocs = new Bloc();
     
    $dataSmarty['displayContenu'] = "visibility:visible";
     
    $bloc = new bloc($_GET['affiche']);
     
    $dataSmarty['afficheJs'] = false;
    switch ($bloc->contenu)
    {
            case "numEditionLivre" : $dataSmarty['SelectedContenu'] = 'EL';break;
            case "numItemAVendre" : $dataSmarty['SelectedContenu'] = 'IAV';break;
            case "refLivre" : $dataSmarty['SelectedContenu'] = 'refLivre';break;
     
    }
     
    switch ($bloc->methodeRemplissage)
    { 
            case "categorie" : $dataSmarty['SelectedRemplissage'] = 'categorie';break;
            case "meilleuresVentes" : $dataSmarty['SelectedRemplissage'] = 'meilleuresVentes';break;
            case "auteurDuJour" : $dataSmarty['SelectedRemplissage'] = 'auteurDuJour';break;
     
    }
     
     
    /*$data = $bloc->getContenuBloc();*/
     
     
     
    $dataSmarty['optionContenu'] = array(	""									=>"contenu du bloc",
    														"EL"			=>"edition livre",
    														"IAV"			=> "item a vendre",
    														"refLivre"					=>"livre"
    													);
    $dataSmarty['optionRemplissage'] = array(""						=>"choix remplissage automatique",
    															"categorie"			=>"par catégorie",
    															"meilleuresVentes"=> "les meilleures ventes"
     
    														  );
     
     
    $dataSmarty['optionBloc'] = $blocs->getList();
    $dataSmarty['host'] = $GLOBALS['livrenpocheHost'];
     
    if(isset($_GET['affiche']))
    {
        $dataSmarty['SelectedBloc'] = $_GET['affiche'];
    	 $dataSmarty['SelectedRemplissage'] = $bloc->methodeRemplissage;
    	 $dataSmarty['nbLivreDansBloc'] = $bloc->getNbExemplaireParBloc();
        $dataSmarty['bloc'] = $bloc;
     
     $idBloc = $_GET['affiche'];
     $dataSmarty['afficheJs'] = true;
     
    } 
     
    require_once("head.php");
    $tpl = new TemplateEngine();
    $tpl->display('/create_tpl.html',$dataSmarty);
    Pour faire court, le code qui enregistre dans la base et sa méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
     
    if($bloc->createBloc($_POST['idBloc'],$titre,$urlTitre,$chapeau,$_POST['contenu'],$titreLienComplementaire,$urlLienComplementaire,$_POST['nbMaxiAffichage'],$_POST['remplissageAlgo'],$remplissageParam,$remplissageNbLivreMax))
            {
                echo "le bloc a été correctement créé";
            }
            else
            {
                echo "Une erreur est survenue lors de la création du bloc.";
            }
     public function createBloc($idBloc,$titre="",$urlTitre="",$chapeau="",$contenu,$titreLienComplementaire="",$urlLienComplementaire="",$nbMaxiAffichage,$remplissageAlgo="",$remplissageParam="",$remplissageNbLivreMax=1000)
        {
            if($remplissageNbLivreMax=='')
            {
                $remplissageNbLivreMax = $this->remplissageNbLivreMax;
            }
            $sql = '/* MEABloc : createBloc() */';
            $sql = "INSERT INTO ".$this->tableName. "
                        (idBloc,titre,urlTitre,chapeau,contenu,titreLienComplementaire,urlLienComplementaire,nbMaxiAffichage,remplissageAlgo,remplissageParametres,remplissagenbLivreMax)
              VALUES ('".utf8_decode(strtoupper($idBloc))."','".utf8_decode($titre)."','".$urlTitre."','".utf8_decode($chapeau)."','".utf8_decode($contenu)."','".utf8_decode($titreLienComplementaire)."','".$urlLienComplementaire."',".$nbMaxiAffichage.",'".$remplissageAlgo."','".$remplissageParam."',".$remplissageNbLivreMax.");";
      // echo $sql;
     
           $this->db->runActionQuery($sql);

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    490
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 490
    Par défaut
    un petit echo de ma requete, et là on voit bien que le pb est en amont..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UPDATE Bloc SET idBloc='ACC2',titre='voir les livres à 1 ?',

  9. #9
    Membre Expert Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Par défaut
    le problème est dans le code html, tout doit être en UTF-8 donc tu dois déjà changer cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

Discussions similaires

  1. [DOM] [Xerces] Insertion d'une entité
    Par Traroth dans le forum Format d'échange (XML, JSON...)
    Réponses: 10
    Dernier message: 19/05/2008, 09h28
  2. pb avec insertion sigle € dans MySql
    Par mohican13 dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 02/12/2005, 10h12
  3. probleme d'insertion d'un Float
    Par neness dans le forum Débuter
    Réponses: 3
    Dernier message: 07/01/2003, 12h32
  4. [Postgresql] pb lors d'insertion de données
    Par bob20000 dans le forum Requêtes
    Réponses: 8
    Dernier message: 04/11/2002, 15h33
  5. Réponses: 4
    Dernier message: 28/09/2002, 00h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo