Witam, staram się zrobić filtrowanie wyników z bazy. Spoko, udało się, ale jest problem z czytelnością kodu.
Ogólnie wygląda to tak:
-wyszukiwarka,
-kategorie i podkategorie,
-stronnicowanie,
-filtrowanie ogłoszeń(typ: sprzedaj, kup, itp.)
Teraz mam problem, jak patrzę na kod, to odechciewa mi się cokolwiek przy nim robić, a muszę dodać podkategorie podkategorii( kategoria -> podkategoria -> jeszcze jedna podkategoria ). Przy takim czymś, nazwijmy to "kodem" musiałbym dodać ok. 5 if'ów.
Jak widać korzystam ze smartów. Oto plik:
<?php
require('./libs/Smarty.class.php');
$smarty = new Smarty;
require('./inc/config.php');
$pg = $_GET['pg'];
$katg = $_GET['kat'];
$pod = $_GET['pod'];
$filter = $_GET['filter'];
$str = $_GET['str'];
$search = $_GET['search'];
$sercz = $_POST['search'];
$get_f = $_GET['fraza'];
if(!$search == 'go') {
$zapytanie=mysql_query("SELECT * FROM kategories WHERE parent_id = $pg"); $kategories[] = $b;
}
$smarty -> assign('kategories', $kategories);
}
if(!$str) {
$str = 1;
$strona = 0;
} else {
$strona = $str-1;
}
$ilosc_strona = 2;
$start = $strona*$ilosc_strona;
$koniec = $ilosc_strona;
if ($search == 'go' OR $_GET['fraza']) {
if(empty($_GET['fraza']) == TRUE) { $fraza = $sercz;
} elseif(empty($_GET['fraza']) == FALSE) { $fraza = $_GET['fraza'];
}
if($filter) {
$SQL = mysql_query("SELECT count(*) FROM ogl WHERE tytul LIKE '%$fraza%' AND typ = '$filter' AND akt = 1;"); $zap = mysql_query("SELECT * FROM ogl WHERE tytul LIKE '%$fraza%' AND `typ` = '$filter' AND akt = 1 ORDER BY `data` DESC LIMIT $start, $koniec;"); } else {
$SQL = mysql_query("SELECT count(*) FROM ogl WHERE tytul LIKE '%$fraza%' AND akt = 1;"); $zap = mysql_query("SELECT * FROM ogl WHERE tytul LIKE '%$fraza%' AND akt = 1 ORDER BY `data` DESC LIMIT $start, $koniec;"); }
$ilosc_stron = ceil($ilosc/$ilosc_strona); $tytul = 'Wyniki Wyszukiwania';
} elseif(!$pod AND !$filter) {
$tytul = $kategoria['name'];
$SQL = mysql_query("SELECT COUNT(*) FROM ogl WHERE kat = $pg AND akt = 1"); $zap = mysql_query("SELECT * FROM ogl WHERE kat = $pg AND akt = 1 ORDER BY `data` DESC LIMIT $start, $koniec"); $ilosc_stron = ceil($ilosc/$ilosc_strona); } elseif (empty($pod) == FALSE AND
!$filter) { $tytul = ''.$kategoria['name'].' > '.$podkategoria['name'].'';
$SQL = mysql_query("SELECT COUNT(*) FROM ogl WHERE kat = $pg AND podkat = $pod AND akt = 1"); $zap=mysql_query("SELECT * FROM ogl WHERE kat = $pg AND podkat = $pod AND akt = 1 ORDER BY `data` DESC LIMIT $start, $koniec"); $ilosc_stron = ceil($ilosc/$ilosc_strona); } elseif (empty($filter) == FALSE AND
empty($pod) == FALSE) { $tytul = ''.$kategoria['name'].' > '.$podkategoria['name'].'';
$SQL = mysql_query("SELECT COUNT(*) FROM `ogl` WHERE `kat` = '$pg' AND `typ` = '$filter' AND `podkat` = '$pod' AND `akt` = '1'"); $zap = mysql_query("SELECT * FROM `ogl` WHERE `kat` = '$pg' AND `typ` = '$filter' AND `podkat` = '$pod' AND `akt` = '1' ORDER BY `data` DESC LIMIT $start, $koniec"); $ilosc_stron = ceil($ilosc/$ilosc_strona); } elseif (empty($filter) == FALSE) { $tytul = $kategoria['name'];
$SQL = mysql_query("SELECT COUNT(*) FROM `ogl` WHERE `kat` = '$pg' AND `typ` = '$filter' AND `akt` = '1'"); $zap = mysql_query("SELECT * FROM `ogl` WHERE `kat` = '$pg' AND `typ` = '$filter' AND `akt` = '1' ORDER BY `data` DESC LIMIT $start, $koniec"); $ilosc_stron = ceil($ilosc/$ilosc_strona);
} if($ilosc == 0) {
$smarty->assign('error','<div class="error">Brak pasujących ogłoszeń.</div>');
}
for ( $i=0; $i<$ile; $i++ ) {
$end_time = $wiersz['data'] - time(); $wiersz['czas'] = time_difference($end_time);
$ogl[$i] = $wiersz;
}
$smarty -> assign('ogl', $ogl);
$smarty->assign('czas', $wiersz['czas']);
$smarty->assign('ilosc_stron', $ilosc_stron);
$smarty->assign('czas', $czas['data']);
$smarty->assign('debug', '{debug: true}');
$smarty->assign('tytul',$tytul);
$smarty->assign('filter', $filter);
$smarty->assign('pode', $pod);
$smarty->assign('str', $str);
$smarty->assign('pg',$pg);
$smarty->assign('fraza',$fraza);
$smarty->assign('search',$search);
$smarty->assign('kate', $kategoria['name']);
$smarty->assign('pod', $podkategoria['name']);
$smarty->assign('kateid', $kategoria['id']);
$smarty->assign('podid', $podkategoria['id']);
$smarty->display('show.tpl');
?>