546 PHP i MySQL dla każdego
<tr>
<td>Autor:</td>
<td>
<input size='25' type=‘text' name='autor' value="> </td>
<td>Tytuł:</td>
<input size='25' type='text' name=’tytuł' value="> </td>
<td align='center'>
<input type='submit' value='Szukaj'>
</td>
</tr>
<tr>
<td colspan-'5' align='center'><hr/x/td>
</tr>
</table>
Obowiązuje założenie, że wyszukiwanie danych powinno być jak najbardziej elastyczne. Będzie więc mogło się odbywać tylko ze względu na autora, tylko ze względu na tytuł lub zarówno ze względu na autora, jak i na tytuł. Decyzję o tym podejmie klient, wypełniając, bądź nie, pola autor i tytuł formularza wyszukiwania. Dane z tych pól będą przekazywane w postaci argumentów o nazwach autor i tytuł funkcji search. Klient będzie mógł podawać zarówno pełny tytuł, pełną nazwę autora, jak i dowolne fragmenty tych nazw. Przykładowo poszukując książek, których autorem jest Orson Scott Card, będzie można poszukiwać jedynie frazy ' card', jak również ' orson', ' scott1, czy nawet zupełnie abstrakcyjnej 'on sc'. Przykładowy wynik wyszukiwania został zaprezentowany na rysunku 21.5.
Wymienione zadanie przeprowadza funkcja search, której kod został zaprezentowany na listingu 21.6. Pierwszą czynnością jest nawiązanie połączenia z bazą danych. Gdyby tego połączenia nie udało się nawiązać, funkcja kończy działanie. Jeśli połączenie uda się nawiązać, jest sprawdzane, czy przynajmniej jeden z przekazanych funkcji argumentów ma wartość różną od pustego ciągu znaków. Gdyby oba argumenty zawierały puste ciągi znaków — co oznaczałoby, że klient nie wypełnił żadnego z pól formularza, ale kliknął przycisk Szukaj — funkcja również kończy działanie.
Listing 21.6. Kodfunkcji search_
function search($autor. Stytul)
i f(!makeDBConnect i on()){ return false;
if($autor — " && Stytul ■—"•){ return false:
else if($autor — "){
Swhere = "LOCATEC'Stytul'. 'tytuł') o 0