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

Langage PHP Discussion :

[Tableaux] Gestion multilangue - petite modification de fonction...


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 32
    Points : 30
    Points
    30
    Par défaut [Tableaux] Gestion multilangue - petite modification de fonction...
    Bonjour à tous,

    pour gérer un site multilangue, j'ai décidé de rentrer tout mon contenu dans une base Mysql. Celle-ci contient deux table:
    1-La table "table_word", qui contient tout les mots, ayant la structure suivante:
    Champ - type - exemple
    L1 - VARCHAR(64) PRIMARY KEY - Bienvenue (ou) Valider (etc...)
    L2 - VARCHAR(64) - Welcome (ou) Valid (etc...)

    Cette table est interrogée utilisant la fonction suivante:

    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
     
    function word($word)
    {
       if ($GLOBALS["language"]!=1) // Si la langue choisie n'est pas la langue par défaut
       {
          $query="SELECT L".intval($GLOBALS["language"])." FROM table_word WHERE LOWER(L1)=LOWER('".addslashes($word)."') ";
          //echo $query;
          $result= mysql_query($query) or die (mysql_errno($link)." - ".mysql_error()." : <br/>\n".$sql);
          $line= mysql_fetch_array($result) ;
          if($line == false) return $word;
          $Lword=$line[0];
     
          return $Lword; // On renvoie le mot traduit
       }
     
       return $word; // Sinon, on renvoie le mot tel quel
    }
    Ainsi, la fonction cherche le mot que j'ai tapé en FR dans la colonne L1 puis renvoi le mot de la colone L2 si $language=2

    Maintenant j'ai une autre table "table_sentence" qui contient les textes et ayant la structure suivante:
    Champ - type - exemple
    "id" - INT(4) autoincrement clé primaire - 1
    "L1" - TEXT - merci par avance de bien vouloir m'aider !!
    "L2" - TEXT - Thanks a lot in advance for help me !

    Le problème que j'ai est que je n'arrive pas en transformer la première fonction pour qu'elle fonctionne avec cette deuxième table.
    En effet la fonction sentence($id) doit trouver l'id puis renvoyer la colonne L1 ou L2 mais pas renvoyer l'id! (ce qui est la seule chose que j'ai pu réussir à lui faire faire !! ou même renvoyer L2 systématiquement...)

    Merci par avance à tous.
    Mathieu.

  2. #2
    NoT
    NoT est déconnecté
    Membre actif
    Profil pro
    Inscrit en
    Février 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 237
    Points : 280
    Points
    280
    Par défaut
    Lut,

    Ta requête devrait ressembler à ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query="SELECT L".intval($GLOBALS["language"])." FROM table_sentence WHERE id=$id ";
    on est d'accord ?
    Le reste du code devrait rester le même..

    Par contre effectivement là ça retourne l'id si jamais il trouve pas de traduction, mais bon faut faire par étape

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 32
    Points : 30
    Points
    30
    Par défaut mettre du if else !
    voici la solution que j'ai adopté. Il fallait aussi faire attention de rentrer un double = (soit ==) pour que ç amarche bien, devant la variable language.

    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
     
    function sentence($id)
    {
       if ($GLOBALS["language"]==1 or "") // Si la langue choisie n'est pas la langue par défaut
       {
          $query="SELECT L1 FROM table_sentence WHERE id=$id ";
          //echo $query;
          $result= mysql_query($query) or die (mysql_errno($link)." - ".mysql_error()." : <br/>\n".$sql);
          $line= mysql_fetch_array($result) ;
          if($line == false) return $id;
          $Lid=$line[0];
     
          return $Lid; // On renvoie le mot traduit
       }
       else 
       {
     
          $query="SELECT L2 FROM table_sentence WHERE id=$id ";
          //echo $query;
          $result= mysql_query($query) or die (mysql_errno($link)." - ".mysql_error()." : <br/>\n".$sql);
          $line= mysql_fetch_array($result) ;
          if($line == false) return $id;
          $Lid=$line[0];
     
          return $Lid; // On renvoie le mot traduit
    	  }
     
    }
    Merci.
    Mathieu.

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

Discussions similaires

  1. [Tableaux] Oubli du nom d'une fonction
    Par Ekimasu dans le forum Langage
    Réponses: 3
    Dernier message: 18/04/2006, 10h50
  2. [Tableaux] demande de code pour une fonction.php
    Par carmen256 dans le forum Langage
    Réponses: 4
    Dernier message: 21/01/2006, 17h22
  3. [Gestion animation] petit soucis de lenteur
    Par estacado dans le forum 2D
    Réponses: 9
    Dernier message: 17/01/2006, 11h24
  4. Gestion des buffers dans une fonction
    Par JiJiJaco dans le forum Langage
    Réponses: 2
    Dernier message: 06/01/2006, 11h20
  5. [Tableaux] gestion des connexions
    Par zahiton dans le forum Langage
    Réponses: 3
    Dernier message: 02/11/2005, 14h37

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