Operacje na bazie danych

Odczyt z bazy danych

Wyświetlanie danych w skrypcie realizujemy za pomocą funkcji mysql_query () oraz zapytania SQL SELECT.

Składnia polecenia mysql_query oraz zapytania  SELECT :

$query=”SELECT * FROM `klienci`”;

$result = mysql_query($query);

if (!$result) {

die(„Błedne zapytanie”);

}

$num = mysql_num_rows($result);

Zadajemy zapytanie do bazy danych „SELECT * FROM `klienci`” które wyświetla wszystkie rekordy tabeli klienci. Następnie zliczamy ilość wyświetlonych rekordów, pomoże nam to w dynamicznym wyświetleniu pozyskanych rekordów w tabeli.

Korzystając z funkcji warunkowej for możemy dynamicznie tworzyć tabelę w której wyświetlamy dane. Wraz ze wzrostem liczby klientów, będą oni automatycznie dodawani do tabeli wyników.

Składnia funkcji warunkowej for:

for ($i = 0; $i < $num; $i++) {

$f9  = mysql_result($result,$i,”id_klienta”);

$f1  = mysql_result($result,$i,”nazwisko”);

$f2  = mysql_result($result,$i,”imie”);

$f3  = mysql_result($result,$i,”pesel”);

$f4  = mysql_result($result,$i,”miasto”);

$f5  = mysql_result($result,$i,”ulica”);

$f6  = mysql_result($result,$i,”kod_pocztowy”);

$f7  = mysql_result($result,$i,”telefon”);

$f8  = mysql_result($result,$i,”Komentarz”);

Funkcja będzie pobierała wartości aż ich liczba będzie odpowiadać wartości w zmiennej $num, następnie wszystkie pobrane dane zostaną umieszczone w tabeli.

Usuwanie rekordów z bazy danych

Usuwanie rekordów z bazy danych jest realizowane przez polecenie DELETE. Zostało to zrealizowane za pomocą przycisku X, który poprzez formularz przesyła id klienta który ma być usunięty do skryptu.

Składnia formularza DELETE:

<form role=”form” action=”delete_klient.php” method=”post”>

<input type=”hidden” name=”nr_klient” value=”<?php echo $f9;  ?>”>

<button type=”submit” ><img src=”src/edit_delete.png” /></button>

</form>

Pod przyciskiem została przypisana wartość id klienta z parametrem type o wartości hidden. Polecenie to tworzy ukryte pole formularza, nie jest ono widoczne dla użytkownika.

Po stronie serwera po odebraniu identyfikatora zostaje wykonany skrypt.

Składania skryptu usuwania rekordów:

$f9  = $_POST[‚nr_klient’];

$sql=mysql_query(„DELETE FROM klienci WHERE id_klienta=’$f9′”);

if ($sql) {

echo ‚<p>Rekord został usunęty z bazy</p>’;

header(‚Refresh: 1; url= ./work-order-show.php’);

}

else {

echo mysql_error(); echo ‚<p>Błąd! Spróbuj ponownie</p>’;

}

Do zmiennej $f9 zostaje pobrany numer klienta który ma zostać usunięty. Do zapytania SQL zostaje dodany warunek odnoszący się do id usuwanego klienta (WHERE id_klienta=’$f9′). Następnie sprawdzana zostaje poprawność wykonania zapytania jeżeli zwrócona zostanie wartość TRUE, użytkownik zostanie przekierowany do widoku wszystkich klientów.

 Zmiana rekordów w bazie danych

Często zdarza się, że potrzebujemy zmienić dane w naszym systemie. Zmienił się numer telefonu klienta czy też cena samochodu. W takim przypadku musimy się posłużyć poleceniem UPDATE.

Zanim przejdziemy do aktualizowania bazy danych musimy pobrać istniejące dane które chcemy zmienić a następnie wczytać do formularza w którym dokonamy edycji. Przy pomocy zapytania SELECT wybieramy wszystkie rekordy z id klienta którego będziemy edytować.

Składnia polecenia SELECT:

SELECT * FROM  `klienci` WHERE id_klienta = ‚$f9’

Wynik zapytania zapisujemy do zmiennej $r w tablicy przy użyciu funkcji mysql_fetch_assoc.

$r = mysql_fetch_assoc($result);

Tak przygotowane dane muszą zostać umieszczone w formularzu. Jako, że formularz jest składnią języka HTML a potrzebujemy używać funkcji języka PHP, musimy wydrukować formularz za pomocą polecenia echo. Tak przygotowany formularz umożliwi nam korzystanie z funkcji PHP.

Formularz zmiany danych:

echo ‚<form action=”up_klient.php” method=”post”>

<input type=”hidden” name=”id_klienta” value=”‚.$f9.'” />

<label> Imię</label><br />

<input type=”text” name=”imie” value=”‚.$r[‚imie’].'” /><br />

<label> Nazwisko</label><br />

<input type=”text” name=”nazwisko”           value=”‚.$r[‚nazwisko’].'” /><br />

<label> Pesel</label><br />

<input type=”text” name=”pesel” value=”‚.$r[‚pesel’].'” /><br />

<label> Miasto</label><br />

<input type=”text” name=”miasto” value=”‚.$r[‚miasto’].'” /><br />

<label> Ulica</label><br />

<input type=”text” name=”ulica” value=”‚.$r[‚ulica’].'” /><br />

<label> Kod pocztowy</label><br />

<input type=”text” name=”kod_pocztowy” value=”‚.$r[‚kod_pocztowy’].'” /><br />

<label> Telefon</label><br />

<input type=”text” name=”telefon” value=”‚.$r[‚telefon’].'” /><br />

<label> Komentarz</label><br />

<input type=”text” name=”komentarz” value=”‚.$r[‚komentarz’].'” /><br />

<input type=”submit” value=”Popraw” />

</form>’;

W tak przygotowanym formularzu dane pobrane z bazy danych zostaną wczytane do pól tekstowych i będą gotowe do edycji. Dane mogą być dowolnie edytowane przez użytkownika, lecz id klienta nie zostało udostępnione do edycji ponieważ jest to wartość generowana automatycznie przy dodawaniu klienta do bazy. Pozostawienie tego pola do edycji w późniejszym czasie mogło by powodować nieporządek w bazie danych oraz pozostawianie nie używanych identyfikatorów czy też użytkownik miał by problem ze znalezieniem wolnego identyfikatora. Po zmianie interesujących nas danych przekazywane są one dalej do skryptu który uaktualni naszą bazę danych.

Skrypt aktualizujący bazę danych:

$var1  = $_POST[‚id_klienta’];

$var2  = $_POST[‚nazwisko’];

$var3  = $_POST[‚imie’];

$var4  = $_POST[‚pesel’];

$var5  = $_POST[‚miasto’];

$var6  = $_POST[‚ulica’];

$var7  = $_POST[‚kod_pocztowy’];

$var8  = $_POST[‚telefon’];

$var9  = $_POST[‚komentarz’];

$sql=mysql_query(„UPDATE klienci SET`nazwisko`=’$var2′, `imie`=’$var3′, `pesel`=’$var4′, `miasto`=’$var5′, `ulica`=’$var6′, `kod_pocztowy`=’$var7′, `telefon`=’$var8′, `komentarz`=’$var9′ WHERE id_klienta=’$var1′”);

Przesłane dane z formularza są pobierane za pomocą metody POST, zapisywane do zmiennej a następnie wstawiane do polecenia SQL UPDATE. Polecenie to zmienia dotychczasowe wartości określonych kolumn danej tabeli na nowe, podane wartości. Na koniec sprawdzamy poprawności zapisu do bazy danych.

SQL – Złączanie tabel

sql-410-x-200

Złączanie jest to operacja która umożliwia wyszukiwanie i operowanie danymi, które pochodzą z więcej niż jednej tabeli, przy pomocy pojedynczej instrukcji SELECT. Do wykonania operacji złączenia określa się za pomocą klauzuli WHERE oraz instrukcji SELECT. Każde złączenie realizowane jest jednocześnie dla dwóch tabel, przy tym dla każdej tabeli wybierana jest jedna kolumna łącząca lub kolumna złączeniowa. Kolumna łącząca powinna zawierać wartości które w łatwy sposób możemy porównać, reprezentujące te same dane lub dane o podobnym charakterze w każdej tabeli biorącej udział w złączeniu. Przeważnie kolumny łączące zawierają ten sam typ danych. Wartości kolumn łączących są złączeniowo zgodne czyli ich wartości zawarte są w tej samej klasie danych. Czytaj dalej

SQL – Klauzula WHERE

sql-410-x-200

Klauzula WHERE jest częścią zapytania SELECT, w której podajemy warunki wyszukiwania. Dokładnie określa warunki, które wiersze zostaną wyszukane w bazie.

Ogólna postać zapytania:

 select lista wyboru

from lista tabel

where warunki wyszukiwania

Podczas konstruowania zapytania SELECT zawierającego klauzule WHERE, system weryfikuje czy zostały spełnione warunki i wybiera odpowiednie wiersze.
Język SQL zawiera masę rozmaitych operatorów i słów kluczowych, służących do definiowania warunków wyszukiwania.

  • operatory porównawcze (=, <, >, itd.)
  • kombinacje i logiczne negacje warunków (AND, OR, NOT)
  • przedziały (BETWEEN i NOT BETWEEN)
  • listy (IN, NOT IN)
  • wartości nieznane (IS NULL i IS NOT NULL)
  • zgodność znakowa (LIKE i NOT LIKE)