![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 3.11.2020 Ostrzeżenie: (0%) ![]() ![]() |
[php][/php]
Dobry wieczór, Jestem w trakcie pisania pracy dyplomowej i napotkałem problem dot. wyświetlania przepisów na podstawie wcześniej zaznaczonych produktów z formularza. ZAMYSŁ: (IMG:https://zapodaj.net/images/57ee78e5bd174.png) (IMG:https://zapodaj.net/images/a19e1b9ca5a02.jpg) Chcę stworzyć kwerendę, która będzie aktywowała się w momencie spełnienia warunku: a) wszystkie składniki podane w formularzu muszą być zawarte w przepisie w przeciwnym wypadku przepis/y nie zostanie wyświetlony. Kieruję pytanie do was jak muszę przerobić swoją kwerendę aby takowa kwerenda miała byt na mojej stronie? Dla entuzjastów wysyłam plik .SQL ze strukturą bazy danych. https://pastebin.pl/view/be6ecf46 Z góry dziękuję za każdą pomoc (IMG:style_emoticons/default/biggrin.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 324 Pomógł: 52 Dołączył: 18.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Formularz nie ma tu nic do rzeczy. Twoja aplikacja działa tak, że użytkownik wybiera ileś tam składników z formularza, załóżmy że wybrał mleko (value 200), cukier (value 210) i mąkę (value 220). Te value wysyłasz z formularza. I z tych składników wyszukujesz przepisy. Problem jest w tym, że aby sprawdzić wszystkie kombinacje składników z założeniem, że min muszą być 2 składniki, musisz utworzyć takie zestawy składników:
przepis 1. 200, 210, 220 przepis 2. 200, 210 przepis 3. 200, 220 przepis 4. 210, 220 I musisz tak zrobić, bo nie znasz wszystkich przepisów i ich składników wprowadz0nych do bazy i może być przepis oparty tylko na mące i mleku, albo mące i jajkach. Takie zestawy produktów trzeba sprawdzić w warunku WHERE zapytania. Problem jest w tym, że przy wybraniu w formularzu 6,8,10 i więcej produktów ze wzoru na kombinacje bez powtórzeń tych zestawów składników będzie taka ilość, że nie ma mowy żeby skonstruować takie zapytanie. Tak jak chcesz to zrobić musisz sprawdzić wszystkie kombinacje przesłanych przez formularz produktów. Teraz Twoje zapytanie zawsze zwróci przepis z jednym lub dwoma produktami, bo tak to zapytanie działa. Osobiście zrobił bym to na odwrót. W pętli, z każdego przepisu pobrał bym składniki i sprawdził czy array_diff zwraca 0 z tablicą przesłaną z formularza. Jeśli tak, to znalazł przepis bo jego wszystkie składniki mieszczą się w przesłanych składnikach, jak większa od zera to przepis z tych składników jest niekompletny. I tak przez wszstkie przepisy, pobieram sobie id tych przepisów co array_diff zwraca 0, a później to już bajka. Ale nie jestem wyrocznią w sql-u, to tylko moje zdanie. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 13.10.2025 - 23:56 |