bigornot Posté 4 Janvier 2006 Partager 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! Lien vers le commentaire Partager sur d’autres sites More sharing options...
bigornot Posté 5 Janvier 2006 Auteur Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant