afficher le logo selon la langue

Eléphant du PHP | 63 Messages

22 sept. 2015, 10:45

bonjour
je refais mon post sur un nouveau topics comme vous me l avez conseiller.

lorsqu un utilisateur s enregistre sur mon forum il choisi sa langue fr pour francais en pour anglais.

lorsqu il est connecte je voudrais afficher le logo en francais car il y a un slogan par defaut en anglais.

je suis nouveau en php voici ce que j ai essayer de faire.


<?php
if (isset($_GET['id'])) {
$id=$_GET['id'];

$connect = mysqli_connect("localhost","my_user","my_password","my_db");

//je veux verifier la langue du membre qui vient de ce connecter//

$sql  = "SELECT user_lang FROM table_users WHERE id = {$_GET['id']}";

//j'affecte la valeur de user_lang a $lang//

$lang=("user_lang");

//j'affiche le logo en fonction de la langue de l'utilisateur //

if ($lang == 'fr')
{
<img src="/logofr.png" alt="" />
}

else if ($lang == 'en')

{
<img src="logoen.png" alt="" />
 }

?>

deuxieme choise

j'ai un fichier config,php suis obliger d'utiliser quand meme :
$connect = mysqli_connect("localhost","my_user","my_password","my_db");
je peux pas mettre dans le header (require config.php) et afficher dans le code a la place $mysqli (); ??

merci de votre reponse et merci encore a ce forum.

Mammouth du PHP | 737 Messages

22 sept. 2015, 12:25

Re :)

Bon pour l'affectation de ta variable je suis un peu sceptique. Que se passe t-il si tu fais un echo $lang après $lang=("user_lang"); ?

Autrement si tu ne veux pas tester toutes les valeurs de langue, tu peux juste écrire ton image de la sorte : logo".$lang.".png

Tu as juste à t'assurer que les images sont présentes (prévois le cas ou $lang serait vide en mettant une image par défaut "logo.png")

Pour le require je ne comprends pas bien...

Mega
;)
Dyslexics are teople poo

ynx
Eléphant du PHP | 289 Messages

22 sept. 2015, 14:32

Salut,

Effectivement il manque l'exécution de ta requête sql pour récupérer la langue de l'utilisateur (via l'utilisation de la fonction mysqli_query : http://php.net/manual/fr/mysqli.query.php regarde l'exemple en style procédurale pour récupérer les données d'une requête SELECT).

Concernant ta deuxième question, tu peux effectivement placer ta connexion à la bdd dans ton fichier de config. Il te suffira d'inclure (require) le fichier de config à chaque fois que tu as besoin de te connecter à la bdd plutôt que de copier la ligne mysqli_connect(...) sur chaque page.

Bonne journée

Eléphant du PHP | 63 Messages

22 sept. 2015, 15:22

salut ynx,
oui je vais regarder cela pour comprendre comment on ecrit le code. on vera si j ai compris
pour la deuxieme question donc je n ai rien d autres a rajouter sur la page sauf dans le hearder mettre include config.php exact?

pour quelqu un qui demarre c est comme si j apprenais le chinois. merci de vos exercices c est ca qui aide a progresser.

Eléphanteau du PHP | 17 Messages

22 sept. 2015, 22:21

Salut !

Je pense qu'il est plus sécuriser de passer par PDO (si tu peux) et de passer par des $_SESSION si tu utilises une gestion de compte.

Voici le code que je te propose (il y a surement des erreurs) :

Code : Tout sélectionner

<!-- Connexion BDD --> <?php $pdo = new PDO('mysql:host=HOTE;dbname=NOM_DATABASE', 'LOGIN', 'MOTDEPASSE'); // Récupération des infos de l'utilisateur $req = $pdo->prepare('SELECT * FROM table_users WHERE id = ?'); $req->execute([$_SESSION['auth']['id']]); $user = $req->fetch(); ?> <!-- Affichage selon la langue --> <?php if(isset($user['user_lang'])) { //Si il y a une entrée dans user_lang echo'<img src="'.$user['user_lang'].'">'; } else { echo"Pas d'entrée correcte (Langue non paramétrée)"; //Affichage d'erreur } ?>
Avec dans ta base de donnée qui correspond à user_lang, ton image (soit logofr.png ou logoen.png).

Eléphant du PHP | 63 Messages

23 sept. 2015, 02:56

Le problem les logos non pas de place dans la base. je dois donc si j ai compris faire un else if avec logo extern du genre
dans user_lang du forum il y a forcement une entree car lorsque tu t'inscris il y a une langue par defaut exemple En
et l utilisateur change si il prefere une autre langue sinon il est dans la langue par defaut "en" anglais.

je dois donc faire comme cela ?
if(isset($user['user_lang']==en)) //Si L' entrée dans user_lang est "en" je veux juste afficher le logo anglais
{ 
echo'<img src="/forum/images/Logoen.png">';
}

else if(isset($user['user_lang']==fr))  //Si L' entrée dans user_lang est "fr" je veux juste afficher le logo francais
{ 
echo'<img src="/forum/images/Logofr.png">';
}

else if(isset($user['user_lang']==de)) //Si L' entrée dans user_lang est "de" je veux juste afficher le logo allemand
 { 
echo'<img src="/forum/images/Logode.png">';
}

else if(isset($user['user_lang']==it)) //Si L' entrée dans user_lang est "it" je veux juste afficher le logo italien
{ 
echo'<img src="/forum/images/Logoit.png">';
}

Mammouth du PHP | 737 Messages

23 sept. 2015, 09:55

Salut,

Si tu es sur que user_lang est tout le temps défini plus directement sans test ;
<?php echo '<img src="/forum/images/Logo'.$user['user_lang'].'.png">'; ?>
avec test (mais pas sur toutes les valeurs que peuvent prendre la variable)
<?php if(isset($user['user_lang'])) 
{ 
echo '<img src="/forum/images/Logo'.$user['user_lang'].'.png">'; 
}
else
{ 
echo 'autre chose'; 
} ?>
Mega
;)
Dyslexics are teople poo

Eléphant du PHP | 63 Messages

23 sept. 2015, 11:35

en faite quand j essai de faire
<?php if(isset($user['user_lang'])) 
{ 
echo '<img src="/forum/images/Logo'.$user['user_lang'].'.png">';
il affiche pas le logo il affiche sur l emplacement du logo

fetch(); if(isset($user['user_lang'])) { echo ''; } else { echo 'autre chose'; } ?>

Mammouth du PHP | 737 Messages

23 sept. 2015, 12:23

Essaie :
echo '<img src="/forum/images/Logo'.$user["user_lang"].'.png">';
Dyslexics are teople poo

Eléphant du PHP | 63 Messages

23 sept. 2015, 12:51

je test en local plus facile pour travailler

avait de mettre 4 langue je me connect sur un compte qui a bien fr dans la base de donnees dans lang_user

<?php $pdo = ('mysql:host=localhost;dbname=nomdemadb', 'login', ''); il y a pas de mot de passe car je suis sur wamp
  
  
   $req =('SELECT * FROM table_users WHERE id = ?');
   $req = $pdo([$_SESSION['auth']['id']]);
   $user = $reqfetch();   
    
   if(isset($user['user_lang']))
{ 
echo '<img src="/forum/images/Logo'.$user["user_lang"].'.png">';
}
 ?>
Dans ma base de donnees j la table c'est phpbb_users
j ai tester aussi en metant $req =('SELECT * FROM phpbb_users WHERE id = ?');
quand je me connect avec un pseudo il affiche pas de logo
juste ca '; } ?>

de plus quand je fait afficher la source de la page il affiche ce code complet meme avec la connexion db

Eléphanteau du PHP | 17 Messages

23 sept. 2015, 13:28

Re salut, bien je peux te proposer une sessions skype pour t'aider, (j'ai quelques minutes à tuer) XD,

