<?php
$sql_lot = "SELECT lot_id, lot_bat, bat_id, bat_img
FROM lots
LEFT JOIN bats
ON bat_id = lot_bat
GROUP BY lot_id";
$query_lot = mysql_query($sql_lot) or die (mysql_error());
$data_lot = mysql_fetch_array($query_lot);
// Si c'est la case n°1
if($data_lot['lot_id']=="01")
{
echo "<div id=01 name=01 style='position: absolute; left: 158px; top: 194px;'><img src=images/".$data_lot["bat_img"]." border=0></div>";
}
// Si c'est la case n°1
if($data_lot['lot_id']=="02")
{
echo "<div id=02 name=02 style='position: absolute; left: 180px; top: 194px;'><img src=images/".$data_lot["bat_img"]." border=0></div>";
}
?>
Mais avec les IF, rien n'est récupéré. Même si j'enlève le GROUP BY. Du coup sans les IF, il me récupère bien tout, mais forcément cela ne correspond plus avec les bonnes "cases". Mais de toute façon, une question : est-ce que placer 800 IF (800 conditions) ça aussi c'est très mauvais de mettre ça sur une même page ?


<?php
$sql_lot = "SELECT lot_id, lot_bat, lot_left, lot_top, bat_id, bat_img
FROM lots
LEFT JOIN bats
ON bat_id = lot_bat";
$query_lot = mysql_query($sql_lot) or die (mysql_error());
while($data_lot = mysql_fetch_array($query_lot)) // Du coup je fais une seule boucle pour les 800 parcelles
{
echo "<div id=".data_lot['lot_id']." style='position: absolute; left: ".data_lot['lot_left']."px; top: ".data_lot['lot_top']."px;'><img src=images/".$data_lot["bat_img"]." border=0></div>";
} // Fin de la boucle
?>
Bon déjà, c'est mieux qu'hier (je ne vous remercierai jamais assez). Je te laisse imaginer mon ancien code avec les 800 SELECT.Code : Tout sélectionner
CREATE TABLE lots (
lot_id tinytext NOT NULL,
lot_nom tinytext NOT NULL,
lot_type int(1) NOT NULL default '0',
lot_bat int(11) NOT NULL default '0',
lot_prix int(11) NOT NULL default '0',
lot_loyer int(11) NOT NULL default '0',
lot_revenu mediumint(11) NOT NULL default '0',
lot_membre tinytext NOT NULL,
lot_bat_nom text NOT NULL,
lot_date text NOT NULL,
lot_old int(11) NOT NULL default '0'
) TYPE=MyISAM;
#
# Contenu de la table `lots`
#
INSERT INTO lots (lot_id, lot_nom, lot_type, lot_bat, lot_prix, lot_loyer, lot_revenu, lot_membre, lot_bat_nom, lot_date, lot_old) VALUES ('01', 'n° 01', 0, 0, 10, 1, 2, '', '', '', 0);
INSERT INTO lots (lot_id, lot_nom, lot_type, lot_bat, lot_prix, lot_loyer, lot_revenu, lot_membre, lot_bat_nom, lot_date, lot_old) VALUES ('02', 'n° 02', 0, 0, 10, 1, 2, '', '', '', 0);
INSERT INTO lots (lot_id, lot_nom, lot_type, lot_bat, lot_prix, lot_loyer, lot_revenu, lot_membre, lot_bat_nom, lot_date, lot_old) VALUES ('03', 'n° 03', 0, 0, 10, 1, 2, '', '', '', 0);
INSERT INTO lots (lot_id, lot_nom, lot_type, lot_bat, lot_prix, lot_loyer, lot_revenu, lot_membre, lot_bat_nom, lot_date, lot_old) VALUES ('04', 'n° 04', 0, 0, 10, 1, 2, '', '', '', 0);
Jusqu'à la parcelle n°800...Code : Tout sélectionner
CREATE TABLE bats (
bat_id int(11) unsigned NOT NULL auto_increment,
bat_nom tinytext NOT NULL,
bat_type int(1) NOT NULL default '0',
bat_classe int(1) NOT NULL default '0',
bat_prix int(11) NOT NULL default '0',
bat_loyer int(11) NOT NULL default '0',
bat_revenu int(11) NOT NULL default '0',
bat_img tinytext NOT NULL,
PRIMARY KEY (bat_id)
) TYPE=MyISAM;
#
# Contenu de la table `bats`
#
INSERT INTO bats (bat_id, bat_nom, bat_type, bat_classe, bat_prix, bat_loyer, bat_revenu, bat_img) VALUES (9, 'Restaurant "La bonne adresse"', 2, 3, 1300, 19, 122, 'bat_c_004.gif');
INSERT INTO bats (bat_id, bat_nom, bat_type, bat_classe, bat_prix, bat_loyer, bat_revenu, bat_img) VALUES (10, 'Fast Food "Haloa Burger !"', 2, 2, 950, 15, 91, 'bat_c_005.gif');
INSERT INTO bats (bat_id, bat_nom, bat_type, bat_classe, bat_prix, bat_loyer, bat_revenu, bat_img) VALUES (11, 'Pavillon', 1, 2, 130, 6, 0, 'bat_r_004.gif');
INSERT INTO bats (bat_id, bat_nom, bat_type, bat_classe, bat_prix, bat_loyer, bat_revenu, bat_img) VALUES (12, 'Tente de trappeur', 1, 1, 15, 2, 0, 'bat_r_003.gif');
INSERT INTO bats (bat_id, bat_nom, bat_type, bat_classe, bat_prix, bat_loyer, bat_revenu, bat_img) VALUES (13, 'Villa moderne', 1, 3, 2800, 33, 0, 'bat_r_005.gif');
INSERT INTO bats (bat_id, bat_nom, bat_type, bat_classe, bat_prix, bat_loyer, bat_revenu, bat_img) VALUES (14, 'Snack-Bar "Chez la grosse Lulu"', 2, 1, 100, 5, 9, 'bat_c_006.gif');Code : Tout sélectionner
CREATE TABLE date_jeu (
date_id int(11) unsigned NOT NULL auto_increment,
date_affiche text NOT NULL,
date_statut int(11) NOT NULL default '0',
PRIMARY KEY (date_id)
) TYPE=MyISAM;
#
# Contenu de la table `date_jeu`
#
INSERT INTO date_jeu (date_id, date_affiche, date_statut) VALUES (1, '1er janvier', 1);
INSERT INTO date_jeu (date_id, date_affiche, date_statut) VALUES (2, '2 janvier', 0);
INSERT INTO date_jeu (date_id, date_affiche, date_statut) VALUES (3, '3 janvier', 0);
INSERT INTO date_jeu (date_id, date_affiche, date_statut) VALUES (4, '4 janvier', 0);
INSERT INTO date_jeu (date_id, date_affiche, date_statut) VALUES (5, '5 janvier', 0);
INSERT INTO date_jeu (date_id, date_affiche, date_statut) VALUES (6, '6 janvier', 0);
INSERT INTO date_jeu (date_id, date_affiche, date_statut) VALUES (7, '7 janvier', 0);
INSERT INTO date_jeu (date_id, date_affiche, date_statut) VALUES (8, '8 janvier', 0);
INSERT INTO date_jeu (date_id, date_affiche, date_statut) VALUES (9, '9 janvier', 0);
INSERT INTO date_jeu (date_id, date_affiche, date_statut) VALUES (10, '10 janvier', 0);
INSERT INTO date_jeu (date_id, date_affiche, date_statut) VALUES (11, '11 janvier', 0);
INSERT INTO date_jeu (date_id, date_affiche, date_statut) VALUES (12, '12 janvier', 0);
Jusqu'au 31 décembre...
C'est grave s'il y a une solution plus optimaleVoilà. Peut-être qu'il y a mieux. Comme vous pouvez le voir j'y vais à la bonne franquette, mais faire un jeu ce n'est pas comme faire un "p'tit site en PHP". Puis dans ce cas précis je ne vois pas comment utiliser la fonction time() pour l'affichage d'une date virtuelle. Ce n'est pas le code en soit qui me dérange (c'est juste un UPDATE sur le champ statut_init). C'était surtout de savoir si c'est "pas grave" de lancer une tâche cron toutes les 60 secondes
Pas de souciTu me diras quand sortira ton jeu ca m'intéresse de le tester…
Euh, Mac n'est pas un navigateurJ'ai déjà testé la faisabilité sous IE, Firefox, et Mac, et ça marche.
Alors il suffit juste de définir une constante DEBUT, à laquelle tu assignes le timestamp de la date à laquelle tu lances le jeu (Un timestamp est le nombre de secondes depuis une certaine date normalisée). Avec la fonction time() tu as le timestamp actuel, donc time()-DEBUT te donne le nombre de secondes depuis le début du jeu, tu divises par 60 pour avoir le nombre de jours :Concernant la date, si, c'est la même pour tout le monde. Même quand un joueur n'est pas connecté, le jeu continue de tourner en permanence (ça porte un nom ça dans le monde des "gamers" mais je ne me souviens plus lequel). Donc c'est simple : toutes les minutes, la date du jour est updatée à 0 et la date du lendemain est updatée à 1. Et seule la date à "1" est affichée (voir le code dans mon post précédent). A noter aussi qu'il y aura une "FIN" dans le jeu, avec une nouvelle partie qui démarre ensuite. Mais à ce niveau, tout n'est pas encore complètement défini.

Justement, mettre en cache n'est-il pas inaproprié quand on sait que chaque parcelle est susceptible d'évoluer (de changer) n'importe quand ? Déjà (et même si cela n'a rien à voir) je compte mettre un script en JS qui met un message ou une animation quand la ville (la page) se charge. Par exemple ça.Par contre, c'est indexer qu'il faut faire. Indexer et mettre en cache..
On peut tout faire en JS. Tu peux même faire du rendu 3D en JS, ya déjà des moteurs pour ça…Coder une anim en JS ?


Tout à fait. Même les meilleurs jeux finissent pas lasser. Je sais pertinemment que la pérennité de mon jeu passe par des mises à jour régulières. Déjà, ajouts réguliers de nouveaux bâtiments, et y'en aura pour tous les goûts et tous les "porte-monnaie". Le gameplay du jeu peut être aussi amélioré continuellement. Je réfléchis à un système de gangs mafieux dans la ville, etc... tout est envisageable pour faire de ce jeu une simulation urbaine sympa sur Internet, même si au début, il n'y aura rien de prétentieux ni de "tape à l'oeil".si tu comptes apporter des changements plus tard.
