11-07-2011, 12:44 PM
(Modification du message : 11-07-2011, 12:45 PM par piratequentin.)
Code :
<?php
// Données carte
*/
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=****;dbname=*****', '*****', '*****', $pdo_options);
$reponse = $bdd->query('SELECT Pos_x, Pos_y, Nom, Id FROM map');
while ($donnees = $reponse->fetch())
{
$karte[$donnees['Pos_x']][$donnees['Pos_y']] = "village.jpg" ;
}
$reponse->closeCursor();
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
$pos = @$_GET["pos"]; // Ici on récupère la valeur de la position pour pouvoir afficher
if($pos == "" or ereg("^-?[0-9]{1,};-?[0-9]{1,}$",$pos) == false)
$pos = "-7;7";
$pos_tab = explode(";",$pos);
unset($pos);
$pos["x"] = $pos_tab[0];
$pos["y"] = $pos_tab[1];
// On arrive à la fonction :)
function karte($pos_x,$pos_y,$size)
{
$end_x = $pos_x + $size;
$end_y = $pos_y - $size;
global $karte;
echo "
<table border=0 cellpadding=0 cellspacing=0>
<tr>
<td><a href=\"karte.php?pos=".($pos_x-1).";$pos_y\">Gauche</a> </td>
<td align=\"center\"><a href=\"karte.php?pos=$pos_x;".($pos_y+1)."\">Haut</a>
";
echo "<table border=1 cellpadding=0 cellspacing=0>";
for($y=$pos_y;$y>$end_y;$y--) // Première boucle qui va afficher les lignes y (les balises <tr> du tableau)
{
echo "<tr>";
for($x=$pos_x;$x<$end_x;$x++) // Deuxième boucle qui va afficher les colonnes x (les balises <td> du tableau)
{
// idem que au dessus à l'exception que les x augmentent lorsqu'on va vers la droite et ne diminuent pas..
if(isset($karte[$x][$y])) // On regarde si l'emplacement est défini dans le tableau
$img = $karte[$x][$y]; // Si oui on prend dans la variable $img l'image du tableau
else
$img = "herbe.jpg"; // Si non on met dans $img une image d'herbe
echo "<td><img alt='$x;$y' border=0 src='$img'></td>";
// On affiche l'image avec comme texte alternatif les coordonnées de la case
}
echo "</tr>";
}
echo "
</table>
<a href=\"karte.php?pos=$pos_x;".($pos_y-1)."\">Bas</a>
</td>
<td align=\"center\"> <a href=\"karte.php?pos=".($pos_x+1).";$pos_y\">Droite</a></td>
</tr></table>
";
}
?>
<center>
<h1>La carte</h1>
<br>
<?php
// On affiche la carte avec une taille de 15 cases
karte($pos["x"],$pos["y"],15);
?>
Et voila à quoi ressemble la bdd
Id Nom Pos_x Pos_y
1 Village1 0 0
2 village2 -3 -3
3 village3 -8 -9
Cordialement
Ps: Php_Addict je vais faire de mon mieux.