Probleme fonction if

Oasisdudesert
Invité n'ayant pas de compte PHPfrance

22 sept. 2012, 11:29

Bonjour,

Que la condition soit verifiée ou pas il m'affiche quand meme meme le mot traduit en mettant :

{
if ($stat=energy)

print "Energie";
}

Ou est ce que j'ai faux pour ne l'afficher que si verifié?

Merci de votre aide

Petit nouveau ! | 5 Messages

22 sept. 2012, 11:36

Pardon je ne peux l'editer, donc j'ajoute que je veux traduire le mot energy que si c'est ce mot qui est ecrit

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

22 sept. 2012, 11:43

Salut,

Je te conseil de revoir la syntaxe de php en général et celle des chaîne de caractère en particulier.

Pour cela tu lire les tuto de http://www.phpdebutant.org

Quand as la "traduction" il faut voir si c'est dans un texte plus complet ou s'il n'y a qu'un mot.

Dans le premier cas, utilise str_replace (ou str_ireplace qui est insensible à la casse).

D'ailleurs avec ce code tu devrais avoir des messages d'erreur si ce n'est pas le cas je t'invite à passer ton niveau d'erreur à E_ALL (avec error_reporting(E_ALL) en première lignes de ton script).

Essai de corriger ton code et revient vers nous si besoin.

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 5 Messages

22 sept. 2012, 14:02

Merci,

Je l'ai fait de la facon suivante qui semble fonctionner :

Code : Tout sélectionner

if ($stat==energy) { echo "Energie"; }else if ($stat==will) {echo "<img src='images/v.png' alt='Volonté' />Volonté"; }else if ($stat==strength) {echo "<img src='images/muscle.png' alt='Force' />Force"; }else if ($stat==agility) {echo "Agilité"; }else if ($stat==guard) {echo "Defense"; }else if ($stat==labour) {echo "Travail"; }else if ($stat==robskill) {echo "Subtilisation"; }else if ($stat==IQ) {echo "QI"; }else if ($stat==brave) {echo "Courage"; }else if ($stat==hp) {echo "<img src='images/icon-health.png' alt='Sante' />Santé"; }else if ($stat==hospital) {echo "Temps Hopital"; }else if ($stat==jail) {echo "Temps Prison"; }else if ($stat==money) {echo "Cash"; }else if ($stat==crystals) {echo "Cristaux"; }else if ($stat==crimexp) {echo "EXP Crimes"; }

Mammouth du PHP | 2278 Messages

22 sept. 2012, 17:05

Bjr,
Ce qui m'étonne, c'est qu'il n'y ait pas d'erreur du genre undefined constant energy, using energy, à moins qu'elles soient noyées au milieu d'autre chose. Regarde le code source dans ton navigateur. En fait, php remplace tes constantes inconnues par leur nom, ce qui fait que ça fonctionne, presque malgré toi...
Normalement :
if ($nom_de_variable == 1) :// nombre
if ($nom_de_variable == "chaîne")//chaîne
if ($nom_de_variable == constante)//constante
if ($stat == "energy")//variable chaî,ne
ou
define ("energy","energy");
if ($stat == energy)
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

22 sept. 2012, 18:46

Code : Tout sélectionner

if ($stat==energy) { echo "Energie"; }else if ($stat==will) {echo "<img src='images/v.png' alt='Volonté' />Volonté"; }else if ($stat==strength) {echo "<img src='images/muscle.png' alt='Force' />Force"; }else if ($stat==agility) {echo "Agilité"; }else if ($stat==guard) {echo "Defense"; }else if ($stat==labour) {echo "Travail"; }else if ($stat==robskill) {echo "Subtilisation"; }else if ($stat==IQ) {echo "QI"; }else if ($stat==brave) {echo "Courage"; }else if ($stat==hp) {echo "<img src='images/icon-health.png' alt='Sante' />Santé"; }else if ($stat==hospital) {echo "Temps Hopital"; }else if ($stat==jail) {echo "Temps Prison"; }else if ($stat==money) {echo "Cash"; }else if ($stat==crystals) {echo "Cristaux"; }else if ($stat==crimexp) {echo "EXP Crimes"; }
Mon Dieu ! Quelle horreur !

Allez,je te recommande de jeter un oeil sur l'opérateur switch... ;)

Mammouth du PHP | 2278 Messages

23 sept. 2012, 09:35

Bjr,
un tableau ferait aussi l'affaire:
$t_mots = array
(
    "energy" => array("en"=>"energy", "fr"=>"Energie", "image"=>"v" ),
    "strength" => array("en"=>"strength", "fr"=>"Force","image"=>"muscle")
)
$langue = "fr"; //defined elsewhere
$texte = $t_mots[$stat][$langue];
$image = $t_mots[$stat]['image'];
En plus, il est plus facile à étendre à d'autres éléments en cas d'oubli, pour ajouter d'autres langues, etc...
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

23 sept. 2012, 09:55

Le switch est tout aussi simple à faire évoluer.
Il suffit d'ajouter un cas.

Et il présente l'avantage sur le tableau d'utiliser beaucoup moins de ressource mémoire.

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

23 sept. 2012, 10:02

switch ($stat)
       { case 'energy'   : echo 'Energie'; break;
         case 'will'     : echo '<img src="images/v.png" alt="Volonté" />Volonté'; break;
         case 'strength' : echo '<img src="images/muscle.png" alt="Force" />Force'; break;
         case 'agility'  : echo 'Agilité'; break;
         case 'guard'    : echo 'Defense'; break;
         case 'labour'   : echo 'Travail'; break;
         case 'robskill' : echo 'Subtilisation'; break;
         case 'IQ'       : echo 'QI'; break;
         case 'brave'    : echo 'Courage'; break;
         case 'hp'       : echo '<img src="images/icon-health.png" alt="Sante" />Santé'; break;
         case 'hospital' : echo 'Temps Hopital'; break;
         case 'jail'     : echo 'Temps Prison'; break;
         case 'money'    : echo 'Cash'; break;
         case 'crystals' : echo 'Cristaux'; break;
         case 'crimexp'  : echo 'EXP Crimes'; break;
       }
Difficile de faire plus simple... ;)