Accueil
Accueil Le Club Delphi Kylix C C++ Java J2EE DotNET & C# Visual Basic Access Pascal Dev Web PHP ASP XML UML SQLSGBD Windows Linux Autres
logo
Sommaire > Bases de données > MySQL
        Comment lancer une recherche dans ma base MySQL ?
        Comment se connecter à une base MySQL ?
        Comment se connecter à deux bases de données en même temps avec le même login ?
        Comment connaître le nombre de lignes retournées par une requête MySQL ?
        Comment connaître l'id auto_increment de mon dernier ajout ?
        Comment ouvrir une connexion persistante vers une base MySQL ?
        Comment obtenir le nom de mes bases de données ?
        Comment obtenir les noms de toutes mes tables dans une base de données ?
        Puis-je exécuter plusieurs requêtes SQL en un seul mysql_query() ?
        Comment afficher une date MySQL en français ?
        Comment convertir une date MySQL au format francophone ?
        Comment extraire des enregistrements appartenant à un intervalle de dates ?
        Comment afficher les valeurs DATE d'un SELECT ?
        Comment connaître le nombre d'enregistrements affectés par une requête de type : DELETE, INSERT ou UPDATE ?
        Comment se repositionner sur le premier enregistrement d'une requête Select ?
        Comment se positionner sur le dernier enregistrement d'une requête Select ?
        Comment afficher un enregistrement aléatoirement ?
        Explications et correction de l'erreur 'supplied argument is not a valid MySQL result resource'
        Comment utiliser de l'UTF-8 avec PHP / MySQL ?

precedent    sommaire    suivant   


Comment lancer une recherche dans ma base MySQL ?
auteur : Cyberzoide
Vaste sujet, ça dépend de la structure de la base !

Vous seront donnés ici quelques éléments de syntaxe de MySQL pour faire des sélections, tris et regroupements avec MySQL.

