Jak stworzyć prostą bazę i zarządzać nią przez WWW - dodawać rekordy, edytować dane, kasować uaktualniać wpisy, sortować wyniki, wyszukiwać.doc

(55 KB) Pobierz
[PHP][MySQL] Jak stworzyć prostą bazę i zarządzać nią przez WWW - dodawać rekordy, edytować dane, kasować/uaktualniać wpisy, s

[PHP][MySQL] Jak stworzyć prostą bazę i zarządzać nią przez WWW - dodawać rekordy, edytować dane, kasować/uaktualniać wpisy, sortować wyniki, wyszukiwać?

Problem

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.

Rozwiązanie

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);

  if ($baza) {

    $wynik = mysql_select_db($nbaza,$baza);

    if ($wynik) {

      $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>";

        ...

Zgłoś jeśli naruszono regulamin