Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Поиск одной или нескольких записей, удовлетворяющих заданному условию




Для осуществления выборки из таблиц базы данных используется оператор SELECT.

SELECT column_name
FROM table_name;

Пример 1. Пример запроса MySQL для получения только нужных полей в нужной последовательности:

SELECT dt, product_id, amount
FROM m_income;

Пример 2. В этом запросе MySQL символ звездочки (*) использован для вывода всех столбцов таблицы m_product, иначе говоря, для получения всех полей отношения m_product:

SELECT *
FROM m_product;

Пример 3. Инструкция DISTINCT используется для исключения повторяющихся записей и получения множества уникальных записей:

SELECT DISTINCT product_id
FROM m_income;

Пример 4. Инструкция ORDER BY используется для сортировки (упорядочения) записей по значениям определенного поля. Имя поля указывается за инструкцией ORDER BY:

SELECT *
FROM m_income
ORDER BY price;

Пример 5. Инструкция ASC используется как дополнение к инструкции ORDER BY и служит для определения сортировки по возрастанию. Инструкция DESC используется как дополнение к инструкции ORDER BY и служит для определения сортировки по убыванию. В случае, когда ни ASC, ни DESC не указаны, подразумевается наличие ASC (default):

SELECT *
FROM m_income
ORDER BY dt DESC, price;

Пример 6. Для отбора необходимых записей из таблицы пользуются различными логическими выражениями, которые выражают условие отбора. Логическое выражение приводится после инструкции WHERE. Пример получения из таблицы m_income всех записей, для которых значение amount больше 200:

SELECT *
FROM m_income
WHERE amount>200;

Пример 7. Для выражения сложных условий пользуются логическими операциями AND (конъюнкция), OR (дизъюнкция) и NOT (логическое отрицание). Пример запроса MySQL для получения из таблицы m_outcome всех записей, для которых значение amount равно 20 и значение price больше или равно 10:

SELECT dt, product_id, amount, price
FROM m_outcome
WHERE amount=20 AND price>=10;

Пример 8. Для объединения данных двух или более таблиц пользуются инструкциями INNER JOIN, LEFT JOIN, RIGHT JOIN. В следующем примере извлекаются поля dt, product_id, amount, price из таблицы m_income и поле title из таблицы m_product. Запись таблицы m_income соединяется с записью таблицы m_product при равенстве значения m_income.product_id значению m_product.id:

SELECT dt, product_id, title, amount, price
FROM m_income INNER JOIN m_product
ON m_income.product_id=m_product.id;

Пример 9. В этом примере запроса MySQL нужно обратить внимание на две вещи:

1) искомый текст заключен в одинарные кавычки (');

2) дата приведена в формате "Год-Месяц-День".

В других системах формат написания даты может быть другим. Пример вывода информации о поступлении молока 12-го июня 2016 года (обратите внимание на формат даты "2016-6-12"):

SELECT dt, product_id, title, amount, price
FROM m_income INNER JOIN m_product
ON m_income.product_id=m_product.id
WHERE title='Молоко' And dt="2016-6-12";

Пример 10. Инструкция BETWEEN используется для проверки принадлежности некоторому диапазону значений. Запрос MySQL, выводящий информацию о товарах, поступивших между 1-м и 30-м июня 2016 года:

SELECT *
FROM m_income INNER JOIN m_product
ON m_income.product_id=m_product.id
WHERE dt BETWEEN "2016-6-1" And "2016-6-30";

Взаимодействие PHP и MySQL

PHP MySQLi

MySQLi – расширение языка PHP для работы с СУБД MySQL.

Подключение к MySQL

Для подключения к базе данных создается новое mysqli-подключение:

<?php

$mysqli = new mysqli("host", "user", "password", "database");

if ($mysqli->connect_errno) {

echo "Не удалось подключиться к MySQL: (". $mysqli->connect_errno. ") ". $mysqli->connect_error;

}

Здесь:

o host – сетевой адрес сервера БД

o user – имя пользователя

o password – пароль

o database – имя базы данных

Добавим на сайт подключение к базе данных. В нашем случае сетевым адресом host является localhost, именем пользователя user – root, паролем password – “” (пустая строка), именем базы данных database – mysite.

Создадим файл db_connect.php:

<?php

$mysqli = new mysqli("localhost", "root", "", "mysite");

if ($mysqli->connect_errno) {

echo "Не удалось подключиться к MySQL: (". $mysqli->connect_errno. ") ". $mysqli->connect_error;

}

В файле header.php подключим файл 'db_connect.php':

include 'db_connect.php';

Получение данных из БД

Давайте изменим файл header.php. Пусть меню сайта теперь выводится из таблицы pages:

<ul class="menu">

<?php $res = $mysqli->query("SELECT * FROM pages ORDER BY id ASC");

while ($row = $res->fetch_assoc()) {

echo "<li><a href=".$row['link'].">".$row['name']."</a></li>";

}

?>

</ul>

Здесь:

$res = $mysqli->query() – отправка запроса и сохранение его результата в переменную $res

$row = $res->fetch_assoc() - сохраненение верхней строки результата в переменную $row в виде ассоциативного массива. С помощью цикла мы пробегаем по всем строкам результата.

$row['link'] – обращение к конкретной ячейке.

Результат видим на рисунке 180.

Рисунок 180 – Меню сайта

Теперь сделаем так, чтобы содержимое страниц выводилось из таблицы content. Рассмотрим это на примере главной страницы. Для этого в таблицу content добавим новую запись, с содержимым страницы index.php. Не забываем установить pages_id как 1, это соответствует записи главной страницы в таблице pages (см. рис. 181).

Рисунок 181– Добавление содержимого главной страницы в таблицу «content»

Теперь меняем код index.php следующим образом:

<?php

include 'header.php';

?>

<main class="content">

<?php $res = $mysqli->query("SELECT * FROM content WHERE pages_id=1 ORDER BY id ASC");

while ($row = $res->fetch_assoc()) {

echo "<h1>".$row['header']."</h1>";

echo $row['content'];

}

?>

</main>

<?php

include 'footer.php';

?>

Запись данных в БД

Давайте изменим скрипт для отправки отзывов таким образом, чтобы сообщения сохранялись в базе данных. Добавим на страницу response.php сразу после строчки mail($admin_email, $head, $email_text, $from); следующий код:

$content = " Имя: $name

E-mail: $email

Сообщение: $message";

if(!$mysqli->query("INSERT INTO content(header, content, pages_id) VALUES ('".$head."', '".$content."','4')")){

echo "Ошибка: (". $mysqli->errno. ") ". $mysqli->error;

}

Теперь попробуем отправить отзыв, показанный на рисунке 182.

Рисунок 182 – Отправка отзыва

Проверим таблицу content: данные оказались сохранены в ней, см. рисунок 183.

Рисунок 183 – Отзывы в таблице content

Теперь, когда мы храним сообщения в базе, мы можем легко вывести их на страницу «Отзывы». Добавим после строчки </form> следующий код:

<hr>

<?php $res = $mysqli->query("SELECT * FROM content WHERE pages_id=4 ORDER BY id ASC");

while ($row = $res->fetch_assoc()) {

echo "<p>";

echo "<h4>".$row['header']."</h4>";

echo "<pre>".$row['content']."</pre>";

echo "</p>";

echo "<hr>";

}

?>

Результат можно видеть на рисунке 184.

Рисунок184– Вывод отзывов на страницу

Подведем итоги.

Итак, мы познакомились языком PHP в связке с СУБД MySQL как с инструментом разработки динамических веб-сайтов, а также научились устанавливать и настраивать веб-сервер Apache. Ознакомились с клиент-серверной архитектурой передачей данных по сети с использованием протокола HTTP.

Подробно рассмотрен процесс установки веб-сервера Apache, компонент PHP и MySQL, а также phpMyAdmin – программы для работы с MySQL.

В данном разделе рассмотрены основы языка программирования PHP для создания динамических страниц, принципы его работы, синтаксис, типы данных, операторы, управляющие конструкции и основные функции и премеры использования при разработке веб-сайта.

Кроме того, рассмотрены принципы создания реляционной базы данных, особенности языка запросов SQL, использование его конструкций для создания и удаления баз данных, таблиц; изменения таблиц; добавления новых записей в таблицы и так далее. А также узнали, как все тоже самое можно сделать с помощью компонента phpMyAdmin.


Теоретические вопросы

1. Что такое база данных?

2. Что такое СУБД?

3. Серверный язык программирования?

4. Что такое сервер?

5. Что значит «клиент-серверная архитектура»

6. Что такое HTTP?

7. Назовите два метода передачи данных и их основные отличия.

8. Что такое локальный сервер?

9. Что такое интерпретатор?

10. Для чего нужен файл «httpd.conf»?

11. Файл настроек MySQL называется …

12. В каком файле происходит настройка PHP?

13. Как происходит выполнение PHP-файла?

14. Для чего нужны <?php и?>?

15. Что делает конструкция «echo»?

16. Что такое переменная?

17. Что такое область видимости переменной?

18. Перечислите типы данных языка PHP.

19. Что такое константы?

20. Опишите условные управляющие конструкции языка PHP.

21. Опишите циклические управляющие конструкции языка PHP.

22. Что делает конструкция «include»?

23. Что такое функция?

24. Как задаются пользовательские функции

25. Что такое реляционная база данных?

26. Опишите три вида связей между таблицами?

27. Что такое SQL?

28. Возможные операции с данными при помощи СУБД MySQL?

29. Типы данных языка SQL.

30. Запрос на создание базы данных?

31. Запрос на создание таблицы?

32. Запрос на изменение таблицы?

33. Как задать первичный ключ?

34. Как удалить таблицу?

35. Как очистить таблицу?

36. Как вставить в таблицу новую запись?

37. Как удалить запись из таблицы?

38. Как получить записи из таблицы?

39. Как подключиться к базе данных с помощью PHP?


Задания.

Задание 1*.

· Составьте HTTP-запрос к серверу, который запрашивает главную страницу сайта Google.com;

· Предположите, каким может быть ответ сервера, если:

o Путь к главной странице указан верно;

o Путь к главной странице указан ошибочно.

· Составьте HTTP-запрос, отправляющий данные формы методом POST.

· Предположите, каким может быть ответ сервера.

Задание 2.

Установите веб-сервер и компоненты PHP и MySQL, используя материалы, представленные в этой части.

Задание 3.

· Создайте php-страничку.

· Используя циклы, выведите на экран таблицу умножения.

· Напишите функцию, которая бы принимала в качестве значений порядковый номер месяца (от 1 до 12) и день недели, на которое приходится первое число этого месяца. В зависимости от этих параметров выведите на экран календарь, как примере foreach. (Принять, что в феврале 28 дней).

· Усложним задачу, пусть функция принимает год и день недели, который выпал на 1 января. Выведите календарь на весь год.

Задание 4.*

· Создайте сайт из пяти HTML-страниц, с использованием css.

· Измените расширения файлов.

· Создайте отдельные файлы для шапки и подвала сайта, и подключите их на каждой странице.

· Создайте веб-форму.

· Создайте обработчик формы, который бы отправлял данные по e-mail. Как можно модифицировать его, чтобы данные отправлялись бы также на e-mail пользователя?

Задание 5.

Спроектируйте базу данных, в которой бы использовалисьвсе три типа связей между таблицами. Избегайте дублирования данных.

Задание 6.

· Создайте базу данных для вашего сайта.

· В ней создайте 2 таблицы pages и content, точно такие же, как в примере теоретической части.

· Дополнительно создайте еще таблицу для хранения полного текста новостей news, связанную с таблицей content.

Задание 7.

· Создайте подключение к базе данных.

· Выведите меню сайта из базы данных.

· Выведите содержимое всех страниц сайта из базы данных.

· Измените скрипт отправки сообщений таким образом, чтобы информация сохранялась в базе данных и выводилась на страницу «Отзывы».

· Дополнительно для страницы news.php напишите скрипт, который выводил бы список новостей из таблицы content, которые открывались бы полностью при нажатии на ссылку (полный текст новости в таблице news)

Отчет: введение, цель работы, описание страниц со скриншотами, код(которым вы гордитесь), вывод(выполненная цель), список литературы(4-5 источников)

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...