Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]Sortowanie wyników
xx88zg
post
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
 
Start new topic
Odpowiedzi (1 - 4)
webasek
post
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
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
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
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 Aktualny czas: 21.08.2025 - 13:23