Envoie moi un message privé si tu veux ;)

Mammouth du PHP | 737 Messages

23 sept. 2015, 14:33

Tu peux poster le code entier stp ? car ca aurait dû fonctionner la 2de fois :)

Mega
;)
Dyslexics are teople poo

Eléphant du PHP | 63 Messages

23 sept. 2015, 16:26

bonsoir tous le monde
tu veux le code de la page entiere ou just le php? car celui que j ai poster recement c est le code entier php que je veux coller dans ma page m_header_navbar.html

sinon voici le debut du code de la page m_header_navbar.html
<nav id="main-navbar" class="navbar navbar-default navbar-static-top">
<div class="container">

  <div class="nav-content"> 
  

 <?php 

 $pdo =('mysql: localhost,nomdemaDB','login', '');  pas de password car je travail sur wamp en localhost
  
  
   $req =('SELECT * FROM Table_users WHERE id = ?');
   $req = $pdo([$_SESSION['auth']['id']]);
   $user = $reqfetch();   
   
 
   if(isset($user['user_lang']))
{ 
echo '<img src="/forum/images/logo'.$user["user_lang"].'.png">';
}


 ?>
  
   <div class="float-left">

      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>

      <ul class="nav float-left">
        <li class="active">
          <a id="logo" href="{U_INDEX}" title="{L_INDEX}">
          <!-- IF MBRN_LOGO_IMG != null -->
          <img src="{MBRN_LOGO_IMG}" alt="{SITENAME}" />
          <!-- IF MBRN_LOGO_TEXT != null -->{MBRN_LOGO_TEXT}<!-- ELSE -->{SITENAME}<!-- ENDIF -->
          <!-- ELSE -->
          
          <i class="icon fa <!-- IF MBRN_LOGO_ICON != null -->{MBRN_LOGO_ICON}<!-- ELSE -->fa-home<!-- ENDIF -->"></i>
          <!-- IF MBRN_LOGO_TEXT != null -->{MBRN_LOGO_TEXT}<!-- ELSE -->{SITENAME}<!-- ENDIF -->

          <!-- ENDIF -->
ne pas oublier je n ai aucune image dans la base de donnees les images sont stocker dans le repertoire images
logofr.png pour francais
logoen.png pour anglais
logode.png pour allemand
logoit.png pour italien

merci de votre patience avec un debutant.

Mammouth du PHP | 737 Messages

23 sept. 2015, 16:34

Pour voir si ta requête marche bien, fais un echo "<h1>->".$user['user_lang']."</h1>"; (entre le fetch et le if)

Dis moi ce que tu vois après -> ... fr, en..? Un message d'erreur ?
Dyslexics are teople poo

Eléphant du PHP | 63 Messages

23 sept. 2015, 17:01

en local quand je mets le code
$user = $reqfetch();   
    echo "<h1>->".$user['user_lang']."</h1>"
 
   if(isset($user['user_lang']))
il affiche cela
->".$user['user_lang']."" if(isset($user['user_lang'])) { echo ''; } ?>
mais a l emplacement de Echo dans user_lang'])) { echo ''; }
il y a un carre comme si l image etait absente, pourtant j ai tester en local url de l image elle s affiche bien en lien direct.




sur le site online j ai pas changer l ancien logo en anglais VIsa.png fonction au meme emplacement
<!-- HEADER PRESET:
================================================== -->

  
    <header class="header-body" id="mobbern-header-0">

<!-- Header Navbar -->
<nav id="main-navbar" class="navbar navbar-default navbar-static-top">
<div class="container">

  <div class="nav-content"> <a><img src="http://www.asiansold.com/forum/images/Visa.png" align="left"></a>

    <div class="float-left">