Mon premier script et je bloque...

Résolu
Signaler
Messages postés
9
Date d'inscription
vendredi 15 septembre 2006
Statut
Membre
Dernière intervention
29 septembre 2006
-
Messages postés
9
Date d'inscription
vendredi 15 septembre 2006
Statut
Membre
Dernière intervention
29 septembre 2006
-
Bonjour et merci d'avance pour ceux qui m'aideront
je vais essayer d'expliquer simplement mon souci, je souhaite réaliser en php/mysql un jeu inspiré wargame en tour par tour.

première étape je veux afficher une grille (échiquier) de 24x24 cases

et dans certaines cases, je souhaite afficher l'image de la pièce qui y figure tel que l'indique une table dans ma bdd

dans cette table en bref, j'ai :

id_unit
x_unit pour sa ligne
y_unit pour sa colonne

voilà ma toile de base et volà mon script php pour afficher la grille déjà :

<?php
echo '',\"\n\";
echo '----
',\"\n\";
echo '&nbsp; |',\"\n\";
for($y= 1;$y<=24;$y++)
    {
    echo ' '.$y.' |',\"\n\";
    }
echo '',\"\n\";
   for($x =1;$x<= 24;$x++)
      {
      echo '----
',\"\n\";
      echo ' '.$x.' |',\"\n\";
         for($y =1;$y<=24;$y++)
            {
            echo '&nbsp;, ',\"\n\";
            }
      echo '',\"\n\";
      }
echo '
',"\n";
?>

là tout va bien j'ai une jolie grille qui s'affiche, maintenant je voudrais faire un test du genre :
if $x $x_unit and $y $y_unit then echo "";

sauf que dès que j'insère cette condition (syntaxée correctement pas comme ci-dessus) quelque soit l'endroit où je la mets ça colle pas bien avec la boucle qui génère la grille

quelqu'un aurait-il une idée pour ce truc qui doit être tout simple mais qui me bloque, pour un premier essai j'ai l'air malin

merci ;-)

5 réponses

Messages postés
151
Date d'inscription
samedi 1 novembre 2003
Statut
Membre
Dernière intervention
30 juillet 2018
1
pour la requete sql, essaye ceci :

// requête SQL pour sélectionner battle_unit
// envoi la requête
$req = mysql_query("SELECT id_unit, x_unit, y_unit FROM battle_units") or die('Erreur SQL !
'.$sql.'
'.mysql_error());

$tableau = array();
while($data = mysql_fetch_array($req))
{
 $tableau[$data['id_unit']] =  $data['x_unit'] . ',' . $data['y_unit'] ;
}
Messages postés
151
Date d'inscription
samedi 1 novembre 2003
Statut
Membre
Dernière intervention
30 juillet 2018
1
si tu n'a qu'une seule piece a afficher, c'est simple, a la place de
# echo '<td height="25" width="25" align="center"> &nbsp; </td>',"\n";
tu met
# echo '<td height="25" width="25" align="center">';# if ($x $x_unit and $y $y_unit) echo "";
# echo '</td>',"\n";
mais si c'est tout l'echiquer a afficher, là c'est legerement different. tu doit ceer un tableau du type $tableau array( $id_unit> $x_unit . ',' . $y_unit) ;
ainsi la piece d'id = 5 et de coordonnée x=3, y=2 apparaitera dans le tableau sous la forme 5 => "3,2"

pour creer, il suffit d'utiliser la table de ta base où se trouvent ces données, et une boucle while

puis il faut verifier si, lors de la creation de la grille, une piece s'y trouve. Pour ça, remplace
# echo '<td height="25" width="25" align="center"> &nbsp; </td>',"\n";
par
# echo '<td height="25" width="25" align="center">';

# if (in_array($x.",".$y, $tableau)) echo "";

# echo '</td>',"\n";

si tu veux l'id de la pièce associé a ces coordonnées, c'est grace à
$id = array_search(
$x.",".$y, $tableau);

attention, j'ai codé ça sans tester .....
Messages postés
9
Date d'inscription
vendredi 15 septembre 2006
Statut
Membre
Dernière intervention
29 septembre 2006

merci, ça parait tellement simple une fois le bon truc ciblé ;-)

cependant ça ne marche pas aurais-je fait une erreur dans mon code  :

<?php
//connexion base de données
require "inc_connect.php";

// requête SQL pour sélectionner battle_unit
$sql = 'SELECT id_unit,x_unit,y_unit FROM battle_units';

// envoi la requête
$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());

//  boucle pour chaque enregistrement
while($data = mysql_fetch_assoc($req))
    {
    // on crée le tableau des coordonnées des unités    $tableau array( $id_unit> $x_unit . ',' . $y_unit) ;
    }

// on ferme la connexion à mysql
mysql_close();

echo '',\"\n\";
echo '----
',\"\n\";
echo ' &nbsp; |',\"\n\";
for($y =1;$y<= 24;$y++)
    {
    echo ' '.$y.' |',\"\n\";
    }
echo '',\"\n\";
   for($x =1;$x<= 24;$x++)
      {
      echo '----
',\"\n\";
      echo ' '.$x.' |',\"\n\";
         for($y =1;$y<=24;$y++)
            {
            echo '';
                if (in_array($x.",".$y, $tableau)) echo '';
                else echo '&nbsp;';
            echo ', ',\"\n\";
            }
      echo '',\"\n\";
      }
echo '
',"\n";
?>
Messages postés
151
Date d'inscription
samedi 1 novembre 2003
Statut
Membre
Dernière intervention
30 juillet 2018
1
pour la requete sql, essaye ceci :

// requête SQL pour sélectionner battle_unit
// envoi la requête
$req = mysql_query("SELECT id_unit, x_unit, y_unit FROM battle_units") or die('Erreur SQL !
'.$sql.'
'.mysql_error());

$tableau = array();
while($data = mysql_fetch_array($req))
{
 $tableau[$data['id_unit']] =  $data['x_unit'] . ',' . data['y_unit'] ;
}
Messages postés
9
Date d'inscription
vendredi 15 septembre 2006
Statut
Membre
Dernière intervention
29 septembre 2006

encore merci effectivement c'était ça le souci