Advertisement
Guest User

Untitled

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