Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <html>
- <head>
- <title>Лаб5</title>
- <meta http-equiv = "Content-Type" content = "text/html; charset = windows-1251"/>
- </head>
- <body>
- <?
- // ЗАДАНИЕ:
- // 1) С помощью PhpMyAdmin (http://localhost/Tools/phpMyAdmin/) создать собственую базу данных
- // 2) Добавить в нее таблицы: студенты (id, имя, фамилия, группа), предметы (id, название), оценки (id предмета, id студента, оценка, дата оценки)
- // 3) Создать запросы к БД и вывести результаты на страницу браузера:
- //----------------------------------------------------------------------------------------------------------------------------------------------
- // Присоединяем MySQL
- //----------------------------------------------------------------------------------------------------------------------------------------------
- $connect = mysql_connect('localhost', 'root', ''); // присоединяемся к MySQL
- mysql_select_db('lab5', $connect); // Выбираем Базу Данных
- mysql_query('SET NAMES cp1251'); // Меняем кодировку
- //----------------------------------------------------------------------------------------------------------------------------------------------
- // Создаем список студентов
- //----------------------------------------------------------------------------------------------------------------------------------------------
- echo "<div style = 'float: left'> Список студентов:"; // Выводим надпись "Список студентов"
- $students_query = "SELECT students.id, students.name, students.surname FROM students"; //Присваиваем переменной "students_query" значения из таблицы "students" (id, name, surname)
- $students_result = mysql_query($students_query) or die('Запрос не удался: ' . mysql_error()); //Посылаем запрос таблице "students" через переменную "students_query"
- //----------------------------------------------------------------------------------------------------------------------------------------------
- // Заполняем список студентов
- //----------------------------------------------------------------------------------------------------------------------------------------------
- echo "<select id='dropdown' name='dropdown' onchange='top.location=this.value'>";
- while ($line = mysql_fetch_row($students_result))
- {
- echo "<option value='http://exam/?students_id=$line[0]'>";
- echo " <a href = '?students_id=".$line[0]."' style = 'color:blue'> ".$line[1]." ".$line[2]." </a> ";
- echo "</option>";
- }
- echo "</select>";
- echo "</div>";
- //----------------------------------------------------------------------------------------------------------------------------------------------
- // Создаем список групп
- //----------------------------------------------------------------------------------------------------------------------------------------------
- echo "<div style = 'float: left; padding-left: 200px'> Список групп:"; // Выводим надпись "Список групп"
- $groups_query = "SELECT students.group FROM students GROUP BY students.group"; //Присваиваем переменной "groups_query" значения из таблицы "students" (group)
- $groups_result = mysql_query($groups_query) or die('Запрос не удался: ' . mysql_error()); //Посылаем запрос таблице "students" через переменную "groups_query"
- //----------------------------------------------------------------------------------------------------------------------------------------------
- // Заполняем список групп
- //----------------------------------------------------------------------------------------------------------------------------------------------
- echo "<ul>"; //Выводим список групп
- while ($line = mysql_fetch_row($groups_result)) //Заполняем переменную "line" значениями из переменной "groups_result"
- {
- echo "<li>";
- echo " <a href = '?students_group=".$line[0]."' style = 'color:blue'> ".$line[0]." ".$line[1]."</a> "; //Выводим строки из таблицы "students"
- echo "</li>";
- }
- echo "<li> <a href = '?students_group=all' style = 'color:blue'> Общий балл</a> </li>"; //Выводим строку общего балла
- echo "</ul>";
- echo "</div>";
- //-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- //-------------------------------------------------- Первый запрос: Группа ( Список групп: группа, средняя оценка по группе по каждому предмету )----------------------------------------------------------------
- //-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- if ($_GET['students_group'] && $_GET['students_group'] == "all")
- {
- $students_group = $_GET['students_group']; //Обращаемся к переменной "students_group" (получаем значения)
- $query = " SELECT students.group, predmets.name, avg(marks.mark)
- FROM (students JOIN marks ON students.id = marks.id_student JOIN predmets ON predmets.id = marks.id_predmet)
- GROUP BY students.group, predmets.name
- "; //Присваиваем переменной "query" значение из таблицы "students", "predmets" и "marks"
- $result = mysql_query($query) or die('Запрос не удался: ' . mysql_error()); //Посылаем запрос таблице "students" через переменную "query"
- $groups_q = "SELECT students.group FROM students GROUP BY students.group"; //Присваиваем переменной "groups_q" группы из таблицы "students"
- $groups_r = mysql_query($groups_q) or die('Запрос не удался: ' . mysql_error()); //Посылаем запрос таблице "students" через переменную "groups_q"
- $predmets_q = "SELECT name FROM predmets"; //Присваиваем переменной "predmets_q" названия предметов из таблицы "predmets"
- $predmets_r = mysql_query($predmets_q) or die('Запрос не удался: ' . mysql_error()); //Посылаем запрос таблице "predmets" через переменную "predmets_q"
- $marks_q = " SELECT avg(marks.mark)
- FROM (students JOIN marks ON students.id = marks.id_student JOIN predmets ON predmets.id = marks.id_predmet)
- GROUP BY students.group, predmets.name
- "; //Присваиваем переменной "marks_q" значение из таблицы "students", "predmets" и "marks", и с помощью команды "avg" считает средний балл
- $marks_r = mysql_query($marks_q) or die('Запрос не удался: ' . mysql_error()); //Посылаем запрос таблице "marks" через переменную "marks_qv"
- echo "<div style = 'float: left; clear:both; padding-top: 50px'>"; //Создаем блок таблицы
- echo "<table border = 2>"; //Создаем таблицу
- while ($line[] = mysql_fetch_row($result)) {} //Возвращаем значени. массива "line" значение переенной "result"
- while ($groups[] = mysql_fetch_row($groups_r)) {} //Возвращаем значени. массива "groups" значение переенной "groups_r"
- while ($predmets[] = mysql_fetch_row($predmets_r)) {} //Возвращаем значени. массива "predmets" значение переенной "predmets_r"
- while ($marks[] = mysql_fetch_row($marks_r)) {} //Возвращаем значени. массива "marks" значение переенной "marks_r"
- unset($groups[count($groups)-1]); //Удаляем посчитанное значение групп
- unset($predmets[count($predmets)-1]); //Удаляем посчитанное значение предметов
- unset($marks[count($marks)-1]); //Удаляем посчитанное значение оценок
- echo "<tr>";
- echo "<td></td>";
- foreach ($predmets as $p) //Заполняем значениями "predmets" переменную "p"
- {
- echo "<td> ".$p[0]." </td>"; //Выводим имена столбцов (названия предметов)
- }
- echo "</tr>";
- $j = 0;
- foreach ($groups as $g) //Заполняем значениями "groups" переменную "g"
- {
- echo "<tr>";
- echo "<td> ".$g[0]." </td>";
- for ($i = 0; $i < count($predmets); $i++) //Перебираем посчитанные предметы
- {
- echo "<td> ".$marks[$i+count($predmets)*$j][0]."</td>"; //Выводим средний балл
- }
- $j++;
- echo "</tr>";
- }
- echo "</table>";
- echo "</div>";
- }
- //-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- //------------------------------------------------------- Второй запрос: Общий балл ( Список группы: студент, средняя оценка по всем предметам ) ----------------------------------------------------------------
- //-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- if ($_GET['students_group'] && $_GET['students_group'] <> "all")
- {
- $students_group = $_GET['students_group']; //Обращаемся к переменной "students_group" (получаем значения)
- $query = " SELECT students.name, students.surname, avg(marks.mark)
- FROM (students JOIN marks ON students.id = marks.id_student)
- WHERE
- students.group = '{$students_group}'
- GROUP BY students.id
- "; // Присваиваем переменной "query" значение из таблицы "students" и "marks", и с помощью команды "avg" считает средний балл
- $result = mysql_query($query) or die('Запрос не удался: ' . mysql_error()); //Посылаем запрос таблице "students" через переменную "query"
- echo "<div style = 'clear:both; padding-top: 50px'>"; //Создаем блок таблицы
- echo "<table border = 2>"; //Создаем таблицу
- echo "<tr><td> Имя </td><td> Фамилия </td><td> Средняя оценка </td></tr>"; //Называем столбцы
- while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) //Заполняем таблицу переменными "result"
- {
- echo "<tr>";
- foreach ($line as $col_value) //Заполняем значениями "line" переменную "col_value"
- {
- echo "<td> {$col_value} </td>"; //Выводим значения в таблицу
- }
- echo "</tr>";
- }
- echo "</table>";
- echo "</div>";
- }
- //-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- //------------------------------------ Третий запрос: Студенты ( Оценки студента за выбранный период: предмет, все оценки с датами за выбранный период ) --------------------------------------------
- //-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- if ($_GET['students_id'])
- {
- $students_id = $_GET['students_id']; //Обращаемся к переменной "students_id" (получаем значения)
- $date_start = "2000-01-01"; //Задаем стоковую начальную дату
- $date_end = '2020-01-01'; //Задаем стоковую конечную дату
- if ($_GET['date_start'] && $_GET['date_end'])
- {
- $date_start = $_GET['date_start']; //Обращаемся к переменной "date_start" (получаем значения)
- $date_end = $_GET['date_end']; //Обращаемся к переменной "date_end" (получаем значения)
- }
- echo "<div style = 'clear:both; padding-top: 50px'>"; //Создаем блок выбора временного интервала и номера студента
- echo "<form method=get>"; //Создаем форму
- echo "<table>"; //Создаем таблицу
- echo "<tr>";
- echo "<td align='right'>Номер студента: </td><td><input size='16em' name = 'students_id' value={$students_id}></td>"; //Вводное поля для номера студента
- echo "</tr>";
- echo "<tr>";
- echo "<td align='right'>Дата начала: </td><td><input name='date_start' type='date' value={$date_start}></td>"; //Вводное полу для начала интервала
- echo "</tr>";
- echo "<tr>";
- echo "<td align='right'>Дата конца: </td><td> <input name='date_end' type='date' value='{$date_end}'/></td>"; //Вводное полу для конца интервала
- echo "</tr>";
- echo "<tr>";
- echo "<td></td><td><input type='submit' value = 'Применить'><br><br></form></td>"; //Кнопка "Применить"
- echo "</tr>";
- echo "</table>";
- $query = " SELECT students.name, students.surname, predmets.name as predmetname, marks.mark, marks.mark_date
- FROM predmets JOIN marks ON predmets.id = marks.id_predmet JOIN students ON students.id = marks.id_student
- WHERE
- marks.id_student = '{$students_id}'
- AND marks.mark_date > '{$date_start}'
- AND marks.mark_date < '{$date_end}'
- "; // Присваиваем переменной "query" значение из таблицы "students", "predmets" и "marks", и выдает оценки и даты, входящие в заданный диапозон
- $result = mysql_query($query) or die('Запрос не удался: ' . mysql_error()); //Посылаем запрос таблице "students" через переменную "query"
- echo "<table border = 2>"; //Создаем таблицу
- echo "<tr><td> Имя </td><td> Фамилия </td><td> Предмет </td><td> Оценка </td><td> Дата </td></tr>"; //Называем столбцы
- while ($line = @mysql_fetch_array($result, MYSQL_ASSOC)) //Заполняем таблицу переменными "result"
- {
- echo "<tr>";
- foreach ($line as $col_value) //Заполняем значениями "line" переменную "col_value"
- {
- echo "<td> {$col_value} </td>"; //Выводим значения в таблицу
- }
- echo "</tr>";
- }
- echo "</table>";
- echo "</div>";
- }
- ?>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement