{"id":995,"date":"2024-04-22T07:56:39","date_gmt":"2024-04-22T05:56:39","guid":{"rendered":"https:\/\/piotrgabriel.pl\/wiki\/?p=995"},"modified":"2024-11-20T10:50:59","modified_gmt":"2024-11-20T09:50:59","slug":"php-read-czyli-odczytywanie-danych-z-bazy-mysql","status":"publish","type":"post","link":"https:\/\/piotrgabriel.pl\/wiki\/php-read-czyli-odczytywanie-danych-z-bazy-mysql\/","title":{"rendered":"PHP &#8211; Read, czyli odczytywanie danych z bazy MySQL &#8211; \u0107wiczenia"},"content":{"rendered":"<p>\u017beby lepiej zrozumie\u0107 na czym polega odczyt danych z bazy, warto zrealizowa\u0107 kilka \u0107wicze\u0144. <!--more--><\/p>\n<p>Ni\u017cej opracowa\u0142em wi\u0119c przyk\u0142adow\u0105 baz\u0119, do kt\u00f3rej mo\u017cna doda\u0107 przyk\u0142adowe rekordy, na bazie kt\u00f3rych docelowo b\u0119dzie mo\u017cliwe zrealizowanie \u0107wicze\u0144, kt\u00f3re z pewno\u015bci\u0105 pozwol\u0105 lepiej zrozumie\u0107 element odczytu, danych z bazy MySQL. Zatem zaczynajmy..<\/p>\n<p>Przyk\u0142adowa baza, potrzebna do realizacji zada\u0144:<\/p>\n<p><code>CREATE TABLE Klienci (<\/code><br \/>\n<code>id_klienta INT AUTO_INCREMENT PRIMARY KEY,<\/code><br \/>\n<code>imie VARCHAR(255) NOT NULL,<\/code><br \/>\n<code>nazwisko VARCHAR(255) NOT NULL,<\/code><br \/>\n<code>email VARCHAR(255) NOT NULL,<\/code><br \/>\n<code>telefon VARCHAR(255) NOT NULL<\/code><br \/>\n<code>);<\/code><\/p>\n<p><code>CREATE TABLE Kwiaty (<\/code><br \/>\n<code>id_kwiatu INT AUTO_INCREMENT PRIMARY KEY,<\/code><br \/>\n<code>nazwa VARCHAR(255) NOT NULL,<\/code><br \/>\n<code>cena DECIMAL(10, 2) NOT NULL, -- Zak\u0142adamy dwie cyfry po przecinku dla ceny<\/code><br \/>\n<code>dostepnosc INT NOT NULL<\/code><br \/>\n<code>);<\/code><\/p>\n<p><code>CREATE TABLE Zamowienia (<\/code><br \/>\n<code>id_zamowienia INT AUTO_INCREMENT PRIMARY KEY,<\/code><br \/>\n<code>id_klienta INT NOT NULL,<\/code><br \/>\n<code>data_zamowienia DATE NOT NULL,<\/code><br \/>\n<code>suma DECIMAL(10, 2) NOT NULL, -- Zak\u0142adamy dwie cyfry po przecinku dla sumy<\/code><br \/>\n<code>status VARCHAR(255) NOT NULL,<\/code><br \/>\n<code>CONSTRAINT fk_klient<\/code><br \/>\n<code>FOREIGN KEY (id_klienta) <\/code><br \/>\n<code>REFERENCES Klienci (id_klienta)<\/code><br \/>\n<code>ON DELETE CASCADE -- Usuni\u0119cie klienta powoduje usuni\u0119cie jego zam\u00f3wie\u0144<\/code><br \/>\n<code>);<\/code><\/p>\n<p>Poprawka do zadania:<\/p>\n<p><code>ALTER TABLE Zamowienia ADD id_kwiatu INT;<\/code><br \/>\n<code>ALTER TABLE Zamowienia ADD CONSTRAINT fk_kwiat FOREIGN KEY (id_kwiatu) REFERENCES Kwiaty (id_kwiatu);<\/code><\/p>\n<p>Kolejno uzupe\u0142nijmy je danymi<\/p>\n<p><code>INSERT INTO Klienci (imie, nazwisko, email, telefon) VALUES<\/code><br \/>\n<code>('Jan', 'Kowalski', 'jan.kowalski@example.com', '123-456-789'),<\/code><br \/>\n<code>('Anna', 'Nowak', 'anna.nowak@example.com', '987-654-321'),<\/code><br \/>\n<code>('Piotr', 'Zieli\u0144ski', 'piotr.zielinski@example.com', '456-789-123'),<\/code><br \/>\n<code>('Katarzyna', 'Wi\u015bniewska', 'katarzyna.wisniewska@example.com', '321-654-987'),<\/code><br \/>\n<code>('Marcin', 'W\u00f3jcik', 'marcin.wojcik@example.com', '132-465-798'),<\/code><br \/>\n<code>('Joanna', 'Kami\u0144ska', 'joanna.kaminska@example.com', '978-321-654'),<\/code><br \/>\n<code>('\u0141ukasz', 'Lewandowski', 'lukasz.lewandowski@example.com', '564-987-321'),<\/code><br \/>\n<code>('Marta', 'D\u0105browska', 'marta.dabrowska@example.com', '675-123-890'),<\/code><br \/>\n<code>('Tomasz', 'Zaj\u0105c', 'tomasz.zajac@example.com', '987-321-456'),<\/code><br \/>\n<code>('Ewa', 'Majewska', 'ewa.majewska@example.com', '753-951-852');<\/code><\/p>\n<p><code>INSERT INTO Kwiaty (nazwa, cena, dostepnosc) VALUES<\/code><br \/>\n<code>('R\u00f3\u017ca', 10.50, 100),<\/code><br \/>\n<code>('Tulipan', 8.30, 150),<\/code><br \/>\n<code>('Kalia', 12.00, 50),<\/code><br \/>\n<code>('Gerbera', 6.25, 80),<\/code><br \/>\n<code>('Hiacynt', 9.50, 70),<\/code><br \/>\n<code>('Krokus', 5.40, 200),<\/code><br \/>\n<code>('Narcyz', 7.20, 120),<\/code><br \/>\n<code>('Begonia', 13.45, 90),<\/code><br \/>\n<code>('Amarylis', 11.00, 60),<\/code><br \/>\n<code>('Magnolia', 14.75, 40),<\/code><br \/>\n<code>('Dalia', 10.00, 30),<\/code><br \/>\n<code>('Frezja', 8.50, 100),<\/code><br \/>\n<code>('Irys', 9.00, 110),<\/code><br \/>\n<code>('Jaskier', 4.75, 140),<\/code><br \/>\n<code>('Lilia', 13.00, 50),<\/code><br \/>\n<code>('Orchidea', 20.00, 25),<\/code><br \/>\n<code>('Piwonia', 15.75, 35),<\/code><br \/>\n<code>('Stokrotka', 3.45, 180),<\/code><br \/>\n<code>('S\u0142onecznik', 5.00, 150),<\/code><br \/>\n<code>('Zawilec', 7.80, 90);<\/code><\/p>\n<p><code>INSERT INTO Zamowienia (id_klienta, data_zamowienia, suma, status) VALUES<\/code><br \/>\n<code>(1, '2023-04-01', 120.00, 'zako\u0144czone',1),<\/code><br \/>\n<code>(2, '2023-04-03', 85.50, 'w realizacji',1),<\/code><br \/>\n<code>(3, '2023-04-03', 67.75, 'nowe',2),<\/code><br \/>\n<code>(4, '2023-04-05', 148.20, 'zako\u0144czone',3),<\/code><br \/>\n<code>(5, '2023-04-05', 99.99, 'nowe'),4,<\/code><br \/>\n<code>(6, '2023-04-06', 134.40, 'w realizacji',3),<\/code><br \/>\n<code>(7, '2023-04-07', 200.00, 'zako\u0144czone',5),<\/code><br \/>\n<code>(8, '2023-04-08', 180.30, 'nowe',6),<\/code><br \/>\n<code>(9, '2023-04-09', 75.00, 'w realizacji',2),<\/code><br \/>\n<code>(10, '2023-04-10', 90.00, 'zako\u0144czone',1);<\/code><\/p>\n<p>Ok, jak ju\u017c mamy dane, przejd\u017amy do naszych zada\u0144<\/p>\n<p><strong>Zadanie 1: Lista wszystkich klient\u00f3w w HTML<\/strong>:<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Wy\u015bwietl tabel\u0119 zawieraj\u0105c\u0105 pe\u0142n\u0105 list\u0119 klient\u00f3w. Zapytanie SQL: <code>SELECT * FROM Klienci;<\/code><\/li>\n<li>W PHP u\u017cyj p\u0119tli <code>while<\/code> do iterowania (iteracja -powtarzanie tej samej operacji w p\u0119tli) przez wyniki i wy\u015bwietlania ich w tabeli HTML.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Rozwi\u0105zanie:<\/p>\n<p><code>&lt;?php<\/code><br \/>\n<code>$servername = \"localhost\";<\/code><br \/>\n<code>$username = \"username\";<\/code><br \/>\n<code>$password = \"password\";<\/code><br \/>\n<code>$dbname = \"kwiaciarnia\";<\/code><\/p>\n<p><code>\/\/ po\u0142\u0105czenie z baz\u0105<\/code><br \/>\n<code>$conn = new mysqli($servername, $username, $password, $dbname);<\/code><\/p>\n<p><code>\/\/ sprawdzenie po\u0142\u0105czenia z baz\u0105<\/code><br \/>\n<code>if ($conn-&gt;connect_error) {<\/code><br \/>\n<code>die(\"Connection failed: \" . $conn-&gt;connect_error);<\/code><br \/>\n<code>}<\/code><\/p>\n<p><code>$sql = \"SELECT * FROM Klienci\";<\/code><br \/>\n<code>$result = $conn-&gt;query($sql);<\/code><\/p>\n<p><code>if ($result-&gt;num_rows &gt; 0) {<\/code><br \/>\n<code>echo \"&lt;table&gt;&lt;tr&gt;&lt;th&gt;ID&lt;\/th&gt;&lt;th&gt;Imi\u0119&lt;\/th&gt;&lt;th&gt;Nazwisko&lt;\/th&gt;&lt;th&gt;Email&lt;\/th&gt;&lt;th&gt;Telefon&lt;\/th&gt;&lt;\/tr&gt;\";<\/code><br \/>\n<code>\/\/ output data of each row<\/code><br \/>\n<code>while($row = $result-&gt;fetch_assoc()) {<\/code><br \/>\n<code>echo \"&lt;tr&gt;&lt;td&gt;\" . $row[\"id_klienta\"] . \"&lt;\/td&gt;&lt;td&gt;\" . $row[\"imie\"] . \"&lt;\/td&gt;&lt;td&gt;\" . $row[\"nazwisko\"] . \"&lt;\/td&gt;&lt;td&gt;\" . $row[\"email\"] . \"&lt;\/td&gt;&lt;td&gt;\" . $row[\"telefon\"] . \"&lt;\/td&gt;&lt;\/tr&gt;\";<\/code><br \/>\n<code>}<\/code><br \/>\n<code>echo \"&lt;\/table&gt;\";<\/code><br \/>\n<code>} else {<\/code><br \/>\n<code>echo \"0 results\";<\/code><br \/>\n<code>}<\/code><br \/>\n<code>$conn-&gt;close();<\/code><br \/>\n<code>?&gt;<\/code><\/p>\n<p><strong>Zadanie 2: Wy\u015bwietlenie wszystkich dost\u0119pnych kwiat\u00f3w w HTML<\/strong>:<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Stw\u00f3rz tabel\u0119 pokazuj\u0105c\u0105 wszystkie kwiaty, kt\u00f3re maj\u0105 dost\u0119pno\u015b\u0107 wi\u0119ksz\u0105 ni\u017c 0. Zapytanie SQL: <code>SELECT * FROM Kwiaty WHERE dostepnosc &gt; 0;<\/code><\/li>\n<li>Podobnie jak wy\u017cej, u\u017cyj PHP do wygenerowania tabeli.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Rozwi\u0105zanie:<\/p>\n<p><code>&lt;?php<\/code><br \/>\n<code>$servername = \"localhost\";<\/code><br \/>\n<code>$username = \"username\";<\/code><br \/>\n<code>$password = \"password\";<\/code><br \/>\n<code>$dbname = \"kwiaciarnia\";<\/code><\/p>\n<p><code>$conn = new mysqli($servername, $username, $password, $dbname);<\/code><br \/>\n<code>if ($conn-&gt;connect_error) {<\/code><br \/>\n<code>die(\"Connection failed: \" . $conn-&gt;connect_error);<\/code><br \/>\n<code>}<\/code><\/p>\n<p><code>$sql = \"SELECT * FROM Kwiaty WHERE dostepnosc &gt; 0\";<\/code><br \/>\n<code>$result = $conn-&gt;query($sql);<\/code><\/p>\n<p><code>if ($result-&gt;num_rows &gt; 0) {<\/code><br \/>\n<code>echo \"&lt;table&gt;&lt;tr&gt;&lt;th&gt;ID Kwiatu&lt;\/th&gt;&lt;th&gt;Nazwa&lt;\/th&gt;&lt;th&gt;Cena&lt;\/th&gt;&lt;th&gt;Dost\u0119pno\u015b\u0107&lt;\/th&gt;&lt;\/tr&gt;\";<\/code><br \/>\n<code>while($row = $result-&gt;fetch_assoc()) {<\/code><br \/>\n<code>echo \"&lt;tr&gt;&lt;td&gt;\" . $row[\"id_kwiatu\"] . \"&lt;\/td&gt;&lt;td&gt;\" . $row[\"nazwa\"] . \"&lt;\/td&gt;&lt;td&gt;\" . $row[\"cena\"] . \"&lt;\/td&gt;&lt;td&gt;\" . $row[\"dostepnosc\"] . \"&lt;\/td&gt;&lt;\/tr&gt;\";<\/code><br \/>\n<code>}<\/code><br \/>\n<code>echo \"&lt;\/table&gt;\";<\/code><br \/>\n<code>} else {<\/code><br \/>\n<code>echo \"0 results\";<\/code><br \/>\n<code>}<\/code><br \/>\n<code>$conn-&gt;close();<\/code><br \/>\n<code>?&gt;<\/code><\/p>\n<p><strong>Zadanie 3: Szczeg\u00f3\u0142y zam\u00f3wienia na podstawie ID zam\u00f3wienia<\/strong>:<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Wy\u015bwietl pe\u0142ne informacje o zam\u00f3wieniu, w tym dane klienta i sum\u0119 zam\u00f3wienia, na podstawie ID zam\u00f3wienia. Zapytanie SQL: <code>SELECT Zamowienia.*, Klienci.imie, Klienci.nazwisko FROM Zamowienia JOIN Klienci ON Zamowienia.id_klienta = Klienci.id_klienta WHERE id_zamowienia = ?;<\/code><\/li>\n<li>W PHP u\u017cyj metody GET do przekazania ID i wy\u015bwietlenia wynik\u00f3w.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Rozwi\u0105zanie:<\/p>\n<p>Plik HTML z formularzem, np. wybor-zamowienia.html<\/p>\n<p><code>&lt;!DOCTYPE html&gt;<\/code><br \/>\n<code>&lt;html lang=\"pl\"&gt;<\/code><br \/>\n<code>&lt;head&gt;<\/code><br \/>\n<code>&lt;meta charset=\"UTF-8\"&gt;<\/code><br \/>\n<code>&lt;title&gt;Wyszukaj Zam\u00f3wienie&lt;\/title&gt;<\/code><br \/>\n<code>&lt;\/head&gt;<\/code><br \/>\n<code>&lt;body&gt;<\/code><br \/>\n<code>&lt;h1&gt;Wyszukaj Szczeg\u00f3\u0142y Zam\u00f3wienia&lt;\/h1&gt;<\/code><br \/>\n<code>&lt;form action=\"odczyt-danych-zamowienia.php\" method=\"get\"&gt;<\/code><br \/>\n<code>&lt;!-- U\u017cytkownik wpisuje ID zam\u00f3wienia, kt\u00f3re chce wyszuka\u0107 --&gt;<\/code><br \/>\n<code>&lt;label for=\"id_zamowienia\"&gt;Wpisz ID Zam\u00f3wienia:&lt;\/label&gt;<\/code><br \/>\n<code>&lt;input type=\"number\" id=\"id_zamowienia\" name=\"id_zamowienia\" required&gt;<\/code><br \/>\n<code>&lt;button type=\"submit\"&gt;Szukaj&lt;\/button&gt;<\/code><br \/>\n<code>&lt;\/form&gt;<\/code><br \/>\n<code>&lt;\/body&gt;<\/code><br \/>\n<code>&lt;\/html&gt;<\/code><\/p>\n<p>Plik docelowy, np. odczyt-danych-zamowienia.php<\/p>\n<p><code>&lt;?php<\/code><br \/>\n<code>$servername = \"localhost\";<\/code><br \/>\n<code>$username = \"username\";<\/code><br \/>\n<code>$password = \"password\";<\/code><br \/>\n<code>$dbname = \"kwiaciarnia\";<\/code><br \/>\n<code>$id_zamowienia = $_GET['id_zamowienia']; \/\/ Przekazanie ID zam\u00f3wienia przez parametr GET<\/code><\/p>\n<p><code>$conn = new mysqli($servername, $username, $password, $dbname);<\/code><br \/>\n<code>if ($conn-&gt;connect_error) {<\/code><br \/>\n<code>die(\"Connection failed: \" . $conn-&gt;connect_error);<\/code><br \/>\n<code>}<\/code><\/p>\n<p><code>$sql = \"SELECT Zamowienia.*, Klienci.imie, Klienci.nazwisko FROM Zamowienia JOIN Klienci ON Zamowienia.id_klienta = Klienci.id_klienta WHERE id_zamowienia = ?\";<\/code><br \/>\n<code>$stmt = $conn-&gt;prepare($sql);<\/code><br \/>\n<code>$stmt-&gt;bind_param(\"i\", $id_zamowienia);<\/code><br \/>\n<code>$stmt-&gt;execute();<\/code><br \/>\n<code>$result = $stmt-&gt;get_result();<\/code><\/p>\n<p><code>if ($result-&gt;num_rows &gt; 0) {<\/code><br \/>\n<code>echo \"&lt;table&gt;&lt;tr&gt;&lt;th&gt;ID Zam\u00f3wienia&lt;\/th&gt;&lt;th&gt;Imi\u0119 Klienta&lt;\/th&gt;&lt;th&gt;Nazwisko Klienta&lt;\/th&gt;&lt;th&gt;Data Zam\u00f3wienia&lt;\/th&gt;&lt;th&gt;Suma&lt;\/th&gt;&lt;th&gt;Status&lt;\/th&gt;&lt;\/tr&gt;\";<\/code><br \/>\n<code>while($row = $result-&gt;fetch_assoc()) {<\/code><br \/>\n<code>echo \"&lt;tr&gt;&lt;td&gt;\" . $row[\"id_zamowienia\"] . \"&lt;\/td&gt;&lt;td&gt;\" . $row[\"imie\"] . \"&lt;\/td&gt;&lt;td&gt;\" . $row[\"nazwisko\"] . \"&lt;\/td&gt;&lt;td&gt;\" . $row[\"data_zamowienia\"] . \"&lt;\/td&gt;&lt;td&gt;\" . $row[\"suma\"] . \"&lt;\/td&gt;&lt;td&gt;\" . $row[\"status\"] . \"&lt;\/td&gt;&lt;\/tr&gt;\";<\/code><br \/>\n<code>}<\/code><br \/>\n<code>echo \"&lt;\/table&gt;\";<\/code><br \/>\n<code>} else {<\/code><br \/>\n<code>echo \"Nie znaleziono zam\u00f3wienia o takim ID.\";<\/code><br \/>\n<code>}<\/code><br \/>\n<code>$conn-&gt;close();<\/code><br \/>\n<code>?&gt;<\/code><\/p>\n<p><strong>Zadanie 4: Wykaz wszystkich zam\u00f3wie\u0144 danego klienta<\/strong>:<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Na podstawie ID klienta, wy\u015bwietl wszystkie jego zam\u00f3wienia. Zapytanie SQL: <code>SELECT * FROM Zamowienia WHERE id_klienta = ?;<\/code><\/li>\n<li>PHP powinien pobiera\u0107 ID klienta, np. przez formularz, i wy\u015bwietla\u0107 wyniki w formacie tabeli.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Rozwi\u0105zanie:<\/p>\n<p>Plik zamowienia-klienta-wybierz.html<\/p>\n<p><code>&lt;!DOCTYPE html&gt;<\/code><br \/>\n<code>&lt;html lang=\"pl\"&gt;<\/code><br \/>\n<code>&lt;head&gt;<\/code><br \/>\n<code>&lt;meta charset=\"UTF-8\"&gt;<\/code><br \/>\n<code>&lt;title&gt;Wyszukaj Zam\u00f3wienia Klienta&lt;\/title&gt;<\/code><br \/>\n<code>&lt;\/head&gt;<\/code><br \/>\n<code>&lt;body&gt;<\/code><br \/>\n<code>&lt;h1&gt;Wyszukaj Zam\u00f3wienia Klienta&lt;\/h1&gt;<\/code><br \/>\n<code>&lt;form action=\"zamowienia-klient-rezultat.php\" method=\"get\"&gt;<\/code><br \/>\n<code>&lt;!-- U\u017cytkownik wpisuje ID klienta, kt\u00f3rego zam\u00f3wienia chce wyszuka\u0107 --&gt;<\/code><br \/>\n<code>&lt;label for=\"id_klienta\"&gt;Wpisz ID Klienta:&lt;\/label&gt;<\/code><br \/>\n<code>&lt;input type=\"number\" id=\"id_klienta\" name=\"id_klienta\" required&gt;<\/code><br \/>\n<code>&lt;button type=\"submit\"&gt;Szukaj&lt;\/button&gt;<\/code><br \/>\n<code>&lt;\/form&gt;<\/code><br \/>\n<code>&lt;\/body&gt;<\/code><br \/>\n<code>&lt;\/html&gt;<\/code><\/p>\n<p>Plik zamowienia-klient-rezultat.php<\/p>\n<p><code>&lt;?php<\/code><br \/>\n<code>$servername = \"localhost\";<\/code><br \/>\n<code>$username = \"username\";<\/code><br \/>\n<code>$password = \"password\";<\/code><br \/>\n<code>$dbname = \"kwiaciarnia\";<\/code><br \/>\n<code>$id_klienta = $_GET['id_klienta']; \/\/ Przekazanie ID klienta przez parametr GET<\/code><\/p>\n<p><code>$conn = new mysqli($servername, $username, $password, $dbname);<\/code><br \/>\n<code>if ($conn-&gt;connect_error) {<\/code><br \/>\n<code>die(\"Connection failed: \" . $conn-&gt;connect_error);<\/code><br \/>\n<code>}<\/code><\/p>\n<p><code>$sql = \"SELECT * FROM Zamowienia WHERE id_klienta = $id_klienta\";<\/code><br \/>\n<code>$result = $conn-&gt;query($sql);<\/code><\/p>\n<p><code>if ($result-&gt;num_rows &gt; 0) {<\/code><br \/>\n<code>echo \"&lt;table&gt;&lt;tr&gt;&lt;th&gt;ID Zam\u00f3wienia&lt;\/th&gt;&lt;th&gt;Data Zam\u00f3wienia&lt;\/th&gt;&lt;th&gt;Suma&lt;\/th&gt;&lt;th&gt;Status&lt;\/th&gt;&lt;\/tr&gt;\";<\/code><br \/>\n<code>while($row = $result-&gt;fetch_assoc()) {<\/code><br \/>\n<code>echo \"&lt;tr&gt;&lt;td&gt;\" . $row[\"id_zamowienia\"] . \"&lt;\/td&gt;&lt;td&gt;\" . $row[\"data_zamowienia\"] . \"&lt;\/td&gt;&lt;td&gt;\" . $row[\"suma\"] . \"&lt;\/td&gt;&lt;td&gt;\" . $row[\"status\"] . \"&lt;\/td&gt;&lt;\/tr&gt;\";<\/code><br \/>\n<code>}<\/code><br \/>\n<code>echo \"&lt;\/table&gt;\";<\/code><br \/>\n<code>} else {<\/code><br \/>\n<code>echo \"Ten klient nie ma \u017cadnych zam\u00f3wie\u0144.\";<\/code><br \/>\n<code>}<\/code><br \/>\n<code>$conn-&gt;close();<\/code><br \/>\n<code>?&gt;<\/code><\/p>\n<p><strong>Zadanie 5: Zestawienie kwiat\u00f3w i ich \u0142\u0105cznej warto\u015bci w zam\u00f3wieniach<\/strong>:<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Wygeneruj raport pokazuj\u0105cy, kt\u00f3re kwiaty i ile razy zosta\u0142y zam\u00f3wione, oraz jaka jest \u0142\u0105czna warto\u015b\u0107 zam\u00f3wionych kwiat\u00f3w. Zapytanie SQL: <code><span class=\"hljs-keyword\">SELECT<\/span> Kwiaty.nazwa, <span class=\"hljs-built_in\">COUNT<\/span>(Zamowienia.id_zamowienia) <span class=\"hljs-keyword\">AS<\/span> ilosc_zamowien, <span class=\"hljs-built_in\">SUM<\/span>(Zamowienia.suma) <span class=\"hljs-keyword\">AS<\/span> suma <span class=\"hljs-keyword\">FROM<\/span> Zamowienia <span class=\"hljs-keyword\">JOIN<\/span> Kwiaty <span class=\"hljs-keyword\">ON<\/span> Zamowienia.id_kwiatu <span class=\"hljs-operator\">=<\/span> Kwiaty.id_kwiatu <span class=\"hljs-keyword\">GROUP<\/span> <span class=\"hljs-keyword\">BY<\/span> Kwiaty.nazwa;<\/code><\/li>\n<li>W PHP agreguj i wy\u015bwietlaj dane w tabeli HTML.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Rozwi\u0105zanie:<\/p>\n<div>\n<div><code>&lt;?php<\/code><\/div>\n<div><code>$servername = \"localhost\";<\/code><\/div>\n<div><code>$username = \"root\";<\/code><\/div>\n<div><code>$password = \"\";<\/code><\/div>\n<div><code>$dbname = \"kwiaciarnia\";<\/code><\/div>\n<div><code>$conn = new mysqli($servername, $username, $password, $dbname);<\/code><\/div>\n<div><code>if ($conn-&gt;connect_error) {<\/code><\/div>\n<div><code>\u00a0 \u00a0 die(\"Connection failed: \" . $conn-&gt;connect_error);<\/code><\/div>\n<div><code>}<\/code><\/div>\n<div><code>$sql = \"SELECT Kwiaty.nazwa, COUNT(Zamowienia.id_zamowienia) AS ilosc_zamowien, SUM(Zamowienia.suma) AS suma FROM Zamowienia JOIN Kwiaty ON Zamowienia.id_kwiatu = Kwiaty.id_kwiatu GROUP BY Kwiaty.nazwa\";<\/code><\/div>\n<div><code>$result = $conn-&gt;query($sql);<\/code><\/div>\n<div><code>if ($result === false) {<\/code><\/div>\n<div><code>\u00a0 \u00a0 die(\"SQL error: \" . $conn-&gt;error);<\/code><\/div>\n<div><code>}<\/code><\/div>\n<div><code>if ($result-&gt;num_rows &gt; 0) {<\/code><\/div>\n<div><code>\u00a0 \u00a0 echo \"&lt;table&gt;&lt;tr&gt;&lt;th&gt;Nazwa Kwiatu&lt;\/th&gt;&lt;th&gt;Ilo\u015b\u0107 Zam\u00f3wie\u0144&lt;\/th&gt;&lt;th&gt;\u0141\u0105czna Suma&lt;\/th&gt;&lt;\/tr&gt;\";<\/code><\/div>\n<div><code>\u00a0 \u00a0 while($row = $result-&gt;fetch_assoc()) {<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 echo \"&lt;tr&gt;&lt;td&gt;\" . htmlspecialchars($row[\"nazwa\"]) . \"&lt;\/td&gt;&lt;td&gt;\" . $row[\"ilosc_zamowien\"] . \"&lt;\/td&gt;&lt;td&gt;\" . $row[\"suma\"] . \"&lt;\/td&gt;&lt;\/tr&gt;\";<\/code><\/div>\n<div><code>\u00a0 \u00a0 }<\/code><\/div>\n<div><code>\u00a0 \u00a0 echo \"&lt;\/table&gt;\";<\/code><\/div>\n<div><code>} else {<\/code><\/div>\n<div><code>\u00a0 \u00a0 echo \"Brak wynik\u00f3w.\";<\/code><\/div>\n<div><code>}<\/code><\/div>\n<div><code>$conn-&gt;close();<\/code><\/div>\n<div><code>?&gt;<\/code><\/div>\n<\/div>\n<p><strong>Zadanie 6: Wy\u015bwietl wszystkich klient\u00f3w posortowanych alfabetycznie po nazwisku<\/strong><\/p>\n<p>Rozwi\u0105zanie:<\/p>\n<p><code>&lt;?php<\/code><br \/>\n<code>$servername = \"localhost\";<\/code><br \/>\n<code>$username = \"username\";<\/code><br \/>\n<code>$password = \"password\";<\/code><br \/>\n<code>$dbname = \"kwiaciarnia\";<\/code><\/p>\n<p><code>$conn = new mysqli($servername, $username, $password, $dbname);<\/code><br \/>\n<code>if ($conn-&gt;connect_error) {<\/code><br \/>\n<code>die(\"Connection failed: \" . $conn-&gt;connect_error);<\/code><br \/>\n<code>}<\/code><\/p>\n<p><code>$sql = \"SELECT * FROM Klienci ORDER BY nazwisko ASC\";<\/code><br \/>\n<code>$result = $conn-&gt;query($sql);<\/code><\/p>\n<p><code>if ($result-&gt;num_rows &gt; 0) {<\/code><br \/>\n<code>echo \"&lt;table&gt;&lt;tr&gt;&lt;th&gt;ID&lt;\/th&gt;&lt;th&gt;Imi\u0119&lt;\/th&gt;&lt;th&gt;Nazwisko&lt;\/th&gt;&lt;th&gt;Email&lt;\/th&gt;&lt;th&gt;Telefon&lt;\/th&gt;&lt;\/tr&gt;\";<\/code><br \/>\n<code>while($row = $result-&gt;fetch_assoc()) {<\/code><br \/>\n<code>echo \"&lt;tr&gt;&lt;td&gt;\" . $row[\"id_klienta\"] . \"&lt;\/td&gt;&lt;td&gt;\" . $row[\"imie\"] . \"&lt;\/td&gt;&lt;td&gt;\" . $row[\"nazwisko\"] . \"&lt;\/td&gt;&lt;td&gt;\" . $row[\"email\"] . \"&lt;\/td&gt;&lt;td&gt;\" . $row[\"telefon\"] . \"&lt;\/td&gt;&lt;\/tr&gt;\";<\/code><br \/>\n<code>}<\/code><br \/>\n<code>echo \"&lt;\/table&gt;\";<\/code><br \/>\n<code>} else {<\/code><br \/>\n<code>echo \"Nie znaleziono klient\u00f3w.\";<\/code><br \/>\n<code>}<\/code><br \/>\n<code>$conn-&gt;close();<\/code><br \/>\n<code>?&gt;<\/code><\/p>\n<p><strong>Zadanie 7: Wy\u015bwietl wszystkie zam\u00f3wienia z kwot\u0105 powy\u017cej 100z\u0142<\/strong><\/p>\n<p>Rozwi\u0105zanie:<\/p>\n<p><code>&lt;?php<\/code><br \/>\n<code>$servername = \"localhost\";<\/code><br \/>\n<code>$username = \"username\";<\/code><br \/>\n<code>$password = \"password\";<\/code><br \/>\n<code>$dbname = \"kwiaciarnia\";<\/code><\/p>\n<p><code>$conn = new mysqli($servername, $username, $password, $dbname);<\/code><br \/>\n<code>if ($conn-&gt;connect_error) {<\/code><br \/>\n<code>die(\"Connection failed: \" . $conn-&gt;connect_error);<\/code><br \/>\n<code>}<\/code><\/p>\n<p><code>$sql = \"SELECT * FROM Zamowienia WHERE suma &gt; 100\";<\/code><br \/>\n<code>$result = $conn-&gt;query($sql);<\/code><\/p>\n<p><code>if ($result-&gt;num_rows &gt; 0) {<\/code><br \/>\n<code>echo \"&lt;table&gt;&lt;tr&gt;&lt;th&gt;ID Zam\u00f3wienia&lt;\/th&gt;&lt;th&gt;ID Klienta&lt;\/th&gt;&lt;th&gt;Data Zam\u00f3wienia&lt;\/th&gt;&lt;th&gt;Suma&lt;\/th&gt;&lt;th&gt;Status&lt;\/th&gt;&lt;\/tr&gt;\";<\/code><br \/>\n<code>while($row = $result-&gt;fetch_assoc()) {<\/code><br \/>\n<code>echo \"&lt;tr&gt;&lt;td&gt;\" . $row[\"id_zamowienia\"] . \"&lt;\/td&gt;&lt;td&gt;\" . $row[\"id_klienta\"] . \"&lt;\/td&gt;&lt;td&gt;\" . $row[\"data_zamowienia\"] . \"&lt;\/td&gt;&lt;td&gt;\" . $row[\"suma\"] . \"&lt;\/td&gt;&lt;td&gt;\" . $row[\"status\"] . \"&lt;\/td&gt;&lt;\/tr&gt;\";<\/code><br \/>\n<code>}<\/code><br \/>\n<code>echo \"&lt;\/table&gt;\";<\/code><br \/>\n<code>} else {<\/code><br \/>\n<code>echo \"Nie znaleziono zam\u00f3wie\u0144 o sumie wi\u0119kszej ni\u017c 100 PLN.\";<\/code><br \/>\n<code>}<\/code><br \/>\n<code>$conn-&gt;close();<\/code><br \/>\n<code>?&gt;<\/code><\/p>\n<p><strong>Zadanie 8. Wy\u015bwietl informacje o kwiatach, kt\u00f3rych nazwa zaczyna si\u0119 na liter\u0119 &#8222;R&#8221;<\/strong><\/p>\n<p>Rozwi\u0105zanie:<\/p>\n<p><code>&lt;?php<\/code><br \/>\n<code>$servername = \"localhost\";<\/code><br \/>\n<code>$username = \"username\";<\/code><br \/>\n<code>$password = \"password\";<\/code><br \/>\n<code>$dbname = \"kwiaciarnia\";<\/code><\/p>\n<p><code>$conn = new mysqli($servername, $username, $password, $dbname);<\/code><br \/>\n<code>if ($conn-&gt;connect_error) {<\/code><br \/>\n<code>die(\"Connection failed: \" . $conn-&gt;connect_error);<\/code><br \/>\n<code>}<\/code><\/p>\n<p><code>$sql = \"SELECT * FROM Kwiaty WHERE nazwa LIKE 'R%'\";<\/code><br \/>\n<code>$result = $conn-&gt;query($sql);<\/code><\/p>\n<p><code>if ($result-&gt;num_rows &gt; 0) {<\/code><br \/>\n<code>echo \"&lt;table&gt;&lt;tr&gt;&lt;th&gt;ID Kwiatu&lt;\/th&gt;&lt;th&gt;Nazwa&lt;\/th&gt;&lt;th&gt;Cena&lt;\/th&gt;&lt;th&gt;Dost\u0119pno\u015b\u0107&lt;\/th&gt;&lt;\/tr&gt;\";<\/code><br \/>\n<code>while($row = $result-&gt;fetch_assoc()) {<\/code><br \/>\n<code>echo \"&lt;tr&gt;&lt;td&gt;\" . $row[\"id_kwiatu\"] . \"&lt;\/td&gt;&lt;td&gt;\" . $row[\"nazwa\"] . \"&lt;\/td&gt;&lt;td&gt;\" . $row[\"cena\"] . \"&lt;\/td&gt;&lt;td&gt;\" . $row[\"dostepnosc\"] . \"&lt;\/td&gt;&lt;\/tr&gt;\";<\/code><br \/>\n<code>}<\/code><br \/>\n<code>echo \"&lt;\/table&gt;\";<\/code><br \/>\n<code>} else {<\/code><br \/>\n<code>echo \"Nie znaleziono kwiat\u00f3w zaczynaj\u0105cych si\u0119 na 'R'.\";<\/code><br \/>\n<code>}<\/code><br \/>\n<code>$conn-&gt;close();<\/code><br \/>\n<code>?&gt;<\/code><\/p>\n<p><strong>Zadanie 9. Wy\u015bwietl liczb\u0119 zam\u00f3wie\u0144 dla ka\u017cdego klienta<\/strong><\/p>\n<p>SQL:<\/p>\n<p><code>SELECT Klienci.id_klienta, Klienci.imie, Klienci.nazwisko, COUNT(Zamowienia.id_zamowienia) AS liczba_zamowien<\/code><br \/>\n<code>FROM Klienci<\/code><br \/>\n<code>LEFT JOIN Zamowienia ON Klienci.id_klienta = Zamowienia.id_klienta<\/code><br \/>\n<code>GROUP BY Klienci.id_klienta;<\/code><\/p>\n<p>Rozwi\u0105zanie:<\/p>\n<p><code>&lt;?php<\/code><br \/>\n<code>$servername = \"localhost\";<\/code><br \/>\n<code>$username = \"username\";<\/code><br \/>\n<code>$password = \"password\";<\/code><br \/>\n<code>$dbname = \"kwiaciarnia\";<\/code><\/p>\n<p><code>$conn = new mysqli($servername, $username, $password, $dbname);<\/code><br \/>\n<code>if ($conn-&gt;connect_error) {<\/code><br \/>\n<code>die(\"Connection failed: \" . $conn-&gt;connect_error);<\/code><br \/>\n<code>}<\/code><\/p>\n<p><code>$sql = \"SELECT Klienci.id_klienta, Klienci.imie, Klienci.nazwisko, COUNT(Zamowienia.id_zamowienia) AS liczba_zamowien FROM Klienci LEFT JOIN Zamowienia ON Klienci.id_klienta = Zamowienia.id_klienta GROUP BY Klienci.id_klienta\";<\/code><br \/>\n<code>$result = $conn-&gt;query($sql);<\/code><\/p>\n<p><code>if ($result-&gt;num_rows &gt; 0) {<\/code><br \/>\n<code>echo \"&lt;table&gt;&lt;tr&gt;&lt;th&gt;ID Klienta&lt;\/th&gt;&lt;th&gt;Imi\u0119&lt;\/th&gt;&lt;th&gt;Nazwisko&lt;\/th&gt;&lt;th&gt;Liczba Zam\u00f3wie\u0144&lt;\/th&gt;&lt;\/tr&gt;\";<\/code><br \/>\n<code>while($row = $result-&gt;fetch_assoc()) {<\/code><br \/>\n<code>echo \"&lt;tr&gt;&lt;td&gt;\" . $row[\"id_klienta\"] . \"&lt;\/td&gt;&lt;td&gt;\" . $row[\"imie\"] . \"&lt;\/td&gt;&lt;td&gt;\" . $row[\"nazwisko\"] . \"&lt;\/td&gt;&lt;td&gt;\" . $row[\"liczba_zamowien\"] . \"&lt;\/td&gt;&lt;\/tr&gt;\";<\/code><br \/>\n<code>}<\/code><br \/>\n<code>echo \"&lt;\/table&gt;\";<\/code><br \/>\n<code>} else {<\/code><br \/>\n<code>echo \"Nie znaleziono klient\u00f3w.\";<\/code><br \/>\n<code>}<\/code><br \/>\n<code>$conn-&gt;close();<\/code><br \/>\n<code>?&gt;<\/code><\/p>\n<p><strong>Zadanie 10. Wy\u015bwietl najdro\u017csze zam\u00f3wienie<\/strong><\/p>\n<p>SQL<\/p>\n<p><code><span class=\"hljs-keyword\">SELECT<\/span> <span class=\"hljs-operator\">*<\/span> <span class=\"hljs-keyword\">FROM<\/span> Zamowienia <span class=\"hljs-keyword\">ORDER<\/span> <span class=\"hljs-keyword\">BY<\/span> suma <span class=\"hljs-keyword\">DESC<\/span> LIMIT <span class=\"hljs-number\">1<\/span>;<\/code><\/p>\n<p>Rozwi\u0105zanie:<\/p>\n<p><code>&lt;?php<\/code><br \/>\n<code>$servername = \"localhost\";<\/code><br \/>\n<code>$username = \"username\";<\/code><br \/>\n<code>$password = \"password\";<\/code><br \/>\n<code>$dbname = \"kwiaciarnia\";<\/code><\/p>\n<p><code>$conn = new mysqli($servername, $username, $password, $dbname);<\/code><br \/>\n<code>if ($conn-&gt;connect_error) {<\/code><br \/>\n<code>die(\"Connection failed: \" . $conn's connect_error);<\/code><br \/>\n<code>}<\/code><\/p>\n<p><code>$sql = \"SELECT * FROM Zamowienia ORDER BY suma DESC LIMIT 1\";<\/code><br \/>\n<code>$result = $conn-&gt;query($sql);<\/code><\/p>\n<p><code>if ($result-&gt;num_rows &gt; 0) {<\/code><br \/>\n<code>echo \"&lt;table&gt;&lt;tr&gt;&lt;th&gt;ID Zam\u00f3wienia&lt;\/th&gt;&lt;th&gt;ID Klienta&lt;\/th&gt;&lt;th&gt;Data Zam\u00f3wienia&lt;\/th&gt;&lt;th&gt;Suma&lt;\/th&gt;&lt;th&gt;Status&lt;\/th&gt;&lt;\/tr&gt;\";<\/code><br \/>\n<code>if($row = $result-&gt;fetch_assoc()) {<\/code><br \/>\n<code>echo \"&lt;tr&gt;&lt;td&gt;\" . $row[\"id_zamowienia\"] . \"&lt;\/td&gt;&lt;td&gt;\" . $row[\"id_klienta\"] . \"&lt;\/td&gt;&lt;td&gt;\" . $row[\"data_zamowienia\"] . \"&lt;\/td&gt;&lt;td&gt;\" . $row[\"suma\"] . \"&lt;\/td&gt;&lt;td&gt;\" . $row[\"status\"] . \"&lt;\/td&gt;&lt;\/tr&gt;\";<\/code><br \/>\n<code>}<\/code><br \/>\n<code>echo \"&lt;\/table&gt;\";<\/code><br \/>\n<code>} else {<\/code><br \/>\n<code>echo \"Nie znaleziono zam\u00f3wie\u0144.\";<\/code><br \/>\n<code>}<\/code><br \/>\n<code>$conn-&gt;close();<\/code><br \/>\n<code>?&gt;<\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u017beby lepiej zrozumie\u0107 na czym polega odczyt danych z bazy, warto zrealizowa\u0107 kilka \u0107wicze\u0144.<\/p>\n","protected":false},"author":1,"featured_media":769,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[48,244],"tags":[238,24,67],"class_list":["post-995","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bazy-danych","category-php","tag-crud","tag-mysql","tag-php"],"_links":{"self":[{"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/posts\/995","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/comments?post=995"}],"version-history":[{"count":1,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/posts\/995\/revisions"}],"predecessor-version":[{"id":1089,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/posts\/995\/revisions\/1089"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/media\/769"}],"wp:attachment":[{"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/media?parent=995"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/categories?post=995"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/tags?post=995"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}