Une requête sera du type :
SELECT colonne1, colonne2, ...
FROM table1, table2, ...
WHERE colonnei=valeuri
AND|OR [NOT] colonnek IN (val1, val2, ...)
AND (colonnel BETWEEN aa AND bb)
AND colonnef LIKE "%$chaîne%"
ORDER BY colonnei ASC|DESC
GROUP BY colonnej
LIMIT a, b
La clause SELECT permet de choisir les colonnes (séparées par une virgule) du résultat (c'est une projection). La clause FROM dit de quelles tables (séparées par une virgule) proviennent les lignes du résultat. La clause WHERE permet de sélectionner les lignes selon les valeurs des colonnes, les opérateurs booléens AND, OR et NOT, ainsi que les parenthèses et autres fonctions de MySQL sont possibles. La clause ORDER BY permet de faire un tri ASCendant ou DESCendant sur une ou plusieurs colonnes (séparées par une virgule). La clause GROUP BY permet de regrouper les lignes qui ont une colonne en commun (par exemple "GROUP BY nom" permet de grouper les lignes selon le nom). La clause LIMIT permet de paginer les résultats en ne retournant que les lignes numéros a à b par mis celles du résultat.

La commande LIKE permet de faire une comparaison sur les chaînes de caractères. Cette comparaison est insensible à la casse, sauf sur les colonnes dont le type est de la famille des BLOB. Les caractères spéciaux % et _ sont des caractères génériques au même titre que * et ? sous Linux et MS-DOS. Ils signifient respectivement n'importe quelle chaîne (même vide), un seul caractère quelconque.

La commande BETWEEN .. AND ... permet de comparer la valeur d'une colonne à un intervalle de valeurs.

La commande IN(...,) permet de comparer la valeur d'une colonne à une liste de valeurs prédéfinies.


Comment se connecter à une base MySQL ?
auteur : Cyberzoide
Il faut procéder par étape :
  • étape 1 : se connecter au serveur de base de données avec mysql_connect() en précisant le nom du serveur, un nom d'utilisateur et un mot de passe valide
  • étape 2 : sélectionner la base de données sur laquelle on souhaite travailler, avec mysql_select_db()
  • étape 3 : fermer avec mysql_close() la connexion une fois le travail sur la base de données terminé
if($db = mysql_connect($host, $user, $pass)) {
    if($dbb = mysql_select_db($base)) {
        ...
        mysql_close();
    } else {
        die("connexion à la base $base impossible");
    }
} else {
    die("connexion au serveur $host impossible");
}
Les actions possibles de l'utilisateur sur la base à laquelle il se connecte dépendent des droits qui lui auront été fournis par l'administrateur de la base de données.

mysql_connect($server,$user,$password) : permet de se connecter au serveur $server en tant qu'utilisateur $user avec le mot de passe $password, retourne l'identifiant de connexion si succès, FALSE sinon. Si ces arguments manquent, les valeurs par défaut du fichier de configuration php.ini seront utilisées.

mysql_select_db($base[,$id]) : permet de choisir la base $base, peut prendre un identifiant $id de connexion ; retourne TRUE en cas de succès, sinon FALSE. Les identifiants de connexion ne sont pas nécessaires si on ne se connecte qu'à un seul serveur à la fois, ils permettent seulement de lever toute ambiguïté en cas de connexions multiples (vers plusieurs serveurs dans le même script).

mysql_close([$id]) : permet de fermer la connexion à un serveur de bases de données, l'argument optionnel $id est l'identifiant de connexion retourné à l'ouverture de la connexion. A noter que toutes les connexions aux serveurs de bases de données sont automatiquement fermées à la fin de l'exécution du script qui les aura ouvertes.


Comment se connecter à deux bases de données en même temps avec le même login ?
auteur : Forum PHP
Il est tout à fait possible de se connecter à deux bases de données différentes en utilisant le même login.
La connection doit être effectuée de la manière suivante :
$db1 = @mysql_connect("localhost" , "root" , "password");
$db2 = @mysql_connect("localhost" , "root" , "password" , true);
$db2 contient true pour forcer l'ouverture d'une nouvelle connexion en laissant la premiere ouverte.


Comment connaître le nombre de lignes retournées par une requête MySQL ?
auteur : Cyberzoide
La fonction mysql_num_rows($result) retourne ce nombre de lignes, $result est le pointeur de résultat retourné par mysql_query().

Exemple :
$result = mysql_query("SELECT * FROM user") or die("erreur de base de données");
echo "Il y a ".mysql_num_rows($result)."résultats.";
Si les résultats en eux-mêmes ne vous intéressent pas, utilisez directement la fonction de groupe COUNT(*) dans la requête MySQL.

Exemple :
$result = mysql_query("SELECT COUNT(*) FROM user") or die("erreur de base de données");
$ligne = mysql_fetch_row($result);
echo "Il y a ".$ligne[0]."résultats.";
La fonction mysql_num_rows est une boucle sur un curseur. Elle va donc consommer beaucoup plus qu'un simple COUNT en SQL. Faites l'essai sur une table contenant plusieurs millions de lignes pour le vérifier. En effet, PHP va "dumper" toutes les lignes pour obtenir ce nombre.

Il vaut donc mieux pour compter le nombre de lignes (dans 90% des cas) faire un "select count(*) from..." et non utiliser mysql_num_rows().


Comment connaître l'id auto_increment de mon dernier ajout ?
auteur : Cyberzoide
Lors de l'insertion d'une ligne dans une table comportant une colonne de type numérique clé primaire auto_increment, une valeur est automatiquement affectée à cette colonne si elle n'est pas renseignée lors du INSERT.

Il est utile de pouvoir extraire cette valeur pour s'en servir dans une autre table, par exemple à l'occasion de la création d'une jointure...

La fonction mysql_insert_id([$id]) retourne l'identifiant de l'attribut clé primaire AUTO_INCREMENT de la dernière insertion. L'argument optionnel $id est l'identifiant de connexion au serveur. Il s'agit du dernier identifiant pour la connexion en cours, donc cette fonction peut-être utilisée sans problème en cas de connexions simultanées de plusieurs personnes.


Comment ouvrir une connexion persistante vers une base MySQL ?
auteur : Cyberzoide
Dans le cas où le visiteur du site doit naviguer à travers différents script PHP qui se connectent tous au même serveur, il est préférable d'avoir recours aux connexions persistantes.

Une connexion persistante est ouverte avec la fonction mysql_pconnect() qui est en tout point comparable à mysql_connect() à la seule différence que la connexion n'est pas fermée à la fin du script qui a ouvert la connexion. Ainsi, les scripts suivants peuvent continuer à lancer des requêtes à la base de données sans avoir à rouvrir de connexion en direction du serveur.

Une connexion persistante ne peut pas être fermée avec la fonction mysql_close(). Au delà d'un certain temps d'inactivité, la ou les connexions persistantes ouvertes sont automatiquement fermées.


Comment obtenir le nom de mes bases de données ?
auteur : Julp
Il existe deux méthodes :
Define("MYSQL_HOST", "localhost");
Define("MYSQL_USER", "root");
Define("MYSQL_PWD", "");
$connect = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PWD);
$db = mysql_query("SHOW DATABASES;");
while($db_array = mysql_fetch_row($db)) {
    echo $db_array[0]."<br >";
}
mysql_close($connect);
Utiliser la requête MySQL "Show Databases;" qui lui est spécifique, et qui renvoie le nom de toutes les bases de données présentes.

ou
Define("MYSQL_HOST", "localhost");
Define("MYSQL_USER", "root");
Define("MYSQL_PWD", "");
$connect = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PWD);
$db = mysql_list_dbs($connect);
while($db_array = mysql_fetch_row($db)) {
    echo $db_array[0]."<br />";
}
@mysql_close($connect);
Utiliser la fonction mysql_list_dbs() qui renvoie le nom de toutes les bases de données.


Comment obtenir les noms de toutes mes tables dans une base de données ?
auteur : Julp
Il existe deux méthodes :
Define("MYSQL_HOST", "localhost");
Define("MYSQL_USER", "root");
Define("MYSQL_PWD", "");
Define("MYSQL_BDD", "ma_base_de_données"); //Changez ici la valeur
$connect = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PWD);
mysql_select_db(MYSQL_BDD, $connect); //On sélectionne la base de données
$tables = mysql_query("SHOW TABLES;");
while($tables_array = mysql_fetch_row($tables)) {
    echo $tables_array[0]."<br />";
}
mysql_close($connect);
Utiliser la requête "SHOW TABLES;", spécifique à MySQL et qui renvoie le nom de toutes les tables présentes dans la base de données sélectionnée auparavant grâce à la fonction mysql_select_db(string nom_de_la_BDD, id_de_connexion_MySQL).

ou
Define("MYSQL_HOST", "localhost");
Define("MYSQL_USER", "root");
Define("MYSQL_PWD", "");
Define("MYSQL_BDD", "ma_base_de_données"); //Changez ici la valeur
$connect = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PWD);
$tables = mysql_list_tables(MYSQL_BDD);
while($tables_array = mysql_fetch_row($tables)) {
    echo $tables_array[0]."<br />";
}
mysql_close($connect);
Utiliser la fonction mysql_list_tables(string nom_de_la_BDD); et qui renvoie la liste des tables dans la base de données nommée : nom_de_la_BDD.


Puis-je exécuter plusieurs requêtes SQL en un seul mysql_query() ?
auteur : Cyberzoide
Non, même en séparant les requêtes par un point virgule, MySQL refusera d'exécuter plusieurs requêtes en un seul appel de mysql_query().

Exemple faux :
mysql_query("UPDATE `table` SET `col`='value' WHERE `id`=$id; DELETE FROM `table` WHERE `id`=$id2");
Exemple bon :
mysql_query("UPDATE `table` SET `col`='value' WHERE `id`=$id");
mysql_query("DELETE FROM `table` WHERE `id`=$id2");

Comment afficher une date MySQL en français ?
auteur : Cyberzoide
Etudions l'exemple complet de la conversion d'une date au format anglophone MySQL en format francophone.

Une date MySQL se présente ainsi : "YYYY-DD-MM hh:mm:ss"

YYYY : l'année numérique avec 4 chiffres, DD : le jour numérique, MM : le mois numérique, hh : heures, mm : minutes, ss : secondes

Tous les nombres sur 2 chiffres prennent un zéro devant si nécessaire.

Par exemple : "2002-20-04 15:08:20" correspond au 20 avril 2002 à 15h08 et 20 secondes.

Ce format correspond au type DATETIME. Soit lastmodified un attribut d'une table MySQL.

La requête suivante permet d'extraire la date de dernière modification d'un enregistrement.
SELECT lastmodified
FROM citations
WHERE id=$id;
Étape 1 : extraction de la date d'une base de données MySQL
$requet = "SELECT lastmodified FROM citations WHERE id=$id";
if($result = mysql_query($requet)) 
{
    if($ligne = mysql_fetch_row($result)) 
	{
        $lastmodifed = $ligne[0];
    } 
	else 
        die("Erreur base de données");
} 
else 
    die("Erreur base de données");
