Ogólnie schemat tabeli wygląda tak: klik .

Mam sobie formularz z wyszukiwaniem serwisu, wygląda on tak klik

Filtrowanie po nazwie i mieście działa, bo mam tu relacje 1:1 jak widać na schemacie tabel. Jednak w sytuacji, gdy wybieram przy wyszukiwaniu kilka usług, z filtrowaniem mam wielki problem. Nawet jak nie dam multiple, mam problem z wyświetleniem tylko poszukiwanych informacji.

plik smiasto.php - wszystko działa ok, wybrane usługi zapisywane są w tablicy indeksz[]
wynik postem idzie do sm.php
//$indeksn i $indeksm to wartości wpisane w formularzu wyszukiwania

plik sm.php
Kod
       $db_user='x';//user
       $db_password='x';//haslo
       $database='y';//nazwa bazy
       $sql_conn = mysql_connect('gdzieserwisowac.pl',$db_user,$db_password);
       mysql_select_db($database) or die('Blad wyboru bazy danych.');
       mysql_query("SET NAMES latin2");
      
       $zapytanie = "SELECT * FROM serwis AS a JOIN miasto AS b ON a.id_miasta = b.id_miasta where (a.nazwa like '%".$indeksn."%' and b.id_miasta like '%".$indeksm."%')";  # filtrowanie po nazwie i mieście działa, jak dam tu coś więcej - czyli w zapytaniu dodam jeszcze kolejne potrzebne tablice grupaz i zakres, wyświetlanie się sypie i drukują się powtarzające się rekordy z bazy
       $idzapytania = mysql_query($zapytanie);
      
       $zapytanies = "SELECT * FROM `serwis` AS a LEFT JOIN `grupas` AS c ON a.id_grupys = c.id_grupys LEFT JOIN `auta` AS d ON  c.id_auta = d.id_auta ORDER BY `a`.`id_grupys`";
       $idzapytanias = mysql_query($zapytanies);
        
       $zapytaniez = "SELECT * FROM `serwis` AS a LEFT JOIN `grupaz` AS c ON a.id_grupyz = c.id_grupyz LEFT JOIN `zakres` AS d ON c.id_zakresu = d.id_zakresu ORDER BY `a`.`id_grupyz`";
       $idzapytaniaz = mysql_query($zapytaniez);
      
       $arrayTmp = array();
       while ($wiersz = mysql_fetch_array($idzapytaniaz)){
       $arrayTmp[] = $wiersz;
       }
      
       $arrayTmp2 = array();
       while ($wiersz = mysql_fetch_array($idzapytanias)){
       $arrayTmp2[] = $wiersz;
       }
      
       $wszystkie_strony = array();
       $url = 'target.php';
      
       while ($wiersz = mysql_fetch_assoc($idzapytania)){
       ?>
       <table>
       <?
      
          
       echo "" .$wiersz['id']. ". ";
       echo "".$wiersz["nazwa"]. ". ";
       echo ", ";
      
       echo "" .$wiersz['city']. ", ";
       echo "ul. " .$wiersz['adres']. " ";
      
              $idgrupyz = $wiersz["id_grupyz"];
              $idgrupys = $wiersz["id_grupys"];
            
       foreach($arrayTmp as $wiersz){ # drukuja sie wszystkie uslugi danego serwisu
        
          if ($wiersz["id_grupyz"] == $idgrupyz) {
             echo( " ".$wiersz["zakres"].", ");
            }
         }
      
       foreach($arrayTmp2 as $wiersz){ # drukuja sie wszystkie obslugiwane auta danego serwisu
        
          if ($wiersz["id_grupys"] == $idgrupys) {
          echo( " ".$wiersz["auto"].", ");
              }
          }
              echo "</td></tr></table>";
       }


Jak na początku samej pętli próbowałem dać jeszzce raz pętle foreach, $wiersz osiąga maksymalną wartość i potem już nic sie nie drukuje. Nie wiem dlatego jak wydrukować tylko te serwisy, które mają usługi wybrane przy opcji wyszukiwania.