Retourner correctement des accents en UTF8 avec PHP et MYSQL

logo php

Dans ce billet je présente un script en PHP et SQL afin d’extraire un liste de chaîne d’une base de donnée MYSQL et retourner le tout en UTF8. J’ai eu besoin de ce script lors d’un développement afin de régler un problème d’accent qui était interprété sous la forme d’un point d’interrogation lorsque je faisais mon affichage en php.

Pour débuter assurez vous d’avoir une table SQL au bon format d’encodage
Avec comme la configuration suivante de votre table SQL :

nom_categories  VARCHAR(255)    utf8_general_ci     Non Aucune

Cette fonction permet de se connecter a la base SQL, on passe en argument la requête SQL ainsi que le nom de la base de donnée sur laquelle travailler. Pensez à adapter vos identifiants.

function connection_mysql($db, $query){
        $base = mysql_connect ('127.0.0.1', 'root', 'mdproot');
        mysql_select_db ($db, $base) ;
        $query_me = mysql_query($query) or die ('<p class="error">La requête [ '. $query .' ] présente une/des erreur()s '.mysql_error().'</p><BR />');
        mysql_close();
        Return $query_me;
}

Cette fonction permet de retourner la liste des des chaines retournées via la requêtes SQL, à adapter selon votre BDD

function get_categories_wordpress(){
    $query = "SELECT * FROM `wp-categories`";
    mysql_query("SET NAMES 'utf8'");
    $connection_mysql = connection_mysql('wordpress', $query);
    Return $connection_mysql;
}

On appel la fonction afin de retourner les catégories puis on la liste via un mysql fetch array qui retourne un tableau avec les résultats.

$categories =   get_categories_wordpress();
    while ($data = mysql_fetch_array($categories)) {
        echo '<option value="'.utf8_encode($data['nom_categories']).'">'.utf8_encode($data['nom_categories']).'</option> ';
    }

Laisser un commentaire