Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL]Pobieranie rekordów według określonych kryteriów
ossUter
post
Post #1





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 27.11.2013

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


Witam,

parę ładnych godzin borykam się z problemem, bardziej chodzi o kwestię SQL.

Obrazując, skrypt po wpisaniu w textboxa wyszukuje w SQL dane rekordy, gdzie nazwa = wpisanna_wartosc. Zakładając, że wpisałem 2 nazwy oddzielając je przecinkiem (X, Y)

Mianowicie 2 warunki:

a) jeśli się wybierze opcję "wszystkie zawierające wpisane wartości" ma szukać wszystkich rekordów, w których występuje dana wyżej "nazwa". To działa:
  1. $where .= "AND nazwa IN('" . implode("','", $wprowadzona_wartosc) . "')";


Wzór:

Zawiera X;
Zawiera Y;
Zawiera Y i X;

To działa jak należy.

b ) jeśli się wybierze opcję "wszystkie zawierające TYLKO wprowadzone wartości ma szukać rekordów, w których występuje tylko w "nazwa" to, co wprowadziliśmy.

Tutaj nie wiem, jak to zrobić.

Wzór:

Zawiera X i Y - tylko, nie chcę rekordów, które zawierają tylko X, tylko Y oraz ewentualnie jeśli w MySQL w "nazwa" jest 3 opcje (X, Y, Z).

Nie wiem jak to jaśniej wytłumaczyć, reausumując:



--------------------

Przykład:

Mam 5 wartości w tabeli, gdzie nazwa to w różnych kombinacjach:

1)Nazwa1, Nazwa2,
2)Nazwa1, Nazwa8,
3)Nazwa1, Nazwa9,
4)Nazwa8, Nazwa3,
5)Nazwa4, Nazwa5,


Używając wybranej opcji pierwszej, gdzie w polu textboxa wpisane będzie: "Nazwa1, Nazwa8" Wynikiem będzie:
1), 2),3),4), to jest prawidłowe.

Używając opcji drugiej efektem powinno być TYLKO 2).

Ten post edytował ossUter 27.01.2018, 19:57:28
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
ossUter
post
Post #2





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 27.11.2013

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


Nie wiem o co chodzi, ale jak obserwuję te fora, to większość osób przychodzących z prośbą o pomoc, zostaje traktowana jak debile, nieważne.

Zapytanie się generuje prawidłowo, już sprawdziłem to wcześniej, dane z formularza są przekazywane. Moim problemem jest nieumiejętność, brak realnej wizji tego zapytania, po prostu nie potrafię go skonstruować. Operator IN() działa na zasadzie: IN('wartość', 'wartosc2', 'wartosc3'), czyli zapytanie będzie prawidłowe, jeśli znajdzie wartość lub wartosc2 lub wartosc i wartosc2 i wartosc3. Ja potrzebuję skonstruować zapytanie... a może bardziej warunek, w którym nie będzie spełniony jeśli będzie tylko wartosc, wartosc2 i wartosc3. Chciałbym, aby rekordy dla których warunek nie będzie spełniony, tj. będą pojedyncze wartosci nie będą uwzględniane, lecz całość - nie wykonywał się.

Kombinowałem też coś na zasadzie
  1. WHERE nazwa = 'przekazanawartosc1' AND nazwa = 'przekazanawartosc2' AND nazwa = 'przekazanawartosc3' AND nazwa = 'przekazanawartosc4'
, raz że nie pokazuje rekordów, warunek się nie spełnia. Używając operatora OR (lub) też nie spełnia moich oczekiwań, bo to szuka w tabeli jeśli jest przynajmniej 1 wartość znaleziona, to pokazuje, a moim celem jest jeśli wszystkie na raz wartości zostaną znalezione.

Go to the top of the page
+Quote Post

Posty w temacie


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: 14.10.2025 - 03:03