<?
class katalog {
/**
* Poł?czenie do bazy.
*
* @var object
*/
private $_connection;
/**
* Ile rekordów ma być wy?wietlanych na stronie.
*
* @var int
*/
private $_rekordowNaStronie = 3;
/**
* Aktualnie wybrana strona wyników wyszukiwania.
*
* @var int
*/
private $_strona;
/**
* Przechowuje zapytanie pobieraj?ce okre?lone dane bez klauzuli LIMIT (wszystkie rekordy).
*
* @var string
*/
private $_zapytanieBezLimit;
public function __construct() {
$link = mysql_connect(dbHost
, dbLogin
, dbPassword
) or
die("Nie udało się poł?czyć z baz? danych."); $this->_connection = $link;
if(!empty($_GET['strona'])) $this->_strona = (int)$_GET['strona'];
else
$this->_strona = 0;
}
/**
* Buduje SQL z zapytaniem do bazy. Uwzględnia wszystkie warunki oraz wybran? stronę.
*
* @return string
*/
public function zbudujZapytanie() {
$query = "SELECT k.tytul, a.nazwisko, r.nazwa, k.cena, k.id ";
$query=$query. " FROM ksiazki k, rodzaje_ksiazek r, autorzy a ";
$query=$query. " WHERE k.id_autora=a.id AND k.id_rodzaju=r.id ";
// dodawanie warunków z formularza wyszukiwania
if(!empty($_GET['tytul'])) $query .= "AND k.tytul LIKE '%$_GET[tytul]%' ";
if(!empty($_GET['nazwisko'])) $query .= "AND a.nazwisko LIKE '%$_GET[nazwisko]%' ";
if(!empty($_GET['imie'])) $query .= "AND a.imie LIKE '%$_GET[imie]%' ";
if(!empty($_GET['rodzaj_ksiazki'])) $query .= "AND r.nazwa = '$_GET[rodzaj_ksiazki]' ";
if(!empty($_GET['cena_od'])) { $cena_od = (int)$_GET['cena_od'];
$query .= "AND k.cena >= $cena_od ";
}
if(!empty($_GET['cena_do'])) { $cena_do = (int)$_GET['cena_do'];
$query .= "AND k.cena <= $cena_do ";
}
$this->_zapytanieBezLimit = $query;
// dodanie warunkow sortowania
if(!empty($_GET['sortuj_po'])) { if($_GET['sortuj_po'] == 'tytul')
$query .= " ORDER BY k.tytul";
if($_GET['sortuj_po'] == 'nazwisko')
$query .= " ORDER BY a.nazwisko";
if($_GET['sortuj_po'] == 'cena')
$query .= " ORDER BY k.cena";
if($_GET['sortuj_po'] == 'nazwa')
$query .= " ORDER BY r.nazwa";
if(!empty($_GET['sortuj_kierunek'])) { if($_GET['sortuj_kierunek'] == 'desc')
$query .= " DESC";
if($_GET['sortuj_kierunek'] == 'asc')
$query .= " ASC";
}
}
$query .= " LIMIT ".($this->_strona*$this->_rekordowNaStronie).", ".$this->_rekordowNaStronie;
return $query;
}
/**
* Zwraca HTML z linkami do wszystkich stron wyników. Zachowuje informacje o parametrach wyszukiwania.
*
* @return string
*/
public function zwrocLinkiStron() {
if($result) {
$liczbaStron = ceil($liczbaRekordow / $this->_rekordowNaStronie
); $queryString = str_replace("&strona=".$_GET['strona'], '', $_SERVER['QUERY_STRING']); $html = '';
for($i=0; $i<$liczbaStron; $i++)
$html .= "<a href='index.php?$queryString&strona=$i'>".($i+1)."</a>";
return $html;
}
return '';
}
/**
* Zwraca tabelę HTML z danymi.
*
* @param string $query Zapytanie, które nazleży wykonać
* @return string
*/
public function zwrocTabele($query) {
$tabela = '';
$i = $this->_strona*$this->_rekordowNaStronie+1;
if($i%2 == 0)
$tabela .= "<tr class='kolorowy'>";
else
$tabela .= "<tr>";
$tabela .= "<td align='center'>$i</td>";
$tabela .= "<td align='center'>".$row['tytul']."</td>";
$tabela .= "<td align='center'>".$row['nazwisko']."</td>";
$tabela .= "<td align='center'>".$row['nazwa']."</td>";
$tabela .= "<td align='center'>".$row['cena']."</td>";
$tabela .= "<td align='center'><a href='index.php?dzial=detale&id=".$row['id']."'>szczegóły</a></td>";
$tabela .= "</tr>";
$i++;
}
$zapytanie .="<th><a href='index.php?dzial=katalog&tytul=$tytul&imie=$imie&nazwisko=$nazwisko&rodzaj_ksiazki=$nazwa&cena_od=$cena_od&cena_do=$cena_do&sortuj_po='";
$zapytanie2 .="&sortuj_kierunek=";
$zapytanie3 .="&strona=$strona>";
$zapytanie4 .=" </a></th>";
$tabela.="<tr class='kolorowy' style='border:0';>";
//echo $tabela;
//$tabela .="<tr>";
// $tabela .= "<td>";
//$tabela .= $zapytanie."tytul".zapytanie2."asc".zapytanie3." + //".zapytanie4."</td>";
//$tabela.="</tr>";
$nazwisko=$_GET['strona'];
$imie=$_GET['imie'];
$tytul=$_GET['tytul'];
$nazwa=$_GET['rodzaj_ksiazki'];
$cena_od=$_GET['cena_od'];
$cena_do=$_GET['cena_do'];
$strona=$_GET['strona'];
$tabela.="<th/>";
$tabela .= "<th><a href='index.php?dzial=katalog&tytul=
$tytul&imie=$imie&nazwisko=$nazwisko&rodzaj_ksiazki=$nazwa&cena_od=$cena_od&cena_do=$cena_do&sortuj_po=tytul&sortuj_kierunek=asc&strona=$strona'> + </a><a href='index.php?dzial=katalog&tytul=
$tytul&imie=$imie&nazwisko=$nazwisko&rodzaj_ksiazki=$nazwa&cena_od=$cena_od&cena_do=$cena_do&sortuj_po=tytul&sortuj_kierunek=desc&strona=$strona'> - </a></th>";
$tabela .= "<th><a href='index.php?dzial=katalog&tytul=
$tytul&imie=$imie&nazwisko=$nazwisko&rodzaj_ksiazki=$nazwa&cena_od=$cena_od&cena_do=$cena_do&sortuj_po=nazwisko&sortuj_kierunek=asc&strona=$strona'> + </a><a href='index.php?dzial=katalog&tytul=
$tytul&imie=$imie&nazwisko=$nazwisko&rodzaj_ksiazki=$nazwa&cena_od=$cena_od&cena_do=$cena_do&sortuj_po=nazwisko&sortuj_kierunek=desc&strona=$strona'> - </a></th>";
$tabela .= "<th><a href='index.php?dzial=katalog&tytul=
$tytul&imie=$imie&nazwisko=$nazwisko&rodzaj_ksiazki=$nazwa&cena_od=$cena_od&cena_do=$cena_do&sortuj_po=nazwa&sortuj_kierunek=asc&strona=$strona'> + </a><a href='index.php?dzial=katalog&tytul=
$tytul&imie=$imie&nazwisko=$nazwisko&rodzaj_ksiazki=$nazwa&cena_od=$cena_od&cena_do=$cena_do&sortuj_po=nazwa&sortuj_kierunek=desc&strona=$strona'> - </a></th>";
$tabela .= "<th><a href='index.php?dzial=katalog&tytul=
$tytul&imie=$imie&nazwisko=$nazwisko&rodzaj_ksiazki=$nazwa&cena_od=$cena_od&cena_do=$cena_do&sortuj_po=cena&sortuj_kierunek=asc&strona=$strona'> + </a><a href='index.php?dzial=katalog&tytul=
$tytul&imie=$imie&nazwisko=$nazwisko&rodzaj_ksiazki=$nazwa&cena_od=$cena_od&cena_do=$cena_do&sortuj_po=cena&sortuj_kierunek=desc&strona=$strona'> - </a></th>";
$tabela.="</tr>";
return $tabela;
}
}
?>
<table class="tabela" cellspacing="0" style="width: 90%; margin: 10px;">
<tr>
<th>Lp</th>
<th>Tytuł</th>
<th>Autor</th>
<th>Rodzaj</th>
<th>Cena</th>
<th> </th>
</tr>
<?
$katalog = new katalog();
$query = $katalog->zbudujZapytanie();
echo $katalog->zwrocTabele($query);
?>
<tfoot>
<tr>
<td colspan="6">
<?
echo $katalog->zwrocLinkiStron();
?>
</td>
</tr>
</tfoot>
</table>