![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 28.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
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. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.07.2025 - 02:13 |