Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [plany] rotator banerów, jak zrobić mulikategorię w jednym polu?
Athlan
post 27.07.2006, 08:36:19
Post #1





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

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


Hmmm może przedstawię sytuację (nawet wypadaloby tongue.gif )

Chciałbym zrobić sobie już powiedzmy "niebadziewny" rotator bannerów, ktory ma nastepującą strukturę bazy danych:
  1. --
  2. -- Struktura tabeli dla `vbanner_banners`
  3. --
  4.  
  5. CREATE TABLE `vbanner_banners` (
  6. `Vbanners_banner_id` int(11) NOT NULL AUTO_INCREMENT,
  7. `Vbanners_banner_width` int(4) NOT NULL,
  8. `Vbanners_banner_height` int(3) NOT NULL,
  9. `Vbanners_banner_name` text NOT NULL,
  10. `Vbanners_banner_hits` int(10) NOT NULL,
  11. `Vbanners_banner_displays` int(10) NOT NULL,
  12. `Vbanners_banner_limit_hits` int(10) NOT NULL,
  13. `Vbanners_banner_limit_displays` int(10) NOT NULL,
  14. `Vbanners_banner_limit_time` int(11) NOT NULL,
  15. `Vbanners_banner_category` int(5) NOT NULL,
  16. PRIMARY KEY (`Vbanners_banner_id`),
  17. KEY `Vbanners_banners_category` (`Vbanners_banner_category`)
  18. );
  19.  
  20. -- --------------------------------------------------------
  21.  
  22. --
  23. -- Struktura tabeli dla `vbanner_categories`
  24. --
  25.  
  26. CREATE TABLE `vbanner_categories` (
  27. `Vbanners_category_id` int(11) NOT NULL AUTO_INCREMENT,
  28. `Vbanners_category_name` text NOT NULL,
  29. `Vbanners_category_description` text NOT NULL,
  30. PRIMARY KEY (`Vbanners_category_id`)
  31. );


Każdy banner wyświetli się przy określonych warunkach:
- jezeli jego czas ważności nie upłynął
- jeżeli nie przekroczył swojego limitu wyświetleń
- jeżeli nie przekroczył swojego limitu kilknięć (uderzeń)
- jeżeli jest w danej kategorii na odpowiedniej stronie smile.gif

chodzi mi głównie o to, aby dopasować banner do kilku kategorii. Jak postawie 0, banner nalezy do wszystkich kategorii, ale problem jest w tym, aby umieścuić go np w 2 albo nawet 10 kategoriach.

I pytanie jest nastepujące: W jaki sposób zapisać jego ID kategorii do których należy?

p.s pole kategorii w bannerach możnaby zapisać jako TEXT i wartość mialaby oddzielone przecinkami klategorie, np 4,7,8,10,45, ale trudno byłoby zaznaczać te dane z bazy danych sad.gif np chcę zaznaczyć wszystkie bannery z kategorii 7 i każdy rekord musiałby być analozowany, wartość pola kategorii explodowana przecinkiem i dopeiro po przejściu warunku banner zostałby dopuszczony do wyświetlenia... jest na to inny haczyk?


--------------------
Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem.
Go to the top of the page
+Quote Post
Kayne
post 27.07.2006, 08:49:16
Post #2





Grupa: Zarejestrowani
Postów: 82
Pomógł: 0
Dołączył: 30.04.2006
Skąd: Kalisz

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


Możesz stworzyć oddzielną tabelę:

ID_BANNERA | ID_KATEGORII

I tam dodawać. ID_BANNER może (i powinno) się powtarzać.

Ten post edytował Kayne 27.07.2006, 08:49:25


--------------------
Chcesz szybko i łatwo wygrać 100 zł?
Go to the top of the page
+Quote Post
Athlan
post 27.07.2006, 08:55:39
Post #3





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

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


Hmmm... pomysł nie jest zły... LEFT JOIN wszystko załatwi, a są jeszcze inne rozwiązania?


--------------------
Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem.
Go to the top of the page
+Quote Post
kossa
post 27.07.2006, 08:57:00
Post #4





Grupa: Zarejestrowani
Postów: 1 165
Pomógł: 9
Dołączył: 9.04.2002
Skąd: Toruń

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


hej,
możesz to rozwiązać tworząc dwie tabele, jedną z banerami, a drugą gdzie będziesz miał ID baneru i id kategorii, np:

id | id_baneru | id_kategorii

1 | 3 | 4
1 | 2 | 4
1 | 7 | 2
1 | 3 | 5
1 | 2 | 7

itd.

Skrypt najpierw pobiera id kategorii, sprawdza jaki ma wyświetlić baner, a następnie z tabeli z banerami sprawdza czy baner spelnia warunki aby jeszcze go wyświetlić, czy kliki są jeszcze możliwe itd. Jeśli ok to baner będzie wyświetlony, jeśli nie to coś co już sobie wymyślisz :-)

Pozdrawiam,
Łukasz

p.s.
oo, Kayne zaproponował to samo kiedy pisałem odpowiedź :-) Pozdro!

Ten post edytował kossa 27.07.2006, 08:58:24


--------------------
Go to the top of the page
+Quote Post
cicik
post 27.07.2006, 19:27:57
Post #5





Grupa: Zarejestrowani
Postów: 219
Pomógł: 5
Dołączył: 18.07.2006
Skąd: Piekary Śląskie

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


Relacja pomiedzy kategoriami i abnerami to N do N wiec zasady sztuki nakazuja utworzyc trzecia tabele (tak jak koledzy wspomnieli) z id_banera i id_kategorii ale bez dodatkowego klucza glownego. kluczem glownym powinny byc te dwa pola razem.

create table banery_kategorie (id_banera int, id_kategorii int, primary key(id_banera, id_kategorii)) + ewentualne wiezy referencyjne.


--------------------
CMS dla Twojej firmy
Wojciech Małota
Go to the top of the page
+Quote Post
Athlan
post 28.07.2006, 08:28:15
Post #6





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

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


@cicik - nie powtarzaj sie... powiedzimi mi 2 razy nie trzeba pisać ponownie:)

btw: primary na id_kategorii nie może być... a co jak wiele bannerów nalezy do tej samej kategorii? sama nazwa mówi: ROTATOR smile.gif


--------------------
Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem.
Go to the top of the page
+Quote Post
cicik
post 28.07.2006, 08:37:39
Post #7





Grupa: Zarejestrowani
Postów: 219
Pomógł: 5
Dołączył: 18.07.2006
Skąd: Piekary Śląskie

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


Cytat(Athlan @ 28.07.2006, 09:28 ) *
@cicik - nie powtarzaj sie... powiedzimi mi 2 razy nie trzeba pisać ponownie:)

btw: primary na id_kategorii nie może być... a co jak wiele bannerów nalezy do tej samej kategorii? sama nazwa mówi: ROTATOR smile.gif


Wlasnie dlatego napisalem osobnego posta zeby wyjasnic ze NIE NALEZY robic dodatkowego klucza glownego dla tabeli laczacej banery i kategorie. Klucz glowny ma byc dwukolumnowy.
Tak jak napisalem primary key(id_banera, id_kategorii) wtedy kluczem glownym jest kombinacja id banera i id kategorii. Wtedy dziala to dokladnie tak jak ma dzialac. Czyli kazdy abner moze byc w wielu kategoriach i kazda kategoria moze zqwierac dowolna liczbe banerow. Jednoczesnie wyskoczy blad jezeli bedziesz chcial dodac dwa razy ten sam baner do jednej kategorii co chroni spojnosc bazy.


--------------------
CMS dla Twojej firmy
Wojciech Małota
Go to the top of the page
+Quote Post
Athlan
post 28.07.2006, 08:46:30
Post #8





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

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


aha... a wiesz moze jak zrobić taki multiprimarykey przez phpmyadmin? bo u mnie się nie da albo czegoś nie widzę smile.gif

pozdro smile.gif

____ EDIT:

  1. CREATE TABLE `zlacz_banery_2` (
  2. `id_bannera` int( 11 ) NOT NULL ,
  3. `id_kategorii` int( 11 ) NOT NULL ,
  4. PRIMARY KEY ( `id_kategorii` , `id_bannera` )
  5. )


w phpmyadmie tego nie ma ale poradziłem sobie robiąc to ręcznie

Ten post edytował Athlan 28.07.2006, 08:48:39


--------------------
Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem.
Go to the top of the page
+Quote Post
kossa
post 28.07.2006, 08:48:33
Post #9





Grupa: Zarejestrowani
Postów: 1 165
Pomógł: 9
Dołączył: 9.04.2002
Skąd: Toruń

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


Cicik'a uwaga jest istotna w związku z zaprojektowaniem Twojej (Athlan) bazy danych.

Łukasz


--------------------
Go to the top of the page
+Quote Post
cicik
post 28.07.2006, 08:59:08
Post #10





Grupa: Zarejestrowani
Postów: 219
Pomógł: 5
Dołączył: 18.07.2006
Skąd: Piekary Śląskie

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


Cytat(Athlan @ 28.07.2006, 09:46 ) *
w phpmyadmie tego nie ma ale poradziłem sobie robiąc to ręcznie


w phpmyadminie zaznaczasz opcję "primary key" przy odpowiednich polach


--------------------
CMS dla Twojej firmy
Wojciech Małota
Go to the top of the page
+Quote Post
Athlan
post 28.07.2006, 09:38:09
Post #11





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

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


tak... znalazlem. Jakby ktos szukal to to jest w preferencjach tabeli przy zaznaczeniu poczczególnych pól jako checkboxy dać PODSTAWOWY (lub primary albo taki kuczyk tongue.gif) - przyciski pod zestawieniem pol tabeli

pozdro smile.gif

Ten post edytował Athlan 28.07.2006, 09:39:05


--------------------
Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem.
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: 21.06.2025 - 12:03