Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [plany] rotator banerów, jak zrobić mulikategorię w jednym polu?
Athlan
post
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 (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
Kayne
post
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
Go to the top of the page
+Quote Post
Athlan
post
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?
Go to the top of the page
+Quote Post
kossa
post
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
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.
Go to the top of the page
+Quote Post
Athlan
post
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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
cicik
post
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 (IMG:http://forum.php.pl/style_emoticons/default/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.
Go to the top of the page
+Quote Post
Athlan
post
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ę (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

pozdro (IMG:http://forum.php.pl/style_emoticons/default/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
Go to the top of the page
+Quote Post
kossa
post
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
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
Go to the top of the page
+Quote Post
Athlan
post
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 (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ) - przyciski pod zestawieniem pol tabeli

pozdro (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował Athlan 28.07.2006, 09:39:05
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.12.2025 - 14:46