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.
$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()); { $output_buffer.="<tr><td>$y[0]</td><td>$y[1]</tr>"; }