Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: tagi w bazie danych
Forum PHP.pl > Forum > PHP
Tho
Chce dodawać pewne produkty i często jeden produkt można podpiąć do kilku kategorii, gdy w tabeli produkty w kolumnie typ podałem "spodnie, krotkie spodenki" i zapytanie:

Kod
SELECT * FROM produkty where typ="spodnie (lub) krotkie spodenki"

Oczywiście w zapytaniu nie używałem LUB smile.gif

Pytam osobno o każdą kategorię, nie wyciąga ani spodni, ani krótkich spodenek, nie wywala też błędu, poprostu puste pole.

Jak ustawić kilka kategorii dla jednego produktu, nie można używać przecinka w bazie w polu typ?
pedro84
Tagi trzymaj w osobnej tabeli (np. UserTags | UserID, TagID).
Tho
Ok, więc co z tymi kategoriami?
pedro84
Co?
Tho
Cytat(pedro84 @ 24.08.2011, 22:15:29 ) *
Co?

?

Czym różni się kategoria od tagów? Chyba niczym, bo i tak pobierając używamy zapytania które i tak to zrobi...

Dlaczego proponujesz nie używać "kategorii" a "tagi"?
pedro84
Przecież to tylko nazewnictwo. Chodzi o samą zasadę. Trzy tabele: Posts, Categories, PostCategories, która łączy.
fifi770
Jeżeli w kolumnie typ masz spodnie, koszulki to tak to rób:


  1. SELECT * FROM produkty WHERE typ LIKE '%$nazwa_tagu%'"
uirapuru
fifi770 dał działające rozwiązanie, ale Tho, co jeśli będziesz chciał wylistować kategorie? Przerezasz całą bazę produktów i skompletujesz wszystkie wystapienia, potem jeszcze explode po ' LUB '. Trochę to czasochłonne. Pedro84 podał wzorcowe rozwiązanie.
Tho
Mam tworzyć nową zmienną? Chyba coś pokrzaniłeś z cudzysłowami, bo błędy wyskakują...
uirapuru
Nie, musisz utworzyć dwie tabele dodatkowe. Jedną z nazwami wszystkich możliwych kategorii, drugą wiążącą produkty z kategoriami (id z produktu oraz id z kategorii).
Tho
Cytat(uirapuru @ 25.08.2011, 11:22:16 ) *
Pedro84 podał wzorcowe rozwiązanie.

Wzorowe, tylko po co user id, jeśli mój serwis nawet jescze nie obsługuje logowania? smile.gif
uirapuru
user_id to klucz obcy na podstawie klucza podstawowego users, pozwala rozróżnić krotki, więc na upartego może być choćby mail z distinctem, ale się używa id, bo tak wink.gif po czym rozróżniasz krotki ?
pedro84
Cytat(Tho @ 25.08.2011, 11:46:19 ) *
Wzorowe, tylko po co user id, jeśli mój serwis nawet jescze nie obsługuje logowania? smile.gif

Kolego, a czy wiesz co to jest takiego logiczne myślenie?

Masz przykładowe tabele: Products, Categories. Musisz wówczas utworzyć trzecią tabelę o nazwie ProductCategories, w której to będziesz przechowywał kategorie danego produktu:
  1. ProductID FK->Products.ID
  2. CategoryID ->FK->Categories.ID


No ja już prościej tego wyjaśnić nie potrafię. Pamiętaj, musisz sobie dostosować nazewnictwo do swojej bazy, to TYLKO przykład zastosowania.

Rozwiązanie podane przez fifi ma wiele wad (spróbuj np. utworzyć z tego listę, czy select'a).

@uirapuru - Coś w tym jest i to nie tylko na tym forum...
uirapuru
Nie wiem, czy ja się starzeję, a wcześniej tego nie dostrzegałem, czy może jest tak, że coraz więcej osób z roszczeniowym nastawieniem na forum 'żąda' gotowych rozwiązań podanych na tacy? tongue.gif
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.