![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 518 Pomógł: 18 Dołączył: 21.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witajcie.
Glowie sie nad tym problemem od jakiegos czasu i nie wiem jak to wymyslic. Chcialbym dodac nowa funkcjonalnosc do swojej strony, ktora polegala by na nadawaniu cech indywidualnych newsom lub tresci. Na poczatek wymyslilem ze cechy bede zapisywal binarnie w formacie 5 znakow (0 lub 1).Strona jest o dzielach sztuki a cechy zapisuje tak: cecha_malarz=10000, cecha_grafik=01000, cecha_fotograf=00100, cecha_malarz_grafik=11000, cecha_wszystko=11100. Taka cecha zapisywana jest razem z newsem dla ulatwienia wyszukiwania. I teraz moje pytanie: jak zadac pytanie do bazy (mysle ze za pomoca wyrazenia regularnego) ktore bedzie poprawnie interpretowalo takie cechy.Np jesli dam pytanie o newsy ktore spelniaja cechy malarstwa (10000) to chcialbym otrzymac w wyniku zarowno malarza(10000) jak rowniez malarza_grafika(11000) i wszystko(11100). Domyslam sie ze chodzi o jakies przerobienie zapisu 10000 na cos takiego : na pozycji pierwszen ma byc jedynka a na pozostalych obojetnie co. lub w przypadku 00110 : na pozycji trzeciej i czwartej musi byc 1 a na pozostalych obojetnie tylko jak to zapisac wyrazeniem regularnym ? za kazda podpowiedz dziekuje i pozdrawiam G |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Pomysl miales dobry ale z wykonaniem przekombinowales.
Owszem, mają to byc zapisy binarne ale nie jako cyferki 01 ale jako bity. malarz - 1 bitowo to bedzie: 001 grafik - 2 bitowo to bedzie: 010 fotograf - 4 bitowo to bedzie: 100 no i teraz laczenie bitowe or: malarz grafik 1 | 2 = 3 bitowo to bedzie: 011 grafik fotograf 2 | 4 = 6 bitowo to bedzie: 110 malarz grafik fotograf 1|2|4 = 7 bitowo to bedzie: 111 Jak chcesz w zapytaniu znaleźć w zapytaniu grafika to robisz:
fotografa:
Proste, lekkie i przejemne ![]() edit: rozwiązanie to ma jeszcze jedną zalete. Twoj zapis 5 cyfr zajmowal by 5 bajtow. Moje rozwiązanie zajmuje tylko jeden bajt. Pięciokrotne zaoszczedzenie miejsca ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 121 Pomógł: 26 Dołączył: 2.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
Nie potrzebujesz żadnych wyrażeń regularnych, tylko iloczyn logiczny.
Robisz jedno pole, cechy, i wiesz, że: bit 1 - malarz bit 2 - grafik bit 3 - rzeźbiarz itd. I teraz zapisując w bazie kogoś, kto ma wszystkie 3 wymienione cechy to wpisujesz: 7. Dlaczego? Dla każdego bitu 1 czyli 1 + 2 + 4 = 7. A potem korzystając z operatora & wyciągasz to co Cię interesuje. edit: no, tak jak @nospor napisał ![]() Ten post edytował singles 22.07.2009, 07:59:57 -------------------- Works for me => u mnie działa - blog o (o)programowaniu i nie tylko
meet.php - darmowe meetupy związane z PHP |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 518 Pomógł: 18 Dołączył: 21.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dziekuje za porade zaraz biore sie za testowanie.
EDIT: Dziekuje dokladnie o to mi chodzilo Ten post edytował elmozaur 22.07.2009, 14:30:08 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat Strona jest o dzielach sztuki a cechy zapisuje tak: cecha_malarz=10000, cecha_grafik=01000, cecha_fotograf=00100, cecha_malarz_grafik=11000, cecha_wszystko=11100. Taka cecha zapisywana jest razem z newsem dla ulatwienia wyszukiwania. Zawsze możesz jeszcze skorzystać z pola SET w MySQL. -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 18:07 |