06-14-2009, 09:33 PM
Bonjour !
J'ai un petit problème pour l'affichage de ma map
Le script affiche les cases dans un rayon de 3 cases autour de l'endroit ou se trouve le joueur. Si le joueur n'est jamais allé sur une case, elle apparait en noir
Dans la base de données, j'ai un champ pour chaque case
(exemple : 808 ; 809 ; 810 etc)
Si le joueur est déjà allé sur une case, le champ vaut 1.
Sinon, il vaut 0.
Problème : Dans ma base de données, certaines case déjà visitées (et donc valant 1) apparaissent en noir quand même.....
et si je teste
echo $info_carte[109];
Cela m'affiche 0 alors que dans la base de données il vaut 1
Par contre si je renomme le champ "109" dans ma base de données par autre chose (cent_neuf par exemple) et que je demande
echo $info_carte['cent_neuf'] là ça m'affiche bien 1 et la case n'est pas en noir oO
Je comprends pas ce qui ne marche pas. N'est t-il pas possible de nommer un champ par un chiffre ?
Pourtant si j'essaye avec la case 808 ça marche ! J'ai l'impression que ça ne marche pas quand le nombre est inférieur à 400
Je sollicite donc votre aide !
Merci d'avance !
PS : je sais que le code pour afficher la carte est un peu lourd mais je ne pense pas qu'il pose problème pour cela !
J'ai un petit problème pour l'affichage de ma map
Code PHP :
<?php
include("connexion_bdd.php");
$info_joueur_tab = mysql_query("SELECT * FROM donnees WHERE pseudo='$pseudoC'");
$info_joueur = mysql_fetch_array($info_joueur_tab);
$case_rec = mysql_query("SELECT * FROM carte WHERE pseudo='$pseudoC'");
$carte2 = mysql_fetch_array($case_rec);
$MAJ_du_lieu = mysql_query("UPDATE donnees SET lieu='carte' WHERE pseudo ='$pseudoC'");
//
//
//
//
//
$info_carte_tab = mysql_query("SELECT * FROM carte WHERE pseudo = '".$_SESSION['pseudo']."'")or die (mysql_error());
$info_carte = mysql_fetch_array($info_carte_tab)or die (mysql_error());
//
//
//
//
//
$case_act = $info_carte['case_act'];
?>
<table cellspacing="0">
<?php
for ($j = 1; $j <= 18; $j++)
{
for ($i = 1; $i <= 20; $i++)
{
$case = $j*100+$i;
if($case == $case_act)
{
$i_min = $i - 3;
$i_max = $i + 3;
$j_min = $j - 3;
$j_max = $j + 3;
if ($i_min <= 0)
{
$i_min = 1;
}
elseif ($i_max >= 21)
{
$i_max = 20;
}
elseif ($j_min <= 0)
{
$j_min = 1;
}
elseif ($j_max >= 19)
{
$j_max = 18;
}
for ($j2 = $j_min; $j2 <= $j_max; $j2++)
{
echo('<tr>');
for ($i2 = $i_min; $i2 <= $i_max; $i2++)
{
$case2 = $j2*100+$i2;
if ($case2 == $case_act)
{
$image_case_act = "images/gde_version/croix.PNG";
print '<td><img src='.$image_case_act.' alt="Votre case" /></td>';
}
else
{
if ($info_carte[$case2] == 0)
{
$image_case = "images/gde_version/noir.PNG";
print '<td><img src='.$image_case.' alt= "Case' .$case2.'" /></td>';
}
else
{
$image_case = "images/gde_version/$case2.PNG";
print '<td><img src='.$image_case.' alt= "Case' .$case2.'" /></td>';
}
}
}
echo('</tr>');
}
}
}
}
?>
</table>
Le script affiche les cases dans un rayon de 3 cases autour de l'endroit ou se trouve le joueur. Si le joueur n'est jamais allé sur une case, elle apparait en noir
Dans la base de données, j'ai un champ pour chaque case
(exemple : 808 ; 809 ; 810 etc)
Si le joueur est déjà allé sur une case, le champ vaut 1.
Sinon, il vaut 0.
Problème : Dans ma base de données, certaines case déjà visitées (et donc valant 1) apparaissent en noir quand même.....
et si je teste
echo $info_carte[109];
Cela m'affiche 0 alors que dans la base de données il vaut 1
Par contre si je renomme le champ "109" dans ma base de données par autre chose (cent_neuf par exemple) et que je demande
echo $info_carte['cent_neuf'] là ça m'affiche bien 1 et la case n'est pas en noir oO
Je comprends pas ce qui ne marche pas. N'est t-il pas possible de nommer un champ par un chiffre ?
Pourtant si j'essaye avec la case 808 ça marche ! J'ai l'impression que ça ne marche pas quand le nombre est inférieur à 400
Je sollicite donc votre aide !
Merci d'avance !
PS : je sais que le code pour afficher la carte est un peu lourd mais je ne pense pas qu'il pose problème pour cela !