Étape 2 : séparation de la date et de l'heure
Le seul espace de la chaîne de caractères qui constitue la variable $lastmodified est un séparateur entre la date et l'heure. On va donc la scinder en ses deux morceaux grâce à la fonction explode() qui renvoie les sous chaînes dans un tableau dont est extrait, via list(), les deux variables $date et $time.
list($date, $time) = explode(" ", $lastmodified);
Étape 3 : extraction des jour, mois, année
On procède selon le même schéma que précédemment sauf qu'ici c'est le tiret qui est séparateur dans la date.
list($year, $month, $day) = explode("-", $date);
Étape 4 : extraction facultative des heures, minutes, secondes
Ici, le séparateur sont les deux points.
list($hour, $min, $sec) = explode(":", $time);
Étape 5 : affichage au format francophone
echo $lastmodified = "$day/$month/$year $time";
Affiche "20/04/2002 15:08:20".

On a donc transcrit en français notre date anglaise.

On peut aller encore plus loin en affichant les mois en toutes lettres et en français.

Étape 6 : affichage en toutes lettres du mois
On crée d'abord le tableau des mois de l'année.
$months = array("janvier", "février", "mars", "avril", "mai", "juin",
    "juillet", "août", "septembre", "octobre", "novembre", "décembre");
Ensuite, on affiche l'élément du tableau des mois de l'année dont l'indice est égal au numéro du mois. Comme l'indice du tableau commence à zéro, il faut soustraire 1 à $month, cela aura aussi pour effet de caster cette chaîne en entier (et de supprimer le zéro éventuel en première position).
echo $lastmodified = "le $day ".$months[$month-1]." $year à ${hour}h${min}m${sec}s";
Affiche "le 20 avril 2002 à 15h08m20s".

Et voilà !

lien : faq Comment convertir une date MySQL au format francophone ?

Comment convertir une date MySQL au format francophone ?
auteurs : Kerod, Forum PHP
Une date au format MySQL est sous la forme suivante "YYYY-DD-MM hh:mm:ss". Par conséquent, pour la convertir au format francophone "jour/mois/annee hh:mm:ss", il nous faut utiliser la fonction strtotime() qui essaye de lire une date au format anglophone, et de la transformer en timestamp Unix.

Cette fonction renverra donc, en cas de succès, un nombre entier qui correspondra au timestamp et FALSE sinon.
$dateMySQL = "2006-28-12 22:45:34";
$echo date("d/m/Y H:i:s", strtotime($dateMySQL)); //Affiche 28/12/2006 22:45:34
lien : faq Comment afficher une date MySQL en français ?

Comment extraire des enregistrements appartenant à un intervalle de dates ?
auteur : Cyberzoide
Le mot clé BETWEEN ... AND ... de la clause WHERE permet de ne retenir que les engistrements dont un attribut appartient à un intervalle. Cet intervalle peut être déterminé par deux dates. Dont l'une peut se déduire de l'autre par ajout ou retrait d'une période.

Syntaxe :
date +/- INTERVAL valeur unité
Cela permet de d'ajouter (+) ou de retirer (-) à la date date une période de valeurs unités.

