Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Filtr ... wyszukiwanie w jednej tabeli ...
Forum PHP.pl > Forum > PHP
Luke
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ę.
Luke
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.