Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przypisywanie kategorii
Forum PHP.pl > Forum > PHP
marcin.j
Witajcie !

Natchnąłem się problem natury teoretycznej. A więc: załóżmy mam 3 grupy kategorii, w każdej grupie są 3 kategorie.
Cytat
Grupa 1
---Kategoria 1
---Kategoria 2
---Kategoria 3
Grupa 2
---Kategoria 4
---Kategoria 5
---Kategoria 6
Grupa 3
---Kategoria 7
---Kategoria 8
---Kategoria 9

Oraz jeden element który posiadałby kombinacje tych kategorii np.
Cytat
Element 1 kombinacja 1 (kategoria 1, kategoria 4, kategoria 7)
Element 1 kombinacja 2 (kategoria 1, kategoria 5, kategoria 7)
Element 1 kombinacja 3 (kategoria 1, kategoria 6, kategoria 7)
Element 1 kombinacja 4 (kategoria 1, kategoria 4, kategoria 8) itd...
na przykład: Zwierzę kombinacja 1 (rodzaj: kot, gatunek: syjamski, kolor: czarny)

I teraz kluczowy problem, jak sprawnie i szybko utworzyć sobie w PHP takie drzewko kombinacji ? Mam na myśli wszystkie możliwe kombinacje.

Kshyhoo
Jeżeli grupy nie mają znaczenia, to wrzuć to do tablicy a potem coś w stylu:
  1. function kombinacje($dane) {
  2. $fragment = array();
  3. while($t = array_shift($dane)) {
  4. $fragment[] = $t;
  5. foreach(kombinacje($dane) as $wartosc) $fragment[] = "$t - $wartosc";
  6. }
  7. return $fragment;
  8. }
  9.  
  10. $k = kombinacje(array("Kategoria 1", "Kategoria 2", "Kategoria 3", "Kategoria 4", "Kategoria 5")); // tu właśnie Twoja tablica
  11.  
  12. foreach($k as $wartosc) echo "$wartosc<br />";
marcin.j
Dziękuje serdecznie smile.gif !
Niestety jednak grupy mają znaczenie. Uproszczając mam na myśli warianty produktu, np. kolor: biały, rozmiar: x.
Kshyhoo
No tak, ale Twój przykład jest zbyt lakoniczny, by wyciągnąć wnioski potrzebne do napisania odpowiedniego skryptu. Piszesz wpierw o "Grupach" i przypisanych im "Kategoriach", a potem podajesz w przykładzie "Elementy" i "kombinacje". Podaj lepszy przykład.
marcin.j
Ok, więc załóżmy mamy produkt w sklepie, i ten produkt ma swoje atrybuty np. kolor: biały, czarny; wielkość: X, L; i teraz chcę zrobić wszystkie możliwe warianty produktu na podstawie n grup atrybutów.
Cytat
Produkt 1 kolor: biały; rozmiar: X;
Produkt 1 kolor: biały; rozmiar: L;
Produkt 1 kolor: czarny; rozmiar: X;
Produkt 1 kolor: czarny; rozmiar: L;


Mam nadzieję, że sprawa się lekko wyjaśniła.
Kshyhoo
Dane masz w bazie?
marcin.j
Tak, baza podzielona jest na:
attributes_groups:
id_attributes_group

attributes:
id_attribute, id_attributes_group, ... inne dane takie jak nazwa itp.
Kshyhoo
Podam Ci przykład, a Ty kombinuj:
  1. SELECT a.dane AS dane1, b.dane AS dane2
  2. FROM produkty a INNER JOIN produkty b
  3. WHERE a.id<>b.id

Warunek WHERE możesz pominąć...
celbarowicz
Kurde w mordę, jak masz tylko trzy grupy skorzystaj z potrójnego selekta.
marcin.j
A co ma SELECT do tego ? Nie nie mam 3 grup, mam N grup atrybutów i N atrybutów w tych grupach. Nie chodzi mi o pobranie atrybutów znając tylko id ich grupy, natomiast o wygenerowanie maksymalnej możliwej ilości kombinacji tych grup.

Przykład:

Cytat
Grupa kolor
{
czarny (id: 1),
biały (id: 2)
}
Grupa rozmiar
{
X (id: 3),
L (id: 4),
XL (id: 5)
}

wygenerowane kombinacje dla produktu o grupach atrybutów kolor i rozmiar:
Cytat
Kombinacja 1 (1, 3),
Kombinacja 2 (1, 4),
Kombinacja 3 (1, 5),
Kombinacja 4 (2, 3),
Kombinacja 5 (2, 4),
Kombinacja 6 (2, 5)
celbarowicz
Można ze skończonej ilości tabel zawierających skończoną ilość elementów utworzyć(wypisać) wszystkie kombinacje.Wymaga to troszeczkę zaangażowania i pomyślunku. Info na PW.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.