Изучаем PHP 7. №31. Работа с MySQL. Подключение и выборка данных. MySQLi.

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

В прошлый раз мы создали мини базу данных пользователей. Если вы этого еще не сделали, то прошу посмотреть прошлый урок по ссылке: http://slusar.su/izuchaem-php-7-n30-rabota-s-mysql-i-phpmyadmin/

Итак, нам нужна готовая база на запущенном OpenServer. Далее, создадим для нашего будущего мини сайтика и назовем ее dbcon.loc.

В папке создаем всего два файла: index.php и func.php.

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

Итак сделаем каркас с формой добавления. Index.php на начальном этапе выглядит так:

<?php include_once ("func.php");?>
<!doctype html>
<head>
    <meta charset="UTF-8">
    <title>Пользователи</title>
</head>
<body>
<h2>Добавить пользователя </h2>
<form method="post">
    <label>Имя</label>
    <input type="text" name="fname">
    <label>Фамилия</label>
    <input type="text" name="lname">
    <label>Возраст</label>
    <input type="number" name="age">
    <input type="submit" name="add" value="Добавить в базу" >
</form>
</body>
</html>

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

<?php
//Подключаемся к БД Хост, Имя пользователя MySQL, его пароль, имя нашей базы
$connect = new mysqli("localhost", "bdAdmin", "bdpass", "users" );

//Кодировка данных получаемых из базы
$connect->query("SET NAMES 'utf8' ");

?>

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

Теперь наш func.php выглядит так

<?php
//Подключаемся к БД Хост, Имя пользователя MySQL, его пароль, имя нашей базы
$connect = new mysqli("localhost", "bdAdmin", "bdpass", "users" );

//Кодировка данных получаемых из базы
$connect->query("SET NAMES 'utf8' ");

$sysMessages = "Нет системных сообщений";

// --------------------------------- Добавление пользователей
//Функция добавления пользователей
function addUser($fname, $lname, $age, $connect)
{
    $add = $connect->query("INSERT INTO users.user (id, fname, lname, age) VALUES  (NULL, '$fname', '$lname', $age)");
    if($add){$GLOBALS['sysMessages'] = "Добавлен новый пользователь"; } else{ $GLOBALS['sysMessages'] = "Ошибка добавления";}
}

//Если было добавление пользователя, то занести все данные в базу
if($_POST['add'])
{
    $fname = $_POST['fname'];
    $lname = $_POST['lname'];
    $age = $_POST['age'];
    addUser($fname, $lname, $age, $connect);
}

echo "<p style='color: darkgreen; font-size: 18px;'>".$sysMessages."</p>" ;
?>

Настал черед вывести все наши данные на экран, а также не забыть про кнопку удаления. Все это безобразие по сути завершит наш функционал. И теперь наш func.php выглядит так:

<?php
//Подключаемся к БД Хост, Имя пользователя MySQL, его пароль, имя нашей базы
$connect = new mysqli("localhost", "bdAdmin", "bdpass", "users" );

//Кодировка данных получаемых из базы
$connect->query("SET NAMES 'utf8' ");

$sysMessages = "Нет системных сообщений";

// --------------------------------- Добавление пользователей
//Функция добавления пользователей
function addUser($fname, $lname, $age, $connect)
{
    $add = $connect->query("INSERT INTO users.user (id, fname, lname, age) VALUES  (NULL, '$fname', '$lname', $age)");
    if($add){$GLOBALS['sysMessages'] = "Добавлен новый пользователь"; } else{ $GLOBALS['sysMessages'] = "Ошибка добавления";}
}

//Если было добавление пользователя, то занести все данные в базу
if($_POST['add'])
{
    $fname = $_POST['fname'];
    $lname = $_POST['lname'];
    $age = $_POST['age'];
    addUser($fname, $lname, $age, $connect);
}
// --------------------------------- Вывод информации и удаление

function userList($connect)
{
    $users = $connect->query("SELECT * FROM user");
    echo "<p>Всего пользователей в базе: ".$users->num_rows."</p>";
    $num = 0;
    //засовываем все записи в ассоциативный массив и перебираем их
    while(($row = $users->fetch_assoc()) != FALSE){
        $num++;
        $id = $row['id'];
        //выводим список на экран
        echo "<p>".$num.") Имя: ".$row['fname']." Фамилия: ".$row['lname']." Возраст: ".$row['age']."</p>";

        //кнопка удаления пользователя
        echo '
              <form method="get">
                <input type="hidden" name="id" value="'.$id.'">
                <input type="submit" name="del" value="Удалить пользователя" >
              </form>
        ';
    }
}

// отслеживаем нажатие кнопки удаления и удалаем пользователя по id
if($_GET['del']){
    $id = $_GET['id'];
    $del = $connect->query("DELETE FROM user WHERE id = $id");
    if($del){
        $GLOBALS['sysMessages'] = "Пользователь удален. <a href='/'>Обновить Страницу</a>";
    }else{
        $GLOBALS['sysMessages'] = " Ошибка удаления";
    }
}
//вывод системных сообщений
echo "<p style='color: darkgreen; font-size: 18px;'>".$sysMessages."</p>" ;
?>

И добавляем в наш index вывод материалов простой строчкой. А также второй закрываем все соединения с базой данных.

<?php userList($connect);?>

<?php
 //закрываем соединение с БД
 $connect->close();
?>

Теперь код главной страницы выглядит так:

<?php include_once ("func.php");?>
<!doctype html>
<head>
 <meta charset="UTF-8">
 <title>Пользователи</title>
</head>
<body>
<h2>Добавить пользователя </h2>
<form method="post">
 <label>Имя</label>
 <input type="text" name="fname">
 <label>Фамилия</label>
 <input type="text" name="lname">
 <label>Возраст</label>
 <input type="number" name="age">
 <input type="submit" name="add" value="Добавить в базу" >
 <?php userList($connect);?>
 <?php
 //закрываем соединение с БД
 $connect->close();
 ?>
</form>
</body>
</html>

Вот и все. У вас должно получится примерно следующее:

Конечно все можно сделать проще и красивее. Но моя задача показать вам самое простое взаимодействие с базой, чтобы у вас сложилось представление, как это работает. Будут вопросы, задавайте их на форуме: http://forum.slusar.su/forum3-voprosy-po-php.html

2 thoughts on “Изучаем PHP 7. №31. Работа с MySQL. Подключение и выборка данных. MySQLi.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *