Вывод HTML-таблицы с функцией сортировки на PHP + MySQL
Несколько примеров как вывести данные из БД в таблицу и добавить к ней возможность сортировки.
Итак, простой вывод таблицы и базы:
Вывод:
Результат:
Основной принцип пользовательской сортировки основан на GET параметрах, к ссылке в href добавляется параметр ?sort=xxx со значением текущей сортировки. PHP-скрипт его получает, проверяет и подставляет в SQL-запрос.
Далее рассмотрим его детально на нескольких примерах:
Сортировка в шапке таблицы
Заведем массив $sort_list с ключами и вариантами сортировки, чтобы упростить вывод ссылок заведем функцию sort_link_th() , которая будет их формировать исходя из значения переменной $_GET['sort'] .
Вывод информации из базы данных 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.
Вот код всей вышеописанной процедуры:
Теперь вставьте в таблицу Вашей базы данный несколько записей людей с разными именами и фамилиями и попробуйте скрипт в действии.
Введите сначала существующие параметры – посмотрите результат, потом введите только имя без фамилии (или наоборот), введите несуществующие параметры – протестируйте Ваш скрипт. (Перед тем как начать будьте уверены, что Ваш Денвер запущен).
7. Если Вы поняли принцип того, что мы сделали в файле “select_user.php”, то вывести всех пользователей не составит труда.
Создайте файл “all_users.php” и поместите его в тот же каталог, где лежит файл “search_user.html”.
Отличаем этого файла от предыдущего будет то, что мы не будем передавать никаких параметров из файла “search_user.html”. Мы просто составим запрос к базе данных и попросим вывести все записи из таблицы базы.
А далее вместо конструкции “if – else” мы будем использовать конструкцию “do – while”. Эта конструкция скажет нашей программе выводить записи до тех пор пока они есть в таблице базы. Это и есть вывод данных из базы в цикле.
Итак, пропишите в файле “all_users.php” следующий код:
Протестируйте кнопку, которая выводит всех пользователей:
Теперь Вы умеете выводить записи из базы данных MySql в цикле и по заданным параметрам. Практическое применение этому Вы найдете практически везде, где речь заходит о php и MySql.
В следующем уроке этой серии я расскажу Вам как можно внести изменения в запись таблицы базы данных, а также удалить запись из веб страницы.
Если Вы еще не подписаны на рассылку, обязательно подпишитесь, чтобы не пропустить все самое интересное.
PHP: Как получить и отобразить данные из базы данных в PHP с помощью Ajax
В этом руководстве вы узнаете, как получать и отображать данные из базы данных в PHP с помощью jQuery ajax.
В этом посте мы создадим список клиентов и добавим кнопку просмотра в этот список клиентов. После этого у нас будут извлекаться данные из базы данных при нажатии кнопки просмотра в PHP и отображать данные на веб-странице без перезагрузки всей веб-страницы с помощью jQuery ajax.
Как получить и отобразить данные из базы данных с помощью Ajax без обновления страницы
Выполните следующие шаги для того, чтоб научиться получать и отображать данные из базы данных MySQL в PHP с помощью ajax без перезагрузки веб-страницы:
Шаг 1 — Создать базу данных и таблицу
Прежде всего, перейдите на панель phpmyadmin и создайте базу данных и таблицу, используя следующий запрос sql:
Шаг 2 — Подключение к базе данных MySQL
На этом этапе вы создадите файл с именем mydbCon.php и обновите приведенный ниже код в свой файл.
Следующий код используется для создания подключения к базе данных MySQL в PHP. Кроме того, вы можете использовать PHP-код для подключения к базе данных при извлечении, вставке, обновлении или удалении записей из базы данных MySQL с использованием и без использования ajax:
Шаг 3 — Получить данные списка из базы данных
Отображение данных в таблице HTML.
Итак, создайте файл customers.php и добавьте в него следующий код:
Шаг 4 — Получение и отображение с использованием Ajax без перезагрузки страницы
На этом этапе извлеките данные из базы данных с помощью запроса ajax. Поэтому создайте файл ajax-fetch-record.php и отобразите данные из базы данных с помощью ajax без обновления или перезагрузки всей веб-страницы.
Итак, обновите следующий код в файле ajax-fetch-record.php:
Как получить данные из базы данных на php с помощью ajax и jquery, будет выглядеть как на следующем изображении:
Здесь вы узнали, как получать данные из таблицы MySQL в PHP с помощью jQuery ajax без перезагрузки или обновления всей веб-страницы.
Выводим данные из БД MySQL в PHP
В предыдущей статье мы рассмотрели возможность вывода записей MySQL с помощью SQL-запросов. При этом, результаты отображались на странице веб-приложения phpMyAdmin.
Такой способ получения данных полезен для просмотра содержимого БД MySQL, но явно недостаточен для того, чтобы можно было их использовать для работы сайта. В этом случае, вместо приложения phpMyAdmin, требуются другие инструменты.
В сайтостроении для этих целей обычно используют язык программирования PHP, где с помощью модуля MySQLi данные можно извлекать непосредственно в PHP. А, далее с ними работать как с обычными переменными.
Следует отметить, что наиболее часто встречающиеся PHP-функции, предназначенные для вывода данных из таблиц MySQL, по виду возвращаемого результата можно разделить на три варианта:
- когда результатом выполнения SQL-запроса может быть лишь только одна строка;
- в случае, если результатом выборки может быть множество строк.
- при выполнении запроса на проверку наличия записи в таблице по заданному условию.
В первом случае PHP-функцией возвращается одномерный ассоциативный массив, ключами которого будут являться наименования полей таблицы.
В варианте со множеством строк на выходе получается двумерный массив, в котором первый ключ определяет порядковый номер строки из набора, а второй — наименования полей.
В случае поверки наличия записи в таблице, функция возвращает значение переменной типа «bool», где «TRUE» — запись существует, «FALSE» — отсутствует.
При этом, на основе приведенных здесь вариантов PHP-кода можно получать различные функции под конкретные задачи, меняя для этого лишь текст SQL-запроса и соответствующие параметры.
Следует отметить, что для того, чтобы в создаваемых функциях более наглядно была показана связка языков PHP и SQL, во всех рассматриваемых здесь вариантах будут сознательно использованы те же самые SQL-запросы, которые применялись в предыдущей статье Выводим данные из БД MySQL с помощью SQL-запросов.
Таким образом, мы рассмотрим наиболее часто используемые варианты PHP-функций, предназначенных для вывода данных MySQL, и с помощью соответствующих PHP-скриптов перенесем полученные результаты на на экран браузера.
- Вывод одиночной строки (использование одномерного массива)
- Вывод набора строк по заданному условию (использование двумерного массива)
- Проверка наличия записи в таблице
- Исходные файлы сайта
Вывод одиночной строки (использование одномерного массива)
С начала создадим функцию, с помощью которой в PHP получим нужную строку, а затем выведем ее на HTML-страницу.
Для этого, как было ранее сказано, будем использовать тот же самый SQL-запрос, который рассматривался в предыдущей статье, а именно: «SELECT * FROM `url` WHERE `url`=’poluchity-skidku'». Только вместо конкретного наименования таблицы «url», одноименного имени поля «url» и его значения «poluchity-skidku» укажем переменные PHP, скажем, «$table», «$column» и «$value», соответственно.
Данные переменные будут являться параметрами создаваемой функции, что позволит в SQL-запросе применять значения, которые будет указаны при ее вызове. Такое использование переменных в параметрах функции сделает ее универсальной для поиска записей в любой таблице. В данном случае с условием, что поиск записи в таблицах будет выполняться всего лишь по одному значению одного поля.
Аналогичные универсальные функции можно составить и для других вариантов условий, что исключит необходимость каждый раз составлять новые скрипты под конкретные задачи.
Кроме того, при создании функции возьмем за основу код, который был составлен для записи данных в предыдущей статье (рис.9).
Но, теперь будем применять запрос не для ввода, а для вывода данных. К этому добавим также вызов метода «fetch_assoc()» модуля MySQLi PHP для преобразования полученной строки в ассоциативный массив. Для того, чтобы ключами для доступа к значеням его элементов являлись наименования полей таблицы.
После соответствующих преобразований PHP-код функции, в которой будет извлекаться из таблицы первая найденная строка (в нашем случае она единственная), примет следующий вид.
//—-Функция вывода одиночной записи————-
function getLine ($table, $column, $value) <
global $mysqli;
if ( !$result = $mysqli -> query ( «SELECT * FROM `$table` WHERE `$column`=’$value‘» )) <
die (‘При извлечении записей возникла ошибка: ‘ .$mysqli->errno. ‘ — ‘ .$mysqli->error );
return $result-> fetch_assoc ();
Рис.1 Функция вывода одиночной строки
Если сравнить этот код с предыдущей функцией, то можно увидеть некоторые изменения и дополнения, которые заключаются в следующем:
- заменено название функции и ее параметры (поз.3) — теперь она обозначается «getLine», а в качестве параметров используются значения переменных «$table», «$column» и «$value»;
- в методе выполнения запроса к базе данных «query» модуля MySQLi PHP (поз.5) теперь применен SQL-запрос на вывод данных с условием, что значение переменной поля «$column» выбранной строки должно соответствовать значению «$value»;
- заменен текст сообщения (поз.6), который выводиться на экран браузера в случае возникновении ошибки при выполнении запроса;
В итоге, с помощью вызова объектом «$result» метода «fetch_assoc()» (поз.8) будет возвращена найденная запись в виде ассоциативного массива.
А теперь содержимое этого массива с помощью PHP-кода перенесем на HTML-страницу. И сделаем это, разместив в начале главной страницы в файле «index.php» следующий PHP-код:
echo «Проверка вывода одиночной строки:» ;
$data_bd = getLine ($table, $column, $value);
$title = $data_bd[ «title» ];
$file = $data_bd[ «file» ];
$url = $data_bd[ «url» ];
echo nl2br ( «\n». $id .»/». $title .»/». $file .»/». $url);
Рис.2 PHP-код для переноса одиночной строки на страницу сайта
Здесь, в начале переменным «$table», «$column» и «$value», которые будут использоваться в качестве параметров функции, присваиваются нужные значения (поз. 3÷5).
Затем осуществляется вызов функции «getLine()» (поз.6), а после ее выполнения происходит перенос значений элементов массива в соответствующие переменные PHP (поз. 7÷10).
И таким образом, с помощью языковой конструкции «echo» и функции обработки строк «nl2br» (поз.11) мы сможем отобразить полученный результат на одной из страниц нашего сайта. Функции «nl2br» здесь применена для вставки тега «‹br›», для перевода строк, имеющих регулярные выражения «\n».
Если после всех выполненных действий обновить главную страницу, то мы должны увидеть на ней результат вывода одиночной строки в соответствии с заданным условием, как показано на скриншоте.

Рис.3 Скриншот вывода одиночной строки
Как видно, здесь через дробь по порядку отображаются значения полей выбранной записи, где полю «id» соответствует значение 4, «title» — «Получить скидку», а «file» — «righting.php». Что и требовалось получить для этого варианта.
Вывод набора строк по заданному условию (использование двумерного массива)
В предыдущем примере мы рассмотрели случай, когда требуется извлечь только одну уникальную запись. Но, что делать, если при выполнении запроса к базе данных «query» в полученном объекте «$result» будет не одна, а множество строк?
В этом случае при выполнении метода «fetch_assoc()» следует использовать указатель текущей позиции, который при каждой следующей операции считывания сдвигается на одну позицию вперед. Если же строки закончатся, то указатель на несуществующей строке возвратит значение «false».
А для перебора всех найденных записей при выполнении метода «fetch_assoc()» обычно используется оператор цикла «while», который обеспечивает выполнение вложенного выражения до тех пор, пока выражение в самом «while» является «TRUE» (в нашем случае, пока не закончатся извлекаемые строки).
Ниже показан PHP-код с внесенными дополнениями, который позволяет функции работать уже не с одной, а с набором строк (позиции с дополнениями или изменениями по сравнению с предыдущим вариантом выделены светлым фоном).
//—-Функция вывода набора строк по заданному условию————-
function getUrlDesс ($url_1, $url_2, $url_3) <
global $mysqli;
if ( !$result = $mysqli -> query ( «SELECT * FROM `url` WHERE `url`=’$url_1′ OR `url`=’$url_2′ OR `url`=’$url_3′ ORDER BY `id` DESC» )) <
die (‘При извлечении записей возникла ошибка: ‘ .$mysqli->errno. ‘ — ‘ .$mysqli->error );