bigornot Posté 4 Janvier 2006 Posté 4 Janvier 2006 Bonjour! Voilà, j'expose mon probleme... Je voudrais créer une carte interactive. J'ai donc deux tables, une table map(relief, terrain), et une table special (restaurants, ...). Chaque table contient : id(id de l'objet ou du terrain, implementé automatiquement),type(type),nom(nom),img(chemin de l'image associée au terrain),alt(texte alternatif de description),x(position X sur le plan),y(position Y sur le plan). Chaque position (X,Y) correspond à un terrain, et parfois à un objet (spécial), et même parfois à plusieurs objets! Voilà mon casse-tete : Comment, en PHP, afficher sur 9x9 cases l'image terrain et, si il existe, l'image de l'objet (s'il y en a plusieurs, on doit en choisir un aléatoirement et afficher son image)? Pour l'instant, j'arrive à gérer, grâce à PHP, l'affichage de la carte sur une seule table (map), et une seule dimension (X ou Y) : je n'arrive pas à gérer l'ordre avec x ET y, je n'arrive pas non plus à ne retirer qu'un seul objet de la table à la fois, et encore moins à coordonner les deux. Cela donne ce code : <?phpfunction Map1Dimension($x){ $x1=$x-4; $where_clause='WHERE '; while(false){ $where_clause.='x='.$x1.' '; if($x1==$x+4){ return true; } else { $where_clause.='OR '; } $x1++; } $query=mysql_query('SELECT img FROM map '.$where_clause.' ORDER BY x DESC LIMIT 0,16'); echo '<table background-color="#fff"><tr>'; while($fetch=mysql_fetch_array($query)){ echo '<table background="map/'.$fetch['img'].'.gif"><td><!-- <img src="OBJET ALEATOIRE SI IL EXISTE"> --></td></table>'; }}?> Donc voilà... Ce qui me bloque surtout c'est : comment mettre les deux tables dans fetch, avec une boucle, sachant qu'il y aura donc plusieurs $fetch['img'] par passage de la boucle!
bigornot Posté 5 Janvier 2006 Auteur Posté 5 Janvier 2006 (modifié) ha! En tritouillant un peu j'ai obtenu ça : function Map($x,$y){ $x1=$x-4; $y1=$y-4; $where_clause='WHERE '; while(false){ $where_clause.='(x='.$x1.' AND y='.$y1.') '; if($x1==$x+4){ return true; } else { $where_clause.='OR '; } } echo 'SELECT img,alt FROM map '.$where_clause.' ORDER BY x,y,id DESC LIMIT 0,1000'; $query=mysql_query('SELECT img,alt FROM map '.$where_clause.' ORDER BY x,y,id DESC LIMIT 0,1000'); $deb=0; while($fetch=mysql_fetch_array($query)){ if($deb==0){ echo '<table background-color="#000"><tr>'; $deb=1; } if($lasty!=$fetch['y']){ $lasty=$fetch['y']; echo '</tr><tr>'; } echo '<td><table background="map/'.$fetch['img'].'.gif">'; $query2='SELECT img FROM players WHERE x='.$x1.' AND y='.$y1.' LIMIT 0,1'; $fetch2=mysql_fetch_array(mysql_query($query2)); echo '<tr><td><img src="canevas/'.$fetch['img'].'.jpg" /></td></tr>'; echo '</table></td>'; }} Je ne l'ai pas encore testé (il faut que je crée les bases) mais dans l'ensemble, ça devrait marcher... Seulement ça consommera à mon avis beaucoup... Donc je suis ouvert quant à toute suggestion sur ce script! Merci beaucoup! Modifié 5 Janvier 2006 par bigornot
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant