Вывод информации из базы данных MySql на веб страницу
В этом уроке мы научимся выводить из базы данных MySql необходимые нам данные. Я покажу Вам как выводить данные в цикле, а также как вывести данные из базы по определенному запросу.
В двух прошлых уроках мы научились создавать базу данный MySql, а также вносить в нее новые записи из формы веб страницы.
В этом уроке будем учиться выводить информацию, хранящуюся в базе данных MySql на веб страницу.
Мы научимся выводить информацию в цикле. Эти знания могут Вам понадобиться если Вы будете выводить из базы список новостей, заметок или чего-либо подобного.
А также научимся извлекать конкретную запись с учетом запроса пользователя.
Вывод информации из базы данных MySql
Что нам нужно сделать?
1. Мы создадим html файл, в котором будет кнопка для вывода всего списка в цикле и форма для запроса конкретного пользователя из списка.
2. Конкретного пользователя мы будем запрашивать по имени и фамилии (можете запрашивать по имени и e-mail адресу, принцип все равно будет один).
3. В зависимости от того на какую кнопку нажал пользователь (полный список или конкретная запись) будет запускаться соответствующий файл обработчик, который мы также создадим.
4. Файл обработчик будет обрабатывать наш запрос и выводить на экран то, что мы от него потребовали.
1. Итак, создадим новый html файл и назовем его search_user.html Для сохранения будем использовать папку с файлами из прошлого урока “db1” (эту папку Вы можете найти в исходниках к уроку или скачать из исходников прошлого урока. Не забудьте вписывать свои данные в файл connect.php).
Давайте в созданном файле реализуем выбор из двух опций вывода: либо вывести всех пользователей, либо информацию о каком-то конкретном. У нас должно быть две кнопки, каждая будет запускать свой файл обработчик. И еще помимо кнопок нужно два поля, которые будут передавать введенные данные.
Таким образом, код получится следующий:
Добавить пользователяВывод данных
А выглядеть страница будет вот так:
Помимо формы мы поместили в нее ссылку на файл, через который мы можем добавлять пользователей ( см. предыдущий урок). Это для того, чтобы мы могли перемещаться по веб страницам и с легкостью обращаться к любому файлу.
2. Если Вы нажмете на любую из кнопок, то увидите ошибку. Так и должно быть, потому что еще никаких файлов-обработчиков мы не создали, а только прописали их имена в “action”.
Давайте это исправим и создадим первый файл, который будет искать и выводить пользователя по заданным имени и фамилии.
Создадим файл ‘select_user.php’ и разместим его в том же каталоге, что и html файл.
1. В этом файле мы сначала подключим файл “connect.php” (он обеспечит подключение к базе данных MySql).
2. Затем получим значения введенные в поля и поместим их в переменные “$first_name” и “$last_name”.
3. После сформируем запрос для выбора элементов с заданными параметрами из таблицы базы данных MySql.
4. С помощью функции “mysql_query” исполним этот запрос. В качестве результата эта функция возвращает массив, который мы должны разбить на строки. Делает это специальная функция “mysql_fetch_array”. Результат ее работы мы заносим в переменную “$row”.
5. При помощи конструкции “if – else” мы проверяем есть ли запись с введенными параметрами и если есть, то при помощи функции “printf” выводим на экран результат, подставляя в нужное место вывода каждый из параметров записи. Если записи с заданными параметрами нет, то выводим сообщение о том, что в базе данных отсутствуют записи с такими параметрами.
6. В конце страницы вставляем ссылки для перехода обратно в режим поиска, либо для вставки нового элемента в таблицу базы данных MySql.
Вот код всей вышеописанной процедуры:
Selected User Пользователь: " .$row['first_name'] . " " .$row['last_name'] ."Контактные данные
E-mail: " .$row['email'] . "
Facebook: " .$row['facebook'] . "
---------
); > else
");> ?> Вернуться к поиску
Добавить пользователя
Теперь вставьте в таблицу Вашей базы данный несколько записей людей с разными именами и фамилиями и попробуйте скрипт в действии.
Введите сначала существующие параметры – посмотрите результат, потом введите только имя без фамилии (или наоборот), введите несуществующие параметры – протестируйте Ваш скрипт. (Перед тем как начать будьте уверены, что Ваш Денвер запущен).
7. Если Вы поняли принцип того, что мы сделали в файле “select_user.php”, то вывести всех пользователей не составит труда.
Создайте файл “all_users.php” и поместите его в тот же каталог, где лежит файл “search_user.html”.
Отличаем этого файла от предыдущего будет то, что мы не будем передавать никаких параметров из файла “search_user.html”. Мы просто составим запрос к базе данных и попросим вывести все записи из таблицы базы.
А далее вместо конструкции “if – else” мы будем использовать конструкцию “do – while”. Эта конструкция скажет нашей программе выводить записи до тех пор пока они есть в таблице базы. Это и есть вывод данных из базы в цикле.
Итак, пропишите в файле “all_users.php” следующий код:
Selected User Пользователь: " .$row['first_name'] . " " .$row['last_name'] ."Контактные данные
E-mail: " .$row['email'] . "
Facebook: " .$row['facebook'] . "
---------
" ); > while($row = mysql_fetch_array($result)); ?> Вернуться к поиску
Добавить пользователя
Протестируйте кнопку, которая выводит всех пользователей:
Теперь Вы умеете выводить записи из базы данных MySql в цикле и по заданным параметрам. Практическое применение этому Вы найдете практически везде, где речь заходит о php и MySql.
В следующем уроке этой серии я расскажу Вам как можно внести изменения в запись таблицы базы данных, а также удалить запись из веб страницы.
Если Вы еще не подписаны на рассылку, обязательно подпишитесь, чтобы не пропустить все самое интересное.
Также жду Ваших комментариев и пожеланий.
Успехов Вам и до встречи в следующем уроке!
Как вывести данные из БД с помощью php?
Версия PHP 7.0 и выше. Никак не могу вывести данные из БД. Делаю запросы через mysqli, но возникают ошибки. Не подскажете код, который помог бы мне выводить username конкретного пользователя, авторизовавшегося на сайте.
- Вопрос задан более трёх лет назад
- 2995 просмотров
Комментировать
Решения вопроса 1
$link = mysqli_connect('127.0.0.1','root','','base'); $sql = "SELECT * FROM tablepart WHERE user= $user AND reg = $reg"; $obj = mysqli_query($link, $sql); $res = mysqli_fetch_all($obj); var_dump($res);
Ответ написан более трёх лет назад
А как же классика ?) я про escape string )
ну тогда и вот это еще)))
$username = strtr($username, array('_' => '\_', '%' => '\%')); $password = strtr($password, array('_' => '\_', '%' => '\%'));
Ответы на вопрос 1

В PHP 7 убрали mysqli_* , для работы с базой используйте php.net/manual/ru/book.pdo.php
Как вывести на страницу данные из таблиц(ы) БД?
Объясните пожалуйста, можно ли вывести данные из таблицы самым простым способом (не прибегая к всяким сложным циклам и т.д.) ?
На всех примерах используются циклы. Это странно, причём тут циклы, когда надо просто вывести данные на страницу.
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Нужно вывести данные с таблиц по дате на страницу!(дата выбирается на странице )
Сам запрос я написал! А вот сделать его PHP не могу MySql SELECT `prepod`.`family_prepod`.

Как вывести данные с БД на страницу?
Здравствуйте. Имею проблему с выводом данных из БД (mysql) на страницу с помощью Node.js (v.
Как вывести данные из 2х таблиц?
Вот я вывожу id группы. А хотелось бы название, оно в другой таблице(Group) по внешнему ключу.
Как вывести данные из БД django на HTML страницу?
Нужно из БД django вытащить данные в виде таблицы. Способ нашёл только 1, но он не работает. На.
767 / 323 / 157
Регистрация: 26.05.2016
Сообщений: 2,127
цикл еще легче чем выводить данные))
Регистрация: 09.06.2016
Сообщений: 241
Можно привести самый простой пример кода отображения данных из таблицы ?
1112 / 554 / 319
Регистрация: 21.06.2012
Сообщений: 1,854
Получение одного ряда с помощью mysql_fetch_row()
1 2 3 4 5 6 7 8 9 10 11
$result = mysql_query("SELECT id,email FROM people WHERE "); if (!$result) { echo 'Ошибка запроса: ' . mysql_error(); exit; } $row = mysql_fetch_row($result); echo $row[0]; // 42 echo $row[1]; // email ?>
Более одного ряда, уже цикл.
Регистрация: 09.06.2016
Сообщений: 241
Что то не нравится ему эта строка:
$row = mysql_fetch_row($result);
Uncaught Error: Call to undefined function mysql_fetch_row() Stack trace: #0
Добавлено через 20 минут
Возможно не подключены модули, раз для него это неизвестная функция.
Как подключить эту функцию?
327 / 273 / 69
Регистрация: 15.09.2017
Сообщений: 1,250
Скорее всего просто устаревшая функция. Используйте расширение mysqli.
Добавлено через 3 минуты
Что касается основного вопроса, то все зависит от того, что вы хотите вывести. Если данные одной записи, то цикл не нужен, а если нескольких, то делать это без использования цикла скорее всего будет достаточно глупо и неудобно.
Регистрация: 09.06.2016
Сообщений: 241
Спасибо.
Да, действительно, работает mysqli_fetch_array
Только дальше не могу разобраться.
Ввожу например echo $array[1]; — получаю .
Может кодировка не та?
327 / 273 / 69
Регистрация: 15.09.2017
Сообщений: 1,250
Удобнее получать запись в ассоциативном массиве, для чего можно использовать fetch_assoc.
Добавлено через 1 минуту
Хотя fetch_array по умолчанию тоже будут возвращаться осмысленные ключи.
Добавлено через 1 минуту
Сообщение от Nightingale81 
Может кодировка не та?
Может. Или ошибка при получении данных. Без кода трудно сказать.
Регистрация: 09.06.2016
Сообщений: 241
Видимо с кодировкой проблемы. В цифрах нормально выводится.
Наверное можно как то заставить отображать в кириллице.
И потом, я так понимаю, что большинство примеров в интернете с устаревшими функциями. Это плохо.
327 / 273 / 69
Регистрация: 15.09.2017
Сообщений: 1,250
Кодировка может быть неправильно указана в разных местах.
Это может и не касаться базы данных. Русские буквы, записанные в исходном файле, нормально воспроизводятся?
Добавлено через 10 минут
Что касается базы данных, то лучше во всех настройках, при воспроизведении, передаче и хранении использовать одну и ту же кодировку (при хранении допустимо использовать кодировку без «упаковки» кодов символов). Если где-то есть расхождения, попробуйте воспользоваться методом set_charset.
Регистрация: 09.06.2016
Сообщений: 241
В БД кодировка правильная.
Как при запросе из PHP указать кодировку ?
Пробовал mysqli_query(«SET NAMES cp1251»);
— не помогает.
327 / 273 / 69
Регистрация: 15.09.2017
Сообщений: 1,250
Метод set_charset более универсальный, только результат выполнения проверяйте.
Кодировка cp1251 сейчас навряд ли будет фигурировать в конфигурации сервера баз данных, поэтому для единообразия, о котором я писал выше, лучше перейти на utf8. Или у вас собственный сервер и вы можете все настроить под себя? Тут также нужно иметь в виду, что конфигурация задается под наиболее востребованную кодировку, т.е. ради одного сайта вопреки другим этого делать не стоит.
Регистрация: 09.06.2016
Сообщений: 241
Так и не разобрался, как вывести русский текст, что бы отображались не .
Также не понятно, как извлекать данные по id.
Если есть подробная инструкция, просьба дать ссылку, ибо многочасовой поиск ни к чему не привел.
Спасибо.
Добавлено через 3 минуты
База данные создана на:
Charset — utf8
Collation — utf8_general_ci
В php запросе, параметр mysqli_query(«SET NAMES utf8»); — не работает
И как всё таки правильно надо извлекать данные?
Что ни пример смотришь — везде по-разному..
327 / 273 / 69
Регистрация: 15.09.2017
Сообщений: 1,250
Я вам уже два раза назвал наиболее подходящий метод. Что вы прицепились к этому «SET NAMES»?
На мой вопрос про исходный файл тоже ничего не ответили.
Сообщение от Nightingale81 
Также не понятно, как извлекать данные по id.
Добавьте к запросу условие: WHERE `id`=$id . Только тщательно проверяйте значение идентификатора, если будете получать его непосредственно из адреса. Также можно заключить значение в кавычки и проэкранировать его, а потом сравнить длины исходной и полученной из базы данных строк с идентификатором.
Добавлено через 9 минут
Это если числовой идентификатор. Сейчас часто используют текстовые «внешние» идентификаторы.
Регистрация: 09.06.2016
Сообщений: 241
Блин.
Я почему по Вашему создал тему в Разделе «PHP для НОВИЧКОВ» .
Как указывать set_charset .
Если mysqli_query(«set_charset utf8»); — то это ошибка
И потом, WHERE `id`=$id — это куда ставиться? Туда, где SELECT ? или в echo $array[«id»] ??
Дайте ссылку на подробный мануал на русском (если такой есть), как вызывать данные в русской кодировке с примерами.
Добавлено через 1 час 51 минуту
Вроде разобрались.
1 2 3 4 5 6 7
$query =("SELECT * FROM people WHERE >); $result = mysqli_query($link, $query) or die("Ошибка " . mysqli_error($link)); while ($array = mysqli_fetch_array($result)) { echo $array["id"]." ".$array["Fname"]." ".$array["Mname"]." ".$array["Sname"]." ".$array["Age"]; }
— выводится только строчки с ли я понимаю, что для каждой строчки по id — надо писать строку:
$query =("SELECT * FROM people WHERE id>");
А если необходимо собрать, например, для последующего отображения id с 1 по 5 и с 25 по 125 ?
Надо писать 105 строк с запросом?
Или всё таки можно собрать всё и отображать по id диапазонам (в строке с «echo») ?
327 / 273 / 69
Регистрация: 15.09.2017
Сообщений: 1,250
Сообщение от Nightingale81 
Как указывать set_charset .
Приберегите свои эмоции для других целей! Вы создали тему в разделе «PHP: базы данных». Новичок тоже должен знать, что такое метод в программировании, или хотя бы уметь пользоваться поисковиком: «метод set_charset». Расширение mysqli помимо процедурного поддерживает объектно-ориентированный синтаксис. Но, естественно, есть и обычная функция mysqli_set_charset.
Сообщение от Nightingale81 
А если необходимо собрать, например, для последующего отображения id с 1 по 5 и с 25 по 125 ?
Надо писать 105 строк с запросом?
Я вам в самом начале писал, что все зависит от того, что вы хотите вывести. Если вы хотите сформировать страницу с данными из одной записи, вы выбираете по указанному в адресе id одну запись. Если же вы хотите сформировать страницу с данными из нескольких записей (список), вы выбираете диапазон записей по указанному в адресе номеру страницы списка или начальному номеру записи: LIMIT начальный_номер, максимальное_количество .
Добавлено через 30 секунд
Только не путайте номер с идентификатором.
Добавлено через 1 минуту
Несколько записей по id тоже можно выбирать, но обычно делают так, как я написал выше.
Вывод информации из базы данных MySql
1. Мы создадим html файл, в котором будет кнопка для вывода всего списка в цикле и форма для запроса конкретного пользователя из списка.
2. Конкретного пользователя мы будем запрашивать по имени и фамилии (можете запрашивать по имени и e-mail адресу, принцип все равно будет один).
3. В зависимости от того на какую кнопку нажал пользователь (полный список или конкретная запись) будет запускаться соответствующий файл обработчик, который мы также создадим.
4. Файл обработчик будет обрабатывать наш запрос и выводить на экран то, что мы от него потребовали.
1. Итак, создадим новый html файл и назовем его search_user.html Для сохранения будем использовать папку с файлами из прошлого урока “db1” (эту папку Вы можете найти в исходниках к уроку или скачать из исходников прошлого урока. Не забудьте вписывать свои данные в файл connect.php).
Давайте в созданном файле реализуем выбор из двух опций вывода: либо вывести всех пользователей, либо информацию о каком-то конкретном. У нас должно быть две кнопки, каждая будет запускать свой файл обработчик. И еще помимо кнопок нужно два поля, которые будут передавать введенные данные.
Таким образом, код получится следующий:
Добавить пользователя !DOCTYPE>
А выглядеть страница будет вот так:

Помимо формы мы поместили в нее ссылку на файл, через который мы можем добавлять пользователей ( см. предыдущий урок). Это для того, чтобы мы могли перемещаться по веб страницам и с легкостью обращаться к любому файлу.
2. Если Вы нажмете на любую из кнопок, то увидите ошибку. Так и должно быть, потому что еще никаких файлов-обработчиков мы не создали, а только прописали их имена в “action”.
Давайте это исправим и создадим первый файл, который будет искать и выводить пользователя по заданным имени и фамилии.
Создадим файл ‘select_user.php’ и разместим его в том же каталоге, что и html файл.
1. В этом файле мы сначала подключим файл “connect.php” (он обеспечит подключение к базе данных MySql).
2. Затем получим значения введенные в поля и поместим их в переменные “$first_name” и “$last_name”.
3. После сформируем запрос для выбора элементов с заданными параметрами из таблицы базы данных MySql.
4. С помощью функции “mysql_query” исполним этот запрос. В качестве результата эта функция возвращает массив, который мы должны разбить на строки. Делает это специальная функция “mysql_fetch_array”. Результат ее работы мы заносим в переменную “$row”.
5. При помощи конструкции “if — else” мы проверяем есть ли запись с введенными параметрами и если есть, то при помощи функции “printf” выводим на экран результат, подставляя в нужное место вывода каждый из параметров записи. Если записи с заданными параметрами нет, то выводим сообщение о том, что в базе данных отсутствуют записи с такими параметрами.
6. В конце страницы вставляем ссылки для перехода обратно в режим поиска, либо для вставки нового элемента в таблицу базы данных MySql.
Вот код всей вышеописанной процедуры:
Теперь вставьте в таблицу Вашей базы данный несколько записей людей с разными именами и фамилиями и попробуйте скрипт в действии.
Введите сначала существующие параметры – посмотрите результат, потом введите только имя без фамилии (или наоборот), введите несуществующие параметры – протестируйте Ваш скрипт. (Перед тем как начать будьте уверены, что Ваш Денвер запущен).


7. Если Вы поняли принцип того, что мы сделали в файле “select_user.php”, то вывести всех пользователей не составит труда.
Создайте файл “all_users.php” и поместите его в тот же каталог, где лежит файл “search_user.html”.
Отличаем этого файла от предыдущего будет то, что мы не будем передавать никаких параметров из файла “search_user.html”. Мы просто составим запрос к базе данных и попросим вывести все записи из таблицы базы.
А далее вместо конструкции “if — else” мы будем использовать конструкцию “do — while”. Эта конструкция скажет нашей программе выводить записи до тех пор пока они есть в таблице базы. Это и есть вывод данных из базы в цикле.
Итак, пропишите в файле “all_users.php” следующий код:
Протестируйте кнопку, которая выводит всех пользователей:

Теперь Вы умеете выводить записи из базы данных MySql в цикле и по заданным параметрам. Практическое применение этому Вы найдете практически везде, где речь заходит о php и MySql.
В следующем уроке этой серии я расскажу Вам как можно внести изменения в запись таблицы базы данных, а также удалить запись из веб страницы.
Если Вы еще не подписаны на рассылку, обязательно подпишитесь, чтобы не пропустить все самое интересное.
Также жду Ваших комментариев и пожеланий.
Успехов Вам и до встречи в следующем уроке!
Понравилась статья? Поделись с друзьями!
Будьте в курсе новых публикаций на Блоге!
Комментарии к этой статье:
Комментарий добавил(а): Юрий
Дата: 2014-04-11
При нажатии на кнопку «Найти и вывести» пустой экран, остальное все работает.
Комментарий добавил(а): Админ
Дата: 2014-04-11
Проверьте код. Должно работать. А также проверьте, что имя, которое вводите есть в таблице базы.
Комментарий добавил(а): kresh
Дата: 2014-04-14
Действительно ничего не выводит
Комментарий добавил(а): Mishgan
Дата: 2014-04-21
а с русским языком никаких затруднений не должно быть?просто если искать какие либо данные то он не находит их в бд,в бд забиты эти данные на русском языке,английский язык воспринимает хорошо
Комментарий добавил(а): Админ
Дата: 2014-04-22
Иногда действительно бывает проблема с русскими символами. Решается так: нужно сразу после соединения с базой (можно в конце файла connect.php)прописать такой код.
mysql_query («set character_set_client=’cp1251′»); mysql_query («set character_set_results=’cp1251′»); mysql_query («set collation_connection=’cp1251_general_ci'»);
Комментарий добавил(а): Ника
Дата: 2014-05-28
Спасибо! Всё понятно. Всё работает, но русским текстом не работала.
Комментарий добавил(а): Ника
Дата: 2014-05-28
Небольшая поправка: в файле select_user.php не хватает кавычки после
«
———
Комментарий добавил(а): Андрей
Дата: 2014-06-05
Народ помогите сотавить запрос в базу: есть строковый массив (ф,в,к,р — после обработки галочек) и столбец с данными set (а,б,в,к,р,п,н строка с данными в базе может содержать а,в,н по этому полю). Как правильно составить запрос по полю set, (FIND_IN_SET работает только если в искомом массиве только одно значение)
Почему стоит подписаться на обновления блога
Будьте в курсе новых публикаций на Блоге!
