Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][SQL], Problem z podwójną pętlą while
convicted
post 28.04.2009, 21:09:23
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 28.04.2009

Ostrzeżenie: (0%)
-----


Hej.
2 petle while, sciaganie rekordow z bazy danych, i co wazne, stosunek pól jeden do wielu (jeden serwis, wiele obsługiwanych marek, poprzez łączącą tabele grupas). Ma to wygladac mw. w taki sposob:

serwis1 (miasto adres) auto1
auto2
auto3
serwis2 (miasto adres) auto1
auto4

Generalnie chodzi o to, zeby samochody byly wyswietlane, a nazwy serwisow i ich adresy sie nie powtarzaly. Ściągam id_grupys z tabeli serwis, na tej podstawie drukuje nazwy aut, za pomocą łączącej tabeli grupas.

Niestety wewnetrzna petla przechodzi sobie raz, drukując samochody z pierwszego serwisu, a jak pojawia się nowa wartosc id_grupys, pasująca do nowego serwisu, wewnetrzna petla już nie chce się włączyć. $wiersz moze już przyjęło maksymalną wartość? Nie mam pojęcia, czemu tak sie dzieje. Oto kod:

Kod
$zapytanie = "SELECT * FROM serwis AS a JOIN miasto AS b ON a.id_miasta = b.id_miasta
   LEFT JOIN grupas AS c ON a.id_grupys = c.id_grupys LEFT JOIN auta AS d ON c.id_auta = d.id_auta";
  
   $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);
  
   echo (
        "<TABLE border=0><TR>
        <td width=200><b><left><font color=#000099>Nazwa:</b></td>
        <td width=90><b><left><font color=#000099>miasto:</b></td>
        <td width=120><b><left><font color=#000099>Adres:</b></td>
        <td width=120><b><left><font color=#000099 align=left> Auta:</b></td></tr>  
        ");
  
   while ($wiersz = mysql_fetch_assoc($idzapytania))
  
    {
  
   if ($wiersz["nazwa"] <> $nazwastara) { aby nie powtarzaly sie komorki z danymi serwisu
  
   echo( "<tr><td><left> ".$wiersz["nazwa"]."</td>");
   echo( "<td><left> ".$wiersz["city"]."</td>");
   echo( "<td><left> ".$wiersz["adres"]."</td>");
  
   $idgrupys = $wiersz["id_grupys"]; // tu wlasnie przypisuje wartosc id grupy samochodow, na ktorej podstawie w petli ponizej wydrukuja mi sie auta
   $nazwastara = $wiersz["nazwa"];
  
   while ($wiersz = mysql_fetch_array($idzapytanias)) //ta petla co chodzi tylko raz, a powinna za kazdym razem jak skonczy petle u gory
   {
   echo " < ".$wiersz["id_grupys"]." i ".$idgrupys." > "; // drukuje sobie czy sie zgadza wartosc wyznaczona wczesniej z ta w tabeli
  
   if ($wiersz["id_grupys"] == $idgrupys) {
   echo( "<td><left> ".$wiersz["auto"]."</td></tr> ");
   echo( "<td></td> <td></td> <td></td> ");
   }
   }
   }
   }


Wyglada to tak:
http://gdzieserwisowac.pl/problem.jpg niestety auta powinny sie drukowac dla kazdego serwisu, a nie tylko dla pierwszego. Pomoze mi ktos?

Ten post edytował convicted 29.04.2009, 13:32:22
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 11:54