Как вывести таблицу mysql
Для получения данных в MySQL применяется команда SELECT . Например, получение всех данных из таблицы Users:
SELECT * FROM Users
Рассмотрим получение данных на примере таблицы Users, созданной в прошлых, которая имеет следующее определение:
CREATE TABLE Users (id INTEGER AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30), age INTEGER)
Объектно-ориентированный стиль
При выполнении команды SELECT метод query() объекта mysqli возвращает набор полученных строк, который мы можем перебрать с помощью цикла. Например, перебор с помощью цикла foreach :
$sql = "SELECT * FROM Users"; if($result = $conn->query($sql)) < foreach($result as $row)< $userid = $row["id"]; $username = $row["name"]; $userage = $row["age"]; >>
Здесь $result представляет набор строк. Каждый его элемент, который передается в переменную $row , хранит данные отдельной строки в виде ассоциативного массива, где ключи элементов — названия столбцов.
Вместо цикла foreach также можно использовать другие виды циклов. Например, применение цикла while :
$sql = "SELECT * FROM Users"; if($result = $conn->query($sql))< while($row = $result->fetch_array()) < $userid = $row["id"]; $username = $row["name"]; $userage = $row["age"]; >>
В данном случае метод $result->fetch_array() выбирает текущую строку из набора в переменную $row и переходит к следующей. Когда строк не останется, метод возвратит false , и произойдет выход из цикда. Полученное значени $row опять же представляет строку в виде ассоциативного массива.
После окончания работы с полученным набором строк мы можем очистить отведенную для него память с помощью метода free() :
$result->free();
Теперь посмотрим на примере. Определим скрипт index.php , которая будет выводить значения из таблицы Users:
METANIT.COM Список пользователей
connect_error)< die("Ошибка: " . $conn->connect_error); > $sql = "SELECT * FROM Users"; if($result = $conn->query($sql))< $rowsCount = $result->num_rows; // количество полученных строк echo "Получено объектов: $rowsCount
"; echo "
| Id | Имя | Возраст |
|---|---|---|
| " . $row["id"] . " | "; echo "" . $row["name"] . " | "; echo "" . $row["age"] . " | "; echo "
Таким образом, при обращении к скрипту index.php браузер отобразит список данных, полученных из БД:
Дополнительно стоит отметить, что с помощью свойства $result->num_rows мы можем получить количество строк, извлеченных из БД.
Процедурный стиль
При процедурном стиле функция mysqli_query() при успешном выполнении команды SELECT возвращает набор строк, который можно перебрать с помощью цикла:
$sql = "SELECT * FROM Users"; if($result = mysqli_query($conn, $sql)) < foreach($result as $row)< $userid = $row["id"]; $username = $row["name"]; $userage = $row["age"]; >>
Как и при объектно-ориентированном подходе, полученные строки представляют ассоциативные массивы, где ключи элементов — названия столбцов.
Пример перебоа с помощью цикла while :
$sql = "SELECT * FROM Users"; if($result = mysqli_query($conn, $sql)) < while($row = mysqli_fetch_array($result))< $userid = $row["id"]; $username = $row["name"]; $userage = $row["age"]; >>
Функция mysqli_fetch_array() выбирает текущую строку из набора в переменную $row и переходит к следующей. Когда строк не останется, метод возвратит false , и произойдет выход из цикла.
После окончания работы с полученным набором строк мы можем очистить отведенную для него память с помощью функции mysqli_free_result() , в которую передается полученный набор строк:
mysqli_free_result($result);
METANIT.COM Список пользователей
$sql = "SELECT * FROM Users"; if($result = mysqli_query($conn, $sql))< $rowsCount = mysqli_num_rows($result); // количество полученных строк echo "Получено объектов: $rowsCount
"; echo "
| Id | Имя | Возраст |
|---|---|---|
| " . $row["id"] . " | "; echo "" . $row["name"] . " | "; echo "" . $row["age"] . " | "; echo "
Постраничный вывод на PHP
Когда-нибудь (конечно, если у вас есть сайт на PHP и MySQL) вам понадобится вывести все записи из базы данных. Ведь, например, выводить по 100 постов на одной странице крайне неразумно, поэтому следует сделать на сайте постраничный вывод записей из базы данных. Наш постраничный вывод будет основан на свойствах оператора LIMIT . Оператор LIMIT позволяет не только ограничить вывод данных, но и задать параметр, с которого следует начинать вывод записей. Например, чтобы вывести 10 записей из таблицы data , начиная с 10-й записи, следует писать так: SQL
SELECT * FROM data LIMIT 10, 10;
Страница нашего сценария будет называться viewpost.php. Переменная $str будет содержать значение нужной страницы. Данные будем выводить из таблицы data . Структурируем вывод данных следующим образом: будем выводить краткое описание ( description ) и заголовок ( title ). Конечно, для того чтобы все это выводилось приемлемо нужно будет сгруппировать элементы с помощью HTML и CSS. Хотя для моего примера все просто.
Пример простой постраничной навигации:
$sum = 5; // число записей на странице $result = mysql_query("SELECT count(*) as a from data"); //count -- считает количество элементов массива $arr = mysql_fetch_row($result); // возвращает неассоциативный массив $rec = $arr[0]; // общее число записей в таблице // если страницы не существует, выводим первую страницу if(!isset($_GET['str'])) else // получем номер начальной записи страницы $start = $str * $sum; // запрос $r = mysql_query("SELECT * FROM data LIMIT $start, $sum"); $n = mysql_num_rows($r); // возвращаем число рядов результата запроса // если страница не первая, выводим ссылку НАЗАД if ($str > 0) < $p = $str — 1; echo "НАЗАД"; > $str++; // увеличиваем переменную $str на единицу; // выводим ссылку на следующие пять записей, если она есть, // то есть число записей, которые нужно вывести, // и смещение не превышает общего числа записей if($start + $n < $rec) echo "ДАЛЕЕ"; // выводим записи for ($i = 0; $i < $n; $i++) < $myrow = mysql_fetch_array($r); printf ("%s
%s
", $myrow["title"], $myrow["description"] ); >
Третья статья Постраничный вывод из таблиц MSSQL с помощью PHP На многих форумах по PHP видел один и тот же вопрос «Как сделать постраничный вывод из MSSQL?». Ответом очень часто служит «Все очень просто, используйте limit и все работает!», но, те кто дает такой ответ, видимо никогда не видели MSSQL достаточно близко и не знают, что к большому сожалению, там данной функции, в отличии от MySQL, нет. Я в своей практике написания сценариев на php, так же в основном пользовался связкой PHP + MySQL и вопросов не возникало. Но вот надо было перейти на хостинг с установленным MSSQL. После долгих поисков скрипта, который позволял бы сделать постраничный вывод из таблиц MSSQL с помощь PHP, без использования курсоров и ADO, и не найдя ничего, пришлось написать функцию, которая как раз и занимается обсуждаемым рутинным делом. В основу постраничного вывода был положен запрос:
select top нужное_количество_для_вывода * from (select top количество_записей_из_которых_делается_вывод * from таблица order by таблица_id) as t1 order by таблица_id desc (таблица_id — поле вашей таблицы, по которому вы будете осуществлять сортировку)
Для работы нужной нам функции и правильной работы данного запроса надо знать несколько величин: 1) нужное количество строк для вывода 2) количество записей из которых делается выбор 3) на какой страницы мы находимся 4) сколько всего страниц. Получившаяся функция выглядит так:
!@$_GET["page"]) < # если переменной с номером страницы еще нет, то создаем ее $page=1; # и присваиваем ей значение 1 >else < $page=$_GET["page"]; ># иначе, присваиваем ей значение нажатой страницы # объявляем функцию с названием numberpage, имеющей следующие параметры: # 1) количество выводимых строк на каждой странице, # 2) название таблицы, которую выводим постранично, # 3) дополнительные параметры выбора запроса, например: where поле_какоето1=чемуто # and поле_какоето2=томуто. # не забудьте, что данные дополнительные параметры должны быть и в самом запросе, иначе # вы получите неверные значения. function numberpage($len,$tablename,$dopquerysql) < global $page; global $nump; # формируем массив для возврата значений из функции $nump=array("page"=>"","numers"=>"","len"=>"0","all"=>"0","top1"=>"0","top2"=>"0"); # получаем URL страницы, с которой вызвали функцию $namepage=@$PATH_INFO; # вычисляем количество строк в запросе $nu=@mssql_query("select count(1) as ss from $tablename $dopquerysql"); $nrow=@mssql_fetch_array($nu); $all=$nrow['ss']; @$pages=ceil($all/$len)-1; if (@$page==(@$pages+1)) < $top1=$all-(($page-1)*$len); $top2=$all; >else < $top1=$len; $top2=$page*$len; >if (@$len>=$all) < $top1=$all; $top2=$all; >$numers=($page-1)*$len; @$q=$all/$len; # готовим массив с номерами страниц if ($q>1) < for ($p=0; $p> # подготавливаем массив с конечными результатами и выводим его $nump["page"]=@$nump[page]; $nump["numers"]=$numers; $nump["len"]=$len; $nump["all"]=$all; $nump["top1"]=$top1; $nump["top2"]=$top2; return $nump; > ?>
Данную функцию можно расположить в файле с вашими конфигурациями всего вашего проекта и вызывать ее на каждой страницы, где вы собираетесь делать постраничный вывод. Например: файл конфигурации у вас называется myconfig.php, значит, на каждой странице вставляем Теперь переходим непосредственно к выводу нашей таблицы в браузере. Сразу определяемся, сколько у нас будет выводится на экран строк таблицы, или делаем форму для выбора количества строк пользователем. Форму я тут приводить не буду, так как это выходит за рамки статьи и достаточно легко, чтоб на этом останавливаться. Перед выводом таблицы вызываем функцию (будем выводить по 10 строк на странице из таблицы наша_таблица где поле2 содержит слово КАКОЕТОЗНАЧЕНИЕ и поле5 равно 12):?>
Помните, что если у вас нет никаких дополнительных параметров выбора, просто оставьте значение пустым, и вы получите выбор из всех полей таблицы. Например: , соответственно убрав данное условие и при выводе самой таблицы. Затем, в нужном нам месте выводим саму таблицу:?>
$grn=@mssql_query("select * from (select top $nump[top1] * from (select top $nump[top2] * from наша_таблица where поле2 like ‘%КАКОЕТОЗНАЧЕНИЕ%’ and поле5=12 order by таблица_ID desc) as t1 order by таблица_ID ) as t2 order by таблица_ID desc",$link); for($gd=0; $gd
Затем выводим перечисление страниц: ПЯТАЯ СТАТЬЯ
Выводим MySQL таблицу
Выводим MySQL таблицу
В этом уроке рассказывается о том, как показать любую таблицу MySQL базы данных в HTML виде. Предположим, у вас есть MySQL база данных, в которой зеведено несколько таблиц. С помощью описанной техники можно просматривать любую таблицу, независимо от количества колонок и записей, находящихся в ней. Давайте раcсмотрим весь процесс по шагам.
1. Соединяемся с сервером базы данных и выбираем базу.
MYSQL_CONNECT($hostname, $username, $password) OR DIE(«Unable to connect»);
@MYSQL_SELECT_DB(«$dbName») OR DIE(«Unable to select database»);
2. Формируем и выполняем SQL запрос, который покажет все данные в таблице.
$query = «select * from SOME_TABLE»;
$result = MYSQL_QUERY($query);
3. Проверяем и выдаем сразу ответ, если таблица пустая.
$total_rows = mysql_num_rows($result);
if (!$total_rows) print «
Table $name is empty
«;
return;
>
4. Вытаскиваем первую строку и выясняем сколько ячеек надо показывать в строке.
$row = mysql_fetch_row($result);
$total_cols = count($row);
5. Показываем шапку таблицы, в первой строке которой будет указано колчество строк и столбцов. Обратите внимание на то, что мы ставим параметр COLSPAN для первой строки таблицы, чтобы сверху была всего одна ячейка с информацией.
6. Выдаем первую строку, которую мы уже вытащили ранее.
print «
$i=0;
while($i < $total_cols)print "
print $row[$i];
print «
«;
$i++;
>
print «
«;
7. Выполняем цикл для всех оставшихся строк. В цикле последовательно вытаскиваем строки из базы данных и во вложенном цикле показываем все ячейки в строке.
while($row = mysql_fetch_row ($result)) $i = 0;
print «
while($i < $total_cols)print "
print $row[$i];
print «
«;
$i++;
>
print «
«;
>
8. Освобождаем памать и закрываем HTML таблицу.
mysql_free_result($result);
print «
