Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][mysql] wiele-do-wielu: grupowanie wyników, budowy książki telefonicznej ciąg dalszy
lukasz_matysek
post
Post #1





Grupa: Zarejestrowani
Postów: 33
Pomógł: 2
Dołączył: 25.03.2010

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


Piszę książkę telefoniczną w php, używam bazy mysql.
W bazie są trzy tabele:

wpisy, kategorie oraz tabela realizująca relację wiele-do-wielu: kategorieWpisy. W tabeli tej znajdują się ID kontaktów i kategorii.

Załóżmy, że robię selecta dla potrzeb wyświetlenia tablicy z kontaktami i kategoriami:

SELECT wpisy.nazwa, kategorie.nazwa FROM wpisy,kategorie,KategorieWpisy WHERE KategorieWpisy.idkontakt=wpisy.id AND KategorieWpisy.idkategoria=kategorie.id

czyli dostaję wynik w formie jednej tablicy z nazwami kontaktów i kategoriami, do których są przypisane. Tablicę tą obsługuję oczywiście w standardowy sposób fetch_array

Kiedy dany kontakt jest przypisany do więcej niż jednej kategorii, to wynik dotyczący danego kontaktu otrzymuję w formie dwóch wierszy, na przykład:

nazwakontaktu kategoria1
nazwakontaktu kategoria2

Chciałbym, żeby użytkownik zobaczył to w formie:

nazwakontaktu kategoria1,kategoria2

Problem leży w tym, że linijka "kategoria2" jest generowana już za następnym przebiegiem pętli while-mysql_fetch_array. W związku z tym nie wiem co zrobić, aby uzyskać żądany efekt.

Wycinek kodu; wynik zrzucam do zmiennej buforującej i potem wyrzucam echem.

  1. $t=mysql_query("SELECT wpisy.nazwa,kategorie.nazwa FROM KategorieWpisy,wpisy,kategorie WHERE KategorieWpisy.idwpis=wpisy.id AND KategorieWpisy.idkategoria=kategorie.id") or die (mysql_error());
  2. while($y = mysql_fetch_array($t))
  3. {
  4. $output_buffer.="<tr><td>$y[0]</td><td>$y[1]</tr>";
  5. }
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 Aktualny czas: 19.08.2025 - 03:15