![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Przyjaciele php.pl Postów: 215 Pomógł: 0 Dołączył: 28.10.2003 Skąd: - Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Stanąłem przed zadaniem napisania „filtru” danych wyciąganych za bazy (z jednej tabeli) Formularz html: [xml:1:ce3217184d] <select name="metoda" class="mainText" id="metoda"> <option value="none">-- wybierz --</option> <option value="kolumna1"> kolumna1</option> <option value=" kolumna2"> kolumna2</option> . . . <option value=" kolumnaN"> kolumnaN</option> [/xml:1:ce3217184d] oraz [xml:1:ce3217184d] <input name="wyrazenie" type="text" class="textField" id="wyrazenie" size="25">[/xml:1:ce3217184d] Wybieramy metodę szukania (odpowiednik kolumny w bazie) oraz wyrażenie. [sql:1:ce3217184d] SELECT * FROM table_main WHERE ".$_POST['metoda']." LIKE '%".$_POST['wyrazenie']."%'[/sql:1:ce3217184d] Problem: Powielamy kod html 3 razy (docelowo N razy) i otrzymujemy cos w rodzaju prostego filtru. Problem sprowadza się do napisania możliwie efektywnego kodu php. Najprostsza metoda to rozpisanie tego na wszystkie możliwe warunki, jednak przy większej ilości „metod” i „wyrażeń” stanowi to problem. Dla 1 [php:1:ce3217184d]<?php if($_POST['metoda'] && $_POST['wyrazenie'] ) { $results = $db->GetAll("SELECT * FROM hotels_main WHERE ".$_POST['metoda']." LIKE '%".$_POST['wyrazenie']."%'"); } ?>[/php:1:ce3217184d] Dla 2 [php:1:ce3217184d]<?php if($_POST['metoda'] && $_POST['wyrazenie'] && $_POST['metoda1'] && $_POST['wyrazenie1']) { $results = $db->GetAll("SELECT * FROM table_main WHERE ".$_POST['metoda']." LIKE '%".$_POST['wyrazenie']."%' AND ".$_POST['metoda1']." LIKE '%".$_POST['wyrazenie1']."%'"); } ?>[/php:1:ce3217184d] itd. Bardzo proszę o pomoc w rozwiązaniu tego problemu. Z góry dziękuję. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 215 Pomógł: 0 Dołączył: 28.10.2003 Skąd: - Ostrzeżenie: (0%) ![]() ![]() |
Kod został napisany przez Seth`a za co bardzo mu dziękuję.
A oto rozwiązanie problemu: [php:1:037b81458c]<?php $i = 0; $j = 0; $warunek = ""; foreach($_POST['metoda'] as $tmp) { if(!empty($_POST['metoda'][$i]) && !empty($_POST['wyrazenie'][$i])) { if($j != 0) { $warunek .= "AND "; } $warunek .= " ".$_POST['metoda'][$i]." LIKE '%".$_POST['wyrazenie'][$i]."%' "; $j++; } $i++; } $results = $db->GetAll("SELECT * FROM main WHERE ".$warunek); ?>[/php:1:037b81458c] enjoy |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 10.07.2025 - 10:05 |