par
nestor94 » 04 avr. 2021, 23:56
Bonjour, merci d'avance si vous pouvez m'aider sur ce sujet car je n'en trouve pas la solution.
<?php
session_start();
//Affichage erreurs PHP
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
require_once 'config.php';
$id = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;
// affichage de la position du joueur depuis table membres
$sql = "SELECT id, pos_x, pos_y FROM membres WHERE id=:id";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
$resultat = $pdostat->fetch();
if (!empty($resultat )) {
$pos_x = $resultat['pos_x'];
$pos_y = $resultat['pos_x'];
}
$debutX = $resultat['pos_x'];
$finX = $resultat['pos_x']+5;
$debutY = $resultat['pos_y'];
$finY = $resultat['pos_y']+5;
//affichage de la tile correspondante dans la table map
$sql = "SELECT tile FROM map LEFT JOIN membres ON map.pos_x = membres.pos_x AND map.pos_y = membres.pos_y WHERE membres.id=:id";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
$resultat = $pdostat->fetch();
if (!empty($resultat )) {
$tile = $resultat['tile'];
}
for ($pos_x = 1; $pos_x <= $finX; $pos_x++)
{
echo '<div class="case_map">';
echo' <div class="container">';
echo '<div class="row"> ';
$sql = "SELECT tile FROM map WHERE pos_x = $debutX AND pos_y = $debutY";
//affichage de la tile depuis table map // redondant??
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
$resultat = $pdostat->fetch();
if (!empty($resultat )) {
$tile = $resultat['tile'];
}
echo '<img src="'.$tile.'">';
echo ' <div class="col-md-offset-2 col-md-8"> ';
echo ' <div id="map" style="width:60px; height:60px"></div>';
echo ' </div>
</div>
</div> ';
echo '</div>', "\n";
$debutX++;
echo '</div>', "\n";
$debutX = $debutX;
$debutY = $debutY;
}
for($pos_y = 1; $pos_y <= $finY; $pos_y++)
{
echo '<div class="case_map">';
echo' <div class="container">';
echo '<div class="row"> ';
$sql = "SELECT tile FROM map WHERE pos_x = $debutX AND pos_y = $debutY";
//affichage de la tile depuis table map // redondant??
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
$resultat = $pdostat->fetch();
if (!empty($resultat )) {
$tile = $resultat['tile'];
}
echo '<img src="'.$tile.'">';
echo ' <div class="col-md-offset-2 col-md-8"> ';
echo ' <div id="map" style="width:60px; height:60px"></div>';
echo ' </div>
</div>
</div> ';
echo '</div>', "\n";
$debutX++;
echo '</div>', "\n";
$debutY = $debutY;
}
?>
Je veux afficher un carré (centré à l'écran) de 11 x 11 cases autour de la position du membre avec chaque case du carré étant une image extraite de la table map.
toutes les variables ont été testées et sont OK. Peut-etre les requetes sont mal positionnées? La fin du script (la partie "DIV") est foireuse et celle ci, je ne la maitrise absolument pas. A l'affichage , j'obtiens que la tile d'origine qui s'affiche 24 fois à la verticale et coté gauche de l'écran.
Bonjour, merci d'avance si vous pouvez m'aider sur ce sujet car je n'en trouve pas la solution.
[PHP]
<?php
session_start();
//Affichage erreurs PHP
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
require_once 'config.php';
$id = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;
// affichage de la position du joueur depuis table membres
$sql = "SELECT id, pos_x, pos_y FROM membres WHERE id=:id";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
$resultat = $pdostat->fetch();
if (!empty($resultat )) {
$pos_x = $resultat['pos_x'];
$pos_y = $resultat['pos_x'];
}
$debutX = $resultat['pos_x'];
$finX = $resultat['pos_x']+5;
$debutY = $resultat['pos_y'];
$finY = $resultat['pos_y']+5;
//affichage de la tile correspondante dans la table map
$sql = "SELECT tile FROM map LEFT JOIN membres ON map.pos_x = membres.pos_x AND map.pos_y = membres.pos_y WHERE membres.id=:id";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
$resultat = $pdostat->fetch();
if (!empty($resultat )) {
$tile = $resultat['tile'];
}
for ($pos_x = 1; $pos_x <= $finX; $pos_x++)
{
echo '<div class="case_map">';
echo' <div class="container">';
echo '<div class="row"> ';
$sql = "SELECT tile FROM map WHERE pos_x = $debutX AND pos_y = $debutY";
//affichage de la tile depuis table map // redondant??
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
$resultat = $pdostat->fetch();
if (!empty($resultat )) {
$tile = $resultat['tile'];
}
echo '<img src="'.$tile.'">';
echo ' <div class="col-md-offset-2 col-md-8"> ';
echo ' <div id="map" style="width:60px; height:60px"></div>';
echo ' </div>
</div>
</div> ';
echo '</div>', "\n";
$debutX++;
echo '</div>', "\n";
$debutX = $debutX;
$debutY = $debutY;
}
for($pos_y = 1; $pos_y <= $finY; $pos_y++)
{
echo '<div class="case_map">';
echo' <div class="container">';
echo '<div class="row"> ';
$sql = "SELECT tile FROM map WHERE pos_x = $debutX AND pos_y = $debutY";
//affichage de la tile depuis table map // redondant??
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
$resultat = $pdostat->fetch();
if (!empty($resultat )) {
$tile = $resultat['tile'];
}
echo '<img src="'.$tile.'">';
echo ' <div class="col-md-offset-2 col-md-8"> ';
echo ' <div id="map" style="width:60px; height:60px"></div>';
echo ' </div>
</div>
</div> ';
echo '</div>', "\n";
$debutX++;
echo '</div>', "\n";
$debutY = $debutY;
}
?>
[/PHP]
[b]Je veux afficher un carré (centré à l'écran) de 11 x 11 cases autour de la position du membre avec chaque case du carré étant une image extraite de la table map.[/b]
[i][u]toutes les variables ont été testées et sont OK[/u][/i]. Peut-etre les requetes sont mal positionnées? La fin du script (la partie "DIV") est foireuse et celle ci, je ne la maitrise absolument pas. A l'affichage , j'obtiens que la tile d'origine qui s'affiche 24 fois à la verticale et coté gauche de l'écran.