php get запросы вывод данных из mysql

php get запросы вывод данных из mysql

Сегодня познакомимся с азами языка программирования PHP. Не бойтесь, мы не будем изучать весь язык, а изучим только то, что нам понадобится для работы с датчиками и модулями Ардуино. 
Так как при работе с Ардуино или ESP8266 мы можем передавать данные по протоколам HTTP методами GET или POST. Вот их и изучим. Точнее изучим только GET, так как он проще. 
что такое get запрос.
GET-запрос это обращение к серверу. То есть все данные запроса передаются в адресной строке браузера. 
Запрос принимает следующие параметры: 
Домен, если вы обращаетесь к какой-нибудь странице, то должны указать её имя. Если это index, то его указывать не обязательно.
Например вот такой адрес
http://arduino-kid.ru/dht22.php?a=23&b=5543&c=tefgdf&d=56&e=jhjhghhghfhf 
Это означает, что мы передаём на сервер запрос к домену arduino-kid.ru, странице dht22.php Дальше объявляем глобальные переменные a, b, c, d, e,  с определёнными значениями.
И не важно будут ли это цифры или текст в переменных будет сохранены значения string.
В среднем длина строки GET запроса чуть больше 2000 символов. Разные браузеры могут передавать разное количество символов.
Теперь давайте посмотрим как это всё работает.
Я буду выводить на странице index поэтому у меня просто слеш.

Чтобы не тратить ваше время я набросал немного кода и буду раскомментировать его по ходу действия.
Сначала рассмотрим var_dump
var_dump — Выводит информацию о переменной
В качестве переменной мы подсовываем ему данные из GET  запроса.
И выводим массив переменных из HTTP адреса.
Сначала у нас никаких переменных в запросе нет и массив возвращается пустой.
Теперь дадим ему две переменных Температуру и Влажность и видим, что у нас в массиве появились две STRING переменных и их значения. К каждой из них можно обратиться.
Как я уже говорил переменных может быть много. Вот небольшой пример.

Для вывода массива можно также использовать print_r
print_r — Выводит информацию о переменной в более читаемом и коротком виде.

Теперь уберём лишние переменные и оставим только температуру и влажность.
Теперь присвоим эти значения переменным, чтобы к ним было удобнее обращаться.
Попытаемся показать их на экране. И ничего у нас не выходит, а всё потому что мы не расскомментировали строки отвечающие за вывод на экран.
ECHO - это аналог нашего PRINT, но более удобный. Сначала я указал, что надо перейти на новую строку. Затем вывел текст, потом переменную и снова текст. если вы в ECHO пишите всё в двойных кавычках, то можно туда вставлять и текст, и переменные. 
Видим, что у нас вывелась информация. 
Вроде всё красиво, но есть одно но. Если вы не передадите какое-нибудь из значений, то у вас всё равно будет выводиться текст без значений.
Давайте попробуем что-нибудь придумать.

Например используем empty
empty — Проверяет, пуста ли переменная
Возвращает FALSE, если var существует, и содержит непустое и ненулевое значение. В противном случае возвращает TRUE.
Ничего не выводится, потому что я по ошибке закомментировал переменные температуру и влажность и так как таких переменных нет нам так и пишут.
Вот, вроде всё вывелось. Теперь я удалю значение влажности. Empty стал TRUE и вывел, что не указана влажность. Теперь укажем значение и оно вывелось на экран. Вроде бы всё хорошо, но как всегда есть НО. 
Если ввести 0 то это будет равносильно тому что переменная пустая. Нас это не устраивает, так как температура может быть 0. 
Давайте искать дальше.
Используем isset
isset — Определяет, была ли установлена переменная значением отличным от NULL
Возвращает TRUE, если var определена и значение отличное от NULL, и FALSE в противном случае.
Это нам вообще не подходит, так как переменная определена, а есть там значение или его нет isset не интересует.

Мы не будем рассматривать такие возможности как защита от ввода спецсимволов, удаление вначале или в конце пробелов, и другое. Так как мы получаем только то, что сами передаём.

Остановимся на самом простом и банальном. Проверке на пустоту. Если переменная не пустая, то выводим значение, если нет, не выводим.
В дальнейшем, когда мы будем писать запрос к базе данных на добавление информации, то у нас не должно быть пустых значений. И если нам не передали какое-то значение, то мы не будем добавлять ничего в базу, а можем и поднять тревогу, что что-то отвалилось.

Ну с GET запросами вроде разобрались. Если что не понятно, то спрашивайте.

Теперь давайте выведем все данные из таблицы dht22 созданной в прошлом видео. Если вы его не смотрели, то сейчас самое время. Там же вы сможете посмотреть как создать таблицу и какие поля я там создавал.

Сначала рассмотрим код.
Сначала мы записываем в переменную необходимые данные для соединения с базой.
У вас вместо ip должно быть localhost.
Я неудачно выбрал значения, так как назвал базу, логин и пароль одним именем.
 У вас должно быть так.

$conn = new mysqli("localhost ", "root", "root", "arduino");

Затем идёт проверка на подключение и если она прошла удачно, то вывести сообщение.
Дальше выводим количество строк в таблице.

Теперь выводим все поля из таблицы.
Я сделал вывод разным размером, просто так, для того что бы просто показать как это можно сделать.
Дальше я покажу как вывести эти значения в таблицу. Она будет посимпатичнее чем эта.

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

Это строчки отвечают за закрытие соединения с базой. Я их закомментировал, так как их использование не обязательно, и я их не использую. Но для информации я их вам показал.

Вот так можно выводить информацию в таблицу. Можно сделать активными заголовки столбцов и менять вывод  с новых или старых значений. Ну как везде сделано на сайтах.

Ну вроде бы я всё что хотел сегодня показать, показал.  В одном из следующих видео будет как сделать доступ к локальному серверу с другого компьютера или с телефона. 
Добавление в базу данных реальных значений с температурного датчика соединённого с ESP и вывод значений на экран. Ну и ещё что-нибудь. Пока не придумал.
Ну ладно, до встречи. Увидимся в новых видео. Пока.
 

Скетчи