![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 22.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
muszę zrobić zaawansowaną wyszukiwarkę na pewną stronę. Mianowicie zbudowałem formularz, który wysyła dane metoą GET do pliku: search.php Plik search php wygląda następująco: Kod <?php $firma=$_GET['firma']; $nazwa_odzywki=$_GET['nazwa']; $w_opisie=$_GET['w_opisie']; $cena_od=$_GET['cena_od']; $cena_do=$_GET['cena_do']; $sortowanie=$_GET['sortowanie']; $kategoria=$_GET['kategoria']; $poloczenie=mysql_connect("baza","nazwa","hasło"); mysql_select_db("nazwabazy"); if($firma == "" AND $nazwa_odzywki == "" AND $w_opisie == "" AND $cena_od == "" AND $cena_do == "") { header("Location: strona główna"); exit; } else { } ?> Jeśli nic nie wpiszemy do pól to ma przejsć do pełej listy produktów, czyli do strony głónej. Natomiast jeśli wpiszemy jakieś wartości w poszczególne pola ma tworzyć odpowiednie zapytania do MYSQL, które mają być przekazane do index.php za pomocą parametru i ma wyświetlić odpowiednią okrojoną listę produktów pasującą do kryteriów. NIe wiem jak rozwiązać, ponieważ jak bm chciał przejść wszystkie możliwośći (firma wpisana reszta nie, firma i nazwa wspiana reszta nie itd) To strasznie dużo ifów musiałbym napisać. Czy jest jakiś szybki i jasny sposób jak można by to zrobić i jak przekazać parametr do indexu aby wyswietlal odpowiednie wartosci. Z gory dziekuje za pomoc. POzdrawiam STrefamocy |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 0 Dołączył: 4.08.2005 Ostrzeżenie: (0%) ![]() ![]() |
Przecież nie musisz sprawdzać wszystkich kombinacji. Po prostu zób tak, że jeśli jakaś zmienna nie jest pusta to dodajesz ją do warunku przy wyszukiwaniu. Np.
Jeśli masz tych zmiennych naprawde duzo i nie kierujesz innych parametrów do skryptu przez POST to możesz zrobić to w pętli używając aliasu na zmienną. Wtedy nie bedzie ifów ...i pamiętaj o filtrowaniu zmiennych. Ten post edytował My4tic 22.10.2006, 16:38:15 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 22.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Dizekuje super zadziałało, ale mam następny problem.Wyszukiwarka działa poprawnie ale trochę namieszałem z kategoriami.
Otóż w formularzu generuję automatycznie z bazy kategorię następującym kodem: Kod Kategoria: <br/> <? $i=1; while($a=mysql_fetch_array($wynik_zapytania)) { $id=$a["ID_Kategorii"]; $kategorie=$a["Nazwa_Kategorii"]; ?> <input type='checkbox' name='kategoria<?echo $i++;?>' value='<?echo $id;?>' checked='checked'/><?echo $kategorie; echo "<br/> "; } ?> I przechwytuje te dane w pliku gdzie pokazuje rezultat szukania w następujący sposób: Kod $i=1; if(isset($_GET["kategoria1"])) $tabpom[$i]=1; else $tabpom[$i]=0;$i++; if(isset($_GET["kategoria2"])) $tabpom[$i]=1; else $tabpom[$i]=0;$i++; if(isset($_GET["kategoria3"])) $tabpom[$i]=1; else $tabpom[$i]=0;$i++; if(isset($_GET["kategoria4"])) $tabpom[$i]=1; else $tabpom[$i]=0;$i++; if(isset($_GET["kategoria5"])) $tabpom[$i]=1; else $tabpom[$i]=0;$i++; //pobranie z bazy ilości kategorii unset($_GET["kategoria1"]); unset($_GET["kategoria2"]); unset($_GET["kategoria3"]); unset($_GET["kategoria4"]); unset($_GET["kategoria5"]); $pytpom="SELECT COUNT(ID_Kategorii) as ILE FROM `Kategorie`"; $wynikpom=mysql_query($pytpom); while($ttmp=mysql_fetch_array($wynikpom)) $ile=$ttmp["ILE"]; //licznik kategorii $ilekat=0; for($i=1;$i<=$ile;$i++) {if($tabpom[$i]==1) $ilekat++;} //przypadek kiedy wybrano jedna kategorie if($ilekat==1) { $i=1; while($tabpom[$i]==0 && $i<=$ile) $i++; $temp=$i;$DODATKOWO.=" AND `kategoria`=$temp";} //przypadek 2 i wiecejj kategorii else {$i=1; while($tabpom[$i]==0 && $i<=$ile) $i++; //echo $i; $temp=$i;$DODATKOWO.=" AND (`kategoria`=$temp"; $i++; while($i<=$ile) {if($tabpom[$i]==1) {$temp=$i; $DODATKOWO.=" OR `kategoria`=$temp";} $i++;} $DODATKOWO.=')';} Jak zauważyliście jeśli dodam do bazy kategorię to muszę dopisać dwie linijki kodu. Musze to tak przerobić aby również automatycznie się to robiło ale nie wiem jak się za to zabrać. Prosze o pomoc. Pozdrawiam |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 13:26 |