Начало работы с базами данных на PHP может показаться довольно сложным делом, если сразу пытаться «съесть слона» и делать слишком сложные запросы. Начнем с самого базового простого запроса к базе данных, чтобы понять общий принцип. Рабочий код, который можно скопировать, находится в конце поста.
Примеры:
1) вывести и напечатать одно значение из базы данных MySQL на PHP, в нашем примере мы будем извлекать имя седьмого игрока;
2) сделать на сайте форму (выпадающий список) с кнопкой, чтобы отправить выбранное значение из формы в программу и получить нужные данные из базы данных MySQL.
Содержание:
Этапы подключения к базе данных MySQL
- Код PHP начинается с
<?php
и заканчивается?>
Так компьютеру будет понятно, где начало и где конец программы. - В самом начале кода удобно указать способ отображения ошибок — если что-то пойдет не так, вы сможете быстро понять код ошибки. В языке программирования PHP для этого используются следующие команды:
ᅠ
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
- Соединение с базой данных MySQL: создаем переменную, например,
$connect
, в которой через коннектор вносим доступы к нашей базе данных (имя, пароль и т.п.). Эта база данных MySQL должна уже существовать и «крутиться» либо на сервере, либо на локалке. Про установку и создание своей базы данных у нас будет отдельный материал. Подключаемся:
ᅠ
$connect = mysqli_connect('localhost', 'database', 'password', 'user');
- Создаем запрос к базе данных — какие данные мы хотим получить: для этого делаем новую переменную, например,
$query1
, которой присваиваем значение запроса на языке, понятном для базы MySQL — выбери<что? какую колонку?>
из<название таблицы в базе данных>
где<условия выбора, например, где значение N в колонке номеров = 7 >
. Запрос выглядит так:
ᅠ
$query1 = "SELECT Name FROM igroki WHERE N='7'";
- Подготовка в возвращение результатов запроса для чтения: создаем новую переменную, например,
$result
— которая получит результат запроса. Используется конструкция[подключение к БД] -> query([запрос к БД])
. В нашем примере возвращение результатов выглядит так:
ᅠ
$result = $connect->query($query1);
- Затем вы должны получать по одной записи из набора результатов возвращенного запроса (по сути перебором). В нашем примере — это будет только 1 запись, потому что вы получаете id = 7. Обычно вы будете использовать
mysqli_fetch_array ($ result)
, чтобы вернуть массив данных, или вы можете использоватьmysqli_fetch_object ($ result)
, чтобы вернуть объект данных. В нашем примере мы создаем новую переменную, например,$record
и фетчим полученный массив:
ᅠ
$record = mysqli_fetch_array($result);
- Напечатать имя седьмого игрока: для печати в PHP используется оператор echo, где в кавычках можно написать текст для печати, и через точку объединить текст с переменной — так как возвращенный массив имеет несколько «колонок», а нам нужно вывести именно имя, то указываем в скобках к переменной
$record
именно'Name'
:
ᅠ
echo 'Name of 7th player: ' . $record['Name'];
- Отключение от базы данных:
ᅠ
$connect -> close();
*Если у вас есть несколько записей в вашей таблице и вы хотите их вывести, вы можете использовать цикл while
для перебора данных следующим образом:
ᅠ
$query2 = "SELECT Name FROM igroki";
$result2 = $connect->query($query2);
while ($record2 = mysqli_fetch_array($result2))
{
echo 'Name: ' . $record2['Name'] . '<br>';
}
Подключения к базе данных MySQL — простой пример запроса на PHP
<?php
ini_set(‘display_errors’, 1);
ini_set(‘display_startup_errors’, 1);
error_reporting(E_ALL);
$connect = mysqli_connect(‘localhost’, ‘database’, ‘password’, ‘user’);
$query1 = «SELECT Name FROM igroki WHERE N=’7′»;
$result = $connect->query($query1);
$record = mysqli_fetch_array($result);
echo ‘Name of 7th player: ‘ . $record[‘Name’];
echo «<hr><hr><hr><br>»; //Это разделитель html
// Перебор нескольких значений:
echo «All players:<br><br>»;
$query2 = «SELECT Name FROM igroki»;
$result2 = $connect->query($query2);
while ($record2 = mysqli_fetch_array($result2)) {
echo ‘Name: ‘ . $record2[‘Name’] . ‘<br>’;
}
$connect -> close();
?>
Создание кнопки на сайте для получения значений из базы данных MySQL
К тому коду, который вам уже известен — базовый запрос к БД — осталось добавить html-код кнопки через тег <form></form>
(позволяет создавать на сайте интерактивные элементы и отправлять данные на сервер).
Чтобы внутри формы появилась кнопка вводим action
— можно пустой (action=''
), чтобы при нажатии загружалась эта же программа, либо можно в кавычках указать ссылку на другой файл с кодом, который запустится при нажатии кнопки (например, action='submit.php'
).
Важно присвоить форме select name
— любое имя, на которое затем можно ссылаться в программе).
На сайте кнопку, списки, выпадающие меню можно сделать с помощью форм, которые могут быть типа POST
(method=’POST’) или GET
(method=’GET’). Если делать форму POST
, то пользователь не будет видеть в строке браузера текст, соответствующий выбранным опциям. Если сделать форму GET
, то строка браузера после выбора варианта покажет значение (похожим образом работает поисковик, если сделать запрос, то в строку браузера добавляется информация о запросе).ᅠ
<?php
if (isset($_POST[‘submit’]))
{
echo »
<form action=» method=’POST’>
<input type=’submit’ name=’submitID’ />
</form>«;
}
ini_set(‘display_errors’, 1);
ini_set(‘display_startup_errors’, 1);
error_reporting(E_ALL);
$connect = mysqli_connect(‘localhost’, ‘database’, ‘password’, ‘user’);
$query1 = «SELECT Name FROM igroki WHERE N=’7′»;
$result = $connect->query($query1);
$record = mysqli_fetch_array($result);
if (isset($_POST[‘submit’]))
{
echo ‘Name of 7th player: ‘ . $record[‘Name’];
}
$connect -> close();
?>
Создание формы (выпадающий список) с кнопкой на сайте
Научившись обращаться к базе данных и делать простые кнопки, пришло время сделать форму на сайте в виде выпадающего списка (dropdown menu) и связанную кнопку, которую пользователь может нажать, чтобы выбрать значение, отправить запрос в БД и получить результаты на экране монитора.
На сайте выпадающее меню создается с помощью форм, которые могут быть типа POST
(method=’POST’) или GET
(method=’GET’).
Чтобы создать выпадающее меню с кнопкой, используется html-тег формы <form> </form>
с выбором вариантов через теги:
<select>
(можно указать action=''
, чтобы при нажатии загружалась эта же программа, либо можно в кавычках указать ссылку на другой файл с кодом, который запустится при нажатии кнопки; важно присвоить select name
— любое имя, на которое затем можно ссылаться в программе);
<option>
(option value
— это значение, которое будет записано в переменную при выборе этого пункта, а Seven
и Eight
— это то, что показывается пользователю на сайте в выпадающем меню);
внутри формы добавляем кнопку через html-тег <input>
.
ᅠ
Пример кода для выпадающего меню с кнопкой методом POST
ᅠ
<form action=» method=’POST’>
<select name=»PlayerID»>
<option value=»7″>Seven</option>
<option value=»8″>Eight</option>
</select>
<input type=’submit’ name=’submitID’ />
</form>
Создав форму с кнопкой, нам теперь надо уметь получать пользовательский выбор. Если пользователь нажмет кнопку выбора варианта, то программа должна понимать это. Давайте научим компьютер общаться с пользователем. Для этого создам условие с проверкой нажатия кнопки — если кнопка была нажата (isset
в PHP проверяет, есть ли у переменной значение, отличное от null), то сделай запрос к базе данных и напечатай то, что выбрал пользователь.
Этот код очень похож на то, что мы уже писали в начале этого поста, создавая простой запрос к БД.
Получение выбора пользователя после нажатия кнопки на сайте — напечатать одно значение из базы данных (имя седьмого игрока)
ᅠ
if (isset($_POST[‘submit’]))
{
$number = $_POST[‘PlayerID’];
$query = «SELECT Name FROM igroki WHERE N=’$number'»;
$result = $connect->query($query);
$record = mysqli_fetch_array($result);
echo ‘Name of 7th player: ‘ . $record[‘Name’];
}
Cоздание формы (выпадающий список) с кнопкой, отправляющей запрос к базе данных MySQL на html + PHP с выводом результатов на сайте
<form action=» method=’POST’>
<select name=»PlayerID»>
<option value=»7″>Seven</option>
<option value=»8″>Eight</option>
</select>
<input type=’submit’ name=’submitID’ />
</form>
<?php
ini_set(‘display_errors’, 1);
ini_set(‘display_startup_errors’, 1);
error_reporting(E_ALL);
$connect = mysqli_connect(‘localhost’, ‘database’, ‘password’, ‘user’);
if (isset($_POST[‘submit’]))
{
$number = $_POST[‘PlayerID’];
$query = «SELECT Name FROM igroki WHERE N=’$number'»;
$result = $connect->query($query);
$record = mysqli_fetch_array($result);
echo ‘Name of 7th player: ‘ . $record[‘Name’];
}
$connect -> close();
?>
Рабочий PHP код для копирования с примерами
Рабочий код, который можно скопировать — останется вставить свои данные для подключения к базе MySQL и все заработает:
- Запрос в базу данных:
<?php ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); $connect = mysqli_connect('localhost', 'ribnick_tgladder', 'kotoParolkins74350', 'ribnick_tgladder'); $query1 = "SELECT Name FROM igroki WHERE N='7'"; $result = $connect->query($query1); mysqli_fetch_array($result) // to return an array of the data, or mysqli_fetch_object($result) // to return an object of the data. $record = mysqli_fetch_array($result); echo 'Name of 7th player: ' . $record['Name']; echo "<hr><hr><hr><br>"; // If you have multiple records use a while: echo "All players:<br><br>"; $query2 = "SELECT Name FROM igroki"; $result2 = $connect->query($query2); while ($record2 = mysqli_fetch_array($result2)) { echo 'Name: ' . $record2['Name'] . '<br>'; } $connect -> close(); ?>
- Кнопка и вывод данных по запросу из MySQL:
<?php if(!isset($_POST['submit'])) { echo " <form action='' method='POST'> <input type='submit' name='submit' /> </form>"; } ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); $connect = mysqli_connect('localhost', 'db', 'pass', 'user'); $query1 = "SELECT Name FROM igroki WHERE N='7'"; $result = $connect->query($query1); $record = mysqli_fetch_array($result); if(isset($_POST['submit'])) { echo 'Name of 7th player: ' . $record['Name']; } $connect -> close(); ?>
- Форма (выпадающий список) с выбором и кнопка для запроса в базу данных MySQL с последующим выводом результатов на сайте:
<form action='' method='POST'> <select name="PlayerID"> <option value="7">Seven</option> <option value="8">Eight</option> </select> <input type='submit' name='submit' /> </form> <?php ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); $connect = mysqli_connect('localhost', 'db', 'pass', 'user'); if (isset($_POST['submit'])) { $number = $_POST['PlayerID']; $query = "SELECT Name FROM igroki WHERE N='$number'"; $result = $connect->query($query); $record = mysqli_fetch_array($result); echo 'Name of 7th player: ' . $record['Name']; } $connect -> close(); ?>
<?
require_once('lib/db.php');
$sql_text ='SELECT * FROM pizza where visible = 1';
$result_text = mysqli_query($link,$sql_text);
if (isset($_GET['id_pizza'])) {
$id_pizza = htmlspecialchars($_GET['id_pizza']);
}
$result_pizza = mysqli_query($link,$sql_text);
while ($row_text = mysqli_fetch_array($result_pizza)) {
printf('
%s
%s
%s
<button class="inCart" onClick="inCart(сдесь должно стоять ** ** И так далее все значения которые передаются по нажатию в корзину)»>Выбрать
‘,$row_text[‘title_img’],$row_text[‘name’],$row_text[‘discription’],$row_text[‘price’])
;}
?>
Это карточка для пиццы, но когда я ввожу в пустую incart() запрос Получается ошибка из за пострафа ‘ так как он находится в printf,, а с пустой incart() у меня добавляется соответственно в корзину все значения undefined
Помогите пожалуйста , как можно добавить в инкарт данные?
saas