Advertisement
Guest User

Untitled

a guest
Apr 9th, 2017
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 15.80 KB | None | 0 0
  1. <html>
  2. <head>
  3.     <title>Лаб5</title>
  4.     <meta http-equiv = "Content-Type" content = "text/html; charset = windows-1251"/>
  5. </head>
  6. <body>
  7.  
  8. <?
  9.     // ЗАДАНИЕ:
  10.     // 1) С помощью PhpMyAdmin (http://localhost/Tools/phpMyAdmin/) создать собственую базу данных
  11.     // 2) Добавить в нее таблицы: студенты (id, имя, фамилия, группа), предметы (id, название), оценки (id предмета, id студента, оценка, дата оценки)
  12.     // 3) Создать запросы к БД и вывести результаты на страницу браузера:
  13. //----------------------------------------------------------------------------------------------------------------------------------------------
  14. // Присоединяем MySQL
  15. //----------------------------------------------------------------------------------------------------------------------------------------------
  16.     $connect = mysql_connect('localhost', 'root', '');      // присоединяемся к MySQL
  17.     mysql_select_db('lab5', $connect);                      // Выбираем Базу Данных
  18.     mysql_query('SET NAMES cp1251');                   // Меняем кодировку
  19. //----------------------------------------------------------------------------------------------------------------------------------------------
  20. // Создаем список студентов
  21. //----------------------------------------------------------------------------------------------------------------------------------------------
  22.     echo "<div style = 'float: left'> Список студентов:"; // Выводим надпись "Список студентов"
  23.     $students_query = "SELECT students.id, students.name, students.surname FROM students"; //Присваиваем переменной "students_query" значения из таблицы "students" (id, name, surname)
  24.     $students_result = mysql_query($students_query) or die('Запрос не удался: ' . mysql_error());  //Посылаем запрос таблице "students" через переменную "students_query"
  25. //----------------------------------------------------------------------------------------------------------------------------------------------
  26. // Заполняем список студентов
  27. //----------------------------------------------------------------------------------------------------------------------------------------------
  28. $examen = $_GET['dropdown'];
  29. echo "<form method='get'>";
  30. echo "<select id='dropdown' name='dropdown' onchange='top.location=this.value'>";
  31. while ($line = mysql_fetch_row($students_result))
  32. {
  33.     echo "<option value='http://exam/?students_id=$line[0]'>";
  34.         echo " <a href = '?students_id=".$line[0]."' style = 'color:blue'> ".$line[1]." ".$line[2]." </a> ";
  35. echo "</option>";
  36. }
  37. echo "</select>";
  38. echo " value = ' ".$examen." ' ";
  39. echo "</form>";
  40.     echo "</div>";
  41. //----------------------------------------------------------------------------------------------------------------------------------------------
  42. // Создаем список групп
  43. //----------------------------------------------------------------------------------------------------------------------------------------------
  44.     echo "<div style = 'float: left; padding-left: 200px'> Список групп:"; // Выводим надпись "Список групп"
  45.     $groups_query = "SELECT students.group FROM students GROUP BY students.group"; //Присваиваем переменной "groups_query" значения из таблицы "students" (group)
  46.     $groups_result = mysql_query($groups_query) or die('Запрос не удался: ' . mysql_error()); //Посылаем запрос таблице "students" через переменную "groups_query"
  47. //----------------------------------------------------------------------------------------------------------------------------------------------
  48. // Заполняем список групп
  49. //----------------------------------------------------------------------------------------------------------------------------------------------
  50.     echo "<ul>"; //Выводим список групп
  51.     while ($line = mysql_fetch_row($groups_result)) //Заполняем переменную "line" значениями из переменной "groups_result"
  52.     {
  53.         echo "<li>";
  54.         echo " <a href = '?students_group=".$line[0]."' style = 'color:blue'> ".$line[0]." ".$line[1]."</a> "; //Выводим строки из таблицы "students"
  55.         echo "</li>";
  56.     }
  57.     echo "<li> <a href = '?students_group=all' style = 'color:blue'> Общий балл</a> </li>"; //Выводим строку общего балла
  58.     echo "</ul>";
  59.     echo "</div>";
  60. //-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  61. //-------------------------------------------------- Первый запрос: Группа ( Список групп: группа, средняя оценка по группе по каждому предмету )----------------------------------------------------------------
  62. //-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  63.     if ($_GET['students_group'] && $_GET['students_group'] == "all")
  64.     {
  65.         $students_group = $_GET['students_group'];  //Обращаемся к переменной "students_group" (получаем значения)
  66.  
  67.         $query = "  SELECT students.group, predmets.name, avg(marks.mark)
  68.                     FROM (students JOIN marks ON students.id = marks.id_student JOIN predmets ON predmets.id = marks.id_predmet)
  69.                     GROUP BY students.group, predmets.name
  70.                     "; //Присваиваем переменной "query"  значение из таблицы "students", "predmets" и "marks"
  71.  
  72.         $result = mysql_query($query) or die('Запрос не удался: ' . mysql_error()); //Посылаем запрос таблице "students" через переменную "query"
  73.  
  74.         $groups_q = "SELECT students.group FROM students GROUP BY students.group"; //Присваиваем переменной "groups_q"  группы из таблицы "students"
  75.         $groups_r = mysql_query($groups_q) or die('Запрос не удался: ' . mysql_error()); //Посылаем запрос таблице "students" через переменную "groups_q"
  76.  
  77.         $predmets_q = "SELECT name FROM predmets"; //Присваиваем переменной "predmets_q"  названия предметов из таблицы "predmets"
  78.         $predmets_r = mysql_query($predmets_q) or die('Запрос не удался: ' . mysql_error()); //Посылаем запрос таблице "predmets" через переменную "predmets_q"
  79.  
  80.         $marks_q = "    SELECT avg(marks.mark)
  81.                     FROM (students JOIN marks ON students.id = marks.id_student JOIN predmets ON predmets.id = marks.id_predmet)
  82.                     GROUP BY students.group, predmets.name
  83.                 "; //Присваиваем переменной "marks_q"  значение из таблицы "students", "predmets" и "marks", и с помощью команды "avg" считает средний балл
  84.  
  85.         $marks_r = mysql_query($marks_q) or die('Запрос не удался: ' . mysql_error()); //Посылаем запрос таблице "marks" через переменную "marks_qv"
  86.  
  87.         echo "<div style = 'float: left; clear:both; padding-top: 50px'>"; //Создаем блок таблицы
  88.         echo "<table border = 2>"; //Создаем таблицу
  89.        
  90.         while ($line[] = mysql_fetch_row($result)) {} //Возвращаем значени. массива "line" значение переенной "result"
  91.         while ($groups[] = mysql_fetch_row($groups_r)) {} //Возвращаем значени. массива "groups" значение переенной "groups_r"
  92.         while ($predmets[] = mysql_fetch_row($predmets_r)) {} //Возвращаем значени. массива "predmets" значение переенной "predmets_r"
  93.         while ($marks[] = mysql_fetch_row($marks_r)) {} //Возвращаем значени. массива "marks" значение переенной "marks_r"
  94.         unset($groups[count($groups)-1]); //Удаляем посчитанное значение групп
  95.         unset($predmets[count($predmets)-1]); //Удаляем посчитанное значение предметов
  96.         unset($marks[count($marks)-1]); //Удаляем посчитанное значение оценок
  97.  
  98.         echo "<tr>";
  99.         echo "<td></td>";
  100.  
  101.            
  102.         foreach ($predmets as $p) //Заполняем значениями "predmets" переменную "p"
  103.         {
  104.             echo "<td> ".$p[0]." </td>"; //Выводим имена столбцов (названия предметов)
  105.         }
  106.    
  107.  
  108.         echo "</tr>";
  109.  
  110.         $j = 0;
  111.         foreach ($groups as $g) //Заполняем значениями "groups" переменную "g"
  112.         {
  113.             echo "<tr>";
  114.             echo "<td> ".$g[0]." </td>";
  115.             for ($i = 0; $i < count($predmets); $i++) //Перебираем посчитанные предметы
  116.             {
  117.                 echo "<td> ".$marks[$i+count($predmets)*$j][0]."</td>"; //Выводим средний балл
  118.             }
  119.             $j++;
  120.             echo "</tr>";  
  121.         }
  122.         echo "</table>";
  123.         echo "</div>";
  124.     }
  125. //-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  126. //------------------------------------------------------- Второй запрос: Общий балл ( Список группы: студент, средняя оценка по всем предметам ) ----------------------------------------------------------------
  127. //-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  128.     if ($_GET['students_group'] && $_GET['students_group'] <> "all")
  129.     {
  130.         $students_group = $_GET['students_group']; //Обращаемся к переменной "students_group" (получаем значения)
  131.  
  132.         $query = "  SELECT students.name, students.surname, avg(marks.mark)  
  133.                     FROM (students JOIN marks ON students.id = marks.id_student)
  134.                     WHERE
  135.                         students.group = '{$students_group}'
  136.                     GROUP BY students.id
  137.                 "; // Присваиваем переменной "query" значение из таблицы "students" и "marks", и с помощью команды "avg" считает средний балл
  138.  
  139.         $result = mysql_query($query) or die('Запрос не удался: ' . mysql_error()); //Посылаем запрос таблице "students" через переменную "query"
  140.  
  141.         echo "<div style = 'clear:both; padding-top: 50px'>"; //Создаем блок таблицы
  142.         echo "<table border = 2>"; //Создаем таблицу
  143.         echo "<tr><td> Имя </td><td> Фамилия </td><td> Средняя оценка </td></tr>"; //Называем столбцы
  144.        
  145.         while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) //Заполняем таблицу переменными "result"
  146.         {
  147.             echo "<tr>";
  148.             foreach ($line as $col_value) //Заполняем значениями "line" переменную "col_value"
  149.             {
  150.                 echo "<td> {$col_value} </td>"; //Выводим значения в таблицу
  151.             }
  152.             echo "</tr>";
  153.         }
  154.         echo "</table>";
  155.         echo "</div>";
  156.     }
  157. //-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  158. //------------------------------------ Третий запрос: Студенты ( Оценки студента за выбранный период: предмет, все оценки с датами за выбранный период ) --------------------------------------------
  159. //-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  160.     if ($_GET['students_id'])
  161.     {
  162.         $students_id = $_GET['students_id']; //Обращаемся к переменной "students_id" (получаем значения)
  163.         $date_start = "2000-01-01"; //Задаем стоковую начальную дату
  164.         $date_end = '2020-01-01'; //Задаем стоковую конечную дату
  165.  
  166.         if ($_GET['date_start'] && $_GET['date_end'])
  167.         {
  168.             $date_start = $_GET['date_start']; //Обращаемся к переменной "date_start" (получаем значения)
  169.             $date_end = $_GET['date_end']; //Обращаемся к переменной "date_end" (получаем значения)
  170.         }
  171.  
  172.         echo "<div style = 'clear:both; padding-top: 50px'>"; //Создаем блок выбора временного интервала и номера студента
  173.         echo "<form method=get>"; //Создаем форму
  174.         echo "<table>"; //Создаем таблицу
  175.        
  176.         echo "<tr>";
  177.         echo "<td align='right'>Номер студента: </td><td><input size='16em' name = 'students_id' value={$students_id}></td>"; //Вводное поля для номера студента
  178.         echo "</tr>";
  179.        
  180.         echo "<tr>";
  181.         echo "<td align='right'>Дата начала: </td><td><input name='date_start' type='date' value={$date_start}></td>"; //Вводное полу для начала интервала
  182.         echo "</tr>";
  183.        
  184.         echo "<tr>";
  185.         echo "<td align='right'>Дата конца: </td><td> <input name='date_end' type='date' value='{$date_end}'/></td>"; //Вводное полу для конца интервала
  186.         echo "</tr>";
  187.        
  188.         echo "<tr>";
  189.         echo "<td></td><td><input type='submit' value = 'Применить'><br><br></form></td>"; //Кнопка "Применить"
  190.         echo "</tr>";
  191.        
  192.         echo "</table>";
  193.  
  194.         $query = "  SELECT students.name, students.surname, predmets.name as predmetname, marks.mark, marks.mark_date
  195.                     FROM predmets JOIN marks ON predmets.id = marks.id_predmet JOIN students ON students.id = marks.id_student
  196.                     WHERE
  197.                         marks.id_student = '{$students_id}'
  198.                         AND marks.mark_date > '{$date_start}'
  199.                         AND marks.mark_date < '{$date_end}'
  200.                 "; // Присваиваем переменной "query" значение из таблицы "students", "predmets" и "marks", и выдает оценки и даты, входящие в заданный диапозон
  201.  
  202.         $result = mysql_query($query) or die('Запрос не удался: ' . mysql_error()); //Посылаем запрос таблице "students" через переменную "query"
  203.  
  204.         echo "<table border = 2>"; //Создаем таблицу
  205.         echo "<tr><td> Имя </td><td> Фамилия </td><td> Предмет </td><td> Оценка </td><td> Дата </td></tr>"; //Называем столбцы
  206.  
  207.         while ($line = @mysql_fetch_array($result, MYSQL_ASSOC)) //Заполняем таблицу переменными "result"
  208.         {
  209.             echo "<tr>";
  210.            
  211.             foreach ($line as $col_value) //Заполняем значениями "line" переменную "col_value"
  212.             {
  213.                 echo "<td> {$col_value} </td>"; //Выводим значения в таблицу
  214.             }
  215.             echo "</tr>";
  216.         }
  217.         echo "</table>";
  218.         echo "</div>";
  219.     }
  220. ?>
  221. </body>
  222. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement