allora sono un programmatore asp che da poco si è affacciato al mondo php

oggi mentre lavoravo su un progetto mi sono trovato una situazione un po strana e non riesco a capire se sbaglio io qualcosa o realmente non si puo fare la situazione è questa

faccio una query di tutti i dati presenti nella tabella e li stampo tuttti in questo caso su 3 righe alla interno di questo ciclo un while per l'esattezza

verifico per ogni campo se sono presenti dei dati particolari riferiti a quella posizione in un altra tabella

specifico subito che all inizio avevo usato il left join per evitare il problema ma essendo che nella tabella 2 esistono + righe per la stessa posizione poi mi sballa tutto e invece che dare 30 risultati come dovrebbe ne da per esempio 31


vi faccio un esempio per spiegare meglio quello che volevo fare


Codice PHP:
<?php   $result $mysqli->query("SELECT * FROM mappa  order by id_mappa asc"MYSQLI_USE_RESULT);                             printf("<table border = 1 ><tr>"); $n 0;    while($row $result->fetch_row())  {                           if ($row['tipo'] == 0) {                             if ($n == 10 or $n == 20 or $n == 30) {                                 printf('</tr><tr><td bgcolor="#00CC33">');                                         } else {                                 printf(' <td bgcolor="#00CC33"> ');                                     }                                     printf('Nome %s 
tipo: [b]capitale[/b] '
$row['nome']);                         } elseif ($row['tipo'] == 1) {                             if ($n == 10 or $n == 20 or $n == 30) {                                 printf('</tr><tr><td bgcolor="#00CC66">');                                         } else {                                 printf(' <td bgcolor="#00CC66"> ');                                     }                                      printf('Nome %s 
tipo: confine '
$row['nome']);                         } elseif ($row['tipo'] == 2) {                              if ($n == 10 or $n == 20 or $n == 30) {                                 printf('</tr><tr><td bgcolor="#006600">');                                         } else {                                 printf(' <td bgcolor="#006600"> ');                                     }                                     printf('Nome %s 
tipo: zona vuota  '
$row['nome']);                         } elseif ($row['tipo'] == 3) {                              if ($n == 10 or $n == 20 or $n == 30) {                                 printf('</tr><tr><td bgcolor="#0033FF">');                                         } else {                                 printf(' <td bgcolor="#0033FF"> ');                                     }                                     printf('Nome %s 
tipo: mare '
$row['nome']);                          }   
$posizione =  $row['id_mappa']                                                                                                               $result1 $mysqli->query("SELECT n_unita, FROM unita where sposta = 0 and posizione = ".$posizione.""MYSQLI_USE_RESULT);                              while($row1 $result1->fetch_row())                                  {                                                                  if ($row1[0] == 0) {                                                                                          printf('
 nessuna unita </td>'
);                                                                                           } else {                                                                                                                                                                                                                                           printf('
unita [url="posizione.php?id=%s"] %s [/url]</td>'
$row['id_mappa'], $row1[0]);                                    }                                  }    $n $n+1;    }  $result->close();                             printf('</tr></table>');   ?>

come vedete per ogni cella della tabella verifico che siano presenti dei volori in quella cella e che non siano in spostamento ma per quealche motivo la cosa non funziona sapreste aiutarmi?