L'unité peut être l'une des suivantes :
  • SECOND (la seconde)
  • MINUTE (la minute)
  • HOUR (l'heure)
  • DAY (le jour)
  • MONTH (le mois)
  • YEAR (l'année)
  • MINUTE_SECOND (la minute et la seconde), ex : '2003-06-25' + INTERVAL "26:30" MINUTE_SECOND (ajout de 26 minutes et de 30 secondes)
  • HOUR_MINUTE (l'heure et la minute)
  • DAY_HOUR (le jour et l'heure)
  • YEAR_MONTH (l'année et le mois)
  • HOUR_SECOND (heure, minute et seconde)
  • DAY_MINUTE (jour, heure et minute)
  • DAY_SECOND (jour, heure, minute et seconde), ex : '2003-06-25' - INTERVAL "5 8:30:00" DAY_SECOND (retrait de 5 jours, 8 heures, 30 minutes et 0 seconde)

Note : les séparateurs peuvent être quelconques.

Exemple :
SELECT
FROM
WHERE `date` BETWEEN ('2003-06-25' - INTERVAL 3 MONTH) AND '2003-06-25'
Cet exemple permet d'extraire tous les enregistrements dont la date est comprise entre '2003-06-25' et 3 mois avant.


Comment afficher les valeurs DATE d'un SELECT ?
auteur : Forum PHP
Pour afficher les valeurs d'un SELECT utilisant des fonctions DATE (décrites ici), il faut créer un alias.
Exemple :
$select_annee=mysql_query("SELECT DISTINCT YEAR(DATE) as Annee FROM table1 WHERE id = '$id'"); 
while($annee = mysql_fetch_array($select_annee))
{
  echo $annee['Annee'];
}

Comment connaître le nombre d'enregistrements affectés par une requête de type : DELETE, INSERT ou UPDATE ?
auteur : Julp
La fonction mysql_affected_rows(), qui prend en unique paramètre l'identifiant de requête, retourne le nombre de lignes modifiées par une requête de type : delete, insert ou update. Elle ne fonctionne en aucun cas sur des requêtes de type SELECT mais seulement sur des requêtes de modification. Pour connaître le nombre de lignes retournées par une requête SELECT, utilisez mysql_num_rows(). Si la requête a échoué, mysql_affected_rows() renvoie la valeur -1. Par contre, à la suite d'une requête DELETE sans clause WHERE, cette fonction renvoie 0.

lien : faq Comment connaître le nombre de lignes retournées par une requête MySQL ?

Comment se repositionner sur le premier enregistrement d'une requête Select ?
auteur : Julp
<?php
define("MYSQL_HOST", "localhost");
define("MYSQL_USER", "root");
define("MYSQL_PWD", "");
define("MYSQL_BDD", "ma_base_de_données");

$db = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PWD);
@mysql_select_db(MYSQL_BDD, $db);
$query = "SELECT * FROM team ORDER BY id";
$result = @mysql_query($query);
while($row = @mysql_fetch_assoc($result)) {
    //... et on arrive ainsi au dernier enregistrement renvoyé par la requête
}

// On se repositionne sur le premier enregistrement
@mysql_data_seek($result, 0); 
// On se replace sur le premier enregistrement
$row = @mysql_fetch_assoc($result); // Il faut le relire
//On peut manipuler l'enregistrement $row["mon_champ"]
?>
La fonction mysql_data_seek(identifiant_de_résultat, numéro_de_ligne) déplace le pointeur interne de résultat identifiant_de_résultat. Il le fait pointer à la ligne numéro_de_ligne et retourne FALSE en cas d'échec. Le prochain appel à la fonction mysql_fetch_row() ou mysql_fetch_array() ou mysql_fetch_assoc() retournera cette ligne.

Attention : Le numéro du premier enregistrement est 0.


Comment se positionner sur le dernier enregistrement d'une requête Select ?
auteur : Julp
<?php
define("MYSQL_HOST", "localhost");
define("MYSQL_USER", "root");
define("MYSQL_PWD", "");
define("MYSQL_BDD", "ma_base_de_données");

$db = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PWD);
@mysql_select_db(MYSQL_BDD, $db);
$query = "SELECT * FROM team ORDER BY id";
$result = @mysql_query($query);
$nb_row = @mysql_num_rows($result);

@mysql_data_seek($result, $nb_row - 1); //On se place sur le dernier enregistrement
$row = @mysql_fetch_assoc($result); //Il faut le relire
// On peut manipuler l'enregistrement : $row["mon_champ"];
?>
La fonction mysql_data_seek(identifiant_de_résultat, numéro_de_ligne) déplace le pointeur interne de résultat identifiant_de_résultat. Il le fait pointer à la ligne numéro_de_ligne et retourne FALSE en cas d'échec. Le prochain appel à la fonction mysql_fetch_row() ou mysql_fetch_array() ou mysql_fetch_assoc() retournera cette ligne.

Attention : Le numéro du premier enregistrement renvoyé étant 0, il faut donc soustraire 1 à mysql_num_rows() qui renvoie le nombre de lignes renvoyées par une requête Select.


Comment afficher un enregistrement aléatoirement ?
auteur : Forum PHP
Pour afficher un enregistrement aléatoirement, il est possible d'utiliser la fonction MySQL "RAND" qui génére des nombres aléatoires.
Pour sélectionner un enregistrement aléatoirement dans la table "nomTable" il suffit d'utiliser la requête MySQL suivante :
SELECT *
FROM nomTable
ORDER BY RAND()
LIMIT 1
La ligne "ORDER BY RAND()" permet de trier aléatoirement tous les enregistrements et ensuite "LIMIT 1" permet de sélectionner le premier enregistrement.


Explications et correction de l'erreur "supplied argument is not a valid MySQL result resource"
auteur : Forum PHP
L'erreur "supplied argument is not a valid MySQL result resource" se produit quand une fonction MySQL n'a pas de résultat MySQL valide fourni en argument. Regardons le message d'erreur suivant par exemple :
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /var/www/html/bugMySQL.php on line 10
Et voila le contenu du fichier "bugMySQL.php" :
 1 <?php
 2 
 3 $connexion = mysql_connect('localhost', 'root', '');
 4 
 5 mysql_select_db('test', $connexion);
 6
 7 $requete = 'SELECT * FROM nomTable WHERE champ = ';
 8 $resultat = mysql_query($requete, $connexion);
 9 
10 while ($ligne = mysql_fetch_assoc($resultat)) {
11     echo "{$ligne['champ']}<br/>";
12 }
13 
14 ?>
L'erreur est à la ligne 10. Il s'agit donc de "$resultat" qui ne contient pas un résultat valide ce qui veut dire que la requête exécutée sur la ligne 8 pose problème.
Pour savoir quel est le problème, il suffit d'utiliser la fonction "mysql_error" qui retourne le message d'erreur fourni par le serveur MySQL. Cette fonction peut-être utilisée à n'importe quel étape de l'utilisation de MySQL, donc voila le code à utiliser pour gérer les erreurs.
<?php

$connexion = mysql_connect('localhost', 'root', '') or exit(mysql_error());

mysql_select_db('test', $connexion) or exit(mysql_error());

$requete = 'SELECT * FROM nomTable WHERE champ = ';
$resultat = mysql_query($requete, $connexion) or exit(mysql_error() . "<br/>$requete");

while ($ligne = mysql_fetch_assoc($resultat)) {
    echo "{$ligne['champ']}<br/>";
}

?>
En lançant ce code, le résultat suivant est obtenu :
You have an error in your SQL syntax near '' at line 1
SELECT * FROM nomTable WHERE champ =
À l'aide du message d'erreur de MySQL, il est maintenant facile de corriger la requête. Attention, "line 1" qui apparait dans la message ne veut pas dire qu'il y a un problème sur la première ligne du fichier PHP mais sur la première ligne de la requête.

L'utilisation de ce code est très utile pour gérer les erreurs de MySQL, c'est pourquoi il est conseillé de mettre ce code dès qu'on commence à programmer. Ainsi en cas de problème, le message d'erreur fourni par MySQL apparaît immédiatement et dans le cas où il n'y a pas de problème, le code peut être laissé, il ne gênera pas le reste du code PHP.


Comment utiliser de l'UTF-8 avec PHP / MySQL ?
auteur : elitemedia
Il faut d'abord comprendre qu'en matière d'encodage, toute votre chaîne doit être convertie à l'encodage choisi (nous parlerons ici d'UTF-8).
Cela concerne en premier votre logiciel de programmation (IDE PHP, Dreamweaver et autres éditeurs de pages Web). Tout bon éditeur qui se respecte doit vous proposer le choix de l'encodage de vos documents. Pour Dreamweaver par exemple, cela se trouve dans les préférences pour les nouveaux documents où vous spécifierez comme codage par défaut « Unicode (UTF-8) ».
Ensuite, votre serveur PHP doit renvoyer le bon encodage lorsque vous générez du HTML avec PHP. Dans tous les cas et ceci afin de garantir la compatibilité de vos scripts, prenez l'habitude d'envoyer un Header spécifiant l'encodage comme suit :
<?php
 
// Inclure dans vos scripts PHP avant tout envoi d'HTML
header ('Content-type: text/html; charset=utf-8');
 
// Pour tester que PHP renvoie les caractères correctement (vous pouvez mettre tous les caractères
// que vous souhaitez dans le echo ci-dessous, l'utf-8 est prévu pour être multilingue
echo 'é à € û ü';
 
?>
Pour la base de données, il en est de même : D'abord vous devez entrer vos données en UTF-8. Si vous utilisez PhpMyAdmin par exemple, n'oubliez pas de préciser votre encodage pour la base de données, pour l'interface PHP MyAdmin, pour les tables (selon les versions). Tout doit correspondre !
Mais ce n'est pas tout. Il faut également spécifier dans vos scripts PHP que les données récuperées ou transmises doivent être en UTF-8. La fonction magique pour ceci est :
mysql_query("SET NAMES 'utf8'");
Elle est à insérer juste après la connexion à la base établie, donc juste après avoir fait un
mysql_connect($dbhost, $dblogin, $dbpass) ;

precedent    sommaire    suivant   

Consultez les autres F.A.Q's


Les sources présentés sur cette pages sont libre de droits, et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©2003  Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérets. Cette page est déposée à la SACD.

Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels, cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter - Copyright 2000..2005 www.developpez.com