Advertisement
Golden_Rus

Null

Jan 24th, 2017
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 5.90 KB | None | 0 0
  1. <?php
  2.  
  3. function get_from_excel($patch)//возвращает первый лист книги в виде двумерного размера массива. [n][m], n - столбец, m - строка. $patch - путь к файлу
  4. {
  5.     require_once "Classes/PHPExcel.php";
  6.     $ar=array();
  7.     $inputFileType = PHPExcel_IOFactory::identify($patch);
  8.     $objReader = PHPExcel_IOFactory::createReader($inputFileType);
  9.     $objPHPExcel = $objReader->load($patch);
  10.     $ar = $objPHPExcel->getActiveSheet()->toArray();
  11.     array_unshift($ar, null);
  12.     $ar = call_user_func_array("array_map", $ar);
  13.     return $ar;
  14. }
  15.  
  16. function add_table($del, $name, $week, $groups, $days, $num, $sub_1, $sub_2, $teach_1, $teach_2, $hall_1, $hall_2)
  17. {
  18.     $dbname="u4730742_kgdt";//Имя БД
  19.     include("sql.php");
  20.     if($del)
  21.     {
  22.     mysqli_query($sql, "DROP TABLE `$name`;");
  23.     }
  24.     mysqli_query($sql, "
  25.        create table $name(
  26.             `week` int (1) NOT NULL,
  27.             `group` int (2) NOT NULL,
  28.             `day` int (1) NOT NULL,
  29.             `num` int (1) NOT NULL,
  30.             `subj_1` text NOT NULL,
  31.             `subj_2` text NOT NULL,
  32.             `teach_1` text NOT NULL,
  33.             `teach_2` text NOT NULL,
  34.             `hall_1` text NOT NULL,
  35.             `hall_2` text NOT NULL);
  36.    ");
  37.    
  38.     for($i = 0; $i<=count($num)-1; $i++)
  39.     {
  40.         mysqli_query($sql, "INSERT INTO `$dbname`.`$name` (`week`, `group`, `day`, `num`, `subj_1`, `subj_2`, `teach_1`, `teach_2`, `hall_1`, `hall_2`)
  41.         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]');");
  42.     }
  43. }  
  44.  
  45. function gen_groups($patch)//генерация списка групп из расписания на неделю
  46. {
  47.     $arr = get_from_excel($patch);
  48.     $y_def = 9;
  49.     $y = $y_def;
  50.     $x_step = 4;
  51.     $y_offset = 52;
  52.     $dbname="news";//Имя БД
  53.     include("sql.php");
  54.     mysqli_query($sql, "DROP TABLE `groups`;");
  55.     mysqli_query($sql, "
  56.    CREATE TABLE `groups` (
  57.     id INT PRIMARY KEY NOT NULL AUTO_INCREMENT ,
  58.     name TEXT NOT NULL
  59.     );
  60.     ");
  61.     for($y; $y<=$y_def+$y_offset; $y+=$y_offset)//семещение на 52 строки для прохода по нижнему блоку
  62.     {
  63.         $end = false;
  64.         $x = 4;
  65.         while ($group=(empty($arr[$x][$y])) ? FALSE : $arr[$x][$y])//проверка выхода из массива по x
  66.         {
  67.             echo $group;
  68.             mysqli_query($sql, "INSERT INTO `groups` (`name`) VALUE('$group');");
  69.             $x+=$x_step;
  70.         }
  71.     }
  72. }
  73.  
  74. function gen_days($patch)
  75. {
  76.     $arr = get_from_excel($patch);
  77.     $dbname="u4730742_kgdt";//Имя БД
  78.     include("sql.php");
  79.     mysqli_query($sql, "DROP TABLE `days`;");
  80.     mysqli_query($sql, "
  81.    CREATE TABLE `days` (
  82.     id INT PRIMARY KEY NOT NULL AUTO_INCREMENT ,
  83.     name TEXT NOT NULL
  84.     );
  85.     ");
  86.     for($y=11; $y<=51; $y+=8)
  87.     {
  88.         $name=$arr[0][$y];
  89.         mysqli_query($sql, "INSERT INTO `days` (`name`) VALUE('$name');");
  90.     }
  91. }
  92.  
  93. function get_group_id($name)
  94. {
  95.     include("sql.php");
  96.     $id = mysqli_query($sql, "SELECT id FROM `groups` WHERE name='$name'");
  97.     $row = $id->fetch_row();
  98.     return $row[0];
  99. }
  100.  
  101.  
  102. function get_day($name)
  103. {
  104.     include("sql.php");
  105.     $id = mysqli_query($sql, "SELECT id FROM `days` WHERE name='$name'");
  106.     $row = $id->fetch_row();
  107.     return $row[0];
  108. }
  109.  
  110. function create_timetable($patch, $week, $del) //Генерирует таблицу недельного расписания(путь_к_расписанию, неделя(1 2), удалять_ли_существующую)
  111. {
  112.     //include("PHPDebug.php");
  113.     //$dbg = new PHPDebug();
  114.     $arr = get_from_excel($patch);
  115.     $day = 11;
  116.     $day_offset = 8;
  117.     $line = 9;
  118.     $line_offset = 52;
  119.     $y=11;
  120.     $x=4;
  121.     //структура
  122.     $groups=Array();
  123.     $days=Array();
  124.     $num=Array();
  125.     $group=Array();
  126.     $sub_1=Array();
  127.     $sub_2=Array();
  128.     $teach_1=Array();
  129.     $teach_2=Array();
  130.     $hall_1=Array();
  131.     $hall_2=Array();
  132.     //
  133.     $name='const_table';
  134.     for($j=0; $j<2; $j++)
  135.     {
  136.         while(!empty($arr[0][$y]) && $arr[0][$y] != '')
  137.         {
  138.             $x=4;
  139.             while (!empty($arr[$x][$line]))
  140.             {
  141.                 $counter=1;
  142.                 $day=$y;
  143.                 for($i=$y; $i<=$y+6; $i+=2)
  144.                 {
  145.                     $groups[]=get_group_id($arr[$x][$line]);
  146.                     $days[]=get_day($arr[0][$day]);
  147.                     $num[]=$counter;
  148.                     $sub_1[]=(empty($arr[$x][$i])) ? '' : $arr[$x][$i];
  149.                     $sub_2[]=(empty($arr[$x+2][$i])) ? '' : $arr[$x+2][$i];
  150.                     $teach_1[]=(empty($arr[$x][$i+1])) ? '' : $arr[$x][$i+1];
  151.                     $teach_2[]=(empty($arr[$x+2][$i+1])) ? '' : $arr[$x+2][$i+1];
  152.                     $hall_1[]=(empty($arr[$x+1][$i])) ? '' : $arr[$x+1][$i];
  153.                     $hall_2[]=(empty($arr[$x+3][$i])) ? '' : $arr[$x+3][$i];
  154.                     $counter++;
  155.                 }
  156.                 $x+=4;
  157.             }
  158.             $y+=$day_offset;   
  159.         }
  160.         $line+=$line_offset;
  161.         $y=$line+2;
  162.     }
  163.     add_table($del, $name, $week, $groups, $days, $num, $sub_1, $sub_2, $teach_1, $teach_2, $hall_1, $hall_2);
  164. }
  165.  
  166.  
  167. function gen_changes($patch)
  168. {
  169.     include('./Classes/StrLevel.php');
  170.     $arr = get_from_excel($patch);
  171.     $title = $arr[0][1];
  172.     preg_match_all('/\((.+)\)/', $title, $day);
  173.     $day=_strtoupper($day[1][0]);
  174.     preg_match_all('/(Неделя )(?:([0-9]{1}))/', $title, $week);
  175.     $week=$week[2][0];
  176.     $y=5;
  177.     $groups=Array();
  178.     $num=Array();
  179.     $lessons=Array();
  180.     $teachers=Array();
  181.     $removesubs=Array();
  182.     $subgroups=Array();
  183.     $hall=Array();
  184.     while(!empty($arr[0][$y]) && $arr[0][$y] != '')
  185.     {
  186.         $groups[]=get_group_id($arr[0][$y]);
  187.         $num[]=$arr[1][$y];
  188.         $removesubs[]=$arr[2][$y];
  189.         $subgroups[]=$arr[5][$y];
  190.         $lessons[]=$arr[6][$y];
  191.         $teachers[]=$arr[7][$y];
  192.         $hall[]=$arr[8][$y];
  193.         $y++;
  194.     }
  195.     print_r($groups);
  196.     print_r($num);
  197.     print_r($removesubs);
  198.     print_r($subgroups);
  199.     print_r($lessons);
  200.     print_r($teachers);
  201.     print_r($hall);
  202. }
  203. //gen_groups('1week.xls');
  204. gen_changes('changes.xls');
  205. //create_timetable('2week.xls', 2, false);
  206. //gen_days('1week.xls');
  207. //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));
  208. //$tmp = get_from_excel('1week.xls');
  209. //echo $tmp[0][11];
  210. //print_r(gen_groups('1week.xls'));
  211. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement