Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 27.05.2009 Ostrzeżenie: (0%)
|
Witam.
Z góry proszę o wyrozumiałość bo PHP i SQL zgłębiam aż o 3 dni (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Mam następującą bazę:
oraz skrypt php wyświetlający i sortujący dane z tej bazy:
Problem polega na tym, że zapytanie sql sortujące dane pobiera dane ze zmiennych, które z kolei przekazane są z formularza z list wyboru i pola tekstowego niezależnie od tego czy one tam są czy nie (czy w polu tekstowym jest coś wpisane czy nie oraz czy wybrana jest jakaś pozycja z listy. Zapytanie sql jest złożone przy użyciu operatorów AND. Sądziłem, ze w momencie kiedy dla danej kolumny nie będzie wybrana, żadna wartość, a nie ustawie żadnej wartości domyślnej przy <option value=> (a więc zmienna domyślnie pozostaje pusta), zapytanie pobierze wszystkie rekordy, a okazuje się, ze zapytanie szuka pustych pól w danej kolumnie, a przez użycie and, wystarczy jedna pusta zmienna, żeby nie wyświetliło nic. Moge zmienić domyślną wartość pola formularza (a więc zmiennej przekazanej do selct'a) na dowolną wartość właśnie przy options value, ale czy istnieje jakakolwiek wartość, która posłuży za wzorzec odpowiadający dowolnej wartości?? Krótko mówiąc, jaką wartość należy nadać tej zmiennej, żeby select wybrał każdy rekord?? Jeśli nie istnieje taki symbol to jak inaczej rozwiązać sprawę prawidłowego wyszukiwania danych w powyższym skrypcie?? Może jakiś zaawansowany if?? a może zapytanie powinno być inaczej skonstruowane?? Wiem, że mógłbym użyć symboli wieloznacznych jak w przypadku zmiennej fraza, ale wtedy np. kiedy podam wybiorę cyfrę 1 wyświetli rekordy od id 1, 11-19. i wszystkie zawierające gdziekolwiek jedynkę. Bardzo proszę o pomoc. Musze oddać działający projekt na zaliczenie przedmiotu za 1,5tyg, a to tylko jego część i utknąłem na teym sortowaniu danych. Z góry dziękuje. Czekam... |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 27.05.2009 Ostrzeżenie: (0%)
|
No dobrze. Poczytałem o eskejpowaniu i o injection...
Tylko, że mi nie chodzi zbytnio o bezpieczeństwo... Nie w tym wypadku. Po pierwsze projekt nigdy nie ujrzy światła dziennego. Po drugie to tylko na zaliczenie przedmiotu. Pisze po raz kolejny ponieważ zbudowałem coś takiego:
I jedyny z tego efekt przy próbie wyświetlania danych to "błąd w pytaniu" (IMG:http://forum.php.pl/style_emoticons/default/sciana.gif) Sprawdziłem, czy prawidłowo przypisało wszystko do zmiennej $where - jest OK. Jak wyświetlić zmienną $where widać ładne zapytanie (a właściwie część zapytania) typu WHERE (id_temat LIKE 'wartość zmiennej') AND (id_przedmiot LIKE 'wartosc zmiennej 2') ... itd Jeśli wyszstkie zmienne są puste wartość zmiennej $where wygląda tak: WHERE (temat LIKE "%%") Wygląda na to, ze sama konstrukcja jest błedna. Co zrobiłem nie tak?? Ten post edytował DK.log 29.05.2009, 19:27:16 |
|
|
|
DK.log zmienne php a symbole wieloznaczne w zapytaniu sql 27.05.2009, 21:38:30
dr_bonzo Zbuduj sobie cos w postaci:
[PHP] pobierz, plaint... 27.05.2009, 22:16:57
DK.log Dobry pomysł.
Jak rozumiem składnia $zmienna... 28.05.2009, 23:09:45
erix CytatJak rozumiem składnia $zmienna .= cośtam... 29.05.2009, 11:24:13
Marr wiesz co, na prawdę rzuciłem tylko okiem przez prz... 29.05.2009, 20:15:02
DK.log Próbowałem, tak
[PHP] pobierz, plaintext <?php... 29.05.2009, 21:30:36 
erix Cytat(DK.log @ 29.05.2009, 22:30:36 )... 29.05.2009, 21:35:35
DK.log Zapytań jest tyle ile warunków, a więc 26, ale zap... 3.06.2009, 16:44:15 ![]() ![]() |
|
Aktualny czas: 28.12.2025 - 20:57 |