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 :

PHP et les lettres accentuées [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 20
    Points : 19
    Points
    19
    Par défaut PHP et les lettres accentuées
    Je suis débutant en php, mysql.
    Je travaille sous windows7, avec phpmyadmin pour la base de données, (php 5.3.10)
    J'ai une petite base de données que j'ai créée sous phpmyadmin avec interclassement utf8_general_ci
    J'ai créé plusieurs tables dont une, tx_organisme avec 2 champs :
    - id , la clé, auto-incrémentée
    - lib, TEXT, utf8_general_ci
    J'ai rempli (par phpmyadmin) la table tx_organisme avec 2 enregistrements comportant des caractères accentués :
    1 Conseil Général
    2 Conseil Régional

    Quand je lis la table par le programme pagesupadm21.php, j'obtiens : des losanges avec point d'exclamation à l'intérieur à la place des 'é', ce qui n'est pas beau, ni très compléhensible.

    Je viens de lire le tuto "Passez à l'UTF-8 sans manquer une étape". Je pense avoir fait tout ce qui y est stipulé… et pourtant !

    Voici le code de pagesupadm21.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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    <?php
    session_start();
    ?>
     
    <!DOCTYPE html>
    <html>
        <head>
            <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    		<link rel="stylesheet" href= "page1.css"/>
            <title>Màj d'une table</title>
     
        </head>
        <body>
    	<h1>Super administrateur <?php 	echo $_SESSION['pseudo'];?> </h1>
    		</br>
    		</br>
    		</br>
    		<?php
    		//il faut se connecter à la base zz_sc sur localhost
    		try
    		{ 
    			$bdd = new PDO('mysql:host=localhost;dbname=zz_sc' , 'root' , '');
    			$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    			mysql_set_charset('utf8');
    		}
    		catch(PDOException $e)
    		{ 		// si erreur, affichage du message et tout s'arrête
    			die('Erreur : '. $e->getMessage());
    				//sinon, on continue
    		}//
    		$table = $_POST['choix'];     // la table est sélectionnée sur une autre page
    		$_GET['table'] = $table;
    		//echo $table;
     
    		// j'ai le nom de la table. Il faut faire autant de recherches que de table pour avoir les enregistrements.
    		mb_internal_encoding("UTF-8");
    		//echo mb_internal_encoding();   // on vérifie qu'on est bien en utf8
    		switch ($table)
    		{
    			case "tx_charge_logt":
    				$req = $bdd->query('SELECT * FROM tx_charge_logte');
    				break;
    			case "tx_ch_mens_horslogt":
    				$req = $bdd->query('SELECT * FROM tx_ch_mens_horslogt');
    				break;
    			case "tx_credit":
    				$req = $bdd->query('SELECT * FROM tx_credit');
    				break;
    			case "tx_dette":
    				$req = $bdd->query('SELECT * FROM tx_dette');
    				break;
    			case "tx_logement":
    				$req = $bdd->query('SELECT * FROM tx_logement');
    				break;
    			case "tx_nivo_scol":
    				$req = $bdd->query('SELECT * FROM tx_nivo_scol');
    				break;
    			case "tx_organisme":
    				$req = $bdd->query('SELECT * FROM tx_organisme');
    				break;
    			case "tx_orientation":
    				$req = $bdd->query('SELECT * FROM tx_orientation');
    				break;
    			case "tx_ori_dmde":
    				$req = $bdd->query('SELECT * FROM tx_ori_dmde');
    				break;
    			case "tx_pays":
    				$req = $bdd->query('SELECT * FROM tx_pays');
    				break;
    			case "tx_personne":
    				$req = $bdd->query('SELECT * FROM tx_personne');
    				break;
    			case "tx_reponse":
    				$req = $bdd->query('SELECT * FROM tx_reponse');
    				break;
    			case "tx_ressource":
    				$req = $bdd->query('SELECT * FROM tx_ressource');
    				break;
    			case "tx_stt_etranger":
    				$req = $bdd->query('SELECT * FROM tx_stt_etranger');
    				break;
    			case "tx_stt_marital":
    				$req = $bdd->query('SELECT * FROM tx_stt_marital');
    				break;
    			case "tx_stt_prof":
    				$req = $bdd->query('SELECT * FROM tx_stt_prof');
    				break;
    			case "tx_visite":
    				$req = $bdd->query('SELECT * FROM tx_visite');
    				break;
    			default:
    				echo "Cette table n'existe pas";
    		}		
     
    		while($donnees = $req->fetch())
    		{
    			echo $donnees['id'] . "    " .$donnees['lib'] .  '</br>';	
    		}
    		?>
     
     
    	</body>
    </html>

  2. #2
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 105
    Points : 4 455
    Points
    4 455
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_set_charset('utf8');
    tu mélanges PDO avec l'extension mysql_
    $moi= ( !== ) ? : ;

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 20
    Points : 19
    Points
    19
    Par défaut
    Bonjour papajoker
    Merci pour ta réponse, mais je ne suis pas assez costaud pour voir l'erreur que j'ai faite. Faut-il supprimer la ligne en question ?

  4. #4
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 105
    Points : 4 455
    Points
    4 455
    Par défaut
    Citation Envoyé par grrd Voir le message
    mais je ne suis pas assez costaud pour voir l'erreur que j'ai faite. Faut-il supprimer la ligne en question ?
    PDO n'a rien a voir avec mysql_XXX donc mysql_set_charset('utf8'); n'agit aucunement sur PDO

    pour mettre pdo en utf-8
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $bdd = new PDO('mysql:host=localhost;dbname=zz_sc' , 'root' , '', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
    ou :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $bdd->exec('SET NAMES utf8');
    $moi= ( !== ) ? : ;

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 20
    Points : 19
    Points
    19
    Par défaut
    Merci pour tes 2 réponses. ça marche très bien. Je n'avais pas compris la différence entre PDO et mysql_.
    A la prochaine, mais j'espère, le plus tard possible...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. les lettres accentuées sont remplacées
    Par al9000 dans le forum Langage
    Réponses: 9
    Dernier message: 12/07/2010, 10h22
  2. afficher les lettres accentuées
    Par siempre dans le forum C
    Réponses: 5
    Dernier message: 19/11/2009, 17h07
  3. les lettres accentuées empêchent le texte de s'afficher
    Par phil74 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 3
    Dernier message: 05/12/2008, 11h03
  4. Réponses: 4
    Dernier message: 04/05/2007, 22h49
  5. Réponses: 6
    Dernier message: 12/12/2006, 11h27

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