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


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

0x01 graphic

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.

0x01 graphic

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

}

$pole=mysql_fetch_array($wynik);

$id = $pole["id"];

$imie = $pole["imie"];

$nazwisko = $pole["nazwisko"];

$data = $pole["dataur"];

}

}

mysql_close($baza);

}

} else if ($id<>"") {

// ### dopisanie lub uaktualnienie tabeli

if (!eregi("^[0-9]+$",$id)) echo "<br><b>błąd w polu ID:</b>";

else if (!eregi("^[^0-9]+$",$imie)) echo "<br><b>błąd w polu imię</b>";

else if (!eregi("^[^0-9]+$",$nazwisko))

echo "<br><b>błąd w polu nazwisko</b>";

else if (!eregi(

"^(19|20)[0-9][0-9]-([0][1-9]|[1][0-2])-([0-2][1-9]|10|20|30|31)$",

$data)) echo "<br><b>błąd w polu data</b>";

else {

$baza = mysql_connect($nhost, $nuser, $npassword);

if ($baza) {

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

if ($wynik) {

if ($popraw=="") {

$wynik = mysql_query("

INSERT INTO uczniowie VALUES($id,'$imie','$nazwisko','$data')

", $baza);

if ($wynik) {

echo "<br><b>Rekord został dodany</b>";

$id=""; $imie=""; $nazwisko=""; $data="";

}

} else {

$wynik = mysql_query("

UPDATE uczniowie SET id=$id, imie='$imie',

nazwisko='$nazwisko', dataur='$data' where id=$popraw

", $baza);

if ($wynik) {

echo "<br><b>Rekord został uaktualniony</b>"; $popraw="";

$id=""; $imie=""; $nazwisko=""; $data="";

}

}

}

mysql_close($baza);

}

}

}

// ### napis na guziku formularza

if ($popraw<>"") $guzik="Uaktualnij";

else if ($skasuj<>"") $guzik="Przywróć";

else { $guzik="Dodaj"; };

// ### formularze

$fimie = htmlspecialchars(stripslashes($imie));

$fnazwisko = htmlspecialchars(stripslashes($nazwisko));

$formularze = <<<KONIEC

<table border=0><tr><td valign=top>

<form action="admin.php" method="get">

<input type="hidden" name="popraw" value="$popraw">

<table><tr>

<td valign=top>ID:</td>

<td><input type="text" name="id" value="$id"></td>

</tr><tr>

<td valign=top>imię:</td>

<td><input type="text" name="imie" value="$fimie"></td>

</tr><tr>

<td valign=top>nazwisko:</td>

<td><input type="text" name="nazwisko" value="$fnazwisko"></td>

</tr><tr>

<td valign=top>dataur (rrrr-mm-dd):</td>

<td><input type="text" name="data" value="$data"></td>

</tr><tr>

<td>&nbsp;</td>

<td><input type="submit" value=" $guzik "></td>

</tr></table>

</form>

</td><td valign=top>

<form action="admin.php" method="get">

<table bgcolor=#ccccff><tr>

<td valign=top>ID:</td>

<td><input type="text" name="popraw"></td>

</tr><tr>

<td>&nbsp;</td>

<td><input type="submit" value=" uaktualnij "></td>

</tr></table>

</form>

<form action="admin.php" method="get">

<table bgcolor=#ffcccc><tr>

<td valign=top>ID:</td>

<td><input type="text" name="skasuj"></td>

</tr><tr>

<td>&nbsp;</td>

<td><input type="submit" value=" skasuj "></td>

</tr></table>

</form>

</td></tr></table>

KONIEC;

echo $formularze;

// ### pomocniczy fragment, wypisuje dane z bazy na ekran

echo "<hr>";

$baza = mysql_connect($nhost, $nuser, $npassword);

mysql_select_db($nbaza,$baza);

$wynik = mysql_query("SELECT * FROM uczniowie",$baza);

mysql_close($baza);

$wierszy = mysql_num_rows($wynik);

$pol = mysql_num_fields($wynik);

echo "<table cellpadding=0 cellspacing=5><tr>

<td><b>id</b></td><td><b>imię</b></td><td><b>nazwisko</b></td>

<td><b>data</b></td></tr>";

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

$wiersz = mysql_fetch_row($wynik);

echo "<tr>";

for ($j=0;$j<$pol;$j++) echo "<td>".$wiersz[$j]."</td>";

echo "</tr>";

}

echo "</table>";

?>

Przeglądanie, sortowanie, wyszukiwanie

Ta część będzie dostępna dla każdego użytkownika. Będą oni mogli przeglądać bazę posortowaną według dowolnego pola lub wyszukiwać w niej rekordy spełniające określone kryteria. Wyszukiwanie nie jest specjalnie skomplikowane, a w osobnych poradach możesz o nim poczytać szczegółowo.

Prosty formularz pozwala wpisywać słowa i wybierać kolumnę, która będzie przeszukiwana. Można też ustalić jak będą sortowane wyniki - rosnąco lub malejąco. Umieść skrypt na stronie index.php:

<form action="index.php" method="get">

<input type="text" name="x">

<select name="p">

<option>id</option>

<option value="1">imię</option>

<option value="2">nazwisko</option>

<option value="3">data urodzenia</option>

</select>

<select name="o">

<option>rosnąco</option>

<option value="1">malejąco</option>

</select>

<input type="submit" value=" szukaj ">

</form>

<?

$p=trim($_GET["p"]);

$o=trim($_GET["o"]);

$x=trim($_GET["x"]);

$pole="id";

if ($p=="1") $pole="imie";

if ($p=="2") $pole="nazwisko";

if ($p=="3") $pole="dataur";

$order="asc";

if ($o=="1") $order="desc";

$szukaj="";

if ($x<>"") $szukaj="where $pole LIKE \"%$x%\"";

$baza=mysql_connect("localhost", "user", "password");

mysql_select_db("baza1",$baza);

$wynik=mysql_query(

"SELECT * FROM uczniowie $szukaj order by $pole $order",$baza);

mysql_close($baza);

$wierszy = mysql_num_rows($wynik);

$pol = mysql_num_fields($wynik);

echo "<table cellpadding=0 cellspacing=5><tr>

<td><b>id</b></td><td><b>imię</b></td><td><b>nazwisko</b></td>

<td><b>data</b></td></tr>";

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

$wiersz = mysql_fetch_row($wynik);

echo "<tr>";

for ($j=0;$j<$pol;$j++) echo "<td>".$wiersz[$j]."</td>";

echo "</tr>";

}

echo "</table>";

?>

OK. To już w zasadzie wszystko, co jest niezbędne aby można było sprawnie zarządzać bazą zawierającą proste dane o uczniach lub pracownikach. W prosty sposób możesz dodać kolejne pola, zmodyfikować działanie skryptu lub przebudować go według indywidualnych potrzeb.



Wyszukiwarka

Podobne podstrony:
Jak stworzyć prostą wyszukiwarkę dla własnych stron WWW, PHP Skrypty
Jak stworzyć prostą wyszukiwarkę dla własnych stron WWW, PHP Skrypty
Jak stworzyć skuteczny system zarządzania zasobami ludzkimi
Jak stworzyć prostą księgę gości, PHP Skrypty
CMS Jak szybko i łatwo stworzyć stronę WWW i zarządzać nią
CMS Jak szybko i latwo stworzyc strone WWW i zarzadzac nia
CMS Jak szybko i latwo stworzyc strone WWW i zarzadzac nia cmswww
CMS Jak szybko i latwo stworzyc strone WWW i zarzadzac nia cmswww
CMS Jak szybko i latwo stworzyc strone WWW i zarzadzac nia cmswww
CMS Jak szybko i latwo stworzyc strone WWW i zarzadzac nia cmswww
CMS Jak szybko i latwo stworzyc strone WWW i zarzadzac nia 2
CMS Jak szybko i latwo stworzyc strone WWW i zarzadzac nia cmswww
Jak stworzyć własną stronę WWW
jak stworzyc skuteczna strone www
jak stworzyc skuteczna strone www
Jak stworzyc skuteczna strone www
Jak stworzyć formularz, który zapisze?ne do pliku tekstowego,?y potem jego zawartość dołączyć
Jak stworzyc skuteczna strone WWW
Jak stworzyć losowe porady wyświetlające się na stronie WWW, PHP Skrypty

więcej podobnych podstron