Содержание

Создание HTML таблиц из MySQL таблиц на PHP

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

Потратив буквально пару минут, у вас на руках будут распечатки структур MySQL таблиц, что, надеемся, вам и нужно.

CSS



table.db-table { border-right:1px solid #ccc; border-bottom:1px solid #ccc; }

table.db-table th { background:#eee; padding:5px; border-left:1px solid #ccc; border-top:1px solid #ccc; }

table.db-table td { padding:5px; border-left:1px solid #ccc; border-top:1px solid #ccc; }

Никаких особенных наворотов в CSS. Все просто и со вкусом.

PHP / MySQL


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

/* connect to the db */

$connection = mysql_connect(‘localhost’,’username’,’password’);

mysql_select_db(‘my_db’,$connection);

/* show tables */

$result = mysql_query(‘SHOW TABLES’,$connection) or die(‘cannot show tables’);

while($tableName = mysql_fetch_row($result)) {

$table = $tableName[0];

echo ‘<h4>’,$table,'</h4>’;

$result2 = mysql_query(‘SHOW COLUMNS FROM ‘.$table) or die(‘cannot show columns from ‘.$table);

if(mysql_num_rows($result2)) {

echo ‘<table cellpadding=»0″ cellspacing=»0″>’;

echo ‘<tr><th>Field</th><th>Type</th><th>Null</th><th>Key</th>

<th>Default<th>Extra</th></tr>’;

while($row2 = mysql_fetch_row($result2)) {

echo ‘<tr>’;

foreach($row2 as $key=>$value) {

echo ‘<td>’,$value,'</td>’;

}

echo ‘</tr>’;

}

echo ‘</table><br />’;

}

}

Первый шаг — получение всей информации о структуре таблиц в базе MySQL. Следующим шагом перебирается массив таблиц и на каждую создается HTML таблица с версткой и данными в ней.

Пример

Пишите, по каким темам нужны еще такие сниппеты.


Возможно, Вам будет интересно ↓↓↓

HTML: Создание таблицы | Таблица внутри таблицы

Таблица — набор данных, распределенных по строкам и ячейкам. В большинстве ячеек размещаются табличные данные, остальные содержат заголовки для строк и столбцов, описывающие содержимое.

Для создания таблицы в HTML-документе используется тег <table>, он представляет собой контейнер, в котором находится все содержимое таблицы.

Создание таблицы всегда начинается со строк, которые определяются с помощью тега <tr>, каждая строка, в свою очередь, состоит из ячеек. Тег <tr> может содержать в себе только теги для создания ячеек.

В HTML существует два разных тега для создания ячеек, первым из них является <td>, он создает обычные ячейки с данными. По умолчанию, содержимое тегов <td> выравнивается по левому краю. Второй тег для создания ячеек — это тег <th>, он позволяет определять ячейки, которые содержат заголовки для столбцов или строк, содержимое таких ячеек отображается жирным текстом и выравнивается по центру. Теги <td> и <th> могут включать в себя любые HTML-элементы, которые доступны для использования в теле документа.


<table border="1">
  <tr><th>Первый заголовок</th><th>Второй заголовок</th></tr>
  <tr><td>строка 1, ячейка 1</td><td>строка 1, ячейка 2</td></tr>
  <tr><td>строка 2, ячейка 1</td><td>строка 2, ячейка 2</td></tr>
</table>

Попробовать »

Таблица внутри таблицы

В HTML есть возможность создания вложенных таблиц, то есть таких таблиц, которые расположены внутри других таблиц. Чтобы сделать вложенную таблицу надо код таблицы, которую требуется сделать вложенной, поместить внутрь любого тега <td>.

Для примера, возьмём уже созданную ранее нами таблицу и поместим этот код во вторую ячейку второй строки:


<table border="1">
  <tr><th>Первый заголовок</th><th>Второй заголовок</th></tr>
  <tr><td>строка 1, ячейка 1</td><td>строка 1, ячейка 2</td></tr>
  <tr><td>строка 2, ячейка 1</td>
    <td>строка 2, ячейка 2
	  <table border="1">
        <tr><th>Первый заголовок</th><th>Второй заголовок</th></tr>
        <tr><td>строка 1, ячейка 1</td><td>строка 1, ячейка 2</td></tr>
        <tr><td>строка 2, ячейка 1</td><td>строка 2, ячейка 2</td></tr>
      </table>
	</td>
  </tr>
</table>

Попробовать »

В итоге у нас получилась таблица внутри ячейки другой таблицы, то есть таблица внутри таблицы.

С этой темой смотрят:

Вывод таблицы умножения PHP с закрашиванием ячеек [Решено]

На этом уроке мы научимся выводить на экран таблицу умножения и закрашивать её боковые стороны, диагонали и центральную ячейку с помощью PHP.

Таблицы умножения разных размеров

Задачи

  1. Объявить переменные $rows и $cols, обозначающие соответственно количество строк и столбцов таблицы.
  2. Вывести на экран таблицу умножения с $rows строк и $cols столбцов.
  3. Закрасить верхнюю и нижнюю линии таблицы розовым цветом.
  4. Закрасить правую и левую линии таблицы жёлтым цветом.
  5. Закрасить диагональные клетки таблицы. Одну диагональ закрасить оранжевым цветом, другую красным.
  6. Если диагональные клетки пересекаются в одной ячейке, выделить её светло-зелёным цветом.

Создаём таблицу умножения

Для начала объявим переменные $rows и $cols и добавим немного CSS, чтобы таблица смотрелась более наглядно:

<?php
$cols = 10;
$rows = 10;
?>
<style>
table { border: 0; }
td { padding: 5px; text-align: center; }
</style>

Принцип вывода таблицы умножения несложный. Нужно создать 2 цикла: один перебирает строки, а другой ячейки. И внутри второго цикла мы просто умножаем текущий номер строки на текущий номер столбца и выводим полученное значение:

<?php
$rows = 5;
$cols = 5;

// Проходим по всем строкам
for ($tr = 1; $tr <= $rows; $tr++)
{
	// Проходим по каждой ячейке строки
	for($td = 1; $td <= $cols; $td++)
	{
		echo $td * $tr, ' | ';
	}

	echo '<br>';
}
?>

Результат в браузере:

1 | 2 | 3 | 4 | 5 |
2 | 4 | 6 | 8 | 10 |
3 | 6 | 9 | 12 | 15 |
4 | 8 | 12 | 16 | 20 |
5 | 10 | 15 | 20 | 25 |

А теперь выведем эти значения внутри таблицы и добавим им белый фон, цвет которого затем будем менять:

<?php
$cols = 8;
$rows = 8;
?>
<style>
table { border: 0; }
td { padding: 5px; text-align: center; }
</style>

<table>
<?php
for ($tr = 1; $tr <= $rows; $tr++)
{
	echo '<tr>';

	for($td = 1; $td <= $cols; $td++)
	{
		$background = 'white';

		echo '<td>', $tr * $td, '</td>';
	}
	echo "</tr>";
}
?>
</table>

На данном этапе наша таблица выглядит следующим образом:

Таблица умножения 8×8

Итак, сама таблица готова. Теперь нам осталось только менять значение переменной $background для каждой ячейки в зависимости от значений переменных $tr, $td, $rows и $cols.

Закрашиваем боковые ячейки

Как определить, является ли ячейка крайней слева или справа? Очень просто: если номер ячейки, лежащий в переменной $td, принимает значение 1 — значит это самая левая ячейка. Если же переменная $td равна количеству колонок (которое лежит в переменной $cols), значит это самая правая ячейка.

Исходя из этого, составим условие, при котором крайние слева и справа ячейки окрасятся в жёлтый цвет:

if($td === 1 or $td === $cols)
	$background = 'yellow';
else
	$background = 'white';

Готово! С верхними и нижними ячейками тоже ничего сложного. Если номер строки $tr равен единице или количеству строк $rows — значит это одна из крайних ячеек. Дополним код ещё одним условием:

if($td === 1 or $td === $cols)
	$background = 'yellow';
elseif($tr === 1 or $tr === $rows)
		$background = 'pink';
else
	$background = 'white';

Отлично, теперь наша таблица выглядит следующим образом:

Таблица умножения с закрашенными краями

Закрашиваем диагональные ячейки

Для начала нам нужно добавить в код условие, согласно которому диагональные линии закрашиваются только для квадратных таблиц.

Потому что проблематично даже представить, как должна выглядеть закрашенная диагональ, к примеру, таблицы 5×12. Добавим это условие:

if($cols === $rows) {
    // ...
}

Перейдём к диагоналям. Начнём с той, что идёт от числа 1 направо вниз. Посмотрите на предыдущую картинку. Из неё следует, что мы должны закрасить числа 1, 4, 9, 16 и т.д. Видите ли вы какой-нибудь простой способ определить, является ли ячейка лежащей на этой диагонали?

Наверное вы уже догадались, что у всех этих ячеек совпадает номер столбца и номер строки. Добавим это условие в код:

if($cols === $rows) {
    if($td === $tr)
        $background = 'orange';
}

// Это условие предотвращает перезапись цвета для диагональных ячеек
if(!$background)
{
	if($td === 1 or $td === $cols)
		$background = 'yellow';
	elseif($tr === 1 or $tr === $rows)
		$background = 'pink';
	else
		$background = 'white';
}

У ячеек второй диагонали схожесть чуть менее очевидная: сумма их координат равна количеству строк (да и столбцов), увеличенному на один. Проще говоря, $td + $tr === $cols + 1. Добавим это условие в код:

if($cols === $rows)
{
	if($td === $tr)
		$background = 'orange';
}
elseif($td + $tr === $cols + 1)
	$background = 'red';

Теперь наша таблица выглядит следующим образом при чётном и нечётном количестве элементов:

Таблица умножения с закрашенными краями и диагоналями

Остался последний штрих — выделение особым цветом центральной ячейки.

Закрашиваем центральные ячейки

Для определения центральной ячейки мы можем взять за основу код поиска элементов первой диагонали и дополнить его парой условий:

1. Таблица должна иметь нечётное количеством строк и столбцов
2. Ячейка быть центральной

Определить чётность таблицы можно с помощью оператора %, возвращающего остаток от деления.

Логика следующая: мы пытаемся разделить количество столбцов или строк на 2 и если остаток от деления есть (например 4 делится на 2 без остатка, а после деления 5 на 2 остаётся остаток 1) — значит таблица с нечётным количеством элементов. В коде это будет выглядеть так:

if($cols % 2)

Осталось определить центральный элемент. Посмотрим на таблицу ещё раз. Если в таблице 5 строк, средней будет третья. Если строк 7, средней будет 4-ая и т.д.

В итоге мы получаем формулу ceil($cols / 2), т.е. количество столбцов или строк делим на 2 и округляем в большую сторону. Итоговый код будет таким:

if($cols === $rows)
{
	if($td === $tr)
	{
		if(($cols % 2) and $td == ceil($cols / 2))
			$background = 'chartreuse';
		else
			$background = 'orange';
	}
	elseif($tr + $td === $cols + 1)
		$background = 'red';
}

Готово! Теперь средний элемент нечётных таблиц выделяется светло-зелёным цветом, а в чётных таблицах всё осталось по-старому.

3 таблицы с закрашенными краями и диагоналями

Готовый код

<?php
$cols = 10;
$rows = 10;
?>
<style>
table { border: 0; }
td { padding: 5px; text-align: center; }
</style>

<table>
<?php
for ($tr = 1; $tr <= $rows; $tr++)
{
	echo '<tr>';

	for($td = 1; $td <= $cols; $td++)
	{
		$background = '';

		if($cols === $rows)
		{
			if($td === $tr)
			{
				if(($cols % 2) and $td == ceil($cols / 2))
					$background = 'chartreuse';
				else
					$background = 'orange';
			}
			elseif($tr + $td === $cols + 1)
				$background = 'red';
		}

		if(!$background)
		{
			if($td === 1 or $td === $cols)
				$background = 'yellow';
			elseif($tr === 1 or $tr === $rows)
				$background = 'pink';
			else
				$background = 'white';
		}

		echo '<td>', $tr * $td, '</td>';
	}
	echo "</tr>";
}
?>
</table>

Тег | htmlbook.ru

Internet ExplorerChromeOperaSafariFirefoxAndroidiOS
2.0+1.0+2.0+1.0+1.0+1.0+1.0+

Спецификация

HTML:3.24.015.0XHTML:1.01.1

Описание

Элемент <table> служит контейнером для элементов,
определяющих содержимое таблицы. Любая таблица состоит из строк и ячеек, которые
задаются с помощью тегов <tr> и <td>.
Внутри <table> допустимо использовать следующие элементы: <caption>, <col>, <colgroup>, <tbody>, <td>, <tfoot>, <th>, <thead> и <tr>.

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

Синтаксис

<table>
  <tr>
    <td>...</td>
  </tr>
</table>

Атрибуты

align
Определяет выравнивание таблицы.
background
Задает фоновый рисунок в таблице.
bgcolor
Цвет фона таблицы.
border
Толщина рамки в пикселах.
bordercolor
Цвет рамки.
cellpadding
Отступ от рамки до содержимого ячейки.
cellspacing
Расстояние между ячейками.
cols
Число колонок в таблице.
frame
Сообщает браузеру, как отображать границы вокруг таблицы.
height
Высота таблицы.
rules
Сообщает браузеру, где отображать границы между ячейками.
summary
Краткое описание таблицы.
width
Ширина таблицы.

Также для этого тега доступны универсальные атрибуты и события.

Закрывающий тег

Обязателен.

Пример

HTML5IECrOpSaFx

<!DOCTYPE HTML>
<html>
 <head>
  <meta charset="utf-8">
  <title>Таблица размеров обуви</title>
 </head>
 <body>
  <table border="1">
   <caption>Таблица размеров обуви</caption>
   <tr>
    <th>Россия</th>
    <th>Великобритания</th>
    <th>Европа</th>
    <th>Длина ступни, см</th>
   </tr>
   <tr><td>34,5</td><td>3,5</td><td>36</td><td>23</td></tr>
   <tr><td>35,5</td><td>4</td><td>36⅔</td><td>23–23,5</td></tr>
   <tr><td>36</td><td>4,5</td><td>37⅓</td><td>23,5</td></tr>
   <tr><td>36,5</td><td>5</td><td>38</td><td>24</td></tr>
   <tr><td>37</td><td>5,5</td><td>38⅔</td><td>24,5</td></tr>
   <tr><td>38</td><td>6</td><td>39⅓</td><td>25</td></tr>
   <tr><td>38,5</td><td>6,5</td><td>40</td><td>25,5</td></tr>
   <tr><td>39</td><td>7</td><td>40⅔</td><td>25,5–26</td></tr>
   <tr><td>40</td><td>7,5</td><td>41⅓</td><td>26</td></tr>
   <tr><td>40,5</td><td>8</td><td>42</td><td>26,5</td></tr>
   <tr><td>41</td><td>8,5</td><td>42⅔</td><td>27</td></tr>
   <tr><td>42</td><td>9</td><td>43⅓</td><td>27,5</td></tr>
   <tr><td>43</td><td>9,5</td><td>44</td><td>28</td></tr>
   <tr><td>43,5</td><td>10</td><td>44⅔</td><td>28–28,5</td></tr>
   <tr><td>44</td><td>10,5</td><td>45⅓</td><td>28,5–29</td></tr>
   <tr><td>44,5</td><td>11</td><td>46</td><td>29</td></tr>
   <tr><td>45</td><td>11,5</td><td>46⅔</td><td>29,5</td></tr>
   <tr><td>46</td><td>12</td><td>47⅓</td><td>30</td></tr>
   <tr><td>46,5</td><td>12,5</td><td>48</td><td>30,5</td></tr>
   <tr><td>47</td><td>13</td><td>48⅔</td><td>31</td></tr>
   <tr><td>48</td><td>13,5</td><td>49⅓</td><td>31,5</td></tr>
  </table>
 </body>
</html>

Создание таблицы умножения · GitHub

Создание таблицы умножения · GitHub

Instantly share code, notes, and snippets.

Создание таблицы умножения

Лабораторная работа 3.3
Создание динамической таблицы умножения
Упражнение 1: Создание HTML-таблицы
• В текстовом редакторе откройте файл table.php
• В начале файла создайте php-блок, в котором создайте две целочисленные
переменные $cols и $rows
• Присвойте созданным переменным произвольные значения в диапазоне от 1 до 10
• В блоке удалите весь html-код и напишите:

• В текущем php-блоке используя циклы for отрисуйте таблицу умножения в виде HTML
-таблицы на следующих условиях:
◦ Число столбцов должно быть равно значению переменной $cols
◦ Число строк должно быть равно значению переменной $rows
◦ Ячейки на пересечении столбцов и строк должны содержать значения,
являющиеся произведением порядковых номеров столбца и строки
• Сохраните файл table.php
• Посмотрите результат в браузере
Упражнение 2: Приводим таблицу к товарному виду
• Отрисуйте значения в ячейках первой строки и первого столбца полужирным
шрифтом и выровняйте их по центру ячейки
• Сделайте фоновый цвет ячеек первой строки и первого столбца отличным от
фонового цвета таблицы
• Сохраните файл table.php
• Посмотрите результат в браузере

Примечание: использовать цикл for или while? Когда есть начало и конец, четко обозначены — использовать for.

<?php
$cols = 10; // ячейка
$rows = 10; // строка
?>
<!DOCTYPE html PUBLIC «-//W3C//DTD XHTML 1.0 Transitional//EN» «http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd»>
<html xmlns=»http://www.w3.org/1999/xhtml» xml:lang=»ru» lang=»ru»>
<head>
<title>Таблица умножения</title>
<meta http-equiv=»content-type»
content=»text/html; charset=windows-1251″ />
<link rel=»stylesheet» type=»text/css» href=»style.css» />
</head>
<body>
<div>
<!— Верхняя часть страницы —>
<img src=»about-1.png» alt=»Наш логотип» />
<span>приходите к нам учиться</span>
<!— Верхняя часть страницы —>
</div>
<div>
<!— Заголовок —>
<h2>Таблица умножения</h2>
<!— Заголовок —>
<!— Область основного контента —>
<form action=»>
<label>Количество колонок: </label><br />
<input name=’cols’ type=’text’ value=»» /><br />
<label>Количество строк: </label><br />
<input name=’rows’ type=’text’ value=»» /><br />
<label>Цвет: </label><br />
<input name=’background’ type=’text’ value=»» /><br /><br />
<input type=’submit’ value=’Создать’ />
</form>
<!— Таблица —>
<?php
echo «<table border = ‘1’>»;
for ($tr = 1; $tr <= $rows; $tr++) { // минимальная таблица умножения — это 1 х 1
echo «<tr>»; // рисует строку (внутри <tr> находится <td> — нужен очередной цикл)
for ($td = 1; $td <= $cols; $td++) {
echo «<td>» . $tr * $td . «</td>»; // $tr * $td — для вывода значений (цифр) внутри таблицы
}
echo «</tr>»;
}
echo «</table>»;
?>
<!— / Таблица —>
<!— Область основного контента —>
</div>
<div>
<h3>Навигация по сайту</h3>
<!— Меню —>
<ul>
<li><a href=’index.php’>Домой</a></li>
<li><a href=’about.php’>О нас</a></li>
<li><a href=’contact.php’>Контакты</a></li>
<li><a href=’table.php’>Таблица умножения</a></li>
<li><a href=’calc.php’>Калькулятор</a></li>
</ul>
<!— Меню —>
</div>
<div>
<!— Нижняя часть страницы —>
&copy; Супер Мега Веб-мастер, 2000 — 2012
<!— / Нижняя часть страницы —>
</div>
</body>
</html>
<?php
$cols = 10; // ячейка
$rows = 10; // строка
$background = «yellow»;
?>
<!DOCTYPE html PUBLIC «-//W3C//DTD XHTML 1.0 Transitional//EN» «http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd»>
<html xmlns=»http://www.w3.org/1999/xhtml» xml:lang=»ru» lang=»ru»>
<head>
<title>Таблица умножения</title>
<meta http-equiv=»content-type»
content=»text/html; charset=windows-1251″ />
<link rel=»stylesheet» type=»text/css» href=»style.css» />
</head>
<body>
<div>
<!— Верхняя часть страницы —>
<img src=»about-1.png» alt=»Наш логотип» />
<span>приходите к нам учиться</span>
<!— Верхняя часть страницы —>
</div>
<div>
<!— Заголовок —>
<h2>Таблица умножения</h2>
<!— Заголовок —>
<!— Область основного контента —>
<form action=»>
<label>Количество колонок: </label><br />
<input name=’cols’ type=’text’ value=»» /><br />
<label>Количество строк: </label><br />
<input name=’rows’ type=’text’ value=»» /><br />
<label>Цвет: </label><br />
<input name=’background’ type=’text’ value=»» /><br /><br />
<input type=’submit’ value=’Создать’ />
</form>
<!— Таблица —>
<?php
echo «<table border = ‘1’>»;
for ($tr = 1; $tr <= $rows; $tr++) { // минимальная таблица умножения — это 1 х 1
echo «<tr>»; // рисует строку (внутри <tr> находится <td> — нужен очередной цикл)
for ($td = 1; $td <= $cols; $td++) {
if ($tr == 1 || $td == 1) {
echo «<th style = ‘background : {$background}’>» . $tr * $td . «</th>»; // <th> — заголовочные ячейки
} else
echo «<td>» . $tr * $td . «</td>»; // $tr * $td — для вывода значений (цифр) внутри таблицы
}
echo «</tr>»;
}
echo «</table>»;
?>
<!— / Таблица —>
<!— Область основного контента —>
</div>
<div>
<h3>Навигация по сайту</h3>
<!— Меню —>
<ul>
<li><a href=’index.php’>Домой</a></li>
<li><a href=’about.php’>О нас</a></li>
<li><a href=’contact.php’>Контакты</a></li>
<li><a href=’table.php’>Таблица умножения</a></li>
<li><a href=’calc.php’>Калькулятор</a></li>
</ul>
<!— Меню —>
</div>
<div>
<!— Нижняя часть страницы —>
&copy; Супер Мега Веб-мастер, 2000 — 2012
<!— / Нижняя часть страницы —>
</div>
</body>
</html>

You can’t perform that action at this time.

You signed in with another tab or window. Reload to refresh your session.
You signed out in another tab or window. Reload to refresh your session.

Создание базы данных в phpmyadmin

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

Работа с базами данных в PhpMyAdmin

Сейчас мы разбираем пример работы с базами данных в PhpMyAdmin в Open Server Panel, аналогичная работа проводится на реальном хостинге. Чтобы создать базу данных, нужно в Open Server Panel нужно войти в PhpMyAdmin. 

 

Выбираем вкладку «Дополнительно» и запускаем PhpMyAdmin Вводим  данные:

Пользователь: root

Пароль либо пустой, либо root

При выполнении любой операции  в phpmyadmin  нужно жать кнопку «Вперёд»

 Чтобы в PhpMyAdmin создать базу данных, жмём «Создать БД» в левом верхнем углу

 

Выбираем название для базы данных  и выбираем кодировку. Как правило, в русскоязычных сайтах используется кодировка utf8_general_ci

Нажимаем «Создать» 


База данных состоит из таблиц. Чтобы создать таблицу в базе данных PhpMyAdmin, нужно выбрать базу данных и нажать «Создать таблицу». Вводим её имя и количество столбцов. После этого жмём «Вперёд»

 

В качестве примера примера мы создали в phpmyadmin таблицу «users» с тремя столбцами. 

 Для первого столбца в большинстве таблиц в базе данных MySQL ставится уникальный номер записи ID. Он должен индексироваться, поэтому выбираем индекс PRIMARY.  Ставим  галочку на A_I, чтобы номер записи при добавлении автоматически увеличилсяВторой столбец отвечает за имя пользователя, имеет название «name» и тип VARCHAR. Можно ограничить его длину, поставим 255.Третий столбец будет отвечать за возраст, обладать названием «age»  и типом INT. В итоге мы получим таблицу пользователей с их именами, возрастами и ID. 

После завершения  создания таблицы нажимаем «Сохранить»

Добавление записей в таблицу базы данных в PhpMyAdmin

 Чтобы добавить запись в таблицу базы данных в PhpMyAdmin, выделяем нужную нам таблицу и переходим  во  вкладку «Вставить» 

 

Заполняем все поля, кроме ID(оно заполнится автоматически) и нажимаем «Вперёд». 

Добавим в таблицу users три записи 1 Василий 20; 2 Николай 25; 3 Александр 20; 4 Петр 23

 После этого переходим в «Обзор» и видим добавленную информацию


Для примера заполним таблицу базы данных несколькими строками. В итоге  получится вот такая таблица

SQL запросы в phpmyadmin

SQL  это язык программирования, созданный для работы с базами данных.

С помощью SQL можно получать любую информацию с баз данных.
Общая структура простейшего SQL запроса
SELECT * FROM `имя таблицы` WHERE условие

Например, чтобы получить все записи таблицы users, в условие WHERE ставится 1
Пример SQL запроса с условием на возраст
SELECT * FROM `users` WHERE age>20

 Чтобы в PhpMyAdmin создать SQL запрос, нажимаем на нужную нам таблицу и переходим во вкладку SQL. С нашим условием выведутся данные о 2 пользователях, возраст которых больше 20 лет

Вернуться к содержанию курса по php  Перейти к теме Работа с базами данных в PHP >>

Полезно : Регистрация домена и размещение сайта на хостинге

Поделиться 

 

 

Web-разработка • Yii2 и Laravel

Создание таблиц БД


Начнем с каталога товаров. Нам потребуются три таблицы в базе данных для хранения категорий, брендов и товаров. Подключаемся к серверу БД и создаем новую базу данных larashop. После этого создаем три модели — Product, Category и Brand — вместе с файлами миграции. Отредактируем файлы классов миграций, чтобы наши таблицы содержали все необходимые поля.

> php artisan make:model Category -m
> php artisan make:model Brand -m
> php artisan make:model Product -m
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateCategoriesTable extends Migration {
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up() {
        Schema::create('categories', function (Blueprint $table) {
            $table->id();
            $table->unsignedBigInteger('parent_id')->nullable(false)->default(0);
            $table->string('name', 100);
            $table->string('content', 200)->nullable();
            $table->string('slug', 100)->unique();
            $table->string('image', 50)->nullable();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down() {
        Schema::dropIfExists('categories');
    }
}
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateBrandsTable extends Migration {
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up() {
        Schema::create('brands', function (Blueprint $table) {
            $table->id();
            $table->string('name', 100);
            $table->string('content', 200)->nullable();
            $table->string('slug', 100)->unique();
            $table->string('image', 50)->nullable();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down() {
        Schema::dropIfExists('brands');
    }
}
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateProductsTable extends Migration {
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up() {
        Schema::create('products', function (Blueprint $table) {
            $table->id();
            $table->bigInteger('category_id')->unsigned()->nullable();
            $table->bigInteger('brand_id')->unsigned()->nullable();
            $table->string('name', 100);
            $table->text('content')->nullable();
            $table->string('slug', 100)->unique();
            $table->string('image', 50)->nullable();
            $table->decimal('price', 10, 2, true)->default(0);
            $table->timestamps();

            // внешний ключ, ссылается на поле id таблицы categories
            $table->foreign('category_id')
                ->references('id')
                ->on('categories')
                ->nullOnDelete();
            // внешний ключ, ссылается на поле id таблицы brands
            $table->foreign('brand_id')
                ->references('id')
                ->on('brands')
                ->nullOnDelete();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down() {
        Schema::dropIfExists('products');
    }
}


Перед тем, как создавать таблицы базы данных, надо задать параметры подключения к серверу БД в файле .env:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=larashop
DB_USERNAME=root
DB_PASSWORD=qwerty


Теперь все готово к миграции, создаем таблицы базы данных с помощью команды:

> php artisan migrate
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated:  2014_10_12_000000_create_users_table (0.03 seconds)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated:  2014_10_12_100000_create_password_resets_table (0.03 seconds)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated:  2019_08_19_000000_create_failed_jobs_table (0.02 seconds)
Migrating: 2020_09_28_130327_create_categories_table
Migrated:  2020_09_28_130327_create_categories_table (0.03 seconds)
Migrating: 2020_09_28_130335_create_brands_table
Migrated:  2020_09_28_130335_create_brands_table (0.03 seconds)
Migrating: 2020_09_28_130346_create_products_table
Migrated:  2020_09_28_130346_create_products_table (0.1 seconds)
--
-- Структура таблицы `users`
--
CREATE TABLE `users` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `email_verified_at` timestamp NULL DEFAULT NULL,
  `password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `remember_token` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Индексы таблицы `users`
--
ALTER TABLE `users`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `users_email_unique` (`email`);

--
-- AUTO_INCREMENT для таблицы `users`
--
ALTER TABLE `users`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;
COMMIT;
--
-- Структура таблицы `categories`
--
CREATE TABLE `categories` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `parent_id` bigint(20) UNSIGNED NOT NULL DEFAULT '0',
  `name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
  `content` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `slug` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
  `image` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Индексы таблицы `categories`
--
ALTER TABLE `categories`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `categories_slug_unique` (`slug`);

--
-- AUTO_INCREMENT для таблицы `categories`
--
ALTER TABLE `categories`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;
COMMIT;
--
-- Структура таблицы `brands`
--
CREATE TABLE `brands` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
  `content` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `slug` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
  `image` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Индексы таблицы `brands`
--
ALTER TABLE `brands`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `brands_slug_unique` (`slug`);

--
-- AUTO_INCREMENT для таблицы `brands`
--
ALTER TABLE `brands`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;
COMMIT;
--
-- Структура таблицы `products`
--
CREATE TABLE `products` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `category_id` bigint(20) UNSIGNED DEFAULT NULL,
  `brand_id` bigint(20) UNSIGNED DEFAULT NULL,
  `name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
  `content` text COLLATE utf8mb4_unicode_ci,
  `slug` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
  `image` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `price` decimal(10,2) UNSIGNED NOT NULL DEFAULT '0.00',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Индексы таблицы `products`
--
ALTER TABLE `products`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `products_slug_unique` (`slug`),
  ADD KEY `products_category_id_foreign` (`category_id`),
  ADD KEY `products_brand_id_foreign` (`brand_id`);

--
-- AUTO_INCREMENT для таблицы `products`
--
ALTER TABLE `products`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- Ограничения внешнего ключа таблицы `products`
--
ALTER TABLE `products`
  ADD CONSTRAINT `products_brand_id_foreign` FOREIGN KEY (`brand_id`) REFERENCES `brands` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `products_category_id_foreign` FOREIGN KEY (`category_id`) REFERENCES `categories` (`id`) ON DELETE SET NULL;
COMMIT;

Заполнение таблиц БД


Laravel включает в себя механизм наполнения базы данных начальными данными (seeding) с помощью специальных классов. Все такие классы хранятся в директории database/seeds. Для создания заготовок классов CategoryTableSeeder, BrandTableSeeder и ProductTableSeeder используем команду:

> php artisan make:seeder CategoryTableSeeder
> php artisan make:seeder BrandTableSeeder
> php artisan make:seeder ProductTableSeeder


По умолчанию в Laravel уже определён класс DatabaseSeeder. Из этого класса можно вызывать метод call() для подключения других классов с данными, что позволит контролировать порядок их выполнения.

<?php
use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder {
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run() {
        $this->call(CategoryTableSeeder::class);
        $this->command->info('Таблица категорий загружена данными!');

        $this->call(BrandTableSeeder::class);
        $this->command->info('Таблица брендов загружена данными!');

        $this->call(ProductTableSeeder::class);
        $this->command->info('Таблица товаров загружена данными!');
    }
}


Файлы фабрик моделей хранятся в директории database/factories, и там уже есть один готовый файл UserFactory.php — это фабрика для модели User. Чтобы создать фабрику для моделей Category, Brand и Product — используем artisan-команду:

> php artisan make:factory CategoryFactory --model=Category
> php artisan make:factory BrandFactory --model=Brand
> php artisan make:factory ProductFactory --model=Product
<?php
/** @var \Illuminate\Database\Eloquent\Factory $factory */

use App\Category;
use Illuminate\Support\Str;
use Faker\Generator as Faker;

$factory->define(Category::class, function (Faker $faker) {
    $name = $faker->realText(rand(30, 40));
    return [
        'name' => $name,
        'content' => $faker->realText(rand(150, 200)),
        'slug' => Str::slug($name),
    ];
});
<?php
/** @var \Illuminate\Database\Eloquent\Factory $factory */

use App\Brand;
use Illuminate\Support\Str;
use Faker\Generator as Faker;

$factory->define(Brand::class, function (Faker $faker) {
    $name = $faker->realText(rand(20, 30));
    return [
        'name' => $name,
        'content' => $faker->realText(rand(150, 200)),
        'slug' => Str::slug($name),
    ];
});
<?php
/** @var \Illuminate\Database\Eloquent\Factory $factory */

use App\Product;
use Illuminate\Support\Str;
use Faker\Generator as Faker;

$factory->define(Product::class, function (Faker $faker) {
    $name = $faker->realText(rand(40, 50));
    return [
        'category_id' => rand(1, 4),
        'brand_id' => rand(1, 4),
        'name' => $name,
        'content' => $faker->realText(rand(400, 500)),
        'slug' => Str::slug($name),
        'price' => rand(1000, 2000),
    ];
});


Осталось только отредактировать файлы классов CategoryTableSeeder, BrandTableSeeder и ProductTableSeeder:

<?php
use Illuminate\Database\Seeder;

class CategoryTableSeeder extends Seeder {
    public function run() {
        // создать 4 категории
        factory(App\Category::class, 4)->create();
    }
}
<?php
use Illuminate\Database\Seeder;

class BrandTableSeeder extends Seeder {
    public function run() {
        // создать 4 бренда
        factory(App\Brand::class, 4)->create();
    }
}
<?php
use Illuminate\Database\Seeder;

class ProductTableSeeder extends Seeder {
    public function run() {
        // создать 12 товаров
        factory(App\Product::class, 12)->create();
    }
}


Заполняем таблицы базы данных начальными данными:

> php artisan migrate:fresh --seed
  • Магазин на Laravel 7, часть 10. Форма оформления, сохранение заказа в базу данных
  • Магазин на Laravel 7, часть 2. Создание контроллера и шаблонов, добавление маршрутов
  • Магазин на Laravel 7, часть 25. Поиск по каталогу товаров, деплой проекта на хостинг TimeWeb
  • Магазин на Laravel 7, часть 24. Фильтр товаров категории по цене, новинкам и лидерам продаж
  • Магазин на Laravel 7, часть 23. Главная страница сайта, новинки, лидеры продаж и распродажа
  • Магазин на Laravel 7, часть 22. Рефакторинг кода, работа над каталогом товаров и корзиной
  • Магазин на Laravel 7, часть 21. Добавляем профили и используем их при оформлении заказа

Поиск:
CLI • Laravel • MySQL • PHP • Web-разработка • База данных • Интернет магазин • Каталог товаров • Миграции • Практика

отображать данные из базы данных SQL в таблицу php / html

Вот простая функция, которую я написал для отображения табличных данных без необходимости вводить имя каждого столбца:
(Также имейте в виду: вложенный цикл)

  function display_data ($ data) {
    $ output = '<таблица>';
    foreach ($ data as $ key => $ var) {
        $ output. = '';
        foreach ($ var as $ k => $ v) {
            if ($ key === 0) {
                $ output. = ' '. $ k. ' ';
            } еще {
                $ output.= ''. $ v. '';
            }
        }
        $ output. = '';
    }
    $ output. = '';
    echo $ output;
}
  

ОБНОВЛЕННАЯ ФУНКЦИЯ НИЖЕ

Хай Джек,

, ваша функция работает нормально, но эта функция всегда пропускает первый набор данных в массиве. Я это проверил.

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

Отсутствующий набор данных является результатом условия, если ключ === 0. Если ключ = 0, записываются только заголовки столбцов, но не данные, которые также содержат $ ключ 0. Таким образом, всегда отсутствует первый набор данных в массиве.

Этого можно избежать, переместив условие if над вторым циклом foreach следующим образом:

  function display_data ($ data) {
    $ output = "<таблица>";
    foreach ($ data as $ key => $ var) {
        // $ output. = '';
        if ($ key === 0) {
            $ output.= '';
            foreach ($ var as $ col => $ val) {
                $ output. = "". $ col. '';
            }
            $ output. = '';
            foreach ($ var as $ col => $ val) {
                $ output. = ''. $ val. '';
            }
            $ output. = '';
        }
        еще {
            $ output. = '';
            foreach ($ var as $ col => $ val) {
                $ output. = ''. $ val. '';
            }
            $ output.= '';
        }
    }
    $ output. = '';
    echo $ output;
}
  

С уважением и благодарностью — Axel Arnold Bangert — Herzogenrath 2016

и другое обновление, которое удаляет избыточные блоки кода, которые ухудшают ремонтопригодность кода.

  function display_data ($ data) {
$ output = '<таблица>';
foreach ($ data as $ key => $ var) {
    $ output. = '';
    foreach ($ var as $ k => $ v) {
        if ($ key === 0) {
            $ output.= ' '. $ k. ' ';
        } еще {
            $ output. = ''. $ v. '';
        }
    }
    $ output. = '';
}
$ output. = '';
echo $ output;
  

}

Создать запрос таблицы с если существует и удалить sql в скрипте php

Мы можем создать новую таблицу с помощью Query. Вы можете увидеть, как выполнить запрос и получить записи или изменить записи в MySQL. Таким же образом мы можем запустить одну команду sql для создания таблиц.

  $ q = "СОЗДАТЬ ТАБЛИЦУ` sample_tb` (`empno` VARCHAR (6) NOT NULL)";  

Вышеупомянутый запрос создаст таблицу sample_tb и добавит к ней один столбец empno . Но обратите внимание, что мы должны выполнить приведенный выше код. После выполнения мы можем узнать, успешно ли выполнен запрос, используя одно условие if. Если запрос не будет выполнен успешно, мы напечатаем сообщение об ошибке. Если процесс создания таблицы прошел успешно, мы отобразим сообщение об успешном завершении.Вот код

  $ query = "СОЗДАТЬ ТАБЛИЦУ` sample_tb` (`empno` VARCHAR (6) NOT NULL)";
if ($ connection-> query ($ query)) {
echo "создана таблица sample_tb ....";
}еще{
echo $ connection-> ошибка;
}
  

Как видите, мы создали таблицу с одним столбцом для хранения данных. Что произойдет, если таблица sample_tb уже существует, и мы попытаемся ее создать снова? Система выдаст сообщение об ошибке.

  Таблица sample_tb уже существует  

Поэтому, прежде чем пытаться создать таблицу, мы удалим ее, а затем создадим заново. (Примечание: сделайте это, если есть ваше требование). Мы также не можем удалить таблицу, не проверив, есть ли таблица или нет. Поэтому мы будем использовать такую ​​команду, если существует.

  $ query = "УДАЛИТЬ таблицу, если существует sample_tb";
if ($ connection-> query ($ query)) {
echo "Таблица sample_tb удалена ....";
}еще{
echo $ connection-> ошибка;
}  

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

Как проверить, создана таблица или нет?

Мы можем использовать запрос SHOW TABLE для вывода списка таблиц в базе данных.

(имя нашей базы данных — sql_tutorial)

  if ($ stmt = $ connection-> query ("ПОКАЗАТЬ ТАБЛИЦЫ КАК 'sample_tb'")) {
 если ($ stmt-> num_rows == 1) {
echo "таблица создана";
  }еще{
echo $ connection-> ошибка;
}
}  

Эта статья написана plus2net.com команда.

plus2net.com

Подробнее об изменении или скрытии таблицы, добавлении обновлений или удалении записей в SQL

создать таблицу с помощью другой таблицы

Создание таблицы MySQL с помощью другой таблицы

Давайте рассмотрим типичную задачу, которую разработчик выполняет в своей повседневной работе. Таблица базы данных должна быть изменена с учетом ее данных и / или структуры.
Прежде чем вносить какие-либо изменения, первое, что всегда полезно сделать, — это создать резервную копию таблицы базы данных.Легкий способ
для этого нужно написать кусок сценария SQL, как показано ниже. Сценарий состоит в том, что мы собираемся внести некоторые изменения в таблицу «Товары», так что поехали.

Для большинства запросов в руководствах требуется база данных Northwind MySQL, вы можете загрузить сценарий базы данных на этой странице.

 создать таблицу products_bk 
as
выбрать * из продуктов

Приведенный выше код SQL создает резервную копию таблицы Products_bk, которая содержит все данные из таблицы Products. Затем вы можете продолжить любые изменения
вы хотите сделать с таблицей продуктов.Если что-то пойдет не так, вы можете воссоздать таблицу из резервной копии, как по структуре, так и по данным.

В MySQL вы можете создать новую таблицу и данные из существующей таблицы, это иногда также называют клонированием или копированием таблицы. По сути,
вы можете создать новую таблицу из существующей таблицы, добавив оператор SELECT в конец оператора CREATE TABLE.

Для получения дополнительных сведений см. Руководство по MySQL для используемой версии.
CREATE TABLE … SELECT Синтаксис

Основной синтаксис:

СОЗДАТЬ ТАБЛИЦУ [ЕСЛИ НЕ СУЩЕСТВУЕТ] new_tbl [AS] SELECT * FROM existing_tbl;

Сначала он создает новую таблицу, а затем вставляет в нее данные на основе столбцов, используемых в операторе SELECT из существующей таблицы.

При использовании существует несколько вариантов основного синтаксиса.

1. Создайте точную копию существующей таблицы.

Это самый простой способ создания таблицы. Синтаксис структуры таблицы (столбцы, типы данных, ограничения и т. Д.) Не задействован. Новый стол будет
просто создаваться с использованием той же структуры существующей таблицы. Новая таблица также будет содержать все данные из существующей таблицы.

 создать таблицу products_bk 
as
выбрать * из продуктов

2.Создайте новую таблицу на основе одной или нескольких существующих таблиц.

Здесь мы создаем новую таблицу с именем product_sold_by_order для продуктов в каждом заказе и общих продаж каждого продукта.

Все столбцы, созданные в новой таблице, берутся из определений столбцов в операторе SELECT. MySQL определяет лучший тип данных для использования в вычисляемых столбцах, например
столбец TotalSales. Запрос SELECT может быть простым или сложным, в зависимости от ваших потребностей, например с использованием WHERE, JOIN, UNION, GROUP BY, HAVING и т. Д.

 создать таблицу product_sold_by_order 
как
выбрать отдельный y.OrderID,
y.ProductID,
x.ProductName,
y.UnitPrice,
y.Quantity,
y.Discount,
круглый (y.UnitPrice * y.Quantity * ( 1 - y.Discount), 2) как TotalSales
из Products x
внутреннее соединение Order_Details y на x.ProductID = y.ProductID
order by y.OrderID;

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

Приведенный ниже запрос аналогичен показанному выше, но в операторе создания таблицы он указал новый столбец, который должен быть создан с типом данных, а не с нулевым ограничением,
и атрибут auto_increment. В новой таблице product_sold_by_order2 все столбцы в операторе SELECT добавляются с правой стороны от дополнительных новых
ID столбца. Это дает нам возможность добавлять дополнительные новые столбцы без необходимости писать и запускать еще один запрос ALTER table после создания новой таблицы.

 создать таблицу product_sold_by_order2 (ID int not null auto_increment, PRIMARY KEY (ID)) 
as
выбрать отдельный y.OrderID,
y.ProductID,
x.ProductName,
y.UnitPrice,
y.Quantity,
y.Discount ,
round (y.UnitPrice * y.Quantity * (1 - y.Discount), 2) как TotalSales
из продуктов x
внутреннее соединение Order_Details y на x.ProductID = y.ProductID
order by y.OrderID;

На заметку:

  • Ключевое слово AS является необязательным, но всегда рекомендуется использовать его, чтобы соответствовать тому же типу запроса, который используется другим механизмом базы данных, таким как Oracle, PostgreSQL, SQLite и т. Д.
  • Создание таблицы таким образом не приводит к автоматическому созданию индексов для новой таблицы. Если вам нужны индексы в новой таблице, укажите их перед
    Оператор SELECT, аналогичный указанию PRIMARY KEY (ID) в приведенном выше примере, например вы можете указать INDEX (ProductName) или KEY (ProductName), который создает индекс для столбца ProductName.
    КЛЮЧ обычно является синонимом ИНДЕКС.

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

  • Будьте осторожны при использовании ключевых слов ЕСЛИ НЕ СУЩЕСТВУЕТ в версиях MySQL до 5.5.6, если целевая таблица существует в базе данных, она вставляет строки в таблицу, если используются ключевые слова IF NOT EXISTS.
    Возможно, это не то, что вам нужно. Начиная с MySQL 5.5.6, если задано IF NOT EXISTS и целевая таблица существует, в целевую таблицу ничего не вставляется.

    Поэтому, чтобы избежать неожиданного результата или побочного эффекта, перед использованием оператора CREATE TABLE … SELECT убедитесь, что:

    (1) вы проверяете версию MySQL, которую используете.

    (2) целевая таблица НЕ существует.Если он существует, переименуйте или удалите его. Затем после создания целевой таблицы проверьте ее структуру.
    чтобы убедиться, что все, что вы хотите, есть. Если нет, измените структуру таблицы в соответствии со своими потребностями.

    В качестве альтернативы вы можете разбить создание таблицы на 2 четких этапа: сначала создайте таблицу, а затем заполните ее данными.

    Метод № 1:

    Используйте СОЗДАТЬ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ
    в операторе, затем INSERT … SELECT в другом операторе, а не CREATE TABLE IF NOT EXISTS… SELECT в одном заявлении.

    Сначала создайте таблицу.

     создать таблицу ProductsAboveAvgPrice 
    (
    ProductName varchar (40) not null,
    UnitPrice double not null
    )

    Затем добавьте данные в новую таблицу.

     вставить в ProductsAboveAvgPrice 
    выбрать отдельное ProductName, UnitPrice
    из продуктов
    , где UnitPrice> (выбрать avg (UnitPrice) из продуктов)
    заказать по UnitPrice

    Метод № 2:

    Создайте структуру таблицы из существующей таблицы с помощью CREATE TABLE… LIKE, затем INSERT … SELECT в другом операторе.

    Сначала используйте CREATE TABLE … LIKE, чтобы создать пустую таблицу на основе определения другой таблицы, включая любые атрибуты столбца и индексы.
    определено в исходной таблице.

     создать таблицу employee_copy как сотрудники 

    Теперь вставьте данные в таблицу employee_copy.

     вставить в сотрудники_копировать 
    выбрать * из сотрудников

    Примечание:

    — СОЗДАТЬ ТАБЛИЦУ… Оператор LIKE работает только для базовых таблиц, но не для представлений.

    — Если исходная таблица является TEMPORARY таблицей, CREATE TABLE … LIKE не сохраняет TEMPORARY, что означает, что созданная пустая таблица будет постоянной таблицей, а не временной таблицей.
    Чтобы создать пустую TEMPORARY таблицу, используйте CREATE TEMPORARY TABLE … LIKE.

    Следующий оператор создает временную таблицу для продуктов с ценой выше средней.

     создать временную таблицу tempProductsAboveAvgPrice 
    as
    выбрать отдельное ProductName, UnitPrice
    из продуктов
    , где UnitPrice> (выбрать среднее (UnitPrice) из продуктов)
    заказать по UnitPrice

    Затем, если вы создадите пустую таблицу на основе структуры временной таблицы tempProductsAboveAvgPrice, будет создана пустая таблица
    как постоянная таблица в базе данных Northwind.Таблицу можно увидеть, если вы запустите оператор SHOW TABLES.

     создать таблицу tempProductsAboveAvgPrice_copy как tempProductsAboveAvgPrice 

    Чтобы создать ВРЕМЕННУЮ пустую таблицу, используйте СОЗДАТЬ ВРЕМЕННУЮ ТАБЛИЦУ … КАК. Таким образом, пустая таблица tempProductsAboveAvgPrice_copy2 не станет
    часть схемы базы данных Northwind.

     создать временную таблицу tempProductsAboveAvgPrice_copy2 как tempProductsAboveAvgPrice 

Удачного кодирования!

Другие руководства в этой категории

1.Создайте таблицу MySQL с помощью оператора CREATE TABLE

2. Создайте временную таблицу MySQL

Вернуться к странице указателя руководства

MySQL: CREATE TABLE AS Заявление


В этом учебном пособии MySQL объясняется, как использовать оператор MySQL CREATE TABLE AS с синтаксисом и примерами.

Описание

Оператор MySQL CREATE TABLE AS используется для создания таблицы из существующей таблицы путем копирования столбцов существующей таблицы.

Важно отметить, что при создании таблицы таким образом новая таблица будет заполнена записями из существующей таблицы (на основе оператора SELECT).

Синтаксис

Синтаксис оператора CREATE TABLE AS в MySQL:

 СОЗДАТЬ ТАБЛИЦУ [ЕСЛИ НЕ СУЩЕСТВУЕТ] новая_таблица [КАК]
  ВЫБРАТЬ выражения
  ИЗ существующих_таблиц
  [ГДЕ условия]; 

Параметры или аргументы

ЕСЛИ НЕ СУЩЕСТВУЕТ
Необязательно.Если указано, оператор CREATE TABLE AS не вызовет ошибку, если таблица уже существует.
новая_таблица
Имя таблицы, которую вы хотите создать.
AS
Необязательно. Если вы укажете ключевое слово AS или нет, это не повлияет на создание таблицы.
выражений
Столбцы из existing_tables , которые вы хотите создать в new_table . Определения столбцов из перечисленных столбцов будут перенесены в созданную вами new_table .
существующие_таблицы
Существующие таблицы, из которых можно скопировать определения столбцов и связанные записи (согласно предложению WHERE).
ГДЕ условия
Необязательно. Условия, которые должны быть выполнены для копирования записей в new_table .

Примечание

  • Определения столбцов из existing_tables будут скопированы в new_table .
  • new_table будет заполнен записями на основе условий в предложении WHERE.

Пример

Давайте посмотрим на пример MySQL CREATE TABLE AS, который показывает, как создать таблицу путем копирования всех столбцов из другой таблицы.

 СОЗДАТЬ ТАБЛИЦУ local_companies AS
  ВЫБРАТЬ *
  ОТ компаний
  ГДЕ государство = 'Флорида'; 

В этом примере будет создана новая таблица с именем local_companies , включающая все столбцы из таблицы companies .

Если бы в таблице company были записи, то новая таблица local_companies была бы заполнена записями, возвращаемыми оператором SELECT.

Затем давайте рассмотрим пример CREATE TABLE AS, который показывает, как создать таблицу путем копирования выбранных столбцов из нескольких таблиц.

Например:

 СОЗДАТЬ ТАБЛИЦУ поставщиков КАК
  ВЫБЕРИТЕ companies.company_id КАК "supplier_id",
         компании.адрес, компании.государство, категории.тип_категории
  ОТ компаний, категорий
  ГДЕ companies.company_id = category.category_id
  И companies.state = 'Флорида'; 

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

Создание приложения базы данных CRUD для PHP и MySQL с нуля

В этом руководстве мы собираемся узнать, как создать очень простое приложение для базы данных с использованием PHP и MySQL. Это будет половина приложения CRUD, что означает C reate, R ead, U pdate, D elete.

Кратким примером приложения CRUD может служить база данных сотрудников компании. Из панели управления администратор собирается добавить нового сотрудника (, создать ), просмотреть список сотрудников (, читать ), изменить зарплату сотрудника (, обновить ) или удалить уволенного сотрудника из системы ( удалить ). В этом уроке мы будем только создавать и читать записи, но если они окажутся популярными, я сделаю вторую часть.

Поиск , как подключиться к MySQL с PHP в Google, приведет к появлению большого количества устаревших ресурсов с использованием устаревшего кода, и моя цель — создать очень простое пошаговое руководство, которое оставит вам технически работающее приложение, использующее более современные и безопасные методы.

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

Предварительные требования
  • Базовые знания HTML — Мы будем использовать формы HTML.
  • Базовые знания PHP — я сделаю все возможное, чтобы максимально упростить, но вы уже должны иметь представление о том, как работают переменные и строки.Вот базовое руководство по некоторым основам.
  • Локальная среда PHP и MySQL — Щелкните ссылку, чтобы просмотреть мини-руководство по настройке. Вы будете использовать MAMP для установки PHP и MySQL на компьютер Windows или Apple.
  • В качестве альтернативы: вы можете использовать Vagrant для настройки LAMP в Ubuntu, если вы более продвинуты.
  • Приложение для управления базами данных — Вы можете использовать Sequel Pro на Mac и SQLYog в Windows. Это графические пользовательские интерфейсы (GUI) для просмотра содержимого вашей базы данных.
Голы
  • Подключитесь к базе данных MySQL с помощью PHP с помощью метода PDO (объекты данных PHP).
  • Создайте сценарий установщика, который создает новую базу данных и новую таблицу со структурой.
  • Добавить записи в базу данных с помощью HTML-формы и подготовленных операторов.
  • Отфильтруйте записи базы данных и распечатайте их в документе HTML в виде таблицы.

Весь код этой статьи можно найти на GitHub.

Обновление

: часть вторая уже здесь! Узнайте, как обновлять и удалять записи.

Шаг 1. Создание внешнего интерфейса

Для начала у нас настроен локальный хост PHP, как указано в наших предварительных требованиях. Я создал один и назвал его db.dev . Давайте создадим каталог под названием public / в корне нашего проекта. Здесь я собираюсь разместить весь свой клиентский код или те страницы, которые будут доступны из Интернета.

Chrome больше не разрешает доменов .dev localhost. Я рекомендую использовать .test вместо .dev . В этой статье в примерах будет использоваться .dev .

Пожалуйста, убедитесь, что вы прочитали примечание выше, прежде чем продолжить.

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

Индексная страница и части шаблона

Наша главная / домашняя страница будет расположена по адресу index.php , поэтому создайте этот файл в каталоге public / .

общедоступный / index.php

  

  
    
    
    

     Простое приложение для базы данных 

    
  

  
    

Простое приложение для базы данных

Прямо сейчас у нас есть только базовый скелет HTML, который будет ссылаться на наши создать и прочитать страниц. Вот как это выглядит:

Поскольку мы хотим, чтобы наше приложение оставалось относительно СУХИМ (не повторяйтесь), мы собираемся разделить нашу страницу на разделы макета.

Создайте общедоступную директорию templates / и сделайте header.php и footer.php . Вы возьмете все, начиная с тега

и выше, и поместите его в заголовок.

общедоступные / шаблоны / header.php

  

  
    
    
    

     Простое приложение для базы данных 

    
  

  
    

Простое приложение для базы данных

А вот и нижний колонтитул.

общедоступные / шаблоны / footer.php

Все, что осталось в index.php на данный момент, — это ссылки на две наши другие страницы.

общедоступный / index.php

    

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

общедоступный / index.php

  



  

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

Добавить страницу нового пользователя

Теперь мы собираемся создать файл с именем create.php в нашем каталоге public / . Это будет страница, которую мы будем использовать для добавления нового пользователя в базу данных.Мы начнем файл с загруженными верхним и нижним колонтитулами.

общедоступный / create.php

  
      

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

общедоступный / create.php

   

Добавить пользователя

Вернуться на главную

Вы заметите, что для каждой записи у меня есть , и каждый имеет атрибут name и id .

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

Итак, почему у меня name = "firstname" , а также id = "firstname" , если для связывания ввода с меткой необходим только идентификатор?

Имя Атрибут — это то, как PHP идентифицирует и использует данные ввода, о чем мы начнем дальше в этой статье.Следовательно, атрибуты name и id необходимы, но по разным причинам.

Прежде чем я покажу переднюю часть кода create.php , давайте быстро создадим папку css / и сделаем style.css . CSS и стиль не являются предметом внимания этой статьи, но я собираюсь добавить строку кода CSS, чтобы формы было легче читать.

общедоступный / css / style.css

  этикетка {
  дисплей: блок;
  маржа: 5px 0;
}  

Мы не указали действие формы, поэтому нажатие кнопки submit выполнит действие на той же странице.Поскольку мы еще не написали PHP-код для обработки формы, он ничего не сделает.

Запросить страницу пользователя

Наконец, мы собираемся создать наш файл read.php , который будет запрашивать список пользователей по параметру (в данном случае местоположению) и распечатывать результаты.

Опять же, мы начнем с кода верхнего и нижнего колонтитула.

общедоступный / read.php

  
      

Затем мы добавим небольшую форму для поиска пользователей по местоположению.

общедоступный / read.php

  

    

Поиск пользователя по местоположению

Вернуться домой

Теперь у вас настроен весь внешний код, и мы можем начать.Вот все, что у вас должно быть на данный момент.

  общественный /
| - css /
| | - style.css
| - шаблоны /
| | - header.php
| | - footer.php
| - index.php
| - create.php
| - read.php  

Вот это более наглядное представление.

Шаг 2: Инициализация базы данных

Теперь, когда у нас есть интерфейс, мы собираемся создать базу данных. Мы могли бы сделать это через графический интерфейс SequelPro или любого другого менеджера баз данных, который мы используем, но я хочу показать вам, как это сделать с помощью реальных операторов SQL и PHP в сценарии установщика.

SQL (язык структурированных запросов) — это язык, используемый для взаимодействия с базой данных.

Сначала займемся базой данных. Вот страница входа в нашу базу данных.

Ваш хост будет localhost или 127.0.0.1 , что для наших целей означает то же самое. Имя пользователя и пароль будут root . Введя эту информацию, вы сможете ввести localhost.

Создайте каталог с именем data / и создайте файл с именем init.sql . Это будет код инициализации нашей базы данных.

данные / init.sql

  CREATE DATABASE test;

  использовать тест;

  СОЗДАТЬ ТАБЛИЦУ пользователей (
    id INT (11) НЕПОДПИСАННЫЙ ПЕРВИЧНЫЙ КЛЮЧ AUTO_INCREMENT,
    firstname VARCHAR (30) NOT NULL,
    фамилия VARCHAR (30) NOT NULL,
    электронная почта VARCHAR (50) NOT NULL,
    возраст INT (3),
    расположение VARCHAR (50),
    дата TIMESTAMP
  );  

SQL — относительно простой код, поэтому, даже если вы никогда его раньше не видели, его легко понять.Вот что это означает на простом английском языке:

Мы собираемся создать базу данных под названием test . Затем мы собираемся убедиться, что используем test для остальной части нашего кода. В базе данных test мы создадим таблицу с именем users с 7 полями внутри — id , firstname , lastname , email , age , location , and date . Рядом с каждым полем есть дополнительная информация, параметры и настройки для каждого.

  • INT () — это целое число . Мы указали INT (11) , что означает до 11 символов
  • AUTO_INCREMENT — это число, которое будет автоматически увеличиваться с каждой записью.
  • VARCHAR () — означает переменный символ , это строка, которая может содержать буквы и цифры. Число внутри — это максимально допустимое количество символов.
  • TIMESTAMP — по умолчанию будет добавлено текущее время в формате ГГГГ-ММ-ДД ЧЧ: MI: SS .

Тестирование SQL-запроса

Если вы действительно хотите увидеть, что будет делать этот код, прежде чем мы создадим установщик, вы можете вставить его в раздел Query вашей программы базы данных и Run Selection .

Если вы это сделали, вы увидите, что у меня теперь есть база данных test , таблица users и вся структура базы данных.

Итак, мы знаем, что наш SQL работает правильно и не содержит ошибок.Если вы это сделали, удалите базу данных, потому что мы собираемся начать все сначала и сделать это через скрипт.

Использование PDO для подключения к базе данных

Мы собираемся использовать PDO (объекты данных PHP) для подключения к базе данных. Другой важный вариант — MySQLi. Важное различие между ними заключается в том, что вы можете использовать PDO для подключения к любому количеству баз данных, а код mysqli будет работать только с MySQL. Хотя мы используем базу данных MySQL, PDO более расширяема в будущем и, как правило, является предпочтительным выбором для новых проектов.Итак, давайте создадим эту связь.

Создайте файл с именем install.php в корне вашего каталога.

Мы создадим новый объект PDO () и поместим его в переменную с именем $ connection .

install.php

Объект PDO запросит четыре параметра:

  • DSN (имя источника данных), которое включает тип базы данных, имя хоста, имя базы данных (необязательно)
  • Имя пользователя для подключения к хосту
  • Пароль для подключения к хосту
  • Дополнительные опции

установить.php

  $ connection = новый PDO (имя источника данных, имя пользователя, пароль, параметры);  

Вот как это выглядит после того, как мы заполнили все параметры.

install.php

  новый PDO ("mysql: host = localhost", "root", "root",
  множество(
      PDO :: ATTR_ERRMODE => PDO :: ERRMODE_EXCEPTION
  );
);  

Теперь мы собираемся немного упорядочить его, поместив всю информацию из нашей базы данных в переменные.

install.php

  $ connection = новый PDO ("mysql: host = $ host", $ username, $ password, $ options);  

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

config.php

   PDO :: ERRMODE_EXCEPTION
              );  

Вот что у нас есть в программе установки. Мы извлекаем переменные базы данных через config.php , используя require , что похоже на include , за исключением того, что мы явно указываем, что файл необходим для запуска скрипта.

install.php

  требуется "config.php";

$ connection = новый PDO ("mysql: host = $ host", $ username, $ password, $ options);  

Теперь пришло время применить тот код SQL, который мы создали ранее. Мы поместим содержимое файла data / init.sql в переменную с помощью функции file_get_contents () и выполним ее с помощью функции exec () .

  $ sql = file_get_contents ("данные / init.sql");
$ соединение-> exec ($ sql);  

На этом этапе мы собираемся использовать Исключения, чтобы попытаться запустить сценарий и отловить ошибки.Мы сделаем это, поместив весь наш код в блок try / catch , который выглядит так:

Давайте поместим код нашей базы данных в блок try и покажем сообщение об ошибке PDOException , если что-то пойдет не так при попытке настроить базу данных. Вот окончательный код установщика.

install.php

   exec ($ sql);

  echo "База данных и таблица пользователей успешно созданы.";
} catch (PDOException $ error) {
  echo $ sql. «
». $ error-> getMessage (); }

Чтобы запустить установку, просто перейдите к файлу install.php во внешнем интерфейсе.

Если вы раньше не удаляли свою базу данных из нашего теста, вы можете получить эту ошибку, и в этом случае вам нужно будет удалить базу данных для запуска установщика.

Поздравляем, вы только что создали сценарий установки для создания новой базы данных и таблицы со структурой!

Шаг 3. Добавление нового пользователя

Теперь мы наконец-то напишем код, чтобы эти формы что-то делали.

В PHP, когда вы отправляете форму, все входные данные помещаются в массив $ _POST . Итак, мой будет преобразован в $ _POST ['firstname'] , с которым мы будем работать.

Мы собираемся вернуться к файлу public / create.php . Сейчас это просто форма с втянутыми верхним и нижним колонтитулами. Новый код, который мы пишем, будет добавлен в начало файла.

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

  if (isset ($ _ POST ['submit'])) {}  

Как и в случае с установщиком, мы собираемся требовать наш файл конфигурации и использовать try / catch Exception для подключения к базе данных.

Если вы заметили, в сценарии install.php я подключался только к mysql: host = $ host в первом параметре (DSN). Я не указал имя базы данных, потому что мы создавали базу данных в файле. Теперь, когда база данных (с именем test ) создана, я добавляю ее к первому параметру. $ dsn установлен на mysql: host = $ host; dbname = $ dbname .

  if (isset ($ _ POST ['submit'])) {
  требуется "../config.php";

  пытаться {
    $ connection = новый PDO ($ dsn, $ username, $ password, $ options);
    

  } catch (PDOException $ error) {
    echo $ sql. «
». $ error-> getMessage (); } }

Давайте создадим массив со всеми представленными нами значениями формы.

  $ new_user = массив (
  "firstname" => $ _POST ['firstname'],
  "lastname" => $ _POST ['lastname'],
  "email" => $ _POST ['email'],
  "age" => $ _POST ['age'],
  "location" => $ _POST ['location']
);  

Мы можем использовать обычные переменные $ _POST без дальнейшей очистки, потому что мы отправляем в базу данных с подготовленными операторами.

Теперь код SQL, который мы собираемся выполнить, будет выглядеть так: INSERT INTO tablename (n) values ​​(: n) . В нашем конкретном случае это будет код ниже.

  ВСТАВИТЬ значения пользователей (имя, фамилия, адрес электронной почты, возраст, местонахождение) (: имя,: фамилия,: электронная почта,: возраст,: местонахождение)  

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

Мы собираемся использовать sprintf , который позволяет нам делать следующее: INSERT INTO x (y) values ​​(: z) .

  $ sql = sprintf (
    "ВСТАВИТЬ В% s (% s) значения (% s)",
    "пользователи",
    implode (",", array_keys ($ new_user)),
    ":". implode (",:", array_keys ($ new_user))
);  

Этот код распечатает одно и то же, без необходимости писать его несколько раз.Теперь мы просто подготовим и выполним код.

  $ statement = $ connection-> подготовить ($ sql);
$ statement-> выполнить ($ new_user);  

Вот полный код в нашем блоке try .

  $ connection = новый PDO ($ dsn, $ username, $ password, $ options);

$ new_user = массив (
  "firstname" => $ _POST ['firstname'],
  "lastname" => $ _POST ['lastname'],
  "email" => $ _POST ['email'],
  "age" => $ _POST ['age'],
  "location" => $ _POST ['location']
);

$ sql = sprintf (
    "ВСТАВИТЬ В% s (% s) значения (% s)",
    "пользователи",
    implode (",", array_keys ($ new_user)),
    ":".implode (",:", array_keys ($ new_user))
);

$ statement = $ connection-> подготовить ($ sql);
$ statement-> выполнить ($ new_user);  

Теперь форма готова к отправке. Я собираюсь заполнить свою информацию и отправить ее.

Зайдя в MySQL, если все прошло хорошо, я теперь могу просмотреть свою запись в базе данных!

Отлично! Я хочу сделать еще кое-что. Прямо сейчас, после отправки формы, я ничего не могу сказать, что пользователь был отправлен успешно.

Экранирование HTML

Поскольку в этом случае мы собираемся распечатать переменную $ _POST в HTML, нам необходимо правильно преобразовать символы HTML, что поможет предотвратить атаки XSS.

Давайте создадим новый файл с именем common.php в корне вашего проекта. Вдохновением для этой функции и имени файла послужил учебник Джона по PHP в блоге. Это файл, который можно использовать для хранения функций для последующего использования. Сегодня я собираюсь использовать его только для одной функции — функции экранирования HTML.

common.php

   

С помощью этой функции мы можем заключить любую переменную в функцию escape () , и объекты HTML будут защищены.

Вернувшись в public / create.php , добавьте требование "common.php"; . Теперь я просто добавлю этот оператор if под заголовком и над заголовком «Добавить пользователя».Он проверит, был ли отправлен $ _POST и успешно ли выполнен $. Если это так, он напечатает сообщение об успешном выполнении, которое включает имя успешно добавленного пользователя.

  
   успешно добавлено.
  

И это все! Вот последний код для добавления нового пользователя.

общедоступный / create.php

   $ _POST ['firstname'],
      "lastname" => $ _POST ['lastname'],
      "email" => $ _POST ['email'],
      "age" => $ _POST ['age'],
      "location" => $ _POST ['location']
    );

    $ sql = sprintf (
"ВСТАВИТЬ В% s (% s) значения (% s)",
"пользователи",
implode (",", array_keys ($ new_user)),
":".implode (",:", array_keys ($ new_user))
    );

    $ statement = $ connection-> подготовить ($ sql);
    $ statement-> выполнить ($ new_user);
  } catch (PDOException $ error) {
    echo $ sql. «
». $ error-> getMessage (); } } ?> > успешно добавлено.

Добавить пользователя

Вернуться на главную

Шаг 4. Просмотр и фильтрация пользователей

Вот и последний шаг - «чтение» нашего CRUD-приложения. Мы уже создали интерфейс в public / read.php .

Действительно быстро, давайте добавим немного CSS в наш файл public / css / style.css , чтобы сделать таблицы удобочитаемыми после их создания.

общедоступный / css / style.css

  стол {
  граница-коллапс: коллапс;
  граница-интервал: 0;
}

тд,
th {
  отступ: 5 пикселей;
  нижняя граница: сплошной 1px #aaa;
}  

Теперь мы собираемся использовать тот же require s с нашей новой пользовательской страницы, а также блок try / catch для подключения к базе данных.

общедоступный / read.php

  if (isset ($ _ POST ['submit'])) {
  пытаться {
    требуется "../config.php";
    требуется "../common.php";

    $ connection = новый PDO ($ dsn, $ username, $ password, $ options);
        
  } catch (PDOException $ error) {
    echo $ sql. «
». $ error-> getMessage (); } } ?>

Теперь напишем SQL-запрос SELECT . Мы собираемся выбрать все ( * ) из таблицы пользователей и отфильтровать по местоположению.

  $ sql = "ВЫБРАТЬ *
  ОТ пользователей
  ГДЕ location =: location ";  

Затем мы поместим наш $ _POST в переменную.

  $ location = $ _POST ['расположение'];  

Подготовьте, свяжите и выполните инструкцию.

  $ statement = $ connection-> подготовить ($ sql);
$ statement-> bindParam (': местоположение', $ местоположение, PDO :: PARAM_STR);
$ оператор-> выполнить ();  

Наконец, получим результат.

  $ результат = $ инструкция-> fetchAll ();  

Вот полный код подключения попробуйте .

  $ connection = новый PDO ($ dsn, $ username, $ password, $ options);

$ sql = "ВЫБРАТЬ *
ОТ пользователей
ГДЕ location =: location ";

$ location = $ _POST ['местоположение'];

$ statement = $ connection-> подготовить ($ sql);
$ statement-> bindParam (': местоположение', $ местоположение, PDO :: PARAM_STR);
$ оператор-> выполнить ();

$ result = $ statement-> fetchAll ();  

Отлично, теперь у нас есть весь процесс для получения отфильтрованных данных.Осталось только распечатать результат.

За пределами блока подключения try / catch и под заголовком я вставлю код для таблицы.

Мы проверим - если это запрос POST, и если результат нашего запроса имеет более 0 строк, откройте таблицу, переберите все результаты и закройте таблицу. Если результатов нет, отобразите сообщение.

  if (isset ($ _ POST ['submit'])) {
    if ($ result && $ statement-> rowCount ()> 0) {
    
    foreach ($ result as $ row) {
    
    }
    
    } еще 	{
    
    }
    }  

Вот последний код.

общедоступный / read.php

   подготовить ($ sql);
    $ statement-> bindParam (': местоположение', $ местоположение, PDO :: PARAM_STR);
    $ оператор-> выполнить ();

    $ result = $ statement-> fetchAll ();
  } catch (PDOException $ error) {
    echo $ sql.«
». $ error-> getMessage (); } } ?> rowCount ()> 0) {?>

Результаты

<таблица> # Имя Фамилия Адрес электронной почты Возраст Местоположение Дата > Не найдено результатов для .

Поиск пользователя по местоположению

Вернуться домой

После добавления нескольких записей я могу поиграть с ним. Я ввожу город.

И просмотрите результаты.

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

Заключение

Теперь, когда вы научились создавать и читать записи, ознакомьтесь со второй частью!

в части 2: обновление и удаление

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

Если бы это было реальное приложение, конечно, нужно было бы кое-что учесть. Серверная часть должна быть защищена паролем, что означает, что вы должны создать страницу входа и административных пользователей, которые являются единственными, кто имеет доступ к приложению.

Вы также должны добавить проверку JavaScript в интерфейсную часть сайта, чтобы убедиться, что все обязательные поля были заполнены и используются символы правильного типа для ввода. (Хотя проверка JavaScript важна, наиболее важной частью является то, что серверная часть, получающая ваши данные, защищена).

Опять же, весь код из этой статьи доступен на GitHub, если вы где-то потерялись. Если у вас есть предложения о том, как сделать руководство более понятным или безопасным, не стесняйтесь делиться! Однако учтите, что это первый взгляд на базовый код управления базой данных, а не на полноценное приложение.

Как использовать Adminer для простого управления базами данных с помощью одного файла PHP

Управление базами данных MySQL - одно из основных требований профессионального разработчика WordPress.Adminer значительно упрощает эту задачу.

Каждому сайту WordPress для работы требуется база данных - именно там WordPress хранит все важные данные ваших сайтов. Хотя phpMyAdmin уже много лет является основным инструментом управления базами данных MySQL / MariaDB, Adminer - отличная альтернатива. Он поставляется с множеством полезных функций и более красивым пользовательским интерфейсом, все в одном легком PHP-файле, который вы можете быстро развернуть на своем сервере.

В этом посте вы узнаете об Adminer, многих преимуществах, которые он предлагает по сравнению с phpMyAdmin, и о том, как вы можете использовать его для управления своими базами данных.Мы также рассмотрим, как DevKinsta использует Adminer для упрощения управления базами данных WordPress в локальных средах разработки.

За работу!

Хотите упростить управление базами данных MySQL? Войдите, администратор. ✅ Узнайте больше о его преимуществах (и почему это лучший выбор, чем phpMyAdmin) прямо здесь👇Нажмите, чтобы твитнуть

Что такое администратор?

Adminer (ранее phpMinAdmin) - это бесплатный инструмент управления базами данных с открытым исходным кодом на основе PHP. Его очень просто развернуть на вашем сервере.Чтобы использовать его, все, что вам нужно сделать, это загрузить его единственный файл PHP, указать на него в браузере и войти в систему.

Страница входа администратора

В отличие от phpMyAdmin, который поддерживает управление только базами данных MySQL и MariaDB , Adminer также поддерживает управление другими базами данных, такими как PostgreSQL , SQLite , MS SQL , Oracle , SimpleDB , Elasticsearch , MongoDB и Firebird .Он также доступен на 43 языках.

Adminer обеспечивает простой в использовании интерфейс, лучшую поддержку многих функций MySQL, более высокую производительность и повышенную безопасность.

Давайте посмотрим, как установить Adminer прямо сейчас.

Как использовать Adminer

Но прежде чем вы начнете его установку, вот несколько основных требований, чтобы Adminer работал на вашем сервере:

  • Установить PHP 5, 7 или 8
  • Драйвер базы данных (например,грамм. MySQL, PostgreSQL и т. Д.)

Вот и все!

Загрузите последнюю версию Adminer со своего официального сайта. Вы также можете найти там варианты Adminer только для MySQL и только на английском языке. Если вы управляете базой данных MySQL или MariaDB (например, для сайта WordPress), вы можете получить эти более легкие варианты.

Скачивание последней версии Adminer

Кроме того, если вы используете терминал, вы можете загрузить его прямо в свой каталог с помощью команды curl .

  curl -o https://github.com/vrana/adminer/releases/download/v4.7.8/adminer-4.7.8.php  

Adminer 4.7.8 - последняя стабильная версия. Он добавляет поддержку только что запущенного PHP 8.0. Вы можете изменить номер версии администратора в URL-адресе загрузки приведенного выше кода, если доступна новая версия.

После загрузки вы можете поместить этот файл .php в любое место на сервере, например в его корневую папку. Однако рекомендуется помещать все сторонние инструменты в отдельный каталог (например,грамм. продавец , активов и т. Д.).

Теперь вы установили Adminer на свой сервер. Его конструкция plug-and-play означает, что Adminer будет работать практически на любом сервере.

Как получить доступ к администратору

Чтобы получить к нему доступ, все, что вам нужно сделать, это перейти по соответствующей ссылке в браузере.

Например, если вы поместили его в корневой каталог своего веб-сайта, вы можете получить к нему доступ, посетив https://your-website.com/adminer-4.7.8.php . Если у вас нет настройки доменного имени, вы также можете получить к нему доступ через IP-адрес вашего сервера или среду localhost.

Вход в Adminer с именем базы данных или без него

Отсюда вы можете войти в любую базу данных, установленную на вашем сервере. Вы также можете оставить поле базы данных пустым. Администратор покажет вам список всех баз данных на следующем экране.

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

Adminer перечислит все базы данных, если вы не укажете одну

Функции администратора

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

Подключение к серверу базы данных

Как объяснялось ранее, вы можете подключиться к любому серверу базы данных, поддерживаемому Adminer. Для сервера базы данных MySQL имя пользователя по умолчанию - root, , а пароль по умолчанию - пустая строка. Вы также можете выбрать существующую базу данных для управления здесь.

Изучение базы данных WordPress с помощью Adminer

Создание новой базы данных

Щелкните ссылку Create database , чтобы создать новую базу данных MySQL.Введите имя базы данных и выберите ее тип сопоставления. Для баз данных WordPress рекомендуемый тип сопоставления - utf8mb4_unicode_ci .

Создание новой базы данных в Adminer

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

Задайте имя базы данных и тип сопоставления для создания базы данных

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

Найдите новую базу данных в раскрывающемся меню и заголовке

Изменить имя базы данных и тип сопоставления

Щелкнув ссылку Изменить базу данных , вы сможете изменить ее имя и тип сопоставления. Если вы только что создали базу данных и допустили опечатку, это вам очень пригодится.

Легко редактируйте базы данных с помощью опции администратора «Изменить базу данных»

Например, я изменил тип сопоставления базы данных с utf8_unicode_ci на utf8mb4_unicode_ci .

Изменение базы данных в Adminer

Примечание: Если ваша база данных уже используется каким-либо приложением, убедитесь, что внесенные здесь изменения отражаются и в коде вашего приложения.

Изучение схемы базы данных

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

Однако в других базах данных, таких как PostgreSQL и Oracle, схема относится к набору таблиц.Это только часть базы данных.

WordPress использует MySQL для своей базы данных. Следовательно, его схема - это, по сути, его таблицы с их столбцами. Adminer даже позволяет перемещать блоки схемы и играть с ними по своему усмотрению.

Изучение схемы базы данных WordPress в Adminer

Это отличный способ изучить все тонкости типичной структуры базы данных WordPress.

Проверка данных и структуры таблиц

Щелчок по любой таблице покажет вам более подробную информацию о ней.По умолчанию администратор направит вас на вкладку Показать структуру таблицы. Здесь вы найдете информацию о столбцах таблицы, такую ​​как их названия, типы и индексы.

При нажатии на таблицу открывается ее «Структура»

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

В приведенном выше примере показаны подробности о таблице wp_options. Здесь WordPress хранит все свои важные настройки.Затем вы можете перейти на вкладку Select data , чтобы увидеть все значения, хранящиеся в этой таблице.

Просмотр всех табличных данных по столбцам

Как видите, пользовательский интерфейс здесь намного проще для глаз, чем тот, что есть в phpMyAdmin.

Изменить настройки таблицы и столбца

Щелкните ссылку Изменить таблицу вверху, чтобы изменить настройки таблицы и столбца.

Простое изменение таблиц и столбцов базы данных с помощью Adminer

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

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

Вы также можете добавлять или удалять столбцы, нажимая кнопки + и x . Кнопка Drop полностью удаляет таблицу базы данных, поэтому используйте ее с осторожностью.

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

Вставить новые записи и обновить существующие

Нажмите ссылку Новый элемент , чтобы перейти на вкладку Insert: .

Вставка новой записи в столбцы таблицы базы данных

Здесь вы можете добавить новую строку в свою таблицу. Adminer перечисляет имена столбцов и их типы, чтобы вы могли быстро их ввести. Вы также можете запустить хеш-функцию для введенного вами значения, чтобы зашифровать их автоматически. Очень полезно, если данные конфиденциальные, например пароль.Например, WordPress хранит свои пароли в базе данных, используя алгоритм MD5.

Редактировать существующую запись так же просто. Например, если вы хотите изменить описание своего сайта, вы можете изменить значение параметра blogdescription в таблице wp_options .

Редактирование существующей записи в базе данных в Adminer

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

Изменение описания сайта WordPress с помощью Adminer

Поиск данных во всех таблицах

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

Поиск термина в базе данных в Adminer

Когда я искал термин home , Adminer обнаружил таблицу wp_options как наиболее вероятный кандидат. Щелчок по нему показал мне точный столбец и строки, в которых Adminer нашел его в базе данных.

Если щелкнуть таблицу, указанную под результатом поиска, вы увидите более подробную информацию о ней. Отсюда вы можете выполнить более детальный поиск в этой таблице.

Предлагаемый поиск по таблице

В качестве примера я могу отредактировать значение параметра home и изменить URL-адрес домашней страницы моего сайта.

Подпишитесь на информационный бюллетень

Хотите узнать, как мы увеличили трафик более чем на 1000%?

Присоединяйтесь к 20 000+ других, которые получают нашу еженедельную рассылку с инсайдерскими советами по WordPress!

Подпишитесь сейчас

Усечение, удаление, перемещение и копирование таблиц

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

Простое выполнение операций SQL с таблицами

Вы можете выполнять множество SQL-запросов к таблицам, выбирая их и нажимая кнопки ниже.

Например, если вы хотите удалить все комментарии на своем сайте, вы можете выбрать таблицу wp_comments и нажать кнопку Truncate . Он очистит все строки в таблице, но сохранит существующую структуру столбцов. Нажатие кнопки Drop полностью удалит таблицу.

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

Создание таблиц, представлений, процедур и событий

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

Создать новую таблицу просто с Adminer

Функция Create table позволяет определить полную схему таблицы, включая ее столбцы и вложенные значения.

Опытные пользователи могут использовать другие расширенные функции Adminer для определения представлений, процедур, функций и событий MySQL.

Простое создание множества других функций SQL с помощью Adminer

Импорт или экспорт базы данных

Adminer позволяет легко импортировать базу данных MySQL. Все, что вам нужно сделать, это загрузить резервную копию .sql или. sql.gz (рекомендуется) и запустите его. Этот метод - простой способ восстановить базу данных MySQL.

Импорт базы данных MySQL в Adminer

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

Экспорт базы данных в Adminer

По умолчанию Adminer поддерживает экспорт базы данных с выходами Open , Save или GZIP с SQL , CSV , CSV; или TSV форматов. Однако вы можете легко расширить эту функциональность с помощью плагинов Adminer.Я расскажу о них позже в этой статье.

Выполнение SQL-запросов

Вам не нужно иметь дело с неуклюжим пользовательским интерфейсом с Adminer для выполнения SQL-запроса. Просто посетите экран SQL-команды и выполните любой запрос.

Запускать SQL-запросы в SQL-команде администратора

Обратите внимание на выделение синтаксиса. Adminer даже связывает выделенные ключевые слова SQL со своей официальной документацией.

Перед выполнением запроса вы можете ограничить количество его строк, настроить его так, чтобы он останавливался при обнаружении ошибки, и отображать вывод только при ошибках.

Просмотр и создание привилегий (пользователи)

Вы можете использовать Adminer для создания новых пользователей с индивидуальными привилегиями для вашей базы данных. В большинстве случаев в этом нет необходимости, но если вы хотите создать нового пользователя, у вас есть возможность сделать это быстро.

Ссылка на меню «Привилегии» в Adminer

Создание пользователя базы данных в Adminer

Обширные возможности настройки

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

Например, если вы хотите настроить имя, отображаемое в заголовке и заголовке страницы, вы можете сделать это с помощью этого кода:

   

Теперь вы можете увидеть настроенное нами собственное имя («Администратор для Kinsta») в разделе заголовка.

Настройка заголовка администратора с его расширениями API

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

Плагины администратора

Плагины

Adminer - это готовые к использованию расширения, которые можно использовать для простого расширения функциональности Adminer по умолчанию.

Например, если вы хотите экспортировать свою базу данных в формате XML, вы можете установить плагин Adminer dump-xml. Точно так же, если вы хотите экспортировать свою базу данных в виде сжатого файла ZIP, вы можете подключить расширение dump-zip.

Расширение параметров вывода Adminer по умолчанию с помощью плагинов

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

Темы администратора

Одной из самых крутых функций Adminer является его тематическая функциональность.На официальном сайте перечислены несколько готовых дизайнов, которые можно сразу использовать.

Подключите тему Adminer, чтобы изменить ее внешний вид

Чтобы использовать тему Adminer, вам необходимо поместить файл темы adminer.css в тот же каталог, где находится adminer.php .

Это так просто.

Редизайн Adminer полностью с его темами

Приведенный выше пример - это тема Hydra, указанная на веб-сайте администратора. Это темная тема для Adminer, основанная на материальном дизайне.

Другая тема администратора (mvt) в действии

Некоторые другие хорошие примеры тем для администраторов - это Adminer Bootstrap-Like Design и Adminer Theme от pematon. Используя любую из вышеперечисленных тем в качестве шаблона, вы можете настроить их по своему вкусу, изменив файл CSS.

Adminer против phpMyAdmin

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

Adminer против phpMyAdmin: сравнение функций

phpMyAdmin поддерживает только базы данных MySQL, в то время как Adminer поддерживает многие другие базы данных.Adminer также доступен в версии только для MySQL.

Редактирование и создание таблиц в phpMyAdmin - рутинная работа по сравнению с Adminer. Групповой выбор данных и их одновременное редактирование удобны в Adminer. Вы обнаружите, что phpMyAdmin не хватает в этой области.

Вы также можете посмотреть Adminer Editor, вариант Adminer, предназначенный для редактирования базы данных. Он работает только с одной базой данных за раз, и вам нужно подключить ее к другой базе данных, чтобы она работала.

Есть несколько областей, в которых phpMyAdmin превосходит остальных.Например, он поддерживает гораздо больше языков и форматов экспорта, чем Adminer. Его большая база пользователей гарантирует, что существует процветающее сообщество, готовое помочь вам, если вы столкнетесь с какой-либо проблемой.

Администратор против phpMyAdmin: Безопасность

По словам команды Adminer, « Security - приоритет №1 в разработке Adminer. ”Например, Adminer блокирует доступ к базам данных без установки пароля в бэкэнде. Он также ограничивает попытки подключения для защиты от атак грубой силы или SQL-инъекций.

Интерфейс

Adminer по принципу plug-and-play также означает, что вы можете быстро удалить его со своего сервера, когда он больше не нужен. Если вы хотите использовать его снова в будущем, вы можете быстро загрузить его обратно. Вы не можете сделать то же самое с phpMyAdmin.

Используя плагин Adminer login-ssl, вы можете подключиться к серверу базы данных MySQL с помощью SSL. Панель администратора также подсказывает вам, доступна ли новая версия, поэтому вы можете быть уверены, что всегда используете последнюю версию.

Adminer против phpMyAdmin: производительность

Согласно независимому тесту Юрая Хайдуха, Adminer в среднем на 28% быстрее, чем phpMyAdmin.Хотя они опубликовали эти результаты еще в 2009 году, когда Adminer был еще в зачаточном состоянии, это единственный доступный независимый тест производительности (пока).

Поскольку Adminer состоит только из одного легкого файла, вы можете развернуть его даже на сервере с наиболее ограниченными ресурсами.

Adminer против phpMyAdmin: взаимодействие с пользователем

Использование Adminer очень просто, в отличие от phpMyAdmin. Вам не нужно возиться с какой-либо конфигурацией или настройками. Просто работает.

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

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

Adminer vs phpMyAdmin: размер файла

Adminer - это компактный инструмент для управления базами данных. Он как минимум в 28x раз меньше, чем phpMyAdmin, хотя он поддерживает больше типов баз данных, чем phpMyAdmin.

Последняя полнофункциональная версия Adminer (v4.7.8) поставляется с жалкими 478 КБ , в то время как последняя версия phpMyAdmin (v5.0.4) составляет 13,7 МБ (плюс, это сжатый файл для загрузки). Разница в размерах файлов становится еще более заметной, если учесть версию Adminer только для MySQL ( 354 КБ ).

Как использовать Adminer с WordPress

Нет специального способа использовать Adminer с WordPress. Он работает одинаково со всеми базами данных MySQL. Загрузите его файл PHP, поместите его в любом месте на своем сервере и получите доступ к нему из браузера.После входа в Adminer вы можете исследовать базу данных вашего сайта WordPress с его помощью.

Я рекомендую вам удалить файл Adminer с вашего сервера, как только вы закончите его использовать. Если оставить его на сервере без присмотра на длительный период, это может подвергнуть вашу базу данных уязвимостям.

Был плагин WordPress под названием ari-adminer, который позволял вам получить доступ к Adminer прямо из панели управления WordPress. Тем не менее, был закрыт и больше не доступен для загрузки уже почти два года из-за критической проблемы безопасности.

Следующий лучший способ использовать Adminer с WordPress - это DevKinsta.

DevKinsta и Adminer: простое управление базой данных WordPress

DevKinsta, бесплатный набор локальных инструментов разработки Kinsta, использует Adminer в фоновом режиме для управления своим менеджером баз данных.

Доступ к менеджеру баз данных DevKinsta

Нажмите кнопку Диспетчер баз данных на панели инструментов DevKinsta, чтобы получить доступ к Adminer.

Диспетчер баз данных DevKinsta лучше администратора

Менеджер баз данных

DevKinsta поддерживает все функции Adminer, о которых говорилось ранее в этом посте.Вы можете использовать его для переключения между различными базами данных, просмотра и редактирования таблиц, управления значениями базы данных, импорта и экспорта баз данных, выполнения SQL-запросов и многого другого.

Если вы настраиваете несколько сайтов локально с помощью DevKinsta, вы можете переключаться между их базами данных с панели администратора. Просто выберите базу данных, которую хотите использовать, из раскрывающегося меню в верхнем левом углу.

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

Познакомьтесь с Adminer, инструментом управления базами данных, который сделает вашу жизнь намного проще ⬆️Нажмите, чтобы твитнуть

Сводка

Adminer - одна из лучших альтернатив phpMyAdmin.Он не только меньше занимает площадь, но и намного быстрее работает. Он медленно, но постоянно развивается. В последней версии Adminer добавлена ​​поддержка сред PHP 8, что делает ее перспективной.

Если вы хотите поэкспериментировать с Adminer, вы можете почти мгновенно создать локальный сайт WordPress с DevKinsta и начать изучение его базы данных с помощью Adminer.

Теперь ваша очередь: каков ваш опыт работы с Adminer? У вас есть вопросы по управлению базами данных с помощью Adminer или DevKinsta? Если да, поделитесь ими в комментариях.


Если вам понравилась эта статья, то вам понравится хостинговая платформа Kinsta WordPress. Ускорьте свой сайт и получите круглосуточную поддержку от нашей опытной команды WordPress. Наша инфраструктура на базе Google Cloud ориентирована на автоматическое масштабирование, производительность и безопасность. Позвольте нам показать вам разницу в Kinsta! Ознакомьтесь с нашими тарифами

Создайте себе простую CRM с нуля на PHP и MySQL

Ричард

Фото Майка Кононова на Unsplash

Управление взаимоотношениями с клиентами (CRM) - это система, которая управляет взаимодействиями с клиентами и данными на протяжении всего жизненного цикла клиента между клиентом и компанией по различным каналам.В этом руководстве мы собираемся создать настраиваемую CRM на PHP, которую отдел продаж может использовать для отслеживания клиентов на протяжении всего цикла продаж.

Мы создадим простую CRM-систему для продавцов:

  • Доступ к их задачам
  • Просмотр их лидов
  • Создание новых задач для каждого лида
  • Создание новой возможности
  • Закрытие продажи

Менеджеры по продажам уметь:

  • Управлять всеми клиентами
  • Управлять отделом продаж
  • Просматривать текущие продажи

Загрузить демонстрационные файлы

Строительные блоки CRM

Вот список основных компонентов CRM:

  • Контакты : начальные контакты
  • Учетные записи : Информация о компаниях, с которыми вы ведете бизнес.
  • Контакты : Информация о людях, которых вы знаете и с которыми работаете.Обычно у одной учетной записи много контактов
  • Возможности : Квалифицированные лиды
  • Действия : Задачи, встречи, телефонные звонки, электронные письма и любые другие действия, которые позволяют вам взаимодействовать с клиентами
  • Продажи : Ваша команда продаж
  • Приборная панель : Панели управления CRM - это гораздо больше, чем просто приятный глаз. Они должны оперативно предоставлять ключевую информацию и предоставлять ссылки для более подробной информации.
  • Вход в систему : Продавцы и менеджеры имеют разные роли в системе.У менеджеров есть доступ к отчетам и информации о продажах.

Системные требования

Создание базы данных CRM

Мы начнем с создания нашей собственной базы данных CRM. Основными таблицами, которые мы будем использовать, являются:

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

Таблица Contact содержит основную информацию о клиентах, включая имена, адреса компаний, информацию о проекте и т. Д.

В таблице Notes хранится вся информация о продажах, например о встречах и телефонных звонках.

Таблица Users содержит регистрационную информацию о пользователях системы, такую ​​как имена пользователей и пароли. У пользователей также могут быть роли, такие как Продажи или Менеджер.

Все остальные таблицы представляют собой таблицы поиска для присоединения к трем основным таблицам реляционной базы данных.

  • contact_status - содержит статус контакта, такой как интерес и возможность.Каждый из них указывает на разные этапы типичного цикла продаж
  • task_status - статус задачи может быть либо Pending, либо Completed
  • user_status - продавец может быть Active или Inactive
  • todo_type - тип задачи либо Задача или собрание
  • todo_desc - описание задачи, например, последующая электронная почта, телефонный звонок, конференция и т. Д.
  • ролей - пользователь может быть торговым представителем или менеджером
Полная схема схемы базы данных

Схема базы данных - это структура, которая представляет логическое представление, такое как таблицы, представления или первичные и внешние ключи всей базы данных.Схема базы данных включает сущности и отношения между ними.

Рекомендуется иметь один первичный ключ для каждой таблицы в реляционной базе данных. Первичный ключ - это уникальный идентификатор для каждой записи. Это может быть номер социального страхования (SSN), идентификационный номер транспортного средства (VIN) или номер автоинкремента. Это уникальный номер, который генерируется при вставке новой записи в таблицу.

Ниже представлена ​​диаграмма базы данных нашей простой CRM. Символ ключа в каждой таблице представляет первичный ключ таблицы.Увеличительное стекло указывает на внешний ключ, связывающий другую таблицу в базе данных. Иногда мы называем это таблицей поиска.

install.sql

Когда вы разберетесь со структурой таблицы базы данных, найдите сценарий «install.sql» в папке db и используйте инструмент MySQL, такой как MySQL Workbench или Sequel Pro, для запуска сценария SQL. Он должен создать новую реляционную базу данных с именем custom_crm и ее таблицы базы данных.

Дополнительное примечание по ZenBase

  Приложение CRM также является одним из многих шаблонов приложений, легко доступных в ZenBase (построенных на основе phpGrid) для всех - с навыками программирования или без них - для использования и настройки для собственных нужд . 

Настройка phpGrid

Наша CRM содержит множество таблиц данных. Сетка данных представляет собой похожую на электронную таблицу таблицу данных, в которой отображаются строки и столбцы, представляющие записи и поля из таблицы базы данных. Сетка данных дает конечному пользователю возможность читать и записывать таблицы базы данных на веб-странице. Мы можем использовать инструмент datagrid из phpGrid. Мы используем инструмент вместо того, чтобы создавать их с нуля, потому что разработка сети данных обычно утомительна и подвержена ошибкам. Библиотека datagrid будет обрабатывать все операции с внутренней базой данных CRUD (создание, удаление, обновление и удаление) для нас с лучшими и более быстрыми результатами с небольшим количеством кода.Чтобы установить phpGrid, выполните следующие действия:

  1. Распакуйте файл загрузки phpGrid.
  2. Загрузите папку phpGrid в папку phpGrid .
  3. Завершите установку, настроив файл conf.php .

Прежде чем мы начнем кодирование, мы должны указать информацию о базе данных в conf.php , файле конфигурации phpGrid. Вот пример настроек подключения к базе данных:

  • PHPGRID_DB_HOSTNAME - IP-адрес или имя хоста веб-сервера
  • PHPGRID_DB_USERNAME - имя пользователя базы данных
  • PHPGRID_DB_PASSWORD_NAME - имя базы данных
  • CRID

    имя нашей базы данных

  • PHPGRID_DB_TYPE - тип базы данных
  • PHPGRID_DB_CHARSET - всегда 'utf8' в MySQL

Чтобы узнать больше о настройке phpGrid, ознакомьтесь с полным руководством по установке phpGrid.

Шаблон страницы

Прежде чем мы сможем приступить к созданию нашей первой страницы CRM, рекомендуется создать повторно используемые элементы страницы, такие как верхний и нижний колонтитулы.

Страница будет состоять из верхнего колонтитула, меню, тела и нижнего колонтитула. Мы начнем с создания многоразового шаблона страницы.

head.php

Это основной заголовок шаблона HTML5. Он включает ссылку на настраиваемую таблицу стилей, которая будет создана на более позднем этапе.

Обратите внимание на использование $ _GET ['currentPage'] .На каждой странице будет установлено значение, которое будет выделять имя текущей страницы в верхней строке меню.

Включите следующий код в style.css для стилизации меню (минимизированный). Он превратит приведенный выше неупорядоченный список в меню.

Простые закрывающие теги body и html.

Полный шаблон страницы

Это полный шаблон страницы. Основное содержание будет идти после Заголовок раздела .

CRM Основные страницы

Ты все еще со мной? Хорошо! Теперь мы наконец можем разработать первую страницу в нашей CRM.

Наша CRM для членов отдела продаж состоит из четырех страниц:

  • Задачи
  • Потенциальные клиенты
  • Возможности
  • Клиенты / выигранные

Каждая страница указывает на разные стадии цикла продаж в типичном цикле продаж. .

Мокап дизайна страницы продавцов

Вот наш макет дизайна CRM для продавцов.

Задачи Page

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

Как вы помните, наша таблица Notes содержит всю информацию о продажах. Мы можем создать сетку данных и заполнить ее из таблицы Notes с помощью phpGrid.

Основным содержимым страницы "Задачи" является сетка данных. Следующие две строки дадут нам список задач текущего продавца.

  • В первой строке создается объект phpGrid путем передачи оператора SELECT SQL, его первичный ключ - ID , а затем имя таблицы базы данных - notes .
  • Вторая и последняя строка вызывает функцию display () для визуализации таблицы данных на экране. Посмотрите базовую демонстрацию datagrid для более подробной информации.

Лиды Страница

Страница лидов содержит список текущих лидов, за которые отвечает продавец. У каждого интереса может быть одна или несколько заметок. Для этого мы воспользуемся функцией master-detail phpGrid.

Нам также необходимо использовать set_query_filter () для отображения только потенциальных клиентов, Status = 1 , и только для текущего продавца.

Таблица статуса контакта

Возможности Страница

Интерес становится Возможностью после того, как он квалифицирован. Страница возможностей похожа на страницу потенциальных клиентов. Единственное отличие состоит в том, что отфильтрованный код статуса в set_query_filter - Status = 2 .

Клиентов / Выигрыш Страница

Клиентов / Выигрыш имеет статус = 3 . Как и в случае с потенциальными клиентами и возможностями, клиенты / выигранные также могут иметь заметки.

Вот и все, что нужно продавцам в нашей простой CRM.

Панель управления менеджера

Фото Eaters Collective на Unsplash

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

У нас будет одна веб-страница с меню с вкладками, аналогичная демонстрации сетки с вкладками в phpGrid.

Мокап дизайна информационной панели менеджера

Мои торговые представители

Основное содержание

Каждая вкладка представляет собой таблицу в базе данных CRM. $ _GET ['gn'] сохранит имя таблицы.Он динамически генерирует сетку данных на основе переданного имени таблицы.

Интегрировать вкладки jQueryUI с phpGrid очень просто. Пожалуйста, обратитесь к демонстрации phpGrid Tabbed Grid для получения дополнительной информации.

Мой торговый представитель Страница

Поскольку менеджеру по продажам необходимо быстро выяснить, с кем работает продавец, мы добавили подробную сетку $ sdg , заполненную из таблицы контактов и связанную с основной сеткой.

sales_rep - это ключ подключения в таблице контактов к идентификатору id , который является внешним ключом в таблице пользователей .Помните, что пользователей хранит всю информацию о наших продавцах.

Скриншоты

CRM - Экран продаж
CRM - Экран менеджера

Демонстрация в реальном времени

Экран торгового представителя CRM | Экран менеджеров CRM

Нужно писать еще меньше кода?

Если вы новичок в программировании и еще не освоили кодирование, вы можете попробовать ZenBase , который построен на основе phpGrid. CRM - всего лишь один из многих шаблонов приложений, доступных в ZenBase для всех - с навыками программирования или без них - для использования и настройки для своих нужд.