Created
March 22, 2015 19:24
-
-
Save dmitrybubyakin/5f982a8f847add835864 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<? | |
session_start(); | |
header("Content-Type: text/html; charset=utf-8"); | |
require("config.php"); | |
require("creator.php"); | |
require("db_action.php"); | |
$db = new DataBase(DB_HOST,DB_USERNAME,DB_PASSWORD,DB_NAME); | |
$action = isset( $_GET['action'] ) ? $_GET['action'] : "homepage"; | |
$username = isset( $_SESSION['username'] ) ? $_SESSION['username'] : "Гость"; | |
$right = isset( $_SESSION['right'] ) ? $_SESSION['right'] : 4;#4 - гость | |
$search_param['name'] = isset( $_GET['name'] ) ? $_GET['name'] : ""; | |
$search_param['year'] = isset( $_GET['year'] ) ? $_GET['year'] : ""; | |
$search_param['publisher'] = isset( $_GET['publisher'] ) ? $_GET['publisher'] : ""; | |
$search_param['subject'] = isset( $_GET['subject'] ) ? $_GET['subject'] : ""; | |
$search_param['subject'] = $search_param['subject']==0?"":$search_param['subject']; | |
$search_param['page'] = isset( $_GET['page'] ) ? $_GET['page'] : 1; | |
$search_param['count'] = 15; | |
$items = isset($_SESSION['username'])? | |
array( | |
'Главная' => '?action=homepage', | |
'Добавить' => array | |
( | |
'Категорию' => '?action=addcat', | |
'Библиотеку' => '?action=addlib', | |
'Дисциплину' => '?action=addsubj', | |
'Книгу' => '?action=addbook' | |
), | |
'Выйти' => 'logout.php' | |
): | |
array( | |
'Главная' => '?action=homepage', | |
'Войти' => URL.'?action=login', | |
'Регистрация' => URL.'?action=regestration' | |
); | |
$pagename = array | |
( | |
'homepage' => 'Главная', | |
'login' => 'Вход', | |
'regestration' => 'Регистрация', | |
'addcat' => 'Добавить категорию', | |
'addbook' => 'Добавить книгу', | |
'addlib' => 'Добавить библиотеку', | |
'addsubj' => 'Добавить дисциплину' | |
); | |
Creator::createHeader($pagename[$action]); | |
Creator::createNavigatin($username,$pagename[$action],$items); | |
switch($action) | |
{ | |
case 'homepage': | |
searchForm($db); | |
table($db,$search_param); | |
break; | |
case 'regestration': | |
regForm($db); | |
break; | |
case 'login': | |
logForm(); | |
break; | |
case 'addlib': | |
libForm(); | |
break; | |
case 'addsubj': | |
subjForm(); | |
break; | |
case 'addcat': | |
catForm(); | |
break; | |
case 'addbook': | |
bookForm($db); | |
break; | |
default: | |
break; | |
} | |
/*$db->open(); | |
for($i=0;$i<100;$i++) | |
$db->query("INSERT INTO `books` (`ID`, `Category_ID`, `Subject_ID`, `Library_ID`, `Autor`, `Name`, `Annotation`, `Book_Count`, `Book_Year`, `Publisher`) VALUES (NULL, '".rand(1,3)."', '".rand(1,5)."', '".rand(1,3)."', 'Author".rand(1,100)."', 'Name".rand(1,100)."', 'Annotation".rand(1,100)."', '".rand(1,100)."', '".rand(1990,2015)."', 'Publisher".rand(1,100)."')"); | |
$db->close();*/ | |
Creator::createFooter(); | |
?> | |
######################################################################################################################################## | |
<? | |
class Creator | |
{ | |
private $action; | |
private $method; | |
private $fields; | |
private $headers; | |
private $rows; | |
public function __construct() | |
{ | |
} | |
public static function createHeader($pagename) | |
{ | |
echo "<!DOCTYPE html>\n<html>\n"; | |
echo " <head>\n"; | |
echo " <meta http-equiv=\"Content-type\" content=\"text/html;charset=UTF-8\">\n"; | |
echo " <title>$pagename</title>\n"; | |
echo " <link rel=\"stylesheet\" href=\"style/style.css\">"; | |
echo " </head>\n"; | |
echo "<body>\n"; | |
echo "<div id=\"wrap\">\n"; | |
} | |
public static function createNavigatin($username,$pagename,$items) | |
{ | |
echo " <div id=\"top\">\n"; | |
echo " <p class=\"ltext\">Вы вошли как <em style=\"text-decoration:underline\">$username</em><span class=\"pagename\">$pagename</span></p>\n"; | |
echo " <ul class=\"nav\">\n"; | |
foreach($items as $key => $value) | |
if(!is_array($value)) | |
echo " <li><a href=\"$value\">$key</a></li>\n"; | |
else | |
{ | |
echo " <li>\n"; | |
echo " <a href=\"#\">$key</a>\n"; | |
echo " <ul class=\"sub_nav\">\n"; | |
foreach($value as $key_ => $value_) | |
echo " <li><a href=\"$value_\">$key_</a></li>\n"; | |
echo " </ul>\n"; | |
echo " </li>\n"; | |
} | |
echo " </ul>\n"; | |
echo " <div style=\"clear:both\"></div>\n"; | |
echo " </div>\n"; | |
echo " <div id=\"con\">\n"; | |
} | |
public static function createFooter() | |
{ | |
echo " </div>\n"; | |
echo " <div id=\"foot\">\n"; | |
echo " <p class=\"copy\">Design by Dima 2015</p>\n"; | |
echo " <div style=\"clear:both\"></div>\n"; | |
echo " </div>\n"; | |
echo "</div>\n</body>\n</html>\n"; | |
} | |
public static function createMsg($msg,$err) | |
{ | |
Creator::createHeader(($err===1?"$msg":"Ошибка")); | |
echo "<div id=\"msg\" style=\"color:".($err===1?"green":"red").";text-align:center\">$msg   <a class=\"link\"href=\"index.php?action=homepage\">Главная</a></div>"; | |
echo "</div>\n</body>\n</html>\n"; | |
} | |
public function createForm($action,$method) | |
{ | |
$this->action = $action; | |
$this->method = $method; | |
$this->fields = null; | |
} | |
public function addTextField($label,$name,$required,$password=false) | |
{ | |
$field= $password!=='search'?" <p class=\"lbl\">$label</p>\n":$field= " $label\n"; | |
$field.=" <input class=\"in_f\" type=\"".($password===true?"password":"text")."\" name=\"$name\""; | |
$field.=($required===true?"required":"")." placeholder=\"$label\">\n"; | |
$this->fields[] = $field; | |
} | |
public function addButton($value) | |
{ | |
$field=" <input class=\"in_f\" type=\"submit\" value=\"$value\">\n"; | |
$this->fields[] = $field; | |
} | |
public function addComboBox($label,$name,$items,$search = false) | |
{ | |
$field= $search?" $label\n":" <p class=\"lbl\">$label</p>\n"; | |
$field.=" <select class=\"in_f\" size=\"1\" name=\"$name\">\n"; | |
if($items) | |
foreach($items as $key => $value) | |
$field.=" <option value=\"$key\">$value</option>\n"; | |
$field.=" </select>\n"; | |
$this->fields[] = $field; | |
} | |
public function addTextArea($label,$name,$rows = 5) | |
{ | |
$field= " <p class=\"lbl\">$label</p>\n"; | |
$field.=" <textarea maxlength=\"250\" class=\"multtxt\" name=\"$name\" rows=\"$rows\" ></textarea>\n"; | |
$this->fields[] = $field; | |
} | |
public function addRadioButton($label,$name,$value,$checked = false) | |
{ | |
$field=" <input type=\"radio\" name=\"$name\" value=\"$value\"".($checked?"checked":"").">".$label."<br>\n"; | |
$this->fields[] = $field; | |
} | |
public function addLink($lnk,$label) | |
{ | |
$field="<a class=\"lnk\" href=\"$lnk\">$label</a>\n"; | |
$this->fields[] = $field; | |
} | |
public function makeForm() | |
{ | |
echo "\n<div class=\"frm\">\n"; | |
echo " <form action=\"$this->action\" method=\"$this->method\">\n"; | |
foreach($this->fields as $field) | |
echo $field; | |
echo " </form>\n"; | |
echo " <div style=\"clear:both\"></div>\n"; | |
echo "</div>\n"; | |
} | |
public function makeSearchForm() | |
{ | |
echo "\n<div class=\"search\">\n"; | |
echo " <form action=\"$this->action\" method=\"$this->method\">\n"; | |
foreach($this->fields as $field) | |
echo $field; | |
echo " </form>\n"; | |
echo " <div style=\"clear:both\"></div>\n"; | |
echo "</div>\n"; | |
} | |
public function addPageButton($lnk,$value) | |
{ | |
$this->fields[] = " <a class=\"lnk\" href=\"$lnk\">$value</a>\n"; | |
} | |
public function makePageForm() | |
{ | |
echo "\n<div class=\"pgn\">\n"; | |
foreach($this->fields as $field) | |
echo $field; | |
echo "</div>\n"; | |
} | |
public function createTable($headers) | |
{ | |
$this->headers = $headers; | |
} | |
public function addRow($row) | |
{ | |
$this->rows[] = $row; | |
} | |
public function makeTable() | |
{ | |
echo "\n<div class=\"tbl\">\n"; | |
echo " <table>\n"; | |
echo " <tr>\n"; | |
$i=1; | |
foreach($this->headers as $th) | |
echo " <th class=\"col".$i++."\">$th</th>\n"; | |
echo " </tr>\n"; | |
if($this->rows) | |
foreach($this->rows as $row) | |
{ | |
echo " <tr>\n"; | |
for($i=0;$i<4;$i++) | |
echo " <td class=\"col".($i+1)."\">$row[$i]</td>\n"; | |
echo " </tr>\n"; | |
} | |
echo " </table>\n"; | |
echo "</div>\n"; | |
echo "<div style=\"height:50px\"></div>\n"; | |
} | |
} | |
function searchForm($db) | |
{ | |
$db->open(); | |
$res = $db->query('SELECT * FROM `subject`'); | |
$items[] = 'Не выбрано'; | |
while($row = mysqli_fetch_assoc($res)) | |
$items[$row['ID']] = $row['Name']; | |
$db->close(); | |
$form = new Creator(); | |
$form->createForm('index.php','get'); | |
$form->addTextField('Название','name',false,'search'); | |
$form->addTextField('Год','year',false,'search'); | |
$form->addTextField('Издательство','publisher',false,'search'); | |
$form->addComboBox('Дисциплина','subject',$items,true); | |
$form->addButton('Поиск'); | |
$form->addLink('index.php?action=addquery','Заявка'); | |
$form->makeSearchForm(); | |
} | |
function paginator($sp,$pagenum,$pagecount) | |
{ | |
$pagenum = $pagenum<1?1:$pagenum; | |
$pagenum = $pagenum>$pagecount?$pagecount:$pagenum; | |
$items = "index.php?name=".$sp['name']."&year=".$sp['year']."&publisher=".$sp['publisher']."&subject=".$sp['subject']."&page="; | |
$form = new Creator(); | |
$pagecount = $pagecount==0?1:$pagecount; | |
if($pagenum==1)$links=array('>' => $pagenum+1,'>>' => $pagecount); | |
if($pagenum==$pagecount)$links=array('<<' => 1,'<' => $pagenum-1); | |
if($pagecount==1)$links=array('#' => '1'); | |
if($pagenum>1 && $pagenum<$pagecount) | |
$links=array('<<' => 1,'<' => $pagenum-1,'>' => $pagenum+1,'>>' => $pagecount); | |
$val = array_values($links); | |
$key = array_keys($links); | |
for($i=count($links)-1;$i>=0;$i--) | |
$form->addPageButton($items.$val[$i],$key[$i]); | |
$form->makePageForm(); | |
} | |
function table($db,$sp) | |
{ | |
$db->open(); | |
$res = $db->query('SELECT * FROM `subject`'); | |
while($row = mysqli_fetch_assoc($res)) | |
$subj[$row['ID']] = $row['Name']; | |
foreach($sp as $value) | |
$value = $db->prepare($value); | |
$sql = "SELECT * FROM `books` WHERE `Name` LIKE '%".$sp['name']."%' | |
AND `Book_Year` LIKE '%".$sp['year']."%' | |
AND `Subject_ID` LIKE '%".$sp['subject']."%' | |
AND `Publisher` LIKE '%".$sp['publisher']."%'"; | |
$page = $sp['page']; | |
$count = $sp['count']; | |
$rows = mysqli_num_rows($db->query($sql)); | |
$start=abs(($page-1)*$count); | |
$res = $db->query($sql." LIMIT $start , $count"); | |
$db->close(); | |
$table = new Creator(); | |
$table->createTable(array('Название','Год','Издательство','Дисциплина')); | |
while($row = mysqli_fetch_assoc($res)) | |
$table->addRow(array($row['Name'],$row['Book_Year'],$row['Publisher'],$subj[$row['Subject_ID']])); | |
$table->makeTable(); | |
if($rows!=0) | |
paginator($sp,$page,ceil($rows/$count)); | |
} | |
function regForm($db) | |
{ | |
$db->open(); | |
$res = $db->query('SELECT * FROM `rights`'); | |
while($row = mysqli_fetch_assoc($res)) | |
$items[$row['ID']] = $row['Name']; | |
$db->close(); | |
$form = new Creator(); | |
$form->createForm('reg.php','post'); | |
$form->addTextField('Ф.И.О.','name',true); | |
$form->addTextField('Логин','login',true); | |
$form->addTextField('Пароль','password',true,true); | |
$form->addComboBox('Права','right',$items); | |
$form->addButton('Регистрация'); | |
$form->makeForm(); | |
} | |
function logForm() | |
{ | |
$form = new Creator(); | |
$form->createForm('log.php','post'); | |
$form->addTextField('Логин','login',true); | |
$form->addTextField('Пароль','password',true,true); | |
$form->addButton('Войти'); | |
$form->makeForm(); | |
} | |
function libForm() | |
{ | |
$form = new Creator(); | |
$form->createForm('addlib.php','post'); | |
$form->addTextField('Название библиотеки','name',true); | |
$form->addButton('Добавить'); | |
$form->makeForm(); | |
} | |
function subjForm() | |
{ | |
$form = new Creator(); | |
$form->createForm('addsubj.php','post'); | |
$form->addTextField('Название дисциплины','name',true); | |
$form->addButton('Добавить'); | |
$form->makeForm(); | |
} | |
function catForm() | |
{ | |
$form = new Creator(); | |
$form->createForm('addcat.php','post'); | |
$form->addTextField('Название категории','name',true); | |
$form->addButton('Добавить'); | |
$form->makeForm(); | |
} | |
function bookForm($db) | |
{ | |
$db->open(); | |
$res = $db->query('SELECT * FROM `category`'); | |
while($row = mysqli_fetch_assoc($res)) | |
$cat[$row['ID']] = $row['Name']; | |
$res = $db->query('SELECT * FROM `library`'); | |
while($row = mysqli_fetch_assoc($res)) | |
$lib[$row['ID']] = $row['Name']; | |
$res = $db->query('SELECT * FROM `subject`'); | |
while($row = mysqli_fetch_assoc($res)) | |
$subj[$row['ID']] = $row['Name']; | |
$db->close(); | |
$form = new Creator(); | |
$form->createForm('addbook.php','post'); | |
$form->addTextField('Название','name',true); | |
$form->addTextField('Автор','autor',true); | |
$form->addComboBox('Категория','cat',$cat); | |
$form->addComboBox('Дисциплина','subj',$subj); | |
$form->addComboBox('Библиотека','lib',$lib); | |
$form->addTextField('Год выпуска','year',true); | |
$form->addTextField('Издательство','publisher',true); | |
$form->addTextArea('Аннотация','annot'); | |
$form->addTextField('Количество','count',true); | |
$form->addButton('Добавить'); | |
$form->makeForm(); | |
} | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment