![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 18.06.2015 Ostrzeżenie: (10%) ![]() ![]() |
Witam,
mam takie pytanie a kompletnie nie mogę znaleźć tego w internecie i obawiam się że nie da się tego zrobić tak jak ja chce. robię serwis ogłoszeniowy który pozwala na dodawanie "dodatkowych opcji" do ogłoszeń z listy zdefinowanych przez administratora. Są one zapisywane do jednej komórki w bazie danych poprzez polecenie: json_encode($_POST['opcje_dodatkowe'], JSON_UNESCAPED_UNICODE) odczytuje je z bazy oczywiście korzystając z json_decode w bazie to mniej więcej wygląda tak: {"18":"elektronika","21":"coś tam","22":"wybór 3","23":"456","24":"2015"} gdzie pierwsza liczba to id opcji a druga to wartość wybrana lub wpisana przez użytkownika no i wszystko byłoby ok gdyby nie wyszukiwarka ogłoszeń... bo jeśli wyszukuje tekst to mogę sobie dać warunek: opcje_dodatkowe REGEXP '"21":"([^"]*)coś([^"]*)"' 21 - to id opcji coś - to co wpisał użytkownik w wyszukiwarce i znajduje poprawnie. ale tam są też pola liczbowe i tutaj fajnie by było żeby móc wpisać zakres liczb (np rocznik od 2005 do 2010) i tutaj nie wiem jakie zrobić zapytanie to mysql żeby wykorzystać zarówno REGEXP (lub like) ale także operator > (greater) żeby znaleźć wartość wyższą od wpisanej czyli z przykładowych trzech wpisów do bazy danych: {"24":"2015"} {"24":"2000"} {"24":"2008"} żeby mi wyciągnęło tylko ostatni (pomiędzy 2005 a 2010) jest to w ogóle możliwe? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
zmienić koncepcję. Zapisywać te dane w oddzielnej tabeli tak jak to się powinno robić.
PS. Jest możliwe. W bazach typu NoSQL Ten post edytował Pyton_000 18.06.2015, 09:30:18 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 18.06.2015 Ostrzeżenie: (10%) ![]() ![]() |
Myślałem o takim rozwiązaniu, jest znacznie prostsze w obsłudze ale ma jedną poważną wadę: ograniczenie ilości opcji.
chciałbym żebym w skrypcie który tworzę administrator mógł dodać nieskończenie wiele opcji dodatkowych i to różnych dla różnych kategorii (np w motoryzacja: rocznik, powypadkowy a w obuwie: rozmiar, damskie/męskie itd.) i dlatego pomyślałem że tak będzie najlepiej i wszystko byłoby ok gdyby nie ta wyszukiwarka... |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Jest możliwe. W postgreSQL, który posiada typ JSON (IMG:style_emoticons/default/smile.gif) http://www.postgresql.org/docs/9.4/interac...atype-json.html
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 18.06.2015 Ostrzeżenie: (10%) ![]() ![]() |
czyli konkretnie jak musiałbym napisać to zapytanie?
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Czemu uważasz że trzymanie opcji w oddzielnej tabeli ma jakieś wady?
Przecież tworzysz tabelę: id_produktu | id_opcji | wartość W takiej strukturze możesz mieć pierdyliard opcji dla jednego produktu. Dodatkowo nie bawisz się jakimiś dziwactwami typuj json które nie służą do trzymania danych w RDBM |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 18.06.2015 Ostrzeżenie: (10%) ![]() ![]() |
ok dzięki wielkie, pewnie będę musiał stworzyć tą dodatkową tabelę z wartościami opcji
ale to jeszcze dla pewności sie spytam: w taki sposób jak jest teraz (json zapisany w bazie danych) nie da się napisać takiego zapytania do mysql żeby znalazło wyniki w jakimś przedziale? |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 381 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Mysql nie dorobił się jeszcze typu JSON chociaż już od dłuższego czasu nad tym pracują.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 17.09.2025 - 16:08 |