Wszystkie pola z wyborem typów(komputerów, pomieszczeń itp.,) generowane są w oparciu o dane wprowadzone w bazie danych.
Stworzony systemowy edytor ma na celu pomóc i ułatwić zapełnianie bazy danych odpowiednimi wartościami.
W przypadku, gdy użytkownik zaloguje się i posiada odpowiednie prawa zostanie wyświetlony link prowadzący do edytora.
W skład jego wchodzi sześć plików:
doduser.php usunuser.php dodbudynek.php dodkomp.php dodpokoj.php dodsensor.php
Przykładowy widok pliku doduser.php :
Rysunek 5 – Tworzenie nowego konta.
Administrator po wypełnieniu przedstawionego wyżej formularza może założyć wybrane konto. W przypadku, gdy podany login istnieje w bazie, powiadomiony zostanie odpowiednim komunikatem. Jeżeli wybrano typ praw „pełne” a przypadkiem zaznaczono również inne typy wtedy te inne typy są ignorowane podczas zakładania konta i przyznawany jest typ „pełne”. Tak samo dzieje się w przypadku wybranych typów pomieszczeń, czyli jeśli wybrano typ „wszystkie” a zaznaczono też inne np. serwerownia, biórowa i dziekanaty wtedy są one ignorowane podczas zakładania konta i nadawany jest typ „wszystkie”. Oto fragment kodu pliku doduser.php odpowiedzialny za zakładanie nowego konta:
if (isset($_POST['dodaj'])){
$maintable=0;
if(!(empty($_POST['ur']) && empty($_POST['rtypes']))){
$utype=$_POST['utype'];
$login=$_POST['login'];
$pass=$_POST['pass'];
$email=$_POST['email'];
$comment=$_POST['comment'];
$uright=$_POST['ur'];
$rtypes=$_POST['rtypes'];
$db->query("select user_type_id from user_types where user_type='$utype'");
$row=$db->nextrow();
$utype=$row[0];
if(insert_user($db,$utype,$login,$pass,$email,$comment)){
$html->center("Konto utworzone pomyslnie<br>");
$html->history(-1,POWROT);
$id=mysql_insert_id();
if (isalltype($rtypes,16)){
$db->query("insert into room_rights (user_id,room_type_id) values
('$id','16')");
}
else {
foreach ($rtypes as $key=>$rtype){
$db->query("insert into room_rights (user_id,room_type_id) values
('$id','$rtype')");
}
}
if (isalltype($uright,1)){
$db->query("insert into user_rights (user_id,user_right_type_id) values
('$id','1')");
}
else {
foreach ($uright as $key=> $value){
$db->query("insert into user_rights (user_id,user_right_type_id) values
('$id','$value')");
}
}
}
else{
echo "Podany login istnieje w bazie<br>";
$html->center($html->history(-1,POWROT));
}
}
else {
echo "Prosze zaznaczyc prawa uzytkownika i typy pokoi ktore moze ogladac.";
} }
Podobnie jest z usuwaniem użytkownika. Pojawia się lista wszystkich kont, które są w bazie po wybraniu odpowiedniego usuwane są kaskadowo razem z kluczami obcymi wszystkie informacje zawarte w tabelach odnośnie danego użytkownika.
Dodawanie komputerów oraz czujników omówię na przykładzie pliku dodkomp.php dzięki któremu możemy dodawać komputery do wybranych pomieszczeń, gdyż zasady oraz kod programu są bardzo podobne w obydwu przypadkach.
Oto przykładowy wygląd strony:
Rysunek 6 – Dodawanie nowych komputerów – krok 1
Pierwszym krokiem jest wybranie budynku, w którym chcemy dodawać komputery/czujniki oraz typu pomieszczeń, które maja się wyświetlić, aby wybrać odpowiednie pomieszczenie. Jeżeli wybraliśmy typ pomieszczenia, które nie występuje w danym budynku lub dany budynek w ogóle nie posiada żadnych wprowadzonych nazw pomieszczeń w bazie danych powiadamiani jesteśmy odpowiednim komunikatem w przeciwnym wypadku, jeżeli dokonamy odpowiedniego wyboru pojawia się następna strona, na której wybieramy z pośród wyświetlonych nazw odpowiednie pomieszczenie, którego akurat szukamy. Przykład:
Rysunek 7 – Dodawanie komputerów - krok 2
Po wybraniu pomieszczenia, pojawia się formularz, w którym wpisujemy pojedynczo adres(wtedy pole, do którego wpisujemy przedział 2 pozostawiamy puste) lub przedział adresów (wtedy wypełniamy pola przedział 1 i 2, lecz pole 1 nie może mieć wartości wyższej niż pole 2), możemy także zaznaczyć czy dany komputer/y są aktualnie zajmowane lub włączone(defaultowo pola te ustawione są na „nie”) oraz opis komputera, który jest opcjonalny. Oto przykładowa strona:
Rysunek 8 – Dodawanie komputerów – ostatni krok.
Po wypełnieniu formularza zostaje przeprowadzona walidacja danych, tzn. czy poprawnie wprowadzono adres ip (wartości nie mogą przekraczać przedziału 1-255 oraz muszą być wartościami liczbowymi), do czego służy funkcja isipvalue, oto kod funkcji:
function isipvalue($value){
if (is_numeric($value)){
if($value<1 or $value>255){return $ok=0;}
else {
return $ok=1;
}
}
else {echo "Podaj liczbe !";}
}
oraz czy dany adres ip komputera znajduje się już w danym pomieszczeniu, do czego służy funkcja ifipexist, oto kod:
function ifipexist($ip,$dbclassinstance){
$d=$dbclassinstance;
$result=0;
$d->query("select ip from computers where ip='$ip'");
$ok=($d->isempty() ? 1 : 0);
return $ok;
}
Jeżeli chcieliśmy aby został wygenerowany przedział adresów do sprawdzania czy poszczególne adresy znajdują się w bazie służy ten fragment kodu :
$ile=($y-$x);
$fourth=range($x,$y);
for($i=0;$i<=$ile;$i++){//tworzymy adres ip
$ip = $first.".".$second.".".$third.".".$fourth[$i];
if (!ifipexist($ip,$db)){
$cname = $rname."-".$ip; echo $cname." - dodany <br>";
$db->
query(
insert_computer($cname,$ctid,$rname,$ip,$ispwon,$isbusy,$descr));
$dodany=1;
}
else {
$dodany=0;
// $pokazpowrot=1;
echo "Adres juz istnieje. Prosze podac inny adres lub inny przedzial.<br> <a href=\"javascript:history.back()\">Powrot</a>";
break;
}
Jeżeli weryfikacja danych przebiegła pomyślnie adresy zostają dodane do bazy.
Podobnie rzecz ma się odnośnie dodawania typów czujników występujących w danych pomieszczeniach, tyle, że po wybraniu danego pomieszczenia możemy wybrać i przydzielić mu typy czujników określonych w bazie.
Trochę inaczej wygląda to podczas dodawania pomieszczeń do wybranych budynków oraz samych budynków.
Oto przykładowy formularz dodawania pojedynczego pomieszczenia lub grupy nazw pomieszczeń.
Rysunek 9 – Dodawanie nowych pomieszczeń
W rysunku przedstawionym powyżej podajemy nazwę pojedynczego pomieszczenia lub nazwą daną dla danej grupy pomieszczeń, przedział 1 i 2 (jeżeli zostanie wpisany tylko przedział 1 to nazwa będzie np. w-223, jeżeli podamy przedział 2 , tak jak jest to pokazane na rysunku to wygenerowane nazwy pomieszczeń będą składały się s z łańcuchów w-201,w-202,w-203…w-224), wybieramy także typ pomieszczenia z dostępnych powyżej, budynek w którym pomieszczenia się znajdują oraz piętro. Opcjonalnym parametrem jest opis, którego nie musi być. Oto przykładowy fragment kodu odpowiedzialnego za walidacje danych:
if(is_numeric($floor) && is_numeric($x)){
if($x>$y){
echo "Wartosc poczatkowa przadzialu nie moze byc wieksza od jego wartosci koncowej. <br>
<a href=\"javascript:history.back()\">Powrot</a>";
}
else {
require_once('../objects/queries.sql.php');
$ile=($y-$x);
$nazwa=range($x,$y);
for($i=0;$i<=$ile;$i++){//tworzymy pokoj
$name = $a.$nazwa[$i];
if (!ifroomexist($name,$db)){
echo $name;
$db -> Query(insert_room($name,$type,$building_id,$floor,$descr));
$dodany=1;
}
Funkcja ifroomexist sprawdza czy podana nazwa lub zakres nazw istnieją i jest prawie identyczna jak funkcja ifipexist. Oto kod:
Function ifroomexist($rname,$dbclassinstance){
$d=$dbclassinstance;
$result=0;
$d->query("select room_name from rooms where room_name='$rname'");
$ok=($d->isempty() ? 1 : 0);
return $ok;
}
W przypadku podania niepoprawnych danych, czyli jeżeli nazwa pomieszczenia istnieje lub zakres 1 jest większy od zakres 2, lub wartości zakres 1, zakres 2 oraz piętro nie są liczbami użytkownik jest informowany odpowiednim komunikatem.
Wszystkie opisane powyżej opcje Edytora systemu pozwalają na dodawanie wybranych opcji a w przypadku kont użytkowników także na usuwanie. Jeżeli jednak chcemy wprowadzić jakieś poważniejsze modyfikacje bazy musimy skorzystać z monitora MySql. W przyszłości będzie możliwe modyfikowanie bazy danych w zależności od potrzeb użytkowników oraz administratora i dodanie odpowiednich wymaganych funkcjonalności systemu.
Copyright © 2008-2010 EPrace oraz autorzy prac.