Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL]Sortowanie wyników
xx88zg
post 4.08.2008, 12:54:13
Post #1





Grupa: Zarejestrowani
Postów: 52
Pomógł: 1
Dołączył: 8.02.2007
Skąd: Zielona Góra

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


Witam,

nie wiem czy to już gdzieś było ale szukałem i nie znalazłem.

Mam takie zapytanie:

  1. SELECT `id`,`imie`,`nazwisko`,`rok`,`poczta`,`tel`,`zawody`,`jezyki` FROM `pracownicy` WHERE `zawody` LIKE '%$_POST[zawod]%' AND `jezyki` LIKE '%$_POST[jezyk]%' OR `rok` LIKE '$w_rok' ORDER BY `nazwisko`



I teraz działa ładnie wszystko gdy:

:: wypełnię pole zawód - wyświetla wszystkie rekordy z danym zawodem
:: wypełnię pole zawód i język - wyświetla rekordy z danym zawodem i do tego z danym językiem

Problem jest gdy:

:: wypełnię pole zawód, wiek i język - wtedy wyświetla mi rekordy z zawodem i językiem, ale do tego również wszystkie zawierające odpowiedni wiek.

Obrazując to:

mam tabele:

nazwisko | wiek | zawod | jezyk |
malinowski | 27 | murarz | niemiecki
kowlaski | 20 | murarz | niemicki

i jak zawod = murarz, jezyk = niemiecki, wiek = 20 powinnien się pojawić rekord z kowalskim a pojawiają sie oba?

podejrzewam że to wina AND i OR ale nie wiem jak mam to rozwiązać?
Go to the top of the page
+Quote Post
webasek
post 4.08.2008, 13:02:56
Post #2





Grupa: Zarejestrowani
Postów: 274
Pomógł: 35
Dołączył: 18.07.2008
Skąd: Kielce

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


Zamiast takiego zapytania:

  1. SELECT `id`,`imie`,`nazwisko`,`rok`,`poczta`,`tel`,`zawody`,`jezyki` FROM `pracownicy` WHERE `zawody` LIKE '%$_POST[zawod]%' AND `jezyki` LIKE '%$_POST[jezyk]%' OR `rok` LIKE '$w_rok' ORDER BY `nazwisko`


powinno być takie:

  1. SELECT `id`,`imie`,`nazwisko`,`rok`,`poczta`,`tel`,`zawody`,`jezyki` FROM `pracownicy` WHERE `zawody` LIKE '%$_POST[zawod]%' AND `jezyki` LIKE '%$_POST[jezyk]%' AND `rok` LIKE '$w_rok' ORDER BY `nazwisko`


wtedy wyświetli to co chcesz


--------------------
"Tylko dwie rzeczy są nieskończone: wszechświat oraz ludzka głupota,
choć nie jestem pewien co do tej pierwszej." Albert Einstein

Wirtualny Rynek Predykcyjny
Go to the top of the page
+Quote Post
xx88zg
post 4.08.2008, 13:06:38
Post #3





Grupa: Zarejestrowani
Postów: 52
Pomógł: 1
Dołączył: 8.02.2007
Skąd: Zielona Góra

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


tak ale w tym przypadku jak wpisze tylko sam zawód to nie wyświetla żadnego rekordu, dodatkowo jak wpisze język i zawód to też nic nie wyświetla. działa tylko w przypadku podania wszystkich 3 parametrów lub zawodu i wieku.
Go to the top of the page
+Quote Post
Ar2r
post 4.08.2008, 13:09:36
Post #4





Grupa: Zarejestrowani
Postów: 140
Pomógł: 16
Dołączył: 12.06.2002
Skąd: Kielce

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


Jeśli jakieś pola są opcjonalne to sprawdzaj wcześniej czy są wypełnione i buduj zapytanie SQL tylko z dostępnych danych.
Go to the top of the page
+Quote Post
xx88zg
post 4.08.2008, 13:11:15
Post #5





Grupa: Zarejestrowani
Postów: 52
Pomógł: 1
Dołączył: 8.02.2007
Skąd: Zielona Góra

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


no to chyba jest najlepsze rozwiązanie, ale to już wyższa szkoła jazdy - no ale co trzeba próbować smile.gif
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 17:10