8. Termékek rendszerezése, szelekciós funkciók
8.2.3 Termékek szűrése
Akciós termékek
A termékek szűrésével egy bizonyos tulajdonság alapján tudjuk megjelení-teni a könyvek egy részét. Ebben a könyváruházban ezt a funkciót nem vittük túlzásba. A felső menüben található egy menüpont, melynek neve Akciók. Itt csak azok a termékek jelennek meg, amelyek akciós termékek, tehát ezt egyfaj-ta szűrésnek is tekinthetjük.
35. ábra: Akciós termékek
Ez a felület a pages könyvtárban lévő specialPage.php fájlban talál-ható.
1 <div id="contentColumn">
2 <div id="contentMenu">
3 <a href=".">Kezdőlap</a> » Akciók 4 </div>
5 <div id="contentTitle">
6 Akciók 7 </div>
8 <form action="" method="post">
9 Rendezés:
10 <select name="sorting"
onchange="submit()">
11 <option
value="book_title|ASC"<?=($_POST["sorting"]=="bo ok_title|ASC")?' selected="selected"':'';?>>Cím szerint (A - Z)</option>
12 <option
value="book_title|DESC"<?=($_POST["sorting"]=="b
ook_title|DESC")?'
selected="selected"':'';?>>Cím szerint (Z - A)</option>
13 <option
value="book_author|ASC"<?=($_POST["sorting"]=="b ook_author|ASC")?'
selected="selected"':'';?>>Szerző szerint (A - Z)</option>
14 <option
value="book_author|DESC"<?=($_POST["sorting"]=="
book_author|DESC")?'
selected="selected"':'';?>>Szerző szerint (Z - A)</option>
22 generateSpecialBookList($order);
23 ?>
24 </div>
25 </div>
A fenti kódból látható, hogy az akciós termékeket is van lehetőségünk kü-lönböző feltételek alapján rendezni, mint ahogy azt az előző fejezetben leírtuk.
Az is észrevehető, hogy itt is egy külön függvénnyel valósítjuk meg az akciós termékek listázását (22. sor). A rendezés alapesetben a könyv címe szerint, növekvő sorrendben történik (21. sor). A listázásért felelős függvény a function.php fájlban található generateSpecialBookList néven, melynek kódja itt látható:
1 function generateSpecialBookList($sort) { 2 $order = str_replace('|',' ',$sort);
3 $query = mysql_query("SELECT * FROM
".$GLOBALS["bookTable"]." WHERE book_special <>
'' ORDER BY ".$order);
11 print('<span class="bookTitle"><a href="?page=bookDetails&id='.
$result->book_id.'">'.
$result->book_title.'</a></span>');
12 print('<span class="bookTitle2">'.
$result->book_author.'</span>');
13 print($result->book_subtitle);
14 print('<span class="bookPrice">');
15 if ($result->book_special) { 16 print('<del>'.number_format(
$result->book_special * (1 + ($result->book_tax / 100)),0,'',' ').' Ft</del> ');
17 print('<span
class="special">Akciós ár:
'.number_format($result->book_price * (1 + (
$result->book_tax / 100)),0,'',' ').' Ft</span>');
18 } else {
19
print(number_format($result->book_price * (1 + ($result->book_tax / 100)),0,'',' ').' Ft');
20 }
21 print('<button
onclick="window.location.href=\'?page=bookDetail s
&id='.$result->book_id.'\'; return false;">Részletek</button>');
22 print('</p>');
23 print('</form>');
24 print('<div class="clear"></div>');
25 print('</li>');
26 }
27 print('</ul>');
28 } else {
29 print('<p>Nincsenek akciós termé-kek!</p>');
30 } 31 }
A 2. sorban látható, hogy a kapott paraméterrel vezérelhető a termékek rendezése. A | jel határolja el a mezőnevet a rendezés típusától. Alapértelme-zésben a book_title mező alapján, azaz a könyv címe szerint rendezi növek-vőbe a termékeket. Rendezés sorrendje lehet növekvő (ASC) vagy csökkenő (DESC). Ezt az ORDER BY mezőnév után kell kiadnunk. Alapértelmezésben növekvő a rendezés, így ebben az esetben nem kötelező kiírni.
Rendezés az akciós termékeknél
Ha már szó esett a rendezésről, akkor valósítsuk is meg a termékek olda-lán. Első körben az akciós termékeknél alkalmazzuk ezt a lehetőséget. Ehhez módosítsuk a specialPage.php fájlt.
Keressük meg a következő sort a kódban:
1 <div id="contentBox">
Majd illesszük be elé a következő programkódot:
1 <form action="" method="post"> szerint (A - Z)</option>
5 <option
value="book_title|DESC"<?=($_POST["sorting"]=="b ook_title|DESC")?'
selected="selected"':'';?>>Cím szerint (Z - A)</option>
6 <option
value="book_author|ASC"<?=($_POST["sorting"]=="b ook_author|ASC")?'
selected="selected"':'';?>>Szerző szerint (A - Z)</option>
7 <option
value="book_author|DESC"<?=($_POST["sorting"]=="
book_author|DESC")?'
selected="selected"':'';?>>Szerző szerint (Z - A)</option>
Ha megfigyeljük a kódot, akkor további mezőket is felvehetünk a rendezési listába.
Rendezés a keresési találatokban
Ha már elhelyeztük ezt a lehetőséget az akciós termékeknél akkor tegyük be a keresési találatokhoz is.
Módosítsuk a searchPage.php fájl tartalmát, az előzőekhez hasonlóan.
Keressük meg a következő sort a kódban:
1 <div id="contentBox">
Majd illesszük be elé az előző programkódot, amelyben a lista található a rendezésekről.
Rendezés a termékeknél
A termékek listáját se felejtsük ki. Itt is szükségünk van rendezni a kategó-rián belüli könyveket. Ehhez nincs is más dolgunk, mint módosítani a bookListPage.php fájt, úgy, mint ahogy az előző két alkalommal is tettük. Keres-sük meg a következő sort a kódban:
1 <div id="contentBox">
Majd illesszük be elé az előző programkódot, amelyben a lista található a rendezésekről.
8.3 ÖSSZEFOGLALÁS, KÉRDÉSEK
8.3.1 Összefoglalás
Ha jól megfigyeltük, a rendezést egyszer kellett csak megírni, és ugyanúgy felhasználható volt több oldalon is. A kereséssel pedig megkönnyítettük a vevők dolgát, mivel nem kell a kategóriákat végignézniük, hanem elég a könyv vala-melyik adatára rákeresni, és máris egy szűkebb terméklistát jelenítünk meg, ami könnyebben áttekinthető.
8.3.2 Önellenőrző kérdések
– Egy internetes könyváruháznál mely adatokat jelenítjük meg min-denképpen?
– Keresés megvalósításánál melyik mezőkre célszerű a keresést kiter-jeszteni?
– A termékek rendezésénél mely adatokat részesítjük előnyben?
(Feladatok/Egyetlen állomány feltöltése) Feladat: Töltse fel az eddig elkészült programkódot! (Szelekciós funkciók)