Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- function get_from_excel($patch)//возвращает первый лист книги в виде двумерного размера массива. [n][m], n - столбец, m - строка. $patch - путь к файлу
- {
- require_once "Classes/PHPExcel.php";
- $ar=array();
- $inputFileType = PHPExcel_IOFactory::identify($patch);
- $objReader = PHPExcel_IOFactory::createReader($inputFileType);
- $objPHPExcel = $objReader->load($patch);
- $ar = $objPHPExcel->getActiveSheet()->toArray();
- array_unshift($ar, null);
- $ar = call_user_func_array("array_map", $ar);
- return $ar;
- }
- function add_table($del, $name, $week, $groups, $days, $num, $sub_1, $sub_2, $teach_1, $teach_2, $hall_1, $hall_2)
- {
- $dbname="u4730742_kgdt";//Имя БД
- include("sql.php");
- if($del)
- {
- mysqli_query($sql, "DROP TABLE `$name`;");
- }
- mysqli_query($sql, "
- create table $name(
- `week` int (1) NOT NULL,
- `group` int (2) NOT NULL,
- `day` int (1) NOT NULL,
- `num` int (1) NOT NULL,
- `subj_1` text NOT NULL,
- `subj_2` text NOT NULL,
- `teach_1` text NOT NULL,
- `teach_2` text NOT NULL,
- `hall_1` text NOT NULL,
- `hall_2` text NOT NULL);
- ");
- for($i = 0; $i<=count($num)-1; $i++)
- {
- mysqli_query($sql, "INSERT INTO `$dbname`.`$name` (`week`, `group`, `day`, `num`, `subj_1`, `subj_2`, `teach_1`, `teach_2`, `hall_1`, `hall_2`)
- VALUES ('$week', '$groups[$i]', '$days[$i]', '$num[$i]', '$sub_1[$i]', '$sub_2[$i]', '$teach_1[$i]', '$teach_2[$i]', '$hall_1[$i]', '$hall_2[$i]');");
- }
- }
- function gen_groups($patch)//генерация списка групп из расписания на неделю
- {
- $arr = get_from_excel($patch);
- $y_def = 9;
- $y = $y_def;
- $x_step = 4;
- $y_offset = 52;
- $dbname="news";//Имя БД
- include("sql.php");
- mysqli_query($sql, "DROP TABLE `groups`;");
- mysqli_query($sql, "
- CREATE TABLE `groups` (
- id INT PRIMARY KEY NOT NULL AUTO_INCREMENT ,
- name TEXT NOT NULL
- );
- ");
- for($y; $y<=$y_def+$y_offset; $y+=$y_offset)//семещение на 52 строки для прохода по нижнему блоку
- {
- $end = false;
- $x = 4;
- while ($group=(empty($arr[$x][$y])) ? FALSE : $arr[$x][$y])//проверка выхода из массива по x
- {
- echo $group;
- mysqli_query($sql, "INSERT INTO `groups` (`name`) VALUE('$group');");
- $x+=$x_step;
- }
- }
- }
- function gen_days($patch)
- {
- $arr = get_from_excel($patch);
- $dbname="u4730742_kgdt";//Имя БД
- include("sql.php");
- mysqli_query($sql, "DROP TABLE `days`;");
- mysqli_query($sql, "
- CREATE TABLE `days` (
- id INT PRIMARY KEY NOT NULL AUTO_INCREMENT ,
- name TEXT NOT NULL
- );
- ");
- for($y=11; $y<=51; $y+=8)
- {
- $name=$arr[0][$y];
- mysqli_query($sql, "INSERT INTO `days` (`name`) VALUE('$name');");
- }
- }
- function get_group_id($name)
- {
- include("sql.php");
- $id = mysqli_query($sql, "SELECT id FROM `groups` WHERE name='$name'");
- $row = $id->fetch_row();
- return $row[0];
- }
- function get_day($name)
- {
- include("sql.php");
- $id = mysqli_query($sql, "SELECT id FROM `days` WHERE name='$name'");
- $row = $id->fetch_row();
- return $row[0];
- }
- function create_timetable($patch, $week, $del) //Генерирует таблицу недельного расписания(путь_к_расписанию, неделя(1 2), удалять_ли_существующую)
- {
- //include("PHPDebug.php");
- //$dbg = new PHPDebug();
- $arr = get_from_excel($patch);
- $day = 11;
- $day_offset = 8;
- $line = 9;
- $line_offset = 52;
- $y=11;
- $x=4;
- //структура
- $groups=Array();
- $days=Array();
- $num=Array();
- $group=Array();
- $sub_1=Array();
- $sub_2=Array();
- $teach_1=Array();
- $teach_2=Array();
- $hall_1=Array();
- $hall_2=Array();
- //
- $name='const_table';
- for($j=0; $j<2; $j++)
- {
- while(!empty($arr[0][$y]) && $arr[0][$y] != '')
- {
- $x=4;
- while (!empty($arr[$x][$line]))
- {
- $counter=1;
- $day=$y;
- for($i=$y; $i<=$y+6; $i+=2)
- {
- $groups[]=get_group_id($arr[$x][$line]);
- $days[]=get_day($arr[0][$day]);
- $num[]=$counter;
- $sub_1[]=(empty($arr[$x][$i])) ? '' : $arr[$x][$i];
- $sub_2[]=(empty($arr[$x+2][$i])) ? '' : $arr[$x+2][$i];
- $teach_1[]=(empty($arr[$x][$i+1])) ? '' : $arr[$x][$i+1];
- $teach_2[]=(empty($arr[$x+2][$i+1])) ? '' : $arr[$x+2][$i+1];
- $hall_1[]=(empty($arr[$x+1][$i])) ? '' : $arr[$x+1][$i];
- $hall_2[]=(empty($arr[$x+3][$i])) ? '' : $arr[$x+3][$i];
- $counter++;
- }
- $x+=4;
- }
- $y+=$day_offset;
- }
- $line+=$line_offset;
- $y=$line+2;
- }
- add_table($del, $name, $week, $groups, $days, $num, $sub_1, $sub_2, $teach_1, $teach_2, $hall_1, $hall_2);
- }
- function gen_changes($patch)
- {
- include('./Classes/StrLevel.php');
- $arr = get_from_excel($patch);
- $title = $arr[0][1];
- preg_match_all('/\((.+)\)/', $title, $day);
- $day=_strtoupper($day[1][0]);
- preg_match_all('/(Неделя )(?:([0-9]{1}))/', $title, $week);
- $week=$week[2][0];
- $y=5;
- $groups=Array();
- $num=Array();
- $lessons=Array();
- $teachers=Array();
- $removesubs=Array();
- $subgroups=Array();
- $hall=Array();
- while(!empty($arr[0][$y]) && $arr[0][$y] != '')
- {
- $groups[]=get_group_id($arr[0][$y]);
- $num[]=$arr[1][$y];
- $removesubs[]=$arr[2][$y];
- $subgroups[]=$arr[5][$y];
- $lessons[]=$arr[6][$y];
- $teachers[]=$arr[7][$y];
- $hall[]=$arr[8][$y];
- $y++;
- }
- print_r($groups);
- print_r($num);
- print_r($removesubs);
- print_r($subgroups);
- print_r($lessons);
- print_r($teachers);
- print_r($hall);
- }
- //gen_groups('1week.xls');
- gen_changes('changes.xls');
- //create_timetable('2week.xls', 2, false);
- //gen_days('1week.xls');
- //add_table('lol', Array(1, 2, 3), Array(1, 2, 3), Array(1, 2, 3), Array(1, 2, 3),Array(1, 2, 3),Array(1, 2, 3),Array(1, 2, 3));
- //$tmp = get_from_excel('1week.xls');
- //echo $tmp[0][11];
- //print_r(gen_groups('1week.xls'));
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement