Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CLASSE DATABASE POUR CONNECTION ET MODIFICATION D'UNE BDD MYSQL


Information sur la source

Catégorie :Class et Objet ( POO ) Classé sous : classe, class, php, database, mysql Niveau : Débutant Date de création : 21/07/2007 Date de mise à jour : 30/07/2007 11:35:54 Vu : 8 014

Note :
9,2 / 10 - par 5 personnes
9,20 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note

Description

Hello

Oui, je sais ce que vous vous dites : "encore une classe de connection a une base de donnée"
Et a cela je vais retorquer..... bah oui, vous avez raison! Encore une classe
Mais la différence, c'est que c'est pour moi ma premiere class ( et oui, je m'initie à la POO )

donc, pour résumer, cette classe permet de :
- se connecter a la BDD ( c'est quand meme la base )

- ajouter une entrée
- modifier une entrée
- rechercher une entrée
- détruire une entrée
- vider une table
- compte les enregistrements d'une table
- compte les requetes effectuées
- retourne de dernier id d'une table (apres ajout ou modification d'une entrée )
 

Source

  • <?php
  • class Database {
  • function __construct($db_host, $db_root, $db_pass, $db_name){
  • mysql_connect($db_host, $db_root, $db_pass);
  • mysql_select_db($db_name);
  • $this -> db_host = $db_host;
  • $this -> db_root = $db_root;
  • $this -> db_pass = $db_pass;
  • $this -> db_name = $db_name;
  • $this -> count_request = 0;
  • }
  • //--------------------------------------------------------------------------------
  • // Fonction d'ajout
  • //--------------------------------------------------------------------------------
  • // Ajoute un nouvel enregistrement
  • //--------------------------------------------------------------------------------
  • // L'id de l'enregistrement créé est disponible dans $this->$db_table->last_id
  • //
  • // $attributes: tableau contenant les données à mettre à jour sous la forme : array('champ'=>valeur, ...)
  • // $db_table: table concernée par la requete
  • //
  • // La fonction retourne "true" en cas de succès, "false" sinon
  • //--------------------------------------------------------------------------------
  • public function add($attributes, $db_table) {
  • $sql = "INSERT INTO $db_table SET ";
  • $sql .= $this->make_attributes($attributes);
  • $result = $this->mysqlquery($sql);
  • // Mise à jour du dernier identifiant de la table courrante
  • $this->$db_table->last_id = mysql_insert_id();
  • // Mise à jour du cache du nombre d'enregistrements
  • $this->$db_table->count = $this->count(array(), $db_table);
  • return($result);
  • }
  • //--------------------------------------------------------------------------------
  • // Fonction de modification
  • //--------------------------------------------------------------------------------
  • // Modifie un ou plusieurs champs
  • //--------------------------------------------------------------------------------
  • // $condition : (string) chaine de caractère conditionnant la requete, et sous la forme : "id = '1' AND ..."
  • // $attributes: tableau contenant les données à mettre à jour sous la forme : array('champ'=>valeur, ...)
  • // $db_table: table concernée par la requete
  • //
  • // La fonction retourne "true" en cas de succès, "false" sinon
  • //--------------------------------------------------------------------------------
  • public function update_attributes($condition, $attributes, $db_table){
  • $sql = "UPDATE $db_table SET ";
  • $sql .= $this->make_attributes($attributes);
  • $sql .= " WHERE $condition";
  • $result = $this->mysqlquery($sql);
  • return($result);
  • }
  • //--------------------------------------------------------------------------------
  • // Fonctions de recherche
  • //--------------------------------------------------------------------------------
  • // Trouve un enregistrement de la table $db_table
  • //--------------------------------------------------------------------------------
  • // $param: (array) tableau de paramètres sous la forme : array('where' => 'id = \'1\' ', 'order'=> 'ASC', ...)
  • // $db_table: table concernée par la requete
  • //
  • // La fonction retourne un tableau de valeurs
  • //--------------------------------------------------------------------------------
  • public function find($find='*', $params=array(), $db_table){
  • $sql = "SELECT $find FROM $db_table";
  • $sql.= $this->parse_params($params);
  • $result = $this->mysqlquery($sql);
  • return(mysql_fetch_array($result));
  • }
  • // Compte les enregistrements de la table
  • //--------------------------------------------------------------------------------
  • // $param: (array) tableau de paramètres sous la forme : array('where' => 'id = \'1\' ')
  • // $db_table: table concernée par la requete
  • //
  • // La fonction retourne un nombre (int)
  • //--------------------------------------------------------------------------------
  • public function count($params=array(), $db_table){
  • $sql = "SELECT * FROM $db_table";
  • $sql.= $this->parse_params($params);
  • $result = $this->mysqlquery($sql);
  • return(mysql_num_rows($result));
  • }
  • //--------------------------------------------------------------------------------
  • // Fonctions de destruction
  • //--------------------------------------------------------------------------------
  • // Détruit un enregistrement
  • //--------------------------------------------------------------------------------
  • // $condition : (string) chaine de caractère conditionnant la requete, et sous la forme : "id = '1' AND ..."
  • // $param: (array) tableau de paramètres sous la forme : array('where' => 'id = \'1\' ', 'order'=> 'ASC', ...)
  • // $db_table: table concernée par la requete
  • //
  • // La fonction retourne "true" en cas de succès, "false" sinon
  • //--------------------------------------------------------------------------------
  • public function destroy($condition, $db_table){
  • $sql = "DELETE FROM $db_table WHERE $condition";
  • $result = $this->mysqlquery($sql);
  • $this->$db_table->last_id = mysql_insert_id();
  • $this->$db_table->count = $this->count(array(), $db_table);
  • return($result);
  • }
  • // Effacer tous les enregistrements
  • //--------------------------------------------------------------------------------
  • // $db_table: table concernée par la requete
  • //
  • // La fonction retourne "true" en cas de succès, "false" sinon
  • //--------------------------------------------------------------------------------
  • public function truncate($db_table){
  • $sql = "TRUNCATE TABLE $db_table";
  • $result = $this->mysqlquery($sql);
  • $this->$db_table->count = '0';
  • $this->$db_table->last_id = '0';
  • return($result);
  • }
  • // Execute une requète SQL
  • //--------------------------------------------------------------------------------
  • // $sql: (string) requete SQL a éxécuter
  • //
  • // La fonction retourne la requete $sql éxécutée ou un message d'erreur
  • //--------------------------------------------------------------------------------
  • public function mysqlquery($sql){
  • $result = mysql_query($sql);
  • if(!$result) throw new Exception($this->mysqlerror($sql));
  • else $this->count_request++;
  • return $result;
  • }
  • //--------------------------------------------------------------------------------
  • // Fonctions protégées
  • //--------------------------------------------------------------------------------
  • // Affiche un message d'erreur complet
  • //--------------------------------------------------------------------------------
  • // $sql_query: (string) requete SQL éxécutée par mysqlquery
  • //
  • // La fonction retourne une chaine de caractères
  • //--------------------------------------------------------------------------------
  • protected function mysqlerror($sql_query){
  • return 'Erreur SQL ' . mysql_errno() . ': ' . mysql_error().'<br />'.$sql_query;
  • }
  • // Création d'une chaine SQL contenant un ensemble 'champ'=valeur en fonction du table passé en paramètre
  • //--------------------------------------------------------------------------------
  • // Les champs sont associés aux clés du tableau et les données à leurs valeurs.
  • //
  • // $attributes: (array) Tableau contenant les données traiter : array('champ'=>valeur, ...)
  • //
  • // La fonction retourne une chaîne SQL du type 'champ'=valeur, 'champ'=valeur, ...
  • //--------------------------------------------------------------------------------
  • protected function make_attributes($attributes){
  • $keys = array_keys($attributes);
  • $sql = '';
  • $nb_keys = count($keys);
  • for($index=0; $index<$nb_keys ; $index++)
  • {
  • $key = $keys[$index];
  • $value = mysql_real_escape_string($attributes[$key]);
  • $sql .= "$key='$value'";
  • // Pas le dernier paramètre : on ajoute une virgule
  • if($index !== count($keys)-1)
  • $sql .= ', ';
  • }
  • return($sql);
  • }
  • // Création d'une chaîne SQL contenant les paramètres passés dans le tableau
  • //--------------------------------------------------------------------------------
  • // Ne traite que les paramettres 'conditions', 'order' et 'limits'
  • //
  • // $params : (array) Tableau contenant les données traiter : array('parametre'=>valeur, ...)
  • //
  • // La fonction retourne une chaîne SQL (ou une chaîne vide si aucun paramètre correct n'est passé)
  • //--------------------------------------------------------------------------------
  • protected function parse_params($params){
  • $retour = '';
  • if(array_key_exists('where', $params))
  • $retour .= ' WHERE '.$params['where'];
  • if(array_key_exists('order', $params))
  • $retour .= ' ORDER BY '.$params['order'];
  • if(array_key_exists('limit', $params))
  • $retour .= ' LIMIT '.$params['limit'];
  • return $retour;
  • }
  • }
  • ?>
<?php

class Database {

  function __construct($db_host, $db_root, $db_pass, $db_name){

    mysql_connect($db_host, $db_root, $db_pass);
    mysql_select_db($db_name);

    $this -> db_host = $db_host;
    $this -> db_root = $db_root;
    $this -> db_pass = $db_pass;
    $this -> db_name = $db_name;
    $this -> count_request = 0;

  }

  //--------------------------------------------------------------------------------
  // Fonction d'ajout
  //--------------------------------------------------------------------------------


  // Ajoute un nouvel enregistrement
  //--------------------------------------------------------------------------------
  // L'id de l'enregistrement créé est disponible dans $this->$db_table->last_id
  //
  // $attributes: tableau contenant les données à mettre à jour sous la forme : array('champ'=>valeur, ...)
  // $db_table: table concernée par la requete
  //
  // La fonction retourne "true" en cas de succès, "false" sinon
  //--------------------------------------------------------------------------------
  public function add($attributes, $db_table) {

    $sql  = "INSERT INTO $db_table SET ";
    $sql .= $this->make_attributes($attributes);
    $result = $this->mysqlquery($sql);
      
    // Mise à jour du dernier identifiant de la table courrante
    $this->$db_table->last_id = mysql_insert_id();

    // Mise à jour du cache du nombre d'enregistrements
    $this->$db_table->count = $this->count(array(), $db_table);


    return($result);
  }

  //--------------------------------------------------------------------------------
  // Fonction de modification
  //--------------------------------------------------------------------------------


  // Modifie un ou plusieurs champs
  //--------------------------------------------------------------------------------
  // $condition : (string) chaine de caractère conditionnant la requete, et sous la forme : "id = '1' AND ..."
  // $attributes: tableau contenant les données à mettre à jour sous la forme : array('champ'=>valeur, ...)
  // $db_table: table concernée par la requete
  // 
  // La fonction retourne "true" en cas de succès, "false" sinon
  //--------------------------------------------------------------------------------
  public function update_attributes($condition, $attributes, $db_table){
    $sql  = "UPDATE $db_table SET ";
    $sql .= $this->make_attributes($attributes);
    $sql .= " WHERE $condition";
    $result = $this->mysqlquery($sql);

    return($result);
  }



  //--------------------------------------------------------------------------------
  // Fonctions de recherche
  //--------------------------------------------------------------------------------


  // Trouve un enregistrement de la table $db_table
  //--------------------------------------------------------------------------------
  // $param: (array) tableau de paramètres sous la forme : array('where' => 'id = \'1\' ', 'order'=> 'ASC', ...)
  // $db_table: table concernée par la requete
  //
  // La fonction retourne un tableau de valeurs
  //--------------------------------------------------------------------------------
  public function find($find='*', $params=array(), $db_table){

    $sql = "SELECT $find FROM $db_table";
    $sql.= $this->parse_params($params);
    $result = $this->mysqlquery($sql);
    
    return(mysql_fetch_array($result));
  }


  // Compte les enregistrements de la table
  //--------------------------------------------------------------------------------
  // $param: (array) tableau de paramètres sous la forme : array('where' => 'id = \'1\' ')
  // $db_table: table concernée par la requete
  //
  // La fonction retourne un nombre (int)
  //--------------------------------------------------------------------------------
  public function count($params=array(), $db_table){
    $sql = "SELECT * FROM $db_table";
    $sql.= $this->parse_params($params);

    $result = $this->mysqlquery($sql);

    return(mysql_num_rows($result));
  }



  //--------------------------------------------------------------------------------
  // Fonctions de destruction
  //--------------------------------------------------------------------------------

  // Détruit un enregistrement
  //--------------------------------------------------------------------------------
  // $condition : (string) chaine de caractère conditionnant la requete, et sous la forme : "id = '1' AND ..."
  // $param: (array) tableau de paramètres sous la forme : array('where' => 'id = \'1\' ', 'order'=> 'ASC',  ...)
  // $db_table: table concernée par la requete
  //
  // La fonction retourne "true" en cas de succès, "false" sinon
  //--------------------------------------------------------------------------------
  public function destroy($condition, $db_table){

    $sql = "DELETE FROM $db_table WHERE $condition";
    $result = $this->mysqlquery($sql);

    $this->$db_table->last_id = mysql_insert_id();

    $this->$db_table->count = $this->count(array(), $db_table);

    return($result);
  }


  // Effacer tous les enregistrements
  //--------------------------------------------------------------------------------
  // $db_table: table concernée par la requete
  //
  // La fonction retourne "true" en cas de succès, "false" sinon
  //--------------------------------------------------------------------------------
  public function truncate($db_table){
    $sql = "TRUNCATE TABLE $db_table";
    $result = $this->mysqlquery($sql);

    $this->$db_table->count = '0';

    $this->$db_table->last_id = '0';

    return($result);
  }



  // Execute une requète SQL
  //--------------------------------------------------------------------------------
  // $sql: (string) requete SQL a éxécuter
  //
  // La fonction retourne la requete $sql éxécutée ou un message d'erreur 
  //--------------------------------------------------------------------------------
  public function mysqlquery($sql){
    $result = mysql_query($sql);

    if(!$result) throw new Exception($this->mysqlerror($sql));
    else $this->count_request++;
        
    return $result;
  }


  //--------------------------------------------------------------------------------
  // Fonctions protégées
  //--------------------------------------------------------------------------------


  // Affiche un message d'erreur complet
  //--------------------------------------------------------------------------------
  // $sql_query: (string) requete SQL éxécutée par mysqlquery
  //
  // La fonction retourne une chaine de caractères
  //--------------------------------------------------------------------------------
  protected function mysqlerror($sql_query){

    return 'Erreur SQL ' . mysql_errno() . ': ' . mysql_error().'<br />'.$sql_query;

  }


  // Création d'une chaine SQL contenant un ensemble 'champ'=valeur en fonction du table passé en paramètre
  //--------------------------------------------------------------------------------
  // Les champs sont associés aux clés du tableau et les données à leurs valeurs.
  //
  // $attributes: (array) Tableau contenant les données traiter : array('champ'=>valeur, ...)
  //
  // La fonction retourne une chaîne SQL du type 'champ'=valeur, 'champ'=valeur, ...
  //--------------------------------------------------------------------------------
  protected function make_attributes($attributes){
    $keys = array_keys($attributes);
    $sql = '';
    $nb_keys = count($keys);
    for($index=0; $index<$nb_keys ; $index++)
    {
      $key = $keys[$index];
      $value = mysql_real_escape_string($attributes[$key]);


       $sql .= "$key='$value'";

      // Pas le dernier paramètre : on ajoute une virgule
      if($index !== count($keys)-1)
        $sql .= ', ';
    }
    return($sql);
  }


  // Création d'une chaîne SQL contenant les paramètres passés dans le tableau
  //--------------------------------------------------------------------------------
  // Ne traite que les paramettres 'conditions', 'order' et 'limits'
  //
  // $params : (array) Tableau contenant les données traiter : array('parametre'=>valeur, ...)
  //
  // La fonction retourne une chaîne SQL (ou une chaîne vide si aucun paramètre correct n'est passé)
  //--------------------------------------------------------------------------------
  protected function parse_params($params){
    $retour = '';

    if(array_key_exists('where', $params))
      $retour .= ' WHERE '.$params['where'];

    if(array_key_exists('order', $params))
      $retour .= ' ORDER BY '.$params['order'];

    if(array_key_exists('limit', $params))
      $retour .= ' LIMIT '.$params['limit'];
    return $retour;
  }

}
?>

Historique

21 juillet 2007 23:20:35 :
source modifiée pour que la colorisation syntaxique fonctionne correctement
22 juillet 2007 15:12:12 :
résolution d'un petit bug avec la function count
23 juillet 2007 14:16:02 :
correction d'une erreur dans un commentaire
30 juillet 2007 11:35:00 :
ajout d'un "throw new Exception" à la fontion mysqlquery et modification de la fonction make_attributes pour accelerer la boucle for
30 juillet 2007 11:35:54 :
erreur de frappe

Commentaires et avis

signaler à un administrateur
Commentaire de franco_se le 22/07/2007 11:36:02

merci de me faire par de vos suggestions, car je debute en POO

signaler à un administrateur
Commentaire de psykocrash le 24/07/2007 13:53:02

Ca a l'air sympa. Bon personnellement je trouve complètement inutil de réécrire une Nième classe pour mysql s'il n'y a rien d'innovant/différent par rapport aux autres, mais ce n'est pas le sujet.

Concernant ta clase, y'a juste un truc qui me saute aux yeux (je n'ai pas lu en profondeur mais ça pique ^^) c'est ta fonction make_attributes(). Tu utilises la fonction count() dans ta boucle. Ca veux dire qu'à chaque boucle, elle sera appelée à nouveau pour le même résultat. Stock plutot une bonne fois le résultat dans une variable, ça améliorera les perfs de ta méthode. Ah tant qu'à faire, vérifie que le tableau n'est pas vide avant de l'utiliser.

Autre chose, ne fais pas un die() si une requête ne passe pas, utilise les exceptions ;)

++

signaler à un administrateur
Commentaire de cvex le 29/07/2007 01:01:23

Bonne source avec commentaires.

Cependant, j'ai voulu tester un peu ta source mais j'ai pas réussi à la faire marcher... Je n'y vois pas d'erreur pourtant : Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /classe/mysql.php on line 32

signaler à un administrateur
Commentaire de cvex le 29/07/2007 01:18:29

Non désolé, j'ai trouvé pourquoi... OVH dans leur formule d'hébergement mutualisé, lorsqu'il exécute  les scripts en PHP avec l'extension .php, il l'interprète avec PHP4. Il suffisait d'utiliser l'extension .php5 pour régler le problème.

signaler à un administrateur
Commentaire de franco_se le 30/07/2007 11:32:47

@ psykocrash: Oui, je sais que réinventer la roue pour la 50 000ème fois, c'est absurde. Mais a la base, je cherchais une classe simple et compacte, qui me permette de me connecter a ma bdd, et ayant des fonction d'ajout, de modification , et suppression , etc, de données. Et comme je n'avais rien trouvé qui me satisfasse, et que l'on n'est jamais mieux servi que par soi meme ...

et sinon, j'ai ajouté l'Exception(mysqlerror()); et arrangé ce count()

signaler à un administrateur
Commentaire de Aaron le 15/08/2007 15:07:27

Hello,

Est-ce normal qu'il n'y ait pas de "mysql_close()" ?

signaler à un administrateur
Commentaire de g_barthe le 15/08/2007 16:27:09

Hello,
Cette classe correspond à première vue à ce que je cherchais à faire. J'ai pas tester encore mais c'est en prévision.

Reste à adapter pour les requetes sur plusieurs table mais rien de grave. Je faisais cela avec plusieurs fonctions et cela commencait à devenir lourd. La POO commencait à m'attirer et je crois que la c'est gagné.

Je test et reviens par là si j'ai un pb. Encore merci.

signaler à un administrateur
Commentaire de g_barthe le 15/08/2007 16:30:44

Euh autre petit truc pourrais tu mettre la source en zip parce que le copié collé prend les numéros de lignes en meme temps et c'est un peu chiant à virer. Ou alors j'ai loupé un truc.

Merci si c'est pas trop demandé bien sur. hihi

signaler à un administrateur
Commentaire de g_barthe le 15/08/2007 17:29:50

Je vais encore rajouter mon grain de sel.

Pour la remarque du mysql_close() y en a t'il besoin vu que tu as utilisé la fonction __construct($db_host, $db_root, $db_pass, $db_name).

Et pour finir, la connexion étant établi sur ma première page, dois-je la réactiver sur la page suivante ou est-elle valable jusqu'à la fermeture de firefox. J'ai un peu de mal sur ces points.

Sinon les premiers tests sont concluants. Ca marche !!!!!!!!!! Merci encore

signaler à un administrateur
Commentaire de Aaron le 16/08/2007 18:15:39

Hello,

G_Barthe -> C'est une question "Pour la remarque du mysql_close() y en a t'il besoin vu que tu as utilisé la fonction __construct($db_host, $db_root, $db_pass, $db_name)." ou une réponse?

signaler à un administrateur
Commentaire de g_barthe le 21/08/2007 20:21:47

C'est en effet une question.

signaler à un administrateur
Commentaire de Lion23 le 11/10/2007 12:39:26

Vu que je suis nouveau dans ce domaine j'ai implémenté ce code et cela marche correctement mais j'ai une petite question à poser, au cas où je voulais créer une classe qui me permettrai de générer du code à partir de n'importe quelle table Mysql que dois je faire? Notons que ce code me permettra d'afficher, modifier ou supprimer la table. Merci

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

probleme de tchat php [ par linkinpar236737 ] j'ai un probleme de tchat dans mon site, j'ai acheté un flashchat, utilisant le php, et quand j'essaye de l'installer, il faut mettre : Database Name, php - intranet - MysqL [ par ben272 ] Bonsoir à tous, j'ai quelques questions à poser. Voilà dans mon collège on va mettre en place un intranet ( section informatique seulement ),et c'est Php ou javascript ???????? gros pb [ par elisabeth_nov ] Bonjour, voilà je débute depuis un moment déjà mais j'ai toujours autant de difficultés!!!!Mon problème à l'heure actuelle est que je dois créer une p problème php variable+include+mysql_query [ par DEADisDEADisDEAD ] Bonjour,Je suis en train de créer un php pour enregistrés des données vers une base de donnée mysql.Le principe étant d'envoyé certaines informations Vérification formulaire livre d'or [ par Danamel ] Bonjour à tous J'ai actuellement sur mon site un livre d'or qui fonctionne mais désirant le modifier afin de changer sa présentation je fait un s moniteur de recherche en php et mysql [ par tadjidine ] Bonjour à tous;je suis entrain de developpé un application gestion d'un agenda, je besoin de votre aide pour la formulaire de recherche , en faite ma se connecter à une base sql [ par matsumato ] bonjour; j'ai essayé de me connecter à ma base de donnée et afficher le champ ename dans ma table employer et j'ai l'erreur suivant : Warning: mysql_ php et xml [ par brudao ] Bonjour,j'ai un fichier XML qui contient le schéma d'une base de donnée mysql.maintenant je voudrais à l'aide de php récupérer dans le fichier xml les Variable Javacript vers PHP [ par 4lman78 ] Bonjour à tous Alors j'ai un petit soucis :Voici mon code&lt;?php include('sql.php');mysql_connect($serveur,$login,$mdp);mysql_select_db($bdd, $connex calcule automatisé [ par papiona ] Salut a tousje vais vous expliquer mon pbléme :je développe un exemple en php qui permet un client d'inscrire et au moment de cette inscription il doi


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 2,168 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.