Advertisement
Guest User

Untitled

a guest
Jan 28th, 2018
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.29 KB | None | 0 0
  1. <html>
  2. <head>
  3. <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
  4. <style>
  5. table, tr {
  6. border: 1px solid black;
  7. }
  8. </style>
  9. </head>
  10. <body>
  11. <form method="get" action="example_5(option-select).php">
  12. <select name="professors_names">
  13. <?php
  14.  
  15. // Задаваме хост, потребителско име, парола и име на БД
  16. $host = '127.0.0.1';
  17. $user = '';
  18. $password = 'qwerty';
  19. $db_name = 'student_system';
  20.  
  21. // Създаване на връзка към MySQL.
  22. // В $DBH се съхранява обект от клас mysqli.
  23. $DBH = new mysqli($host, $user, $password, $db_name);
  24. if ($DBH->connect_errno) {
  25. // В случай на неуспешно свързване се извежда съобщението
  26. // за грешка, върнато от MySQL.
  27. print $DBH->connect_error;
  28. // Прекратява изпълнението на програмата.
  29. exit;
  30. }
  31.  
  32. // Задава кодиране на връзката между php и mysql –
  33. // кодова таблица utf8
  34. // (същата като тази, използвана от клиента)
  35. $DBH->query("SET NAMES utf8");
  36.  
  37. // Дефинира се SQL заявката за извличане на данни.
  38. $query = 'SELECT * from Professors';
  39.  
  40. // Изпращаме параметризираната заявка към СУБД
  41. // Създава се обектът $stmt от клас mysqli_stsm
  42. if (!$stmt = $DBH->prepare($query)) {
  43. print $DBH->error;
  44. exit;
  45. }
  46.  
  47. // На всяка итерация от долния цикъл
  48. // се извлича по 1 запис от резултатите.
  49. while ($row = $result->fetch_assoc()) {
  50. // Всеки атрибут в SELECT клаузата става ключ в
  51. // асоциативния масив (в случая $row)
  52. // върнат от fetch_assoc().
  53. if (!empty($_GET['professors_names']) and ($row['SSN'] == $_GET['professors_names'])) {
  54. $selected = 'selected';
  55. } else {
  56. $selected = '';
  57. }
  58. print '<option value="'.$row['SSN'].'" '.$selected.'>'.$row['firstName']." ".$row['lastName']. '</option>';
  59. }
  60.  
  61. // Освобождава паметта, заета от резултата.
  62. $result->free();
  63.  
  64. ?>
  65. </select>
  66. <div><input type="submit" value=" Покажи "></div>
  67. </form>
  68.  
  69. <?php
  70.  
  71. // Дефинира се SQL заявката за извличане на данни
  72.  
  73. if(!empty($_GET['professors_names'])){
  74.  
  75. $query = 'SELECT students.firstName, students.lastName,
  76. evaluation.grade, subjects.name
  77. FROM students, subjects, evaluation, professors
  78. WHERE professors.SSN = ?
  79. AND students.FN = evaluation.FN AND evaluation.SSN=professors.SSN
  80. AND evaluation.subjectId = subjects.id';
  81.  
  82. // Изпращаме параметризираната заявка към СУБД
  83. // Създава се обектът $stmt от клас mysqli_stsm
  84. if (!$stmt = $DBH->prepare($query)) {
  85. print $DBH->error;
  86. exit;
  87. }
  88.  
  89. // Свързваме променливите $firstName,$lastName, която съдържа имената на преподавателите,
  90. // по която търсим с безименния параметър ? в sql заявката.
  91. // Тъй като имената са текст, то аргументите на метода указваме ss.
  92. if (!$stmt->bind_param("s", $_GET['professors_names'])) {
  93. print $DBH->error;
  94. exit;
  95. }
  96.  
  97. // Изпълнява се заявката.
  98. if (!$stmt->execute()) {
  99. // Ако заявката не може да се изпълни се извежда
  100. // съобщение за грешка и се прекратява
  101. // изпълнението на програмата.
  102. print $DBH->error;
  103. exit;
  104. }
  105.  
  106. // Извличаме целия резултат (т.е. всички записи наведнъж), който се буферира в php приложението ни.
  107. // Така приложението ни ще знае броя на върнатите записи и ще освободи заетите от резултата ресурси в СУБД.
  108. // Обектът $result се обработва по същия начин, като при обикновените заявки.
  109. if (!$result = $stmt->get_result()) {
  110. print $DBH->error;
  111. exit;
  112. }
  113.  
  114. if ($result->num_rows<1) {
  115. print('Грешка! Не съществува такъв студент или преподавател!');
  116. }
  117.  
  118. // На всяка итерация от долния цикъл се извлича по 1 запис от резултатите.
  119. while ($row = $result->fetch_assoc()) {
  120. // Всеки атрибут в SELECT клаузата става ключ в
  121. // асоциативния масив (в случая $row)
  122. // върнат от fetch_assoc().
  123. print $row['firstName'].' ';
  124. print $row['lastName'].', ';
  125. print $row['grade'].', ';
  126. print $row['name'].'<br>';
  127. }
  128.  
  129. // Освобождава паметта, заета от резултата.
  130. $result->free();
  131.  
  132. // Освобождава ресурсите в СУБД, заети параметризираната заявка.
  133. $stmt->close();
  134. }
  135. // Затваря връзката към СУБД.
  136. $DBH->close();
  137.  
  138. ?>
  139. </body>
  140. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement