Lekcje >> Podstawy PHP
Polimax

Drukarnia w Warszawie realizująca druk wizytówek, plakatów jak również fotoksiążki, fotoobrazy i fotokalendarze - z wysyłką na terenie całego kraju.

Zastosowanie PHP do wyszukiwania danych w MySQL

Jeżeli nie znasz MySQL, to najpierw musisz opanować wiadomości i umiejętności zawarte w Podstawy MySQL. Podczas wykonywania ćwiczeń zwązanych z MySQL utworzyliśmy bazę ksiegarnia_internetowa. Jeżeli nie masz tej bazy, to możesz ją szybko utworzyć korzystając z phpMyAdmin. Musisz wykonać następujące kroki:

  1. Utworzyć nową bazę ksiegarnia_internetowa.
  2. Przy pomocy phpMyAdmin zejestrować użytkownika admin, hasło admin123 mającego status administratora.
  3. Utworzyć tabele bazy ksiegarnia_internetowa. W kodzie tworzącym tabelę ksiazki należy zmienić cena FLOAT(4,2) na cena FLOAT(6,2).
  4. Wypełnić tabele danymi. Kod wypełniający danymi pierwszą z tabel klienci należy uzupełnić o rekordy wstawione w ćwiczeniu poprzednim (pamiętaj aby zamienić średnik kończący trzy doklejane rekordy na przecinek).

Tabela ksiazki w phpMyAdmin powinna wyglądać następująco:

Tabela ksiazki
Rysunek 10_0_0_1. Tabela ksiazki bazy ksiegarnia_internetowa

Każdy skrypt łączący się z bazą danych musi wykonać następujące czynności:

  1. Sprawdzenie poprawności danych wpisanych do formularza przez użytkownika.
  2. Nawiązanie połączenia z odpowiednią bazą.
  3. Wysłanie zapytania.
  4. Otrzymanie wyników zapytania.
  5. Zaprezentowanie użytkownikowi tych wyników.

Wymienione działania omówimy na podstawie prostego skryptu wyszukującego informacje w naszej bazie ksiegarnia_internetowa. Nasz projekt będzie się składał z dwóch plików:

  • szukaj.php - ma zawierać formularz umożliwiający określenie warunków wyszukiwania,
  • wyniki.php - prezentujący wyniki wyszukiwania.

Ćwiczenie 10_0_0_1. Wyszukiwanie danych w bazie MySQL

Utwórz pliki szukaj.php oraz wyniki.php.

Plik szukaj.php:

<!doctype html>
<html>
  <head>
    <title>Wyszukiwanie książek w bazie ksiegarnia_internetowa</title>
    <meta charset="utf-8" />
  </head>
  <body>
    <h1>Wyszukiwanie książek w bazie ksiegarnia_internetowa</h1>
    <form action="wyniki.php" method="post">
      Wyszukaj według:
      <select name="metoda">
       <option value="autor" />Autora
       <option value="tytul" />Tytułu
       <option value="isbn" />ISBN
      </select>
      <br /><br />
      Szukane wyrażenie:
      <input type="text" name="wyrazenie" />
      <input type="submit" name="wyszukaj" />
    </form>
  </body>
</html>

Plik wyniki.php:

<!doctype html>
<html>
  <head>
    <title>Wyniki wyszukiwania książek w bazie ksiegarnia_internetowa</title>
    <meta charset="utf-8" />
  </head>
  <body>
    <h1>Wyniki wyszukiwania książek w bazie ksiegarnia_internetowa</h1>
    <?php
      $metoda = $_POST['metoda'];
      $wyrazenie = $_POST['wyrazenie'];
      $wyrazenie = trim($wyrazenie);
      if (!$metoda || !$wyrazenie)
      {
        echo 'Brak parametrów wyszukiwania, wróć do poprzednej strony i spóbuj ponownie!';
        exit;
      }
      if (!get_magic_quotes_gpc())
      {
        $metoda = addslashes($metoda);
        $wyrazenie = addslashes($wyrazenie);
      }
      @ $db = new mysqli('localhost','admin','admin123','ksiegarnia_internetowa');
      
      if (mysqli_connect_errno())
      {
        echo 'Połączenie z bazą nie powiodło się. Spóbuj ponownie';
        exit;
      }
      $db->query('SET NAMES utf8');
      $db->query('SET CHARACTER_SET utf8_unicode_ci');
      $zapytanie = "select * from ksiazki where ".$metoda. " like '%".$wyrazenie."%'";
      $wynik = $db->query($zapytanie);
      $ile_znaleziono = $wynik->num_rows;
      echo '<p> Liczba znalezionych książek: '.$ile_znaleziono.'</p>';
      for ($i=0;$i<$ile_znaleziono;$i++)
      {
        $wiersz = $wynik->fetch_assoc();
        echo '<p><b>'.($i+1).'. Tytuł: '.stripslashes($wiersz['tytul']).'</b><br />';
        echo 'Autor: '.stripslashes($wiersz['autor']).'<br />';
        echo 'ISBN: '.stripslashes($wiersz['isbn']).'<br />';
        echo 'Cena: '.stripslashes($wiersz['cena']).'</p><br />';
      }
      $wynik->free();
      $db->close();
    ?> 
  </body>
</html>

Formularz powinien wyglądać następująco:

Formularz wyszukiwania
Rysunek 10_0_0_2. Formularz wyszukiwania

Jeżeli wpiszemy za szukane wyrażenie np. Rafał, to otrzymamy następujące wyniki wyszukiwania:

Wyniki wyszukiwania
Rysunek 10_0_0_3. Wyniki wyszukiwania

Podczas kolejnych zajęć będziemy analizować ten prosty projekt.