Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <html>
- <head>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
- <style>
- table, tr {
- border: 1px solid black;
- }
- </style>
- </head>
- <body>
- <form method="get" action="example_5(option-select).php">
- <select name="professors_names">
- <?php
- // Задаваме хост, потребителско име, парола и име на БД
- $host = '127.0.0.1';
- $user = '';
- $password = 'qwerty';
- $db_name = 'student_system';
- // Създаване на връзка към MySQL.
- // В $DBH се съхранява обект от клас mysqli.
- $DBH = new mysqli($host, $user, $password, $db_name);
- if ($DBH->connect_errno) {
- // В случай на неуспешно свързване се извежда съобщението
- // за грешка, върнато от MySQL.
- print $DBH->connect_error;
- // Прекратява изпълнението на програмата.
- exit;
- }
- // Задава кодиране на връзката между php и mysql –
- // кодова таблица utf8
- // (същата като тази, използвана от клиента)
- $DBH->query("SET NAMES utf8");
- // Дефинира се SQL заявката за извличане на данни.
- $query = 'SELECT * from Professors';
- // Изпращаме параметризираната заявка към СУБД
- // Създава се обектът $stmt от клас mysqli_stsm
- if (!$stmt = $DBH->prepare($query)) {
- print $DBH->error;
- exit;
- }
- // На всяка итерация от долния цикъл
- // се извлича по 1 запис от резултатите.
- while ($row = $result->fetch_assoc()) {
- // Всеки атрибут в SELECT клаузата става ключ в
- // асоциативния масив (в случая $row)
- // върнат от fetch_assoc().
- if (!empty($_GET['professors_names']) and ($row['SSN'] == $_GET['professors_names'])) {
- $selected = 'selected';
- } else {
- $selected = '';
- }
- print '<option value="'.$row['SSN'].'" '.$selected.'>'.$row['firstName']." ".$row['lastName']. '</option>';
- }
- // Освобождава паметта, заета от резултата.
- $result->free();
- ?>
- </select>
- <div><input type="submit" value=" Покажи "></div>
- </form>
- <?php
- // Дефинира се SQL заявката за извличане на данни
- if(!empty($_GET['professors_names'])){
- $query = 'SELECT students.firstName, students.lastName,
- evaluation.grade, subjects.name
- FROM students, subjects, evaluation, professors
- WHERE professors.SSN = ?
- AND students.FN = evaluation.FN AND evaluation.SSN=professors.SSN
- AND evaluation.subjectId = subjects.id';
- // Изпращаме параметризираната заявка към СУБД
- // Създава се обектът $stmt от клас mysqli_stsm
- if (!$stmt = $DBH->prepare($query)) {
- print $DBH->error;
- exit;
- }
- // Свързваме променливите $firstName,$lastName, която съдържа имената на преподавателите,
- // по която търсим с безименния параметър ? в sql заявката.
- // Тъй като имената са текст, то аргументите на метода указваме ss.
- if (!$stmt->bind_param("s", $_GET['professors_names'])) {
- print $DBH->error;
- exit;
- }
- // Изпълнява се заявката.
- if (!$stmt->execute()) {
- // Ако заявката не може да се изпълни се извежда
- // съобщение за грешка и се прекратява
- // изпълнението на програмата.
- print $DBH->error;
- exit;
- }
- // Извличаме целия резултат (т.е. всички записи наведнъж), който се буферира в php приложението ни.
- // Така приложението ни ще знае броя на върнатите записи и ще освободи заетите от резултата ресурси в СУБД.
- // Обектът $result се обработва по същия начин, като при обикновените заявки.
- if (!$result = $stmt->get_result()) {
- print $DBH->error;
- exit;
- }
- if ($result->num_rows<1) {
- print('Грешка! Не съществува такъв студент или преподавател!');
- }
- // На всяка итерация от долния цикъл се извлича по 1 запис от резултатите.
- while ($row = $result->fetch_assoc()) {
- // Всеки атрибут в SELECT клаузата става ключ в
- // асоциативния масив (в случая $row)
- // върнат от fetch_assoc().
- print $row['firstName'].' ';
- print $row['lastName'].', ';
- print $row['grade'].', ';
- print $row['name'].'<br>';
- }
- // Освобождава паметта, заета от резултата.
- $result->free();
- // Освобождава ресурсите в СУБД, заети параметризираната заявка.
- $stmt->close();
- }
- // Затваря връзката към СУБД.
- $DBH->close();
- ?>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement