Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> tagi w bazie danych
Tho
post 24.08.2011, 21:05:31
Post #1





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 26.07.2011

Ostrzeżenie: (20%)
X----


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?
Go to the top of the page
+Quote Post
pedro84
post 24.08.2011, 21:12:50
Post #2





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


Tagi trzymaj w osobnej tabeli (np. UserTags | UserID, TagID).


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post
Tho
post 24.08.2011, 21:14:42
Post #3





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 26.07.2011

Ostrzeżenie: (20%)
X----


Ok, więc co z tymi kategoriami?
Go to the top of the page
+Quote Post
pedro84
post 24.08.2011, 21:15:29
Post #4





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


Co?


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post
Tho
post 24.08.2011, 21:19:55
Post #5





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 26.07.2011

Ostrzeżenie: (20%)
X----


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"?
Go to the top of the page
+Quote Post
pedro84
post 24.08.2011, 22:06:40
Post #6





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


Przecież to tylko nazewnictwo. Chodzi o samą zasadę. Trzy tabele: Posts, Categories, PostCategories, która łączy.


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post
fifi770
post 24.08.2011, 22:56:31
Post #7





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 21.06.2010

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


Jeżeli w kolumnie typ masz spodnie, koszulki to tak to rób:


  1. SELECT * FROM produkty WHERE typ LIKE '%$nazwa_tagu%'"
Go to the top of the page
+Quote Post
uirapuru
post 25.08.2011, 10:22:16
Post #8





Grupa: Zarejestrowani
Postów: 182
Pomógł: 9
Dołączył: 30.04.2005

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


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.
Go to the top of the page
+Quote Post
Tho
post 25.08.2011, 10:23:02
Post #9





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 26.07.2011

Ostrzeżenie: (20%)
X----


Mam tworzyć nową zmienną? Chyba coś pokrzaniłeś z cudzysłowami, bo błędy wyskakują...
Go to the top of the page
+Quote Post
uirapuru
post 25.08.2011, 10:24:54
Post #10





Grupa: Zarejestrowani
Postów: 182
Pomógł: 9
Dołączył: 30.04.2005

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


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).
Go to the top of the page
+Quote Post
Tho
post 25.08.2011, 10:46:19
Post #11





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 26.07.2011

Ostrzeżenie: (20%)
X----


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
Go to the top of the page
+Quote Post
uirapuru
post 25.08.2011, 10:53:53
Post #12





Grupa: Zarejestrowani
Postów: 182
Pomógł: 9
Dołączył: 30.04.2005

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


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 ?
Go to the top of the page
+Quote Post
pedro84
post 25.08.2011, 11:50:22
Post #13





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


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...

Ten post edytował pedro84 25.08.2011, 11:57:58


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post
uirapuru
post 25.08.2011, 11:56:00
Post #14





Grupa: Zarejestrowani
Postów: 182
Pomógł: 9
Dołączył: 30.04.2005

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


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
Go to the top of the page
+Quote Post

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: 29.06.2025 - 06:50