Fonctionnement d'une function

Eléphant du PHP | 75 Messages

01 juin 2012, 06:36

Bonjour,

alors voilà dans le but de crée un classement, j'ai une petite erreur,
Notice: Undefined variable: Royaume in C:\wamp2\www\Rank_Player.php on line 45
Voila le tableau :
<table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
		<td border="1"><center><div class="bloc2"><div class="tng6"><?php echo $data['name']; ?></div></div></center></td>
		<td border="1"><center><div class="bloc2"><div class="tng6"><?php echo $data['level']; ?></div></div></center></td>
		<td border="1"><center><div class="bloc2"><div class="tng6"><?php echo $Job = $i[$data['job']]; ?></div></div></center></td>
		<td border="1"><center><div class="bloc2"><div class="tng6"><?php $ID = $data['account_id']; echo Empire($ID, $Royaume);  ?></div></div></center></td>
	</tr>
</table>
Et voici ma function Empire.
<?php

function Empire($ID, $Royaume){
$xSql = mysql_query("SELECT * FROM player_index WHERE id='".$ID."'")or die(mysql_error());
$xRes = mysql_fetch_array($xSql);
	if ($xRes['empire'] == 1){
		if ($Royaume == 1){echo "Shinsoo' />";}Else{echo "Shinsoo";}
	}
	if ($xRes['empire'] == 2){
		if ($Royaume == 1){echo "Chunjo' />";}Else{echo "Chunjo";}
	}
	if ($xRes['empire'] == 3){
		if ($Royaume == 1){echo "Jinno' />";}Else{echo "Jinno";}
	}
}

?>
L'erreur à la ligne 45 Correspond a la Ligne
<td border="1"><center><div class="bloc2"><div class="tng6"><?php $ID = $data['account_id']; echo Empire($ID, $Royaume); ?></div></div>

Je vous remerci :)

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

01 juin 2012, 08:01

Salut,

Le message indique que la variable $royaume n'existe pas. Pas dans la fonction mais dans le code appelant.

Je suppose que cette info provient de $data ?

Tu n'a pas besoin d'utiliser d'autre variable utilise directement le tableau $data.

Ta fonction est étrange vu, qu'à priori (à un caractère près) les if et else font la même chose, tu peux largement simplifier.

@+
edit
exemple de simplification de code
<?php
function Empire($ID, $Royaume){
	$xSql = mysql_query("SELECT * FROM player_index WHERE id='".$ID."'")or die(mysql_error());
	$xRes = mysql_fetch_array($xSql);
	switch ($xRes['empire']) {
		case 1 : echo "Shinsoo"; break;
		case 2 : echo "Chunjo"; break;
		case 3 : echo "Jinno"; break;
	}
	if ($Royaume == 1){
		echo "' />";
	}
}
?>
Il en faut peu pour être heureux ......

Eléphant du PHP | 75 Messages

01 juin 2012, 13:29

Enfaite voila pour un classement je dois effectuer l'appel du nom, le level et la race du personnage, pour la race s'est fait et validé, 1 = guerrier etc... Mais pour le royaume c'est plus compliquer puisque la collone empire se trouve autre part. $Royaume est égale au nom de Shinsoo, Jinno et Chunjo.

Eléphant du PHP | 75 Messages

01 juin 2012, 14:33

Je cherche trop a faire compliquer quand sa peut être simple x)
$ID = $data['account_id'];
$xSql = mysql_query("SELECT * FROM player_index WHERE id='".$ID."'")or die(mysql_error());
$xRes = mysql_fetch_array($xSql);

$Empire = $xRes['empire'];
$Empire = array('Shinsoo', 'Chunjo', 'Jinno');
list ($x[1], $x[2], $x[3]) = $Empire;
et je l'apelle avec
<?php echo $Empire = $x[$xRes['empire']];  ?>

Et tout fonctionne merci de ton aide quand même =)