[PHP][MySQL] Jak stworzyć prostą bazę i zarządzać nią przez WWW - dodawać rekordy, edytować dane, kasować/uaktualniać wpisy, sortować wyniki, wyszukiwać?
Chcesz stworzyć prosty system do zarządzania rekordami w bazie danych. Ma on tworzyć bazę i tabelę, umożliwić zmianę wpisów, uaktualnianie danych, kasowanie rekordów, a na stronie WWW zwykły użytkownik powinien mieć możliwość przeglądania bazy danych, sortowania wyników, wyszukiwania w bazie.
Przykładowa baza z uczniami będzie prosta, ale jej założenia są takie same, jak w profesjonalnych systemach do zarządzania zawartością baz danych przez strony WWW.
Wykorzystując opisany tutaj przykład możesz z powodzeniem tworzyć bardziej rozbudowane struktury, jak np. system newsów, płatności, księgi gości, własny blog, katalogi stron WWW czy spisy oprogramowania lub pracowników.
Stwórzmy bazę danych o nazwie baza1, a w niej tabelę o nazwie uczniowie. Niech zawiera 6 pól - id (identyfikator) typu INT, imie i nazwisko typu znakowego CHAR (po 100 znaków wystarczy) i dataur (data urodzenia) typu DATE.
Zakładamy bazę
Poniższy kod uruchom tylko raz. Założy on bazę danych i stworzy tabelę, gdzie będą przechowywane rekordy określonego typu. Najlepiej umieść go w pliku zaloz.php. Oczywiście nic się nie stanie gdy uruchomisz go kilka razy - i tak zadziała tylko raz, ponieważ wielokrotne zakładanie tych samych pól nie będzie możliwe.
<?
$baza = mysql_connect("localhost", "user", "password");
if ($baza) {
//utworzenie bazy danych
$wynik = mysql_query("CREATE DATABASE baza1",$baza);
if ($wynik) echo "Baza została stworzona";
//utworzenie tableli
$wynik = mysql_select_db("baza1",$baza);
if ($wynik) {
$wynik = mysql_query("CREATE TABLE uczniowie (
id INT NOT NULL PRIMARY KEY,
imie CHAR(100) NOT NULL,
nazwisko CHAR(100) NOT NULL,
dataur DATE NOT NULL
)", $baza);
if ($wynik) echo "Tabela została stworzona";
}
mysql_close($baza);
?>
Dodajemy i uaktualniamy rekordy
To najbardziej pracochłonna część skryptu. Pobranie danych jest czynnością złożoną. Trzeba je chociażby wyczyścić ze zbędnych spacji za pomocą funkcji trim(), następnie trzeba wyeliminować ukośniki poprzedzające znaki specjalne, a te znaki zamienić na tzw. encje, czego dokonują funkcje stripslashes() i htmlspecialchars().
Następnie trzeba sprawdzić czy dane są poprawne, co w naszym przykładzie zrealizowałem wykorzystując wyrażenia regularne. Za pomocą eregi() sprawdzam więc czy id zawiera same liczby, czy w imieniu i nazwisku nie ma cyfr, oraz czy data jest w miarę poprawnie wpisana.
Do zarządzania bazą danych stworzyłem trzy formularze. Jeden służy do edytowania i wprowadzania danych, a dwa pozostałe umożliwiają kasowanie lub edycję rekordu o podanum numerze id.
Jeżeli kasujemy rekord, to oprócz skasowania go w bazie danych, warto dla bezpieczeństwa pokazać go w oknie edycji, aby można było go przywrócić gdy okaże się, że jednak nie powinien zostać skasowany. Tego problemu nie ma z poprawianiem rekordu, ponieważ cały czas jest on obecny w bazie.
Na końcu skryptu dodałem jeszcze banalną procedurę pokazywania, które rekordy są już w bazie danych. Będzie to pomocne przy wprowadzaniu rekordów, zanim nabierzesz wprawy w posługowaniu się skryptem lub przy modyfikacji działania programu.
Poniższy kod umieść w pliku admin.php. Aby nikt nie miał do niego dostępu umieść go w katalogu wymagającym podania hasła. Przykłady stosowania haseł znajdziesz w innych poradach.
$nhost="localhost";
$nbaza="baza1";
$nuser="user";
$npassword="password";
$skasuj = trim($_GET["skasuj"]);
$popraw = trim($_GET["popraw"]);
$id = trim($_GET["id"]);
$imie = trim($_GET["imie"]);
$nazwisko = trim($_GET["nazwisko"]);
$data = trim($_GET["data"]);
if ((($skasuj<>"")or($popraw<>""))and($id=="")) {
// ### pobranie rekordu z tabeli oraz kasowanie
if ($popraw<>"") $nr=$popraw; else $nr=$skasuj;
$baza = mysql_connect($nhost, $nuser, $npassword);
$wynik = mysql_select_db($nbaza,$baza);
$wynik = mysql_query("SELECT * FROM uczniowie WHERE id=$nr", $baza);
if (($wynik)and(mysql_num_rows($wynik)>0)) {
if ($skasuj<>"") {
mysql_query("DELETE FROM uczniowie WHERE id=$skasuj", $baza);
echo "<b>Rekord skasowany:</b>";
...
NajlepszeFilmyChomikuj