Skip to content

Instantly share code, notes, and snippets.

@dmitrybubyakin
Created March 22, 2015 19:24
Show Gist options
  • Save dmitrybubyakin/5f982a8f847add835864 to your computer and use it in GitHub Desktop.
Save dmitrybubyakin/5f982a8f847add835864 to your computer and use it in GitHub Desktop.
<?
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 &nbsp&nbsp<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