MySQL - Pobieranie danych
© Copyright by 3bird Projects 2021, http://edukacja.3bird.pl
Przed sekcją <html>
<?php
session_start();
?>
<!DOCTYPE html>
<html lang="pl">
...
Sekcja <head>
<head>
…
<style>
table
{border-style: solid;
border-width: 2px;
width: 100%;
border-collapse: collapse;' }
th
{border-style: solid;
border-color: #000000;
border-width: 2px;
color: #000000;
background-color: #c6c6c6;
text-align: center;}
td
{border-style: solid;
border-width: 1px;
padding: 5px;}
</style>
</head>
Sekcja <body> (wersja podstawowa)
<body>
...
<?php
// Połączenie z bazą danych.
$daneDoPolaczenia = mysqli_connect("localhost", "nazwaUżytkownika", "hasło",
"nazwaBazyDanych");
// lub alternatywnie, jeśli chcemy na stałe otworzyć połączenie:
// $daneDoPolaczenia = new mysqli("localhost", "nazwaUżytkownika", "hasło",
"nazwaBazy");
// Sprawdzamy połączenie.
if ($daneDoPolaczenia === false) {
die("Wystąpił problem z połączeniem z bazą danych: " . mysqli_connect_error());
}
// Definiujemy, co chcemy wyszukać w tabeli daneOsobowe:
$definicjaWyszukiwaniaRekordow = "SELECT * FROM daneOsobowe WHERE Plec='K'";
// Kodowanie połączenia:
// mysqli_set_charset ( $daneDoPolaczenia, 'utf8mb4' );
// lub alternatywnie (gdy mamy na stałe otwarte połączenie):
// $nazwaBazy -> query("SET NAMES utf8mb4");
// lub jeszcze inaczej:
mysqli_query($daneDoPolaczenia, "SET NAMES utf8mb4");
mysqli_query($pułapka);
// Umieszczanie danych w postaci tabelki:
if ($rezultatWyszukiwania = mysqli_query($daneDoPolaczenia,
$definicjaWyszukiwaniaRekordow)) {
if (mysqli_num_rows($rezultatWyszukiwania) > 0) { echo "<table>";
echo "<tr>";
echo "<th>Nazwisko</th>";
echo "<th>Imię</th>";
echo "<th>Miasto</th>";
echo "<th>Wiek</th>";
echo "<th>Płeć</th>";
echo "</tr>";
while($wiersz = mysqli_fetch_array($rezultatWyszukiwania)){
echo "<tr>";
echo "<td>" . $wiersz['Nazwisko'] . "</td>";
echo "<td>" . $wiersz['Imie'] . "</td>";
echo "<td>" . $wiersz['Miasto'] . "</td>";
echo "<td>" . $wiersz['Wiek'] . "</td>";
echo "<td>" . $wiersz['Plec'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysqli_free_result($rezultatWyszukiwania);
} }
// Zamknięcie połączenia:
mysqli_close($daneDoPolaczenia);
?>
</body>
Sekcja <body> (wersja rozszerzona)
<h2>Tabela z danymi</h2>
<p>Wybierz płeć i/lub miasto (wybór jest koniunkcją):</p>
<form action="informatyka-mysql-pobieranie-danych.php" method="post" style="margin- bottom: 1cm;">
<input type="radio" id="kobieta" name="plec" value="K" />
<label for="kobieta">Kobieta</label><br>
<input type="radio" id="mezczyzna" name="plec" value="M" />
<label for="mezczyzna">Mężczyzna</label><br><br><br>
<label for="miasto">Miasto: </label><br><br>
<input type="text" id="miasto" name="miasto" /><br><br>
<input type="submit" value="Pobierz dane..." />
</form>
<?php
// Połączenie z bazą danych.
$daneDoPolaczenia = mysqli_connect("localhost", "nazwaUżytkownika", "hasło",
"nazwaBazyDanych");
// lub alternatywnie, jeśli chcemy na stałe otworzyć połączenie:
// $daneDoPolaczenia = new mysqli("localhost", "rsurma_logger", "Armagedon1",
"rsurma_pobieranie_danych");
// Sprawdzamy połączenie.
if ($daneDoPolaczenia === false) {
die("Wystąpił problem z połączeniem z bazą danych: " . mysqli_connect_error());
}
// Kryteria do wyszukiwania:
if (isset($_POST['plec'])) {
$plecOsoby = $_POST['plec'];
} else {
// Znak % jest w SQL wildcard'em, pełni tę samą funkcję, jaką w systemach pełni *:
$plecOsoby = "%";
}
if ( isset($_POST['miasto']) and !empty($_POST['miasto']) ) {
$miastoZamieszkania = $_POST['miasto'];
} else {
$miastoZamieszkania = "%";
}
echo "<p>Użytkownik wybrał następujące kryteria pobierania danych:</p>";
echo "<ul>";
echo "<li><span class='underline'>Płeć</span>: ";
if ( $plecOsoby == "%" ) {
echo "nie określono";
}
echo " (<b>$plecOsoby</b>).</li>";
echo "<li><span class='underline'>Miasto</span>: ";
if ( $miastoZamieszkania == "%" ) { echo "nie określono";
}
echo " (<b>$miastoZamieszkania</b>).</li>";
echo "</ul>";
// Definiujemy, co chcemy wyszukać w tabeli daneOsobowe:
$definicjaWyszukiwaniaRekordow = "SELECT * FROM daneOsobowe WHERE Plec LIKE '$plecOsoby' AND Miasto LIKE '$miastoZamieszkania'";
// Kodowanie połączenia:
// mysqli_set_charset ( $daneDoPolaczenia, 'utf8mb4' );
// lub alternatywnie (gdy mamy na stałe otwarte połączenie):
// $rsurma_pobieranie_danych -> query("SET NAMES utf8mb4");
// lub jeszcze inaczej:
mysqli_query($daneDoPolaczenia, "SET NAMES utf8mb4");
// Umieszczanie danych w postaci tabelki.
// Jeśli do zmiennej $rezultatWyszukiwania zostało przypisane Połączenie oraz
$definicjaWyszukiwaniaRekordow, wtedy...
if ($rezultatWyszukiwania = mysqli_query($daneDoPolaczenia,
$definicjaWyszukiwaniaRekordow)) {
// Jeśli został znaleziony chociaż jeden rekord spełniający kryteria, to:
if (mysqli_num_rows($rezultatWyszukiwania) > 0) { echo "<table>";
echo "<tr>";
echo "<th>Nazwisko</th>";
echo "<th>Imię</th>";
echo "<th>Miasto</th>";
echo "<th>Wiek</th>";
echo "<th>Płeć</th>";
echo "</tr>";
// Tak długo, jak udaje się wydobyć dane z kolejnych rekordów,
// przypisz je do zmiennej $wiersz, a następnie wypisz każdą komórkę w wierszu:
while($wiersz = mysqli_fetch_array($rezultatWyszukiwania)) { echo "<tr>";
echo "<td>" . $wiersz['Nazwisko'] . "</td>";
echo "<td>" . $wiersz['Imie'] . "</td>";
echo "<td>" . $wiersz['Miasto'] . "</td>";
echo "<td>" . $wiersz['Wiek'] . "</td>";
echo "<td>" . $wiersz['Plec'] . "</td>";
echo "</tr>";
}
echo "</table>";
// Czyści zmienną $rezultatWyszukiwania:
mysqli_free_result($rezultatWyszukiwania);
} } else {
echo "<p style='color: #ff0000;'>Wystąpił błąd! Możliwe przyczyny:</p> <ul style='color: #ff0000;'><li>tabela lub kolumny o tych nazwach nie istnieją;</li><li>ilość nawiasów klamrowych otwierających różni się od ilości nawiasów zamykających.</li></ul>";
}
// Zamknięcie połączenia
mysqli_close($daneDoPolaczenia);
?>
Ostatnia aktualizacja: 23 lutego 2021.