www.eprace.edu.pl » budynek-inteligentny » Administracja » Edytor systemowy

Edytor systemowy

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.



komentarze

Copyright © 2008-2010 EPrace oraz autorzy prac.