Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 27.06.2020
Сообщений: 8

Как объединить 2 страницы в одну для изменения имеющихся данных в БД данных?

14.06.2021, 22:56. Показов 3334. Ответов 0

Студворк — интернет-сервис помощи студентам
Есть 2 файла, добавления и удаления данных из БД, я не могу понять, как их объединить так, чтобы слева на странице была таблица с данными из БД, а справа выбор строки и его редактирование через формы
PHP
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<?php
header('Content-Type: text/html; charset=utf-8');
// debug
error_reporting(-1);
ini_set('display_errors', '1');
 
$stat = 0;// 1 если 'POST' 1+2 если 'POST' и добавлено
$ERR_MSGS = $MSGS = array();
if ($_SERVER['REQUEST_METHOD'] == 'POST') do {
    if (!isset($_POST['name'],$_POST['color'],$_POST['description'],
     $_POST['price'],$_POST['quantity'])) {
        $ERR_MSGS[] = 'Заполните и отправьте форму';
        break;
    }
    $stat |= 1;
    $data = array();
    foreach(array('name','color','description','price', 'quantity') AS $n) {
        $$n =  trim($_POST[$n]);
        $data[":$n"] = $$n;
        if (empty($$n)) $ERR_MSGS[] = 'Не заполнено '. $n;
    }
    if ($ERR_MSGS) break;
 
    try {
        $db_host = "localhost"; 
        $db_user = "root"; // Логин БД
        $db_password = "root"; // Пароль БД
        $db_base = "products"; // Имя БД
        $db_table = "productslist"; // Имя Таблицы БД
        
        $db = new PDO("mysql:host=$db_host;dbname=$db_base", $db_user, $db_password);
        $db->exec("set names utf8");
        $MSGS[] = '<br>Соединение успешно';
        $query = $db->prepare("INSERT INTO
         $db_table (name, color, description, price, quantity) 
         values (:name, :color, :description, :price, :quantity)");
        if(!$query->execute($data)) {
            $ERR_MSGS[] = 'Ошибка запроса: <pre>'. var_export($query->errorInfo(), 1).'</pre>';
            break;
        }
        
    } catch (PDOException $e) {
        $ERR_MSGS[] = 'Ошибка!: ' . $e->getMessage() ;
        break;
    }
    if ($query->rowCount()) {
        $stat |= 2;
        $MSGS[] = '<br>Добавление данных успешно.';
        ## REDIRECT
        header('refresh: 3;url='. $_SERVER['PHP_SELF'] );
    }
    else $ERR_MSGS[] = 'Не добавлено';
 
} while(0);
 
?>
<html>
<head>
 <title>Учет товаров для предприятия</title>
 <link rel="stylesheet" type="text/css" href="./style/style.css">
</head>
<body>
<div class="forms">
    <br>
    <table>
         <form method="POST" action="">
              <tr><td>Наименование: </td><td><input name="name" type="text" required/></td></tr>
              <tr><td>Цвет: </td><td><input name="color" type="text" required/></td></tr>
              <tr><td>Описание: </td><td><input name="description" type="text" required/></td></tr>
              <tr><td>Цена: </td><td><input name="price" type="text" required/></td></tr>
              <tr><td>Количество: </td><td><input name="quantity" type="text" required/></td></tr>
              <tr><td colspan="2"><input type="submit" value="Отправить"/></td></tr><br>
         </form>
     </table>
    </div>
    <div class="menu">
        <nav>
            <ul>
                <li class="active"><a href="index.php">Добавление записей в БД</a></li>
                <li><a href="edit.php">Изменение записей БД</a></li>
                <li><a href="delete.php">Просмотр и удаление записей</a></li>
                <li><a href="feedback.php">Фидбэк</a></li>
            </ul>
        </nav>
    </div>
    <script type="text/javascript">
         $('ul#nav li').each(function () {if (this.getElementsByTagName("a")[0].href == location.href) this.className = "active";});
    </script>
</body>
</html>
<?php
if ($MSGS)
    echo '<ul><li>', implode("</li>\n<li>",$MSGS), "</li>\n</ul>\n";
if ($ERR_MSGS)
    echo '<ul style="color:red"><li>', implode("</li>\n<li>",$ERR_MSGS), "</li>\n</ul>\n";
if ($stat == 3) {
    ## REDIRECT
}
else {
?>
    
<?php
}
?>
PHP
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Учет товаров для предприятия (Просмотр и удаление товаров)</title>
    <link rel="stylesheet" type="text/css" href="./style/style.css">
    <style>
        table{border-spacing: 0;border-collapse: collapse; }
        td, th{padding: 10px;border: 1px solid SteelBlue;}
        td:last-child{text-align:center;}
    </style>
</head>
<body>
    <div>
        <nav>
            <ul>
                <li><a href="index.php">Добавление записей в БД</a></li>
                <li><a href="edit.php">Изменение записей БД</a></li>
                <li class="active"><a href="delete.php">Просмотр и удаление записей</a></li>
                <li><a href="feedback.php">Фидбэк</a></li>
            </ul>
        </nav>
    </div>
    <script type="text/javascript">
         $('ul#nav li').each(function () {if (this.getElementsByTagName("a")[0].href == location.href) this.className = "active";});
    </script>
<?php
$db_server = "localhost";
$db_user = "root";
$db_password = "root";
$db_name = "products";
$db_table = "productslist"; 
 
try {
    /// Открываем соединение, указываем адрес сервера, имя бд, имя пользователя и пароль,
    // также сообщаем серверу в какой кодировке должны вводится данные в таблицу бд.
    $db = new PDO("mysql:host=$db_server;dbname=$db_name;dbtable=$db_table", $db_user, $db_password,array(PDO::MYSQL_ATTR_INIT_COMMAND=>"SET NAMES utf8"));
    // Устанавливаем атрибут сообщений об ошибках (выбрасывать исключения)
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 
    // Запрос на вывод записей из таблицы
    $sql = "SELECT id, name, color, description, price, quantity FROM productslist LIMIT 50";
    // Подготовка запроса
    $statement = $db->prepare($sql);
    // Выполняем запрос
    $statement->execute();
    // Получаем массив строк 
    $result_array = $statement->fetchAll();
 
    // Создаем таблицу вывода и форму для удаления записей
    echo "<br><br><form action='delete.php' method='POST'><table style='width: 100%;'>";
    echo "<tr><th>№</th><th>Имя</th><th>Цвет</th><th>Описание</th><th>Цена</th><th>Количество</th></tr>";
    foreach ($result_array as $result_row) {
        echo "<tr>";
        echo "<td>" . $result_row["id"] . "</td>";
        echo "<td>" . $result_row["name"] . "</td>";
        echo "<td>" . $result_row["color"] . "</td>";
        echo "<td>" . $result_row["description"] . "</td>";
        echo "<td>" . $result_row["price"] . "</td>";
        echo "<td>" . $result_row["quantity"] . "</td>";
        echo "<td><input type='checkbox' name='delete_row[]' value='" . $result_row["id"] . "'></td>";
        echo "</tr>";
    }
    echo "</table><br><input type='submit' value='Удалить выделенные записи'></form>"; 
 
    // Создаем массив, в котором будем хранить идентификаторы записей
    $ids_to_delete = array();
    // Переносим данные (отмеченные записи) из полей формы в массив
    foreach ($_POST['delete_row'] as $selected){
        $ids_to_delete[] = $selected;
    }
 
    // Если пользователь не отметил ни одной записи для удаления,
    // то прерываем выполнение кода
    if(empty($ids_to_delete)){
        echo "Вы не выделили ни одной записи для удаления!";
        return;
    }
 
      
    // Если есть хоть одно заполненное поле формы (запись выделена для удаления),
    // то составляем запрос.    
    if(sizeof($ids_to_delete > 0)){
        // Запрос на удаление выделенных записей в таблице
        $sql = "DELETE FROM products WHERE id IN (" . implode(',', array_map('intval', $ids_to_delete)) . ")";
        // Перед тем как выполнять запрос предлагаю убедится, что он составлен без ошибок.
        // echo $sql;
       
        // Подготовка запроса.
        $statement = $db->prepare($sql);
 
        // Выполняем запрос.
        $statement->execute();
    
        echo "Записи c номером: " . implode(',', array_map('intval', $ids_to_delete)) .  " успешно удалены!";
}
}
catch(PDOException $e) {
    echo "Ошибка при удалении записи в базе данных: " . $e->getMessage();
}
 
 
$db = null;
?>
 
</body>
</html>
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.06.2021, 22:56
Ответы с готовыми решениями:

Кнопка для изменения имеющихся данных в DataGridView и базе данных Sql
Здравствуйте! Помогите пожалуйста приделать кнопку Edit, никак не хочет нормально работать, не может нормально подхватить Id с выделенной...

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

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

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.06.2021, 22:56
Помогаю со студенческими работами здесь

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

Создание триггера для добавления данных в одну таблицу при добавлении/изменении/удалении данных в другие
Есть таблица Changes_log(С полями idChanges_log, User_id(id пользователя,который внес изменения), Table_id(id строки, в которую были...

Объединить все страницы в одну
Как мне 1. Объединить все страницы в одну. 2. Сделать переключение по “страницам” с помощью ссылок в верхнем меню. 3. На разных...

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

Как с chart построить гистограмму из данных, имеющихся в dataGridView?
Коротко о проблеме. В dataGridView имеются данные, в первой ячейке первой строки (1 столбец 1 строка) написано ФИО - в этом столбце...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru