Astuces php
Accueil
  News 
 Scripts 
 Bouquins 
 Newsletter 
  Emplois 
 Annuaire 
 Forum 
 
Offres d'emplois
Développeur web PHP/MYSQL en alternance
Web Agency, partenaire d'ip-formation, offrant des possibilités d'évolutions, recherche dans le cadre d'un contrat de professionnalisation un dével...
 
 C'est ici
 
Avez vous lu ?
Site Web Marchand
Avez vous lu ? -> Site Web Marchand : Destiné à tous ceux qui souhaitent créer une boutique complète en ligne, cet ouvrage développe la méthodologie pour créer un site de e-commerce. Dans une première partie, il explique comment créer l’architecture du site, des 10 questions à se poser au choix du système de paiement. Puis il guide l...
 
 Commander
 
 Chapitres - Gérer des traductions
PHP 5 Astuces d'experts -> Gérer des traductions -> Utiliser gettext Utiliser gettext
PHP 5 Astuces d'experts -> Gérer des traductions -> Stocker les traductions dans un fichier Stocker les traductions dans un fichier
PHP 5 Astuces d'experts -> Gérer des traductions -> Utiliser une base de données Utiliser une base de données
PHP 5 Astuces d'experts -> Gérer des traductions -> Générer des fichiers de traduction à partir d'une Bd Générer des fichiers de traduction à partir d'une Bd
PHP 5 Astuces d'experts -> Gérer des traductions -> Des traductions dynamiques Des traductions dynamiques
PHP 5 Astuces d'experts -> Gérer des traductions -> Une classe pour gérer les traductions Une classe pour gérer les traductions
 Une classe pour gérer les traductions
<?php

class traductions {
  
// --- répertoire où sont stockés les fichiers de langue
  
var $rep_fichiers '/var/html/traductions/';
  
// --- langue utilisée
  
var $langue 'fr';
  
// --- nom de la base stockant les traductions
  
var $db 'traductions';
  
// --- nom de la table stockant les traductions
  
var $table_mysql 'traductions';
  
// --- affichage des messages de mise au point
  
var $debug 0;

  
// --- ajout de traductions dans la base
  
function maj_traduction($cle$tb_valeurs) {
    
// --- traduction existante ?
    
$cde "select cle from $this->table_mysql
      where cle like '$cle'"
;
    
$result mysql_query($cde);
    
$nb mysql_num_rows($result);
    
// --- la traduction existe déjà
    
if ($nb) {
      
$cde $this->creation_requete_insertion(
        
$this->table_mysql$tb_valeurs);
    }
    
// --- la traduction n'existe pas
    
else {
      
$cde $this->creation_requete_modification(
        
$this->table_mysql$tb_valeurs$cle);
    }
    
$ok $this->requete_sql($this->db$cde);
    return(
$ok);
  }
 
// --- traduction d'un ou plusieurs mots
 // l'argument mots peut contenir un ou plusieurs mots
  
function traduire($mots) {
    
// --- composition de la requete SQL
    
$champ 'texte_' $lang;
    
$cde "select cle, $champ as texte from traductions
      where cle in("
;
    for(
$i=0$i<func_num_args(); $i++) {
      
$mot func_get_arg($i);
      if (
$i 0$cde .= ',';
      
$cde .= "'$mot'";
    }
    
$cde .= ')';
    
// --- recherche des traductions
    
$result $this->requete_sql($cde);
    while(
$row mysql_fetch_object($result)) {
      
$GLOBALS["$row->cle"] = $row->texte;
    }
    return(
mysql_num_rows($result));
  }

  
// --- remplacement des variables dans un texte
  
function remplacement($texte$tb_valeurs) {
    
reset($tb_valeurs);
    while (list(
$cle$valeur) = each($tb_valeurs)) {
      
$cle '<' $cle '>';
      
$texte str_replace($cle$valeur$texte);
    }
    return(
$texte);
  }
  function 
creation_fichier_langue ($fichier=''$langue=''$debug=0) {
    if (
$this->debug) {
      echo 
"Traductions: Creation du fichier $fichier<br>";
    }
    
// --- langue par défaut
    
if (strlen($langue) != 2$langue $this->langue;
    
// --- nom du fichier par défaut
    
if (!$fichier) {
      
$fichier $this->rep_fichiers 'traductions_' $langue'.php';
    }
    if (
$fp fopen($fichier"w+") ) {
      
// --- debut du fichier
      
$txt "<?\n\r";
      
// --- recherche des traductions dans la base
      
$champ 'texte_' $lang;
      
$cde "select cle, $champ as texte from traductions
        where langue like '$langue'"
;
      
// --- une ligne par traduction
      
$nb 0;
      while(
$row mysql_fetch_object($result)) {
        
$txt .= '$' $row->cle '="'
          
addslashes($row->texte)
          . 
'";' "\n\r";
        
$nb++;
      }
      
// --- fin du fichier
      
$txt .= "?>\n\r";
      
// --- enregistrement
      
fputs ($fp$txt);
      
fclose($fp);
    }
    if (
$this->debug) {
      echo 
"$nb traductions générées dans le fichier $fichier<br>";
    }
   
// --- creation d'une requete d'insertion dans une table
  
function creation_requete_insertion(
    
$tbl$tbinfos$params='') {
    if (!
$tbl || !is_array($tbinfos) || count($tbinfos)==0) {
      return(
'');
    }
    if (!
is_array($params)) $params = array();
    
// --- tableau des champs existants dans la table
    
$tb_champs $this->tb_champs($this->db$tbl);
    
// --- creation des tableaux des champs et des valeurs
    
reset($tbinfos);
    
$txt_champs '';
    
$txt_valeurs '';
    
$i 0;
    while (list(
$cle$valeur) = each($tbinfos)) {
      
// --- ajout dans la requete si le champ existe
      
if ($tb_champs["$cle"] == 1) {
        if (
$i >0) {
          
$txt_champs .= ',';
          
$txt_valeurs .= ',';
        }
        
$txt_champs .= $cle;
        
$c $this->quote_smart($valeur);
        if (!
is_numeric($valeur)) {
          
$txt_valeurs .= "'$c'";
        }
        else {
          
$txt_valeurs .= $c;
        }
        
$i++;
      }
    }
    
// --- creation de la requete
    
if ($params['replace'] == 1) {
      
$requete "replace into $tbl ($txt_champs)";
      
$requete .= " values ($txt_valeurs)";
    }
    else {
      
$requete "insert into $tbl ($txt_champs)";
      
$requete .= " values ($txt_valeurs)";
    }
    return(
$requete);
  }
  
  
// --- création d'une requête de modification dans une table
  
function creation_requete_modification($tbl,
    
$tbinfos$id$params='') {
    
$id intval($id);
    if (!
$tbl
      
|| !is_array($tbinfos)
      || 
count($tbinfos)==0
      
|| !$id) {
      return(
'');
    }
    if (!
is_array($params)) $params = array();
    
// --- tableau des champs existants dans la table
    
$tb_champs $this->tb_champs($this->db$tbl);
    
// --- début de la requête
    
$txt_requete "update $tbl";    
    
// --- création des tableaux de champs et de valeurs
    
reset($tbinfos);
    
$i 0;
    while (list(
$cle$valeur) = each($tbinfos)) {
      
// --- ajout dans la requête si le champ existe
      
if ($tb_champs["$cle"] == 1) {
        if (
$i == 0) {
          
$txt_requete .= ' set ';
        }
        else {
          
$txt_requete .= ',';
        }
        
$valeur $this->quote_smart($valeur);
        
$txt_requete .= "$cle='$valeur'";
        
$i++;
      }
    }
    
// --- clé primaire
    
if (strlen($params['cle_primaire']) > 0) {
      
$cle_primaire $params['cle_primaire'];
    }
    else {
      
$cle_primaire 'id';
    }
    
// --- conditions
    
$txt_requete .= " where $cle_primaire=$id";
    return(
$txt_requete);
  }

  
// --- tableau des champs disponibles dans une table
  
function tb_champs($base$table) {
    
$tb = array();
    
$result mysql_list_fields($base$table);
    
$n mysql_num_fields($result);
    for (
$i=0$i<$n$i++) {
      
$name mysql_field_name($result$i);
      
$tb["$name"] = 1;
    }
    return(
$tb);
  }
  
// --- fonction de protection d'une requête SQL
  
function quote_smart($valeur) {
    if (
phpversion() < "4.3.0") {
      
$valeur addslashes($valeur);
    }
    else {
      
// --- stripslashes
      
if (get_magic_quotes_gpc()) {
        
$valeur stripslashes($valeur);
      }
      
// --- protection si ce n'est pas un entier
      
if (!is_numeric($valeur)) {
        
$valeur mysql_real_escape_string($valeur);
      }
    }
    return 
$valeur;
  }

  
// --- fonction pour faire une requête SQL
  
function requete_sql($db$cde) {
    
$db_selected mysql_select_db($db$this->db_link);
    
$result mysql_query($cde$this->db_link);
    if (!
$result$this->display_mysql_error('requete_sql');
    return(
$result);
  }

  
// --- affichage des erreurs
  
function display_mysql_error($texte) {
    if (
$this->debug) {
      echo 
"<b>$texte</b> erreur:";
      echo 
mysql_error() . "<br>\n";
    }
  }

}
?>
 Rechercher
Tapez un mot ou une phrase clé
 

 Téléchargement
Téléchargez les sources de l'ouvrage
PHP 5 solutions et composants open-source
Téléchargez les sources de l'ouvrage  -> PHP 5 solutions et composants open-source : Boostez et améliorez vos sites PHP avec des composants et extensions !

Voici enfin l'ouvrage pour améliorer votre site sans tout réécrire. Pourquoi réinventer la roue puisqu'il existe une multitude de composants indépendants à intégrer à votre site ou même des extensions au langage PHP qui peu...
 


copyright astuces-php.info - Plan du site - Mylinea.org : l'annuaire des annuaires - échange de liens - Faites du fric