С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 13.01.2023
Сообщений: 10

Онлайн конфигуратор компьютерных технологий

02.03.2024, 23:04. Показов 830. Ответов 2

Студворк — интернет-сервис помощи студентам
Здравствуйте, не знаю как начать, хочу написать простой конфигуратор пк наталкните как это реализовать
есть таблицы
1- brands ( `id_brand`, `name`) ((1, 'Intel'),(2, 'AMD'),(3, 'ASUS'),(4, 'MSI'),(5, 'Corsair'),(6, 'Gigabyte'),(7, 'ASRock'),(8, 'EVGA'),(9, 'ZOTAC'),(10, 'Cooler Master'),(11, 'NZXT'),(12, 'Noctua'),(13, 'G.Skill'),(14, 'Seasonic'),(15, 'Fractal '),(16, 'Phanteks '),(17, 'ARCTIC ')(18, 'Seagate '),(19, 'Samsung '),(20, 'Crucial '),(21, 'ADATA'); - в ней храню бренды комплектующих
2-categories (`id_category`, `name`) ((1, 'Processors'),(2, 'Motherboards'),(3, 'RAM'),(4, 'CPU Coolers'),(5, 'Graphics Cards'),(6, 'Power Supplies'),(7, 'Cases'),(8, 'Case Fans'),(9, 'Hard Drives'),(10, 'SSD Drives'); - храню категории товаров в последующем сделаю каталог товаров
3- Compatibility (`id`, `id_cpu`, `id_compatible_component`) - в ней перечислил id процессора с id совместимых компонентов
4- `components` (`id`, `name`, `price`, `description`, `id_brand`, `id_category`, `url`, `Core`, `Thread`, `CPUFrequency`, `MemoryType`, `Socket`) в этой таблице храню сами компоненты ( id, название, цену, описание, айди бренда, категории, url фото , ядра процессоров для остальных null , Thread потоки процессора для остальных null, CPUFrequency частота процессора для остальных null, MemoryType тип памяти ddr4 для ЦП , мат платы , озу для остальных null, Socket сокет для процессора и материнки для остальных null.

концепция страницы хочу сделать такой, пользователь заходит на страницу перед ним форма(не знаю как ее сделать, для этого и пишу) где описаны все категории процессор материнская плата и тд , сборка всегда начинается с процессора для вывода процессоров запрос:
SQL
1
2
3
SELECT c.url AS 'Фото', c.name AS 'Название', c.description AS 'Описание', c.price AS 'Цена'
FROM components c
WHERE c.id_category = 1;
После выбора процессора на север приходит запрос с выбранным процессором, а именно его id
Я сделал запрос который выведет все совместимые компоненты:
SQL
1
SELECT comp.id AS ID, comp.url AS Фото, br.name AS Бренд, comp.name AS Название, comp.description AS Описание, cat.name AS 'Название категории', comp.price AS Цена, comp.Core, comp.Thread, comp.CPUFrequency, comp.MemoryType, comp.Socket FROM Compatibility AS comp_table JOIN components AS comp ON comp_table.id_compatible_component = comp.id JOIN brands AS br ON comp.id_brand = br.id_brand JOIN categories AS cat ON comp.id_category = cat.id_category WHERE comp_table.id_cpu = 1;
и как-то хочу с этой таблицы передавать данные на форму по категориям т.е из таблицы берутся данные материнок, поидеи для каждой категории будет новый запрос выборки категории

У меня есть файл action.php для обработки и сама страница конфигуратора(пустая)

Прикреплю сам проект и базу данных на phpmyadmin
Вложения
Тип файла: rar kursrew.rar (10.92 Мб, 0 просмотров)
Тип файла: rar ComputerBuilder (5).rar (4.1 Кб, 0 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.03.2024, 23:04
Ответы с готовыми решениями:

Развитие компьютерных технологий в будущем
Здравствуйте! Как Вы считаете, какое будущее в развитии компьютерных технологий? Ведь уже сейчас "создали" квантовые...

Использование компьютерных технологий для решения задачи линейного программирования (ЗЛП)
Нужна программа на Delphi,которая всё это посчитает.Может кто делал такое или что-то подобное Решите ЗЛП графически и с помощью...

Камрады, батьки компьютерных технологий подскажите бюджетную сборку Ryzen 1200 + мать + память! Спасибо
Здравствуйте! Бюджет сильно ограничен! Есть видеокарта 1063.БП шифтек 600в Хочу купить ryzen 1200 как затычку на первое время (а...

2
0 / 0 / 0
Регистрация: 13.01.2023
Сообщений: 10
03.03.2024, 04:19  [ТС]
Доброго времени суток
Не могу сделать форму что бы при выборе процессора выводилось его фото название описание цена и после выбора процессора была проверка совместимости с материнской платой и озу без фото и тд все работает начинаю добавлять все ломается....
Создал страницу configurator.php
обработчик get_compatible_motherboards.php - для материнок
обработки get_compatible_ram.php - для озу
Буду благодарен помощи...
база в phpmyadmin
php storm - пишу

проект и базу прикрепил
Вложения
Тип файла: rar база.rar (3.6 Кб, 5 просмотров)
Тип файла: rar sos.rar (10.92 Мб, 2 просмотров)
0
0 / 0 / 0
Регистрация: 13.01.2023
Сообщений: 10
04.03.2024, 20:49  [ТС]
Доброго времени суток и снова я со своим конфигуратором....
Прошу помощи ибо chat gpt непомогает исправить проблему....
Создал страницу конфигуратора все данные выводятся с базы , все бы хорошо , но создал обработчик что бы проверять совместимость между процессором материнской и оперативкой
Проц и Мать проверяются по сокету и типу памяти, а озу подбирается по типу памяти цп и матери , но не пойму почему в обработчик не передается id выбранного компонента процессора, вывел себе в консоль информацию:
ID компонента: 1
index.php?page=configurator:805 {error: 'ID процессора не был передан в POST запросе.', Socket: null, MemoryType: null}MemoryType: nullSocket: nullerror: "ID процессора не был передан в POST запросе."[[Prototype]]: Object

Спросил у препода в колледже сказал подумай переделай , я уже не знаю в какую сторону рыться

концепция бд такая:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
`categories` (`id_category`, `name`) VALUES
(1, 'Processors'),
(2, 'Motherboards'),
(3, 'RAM'),
(4, 'CPU Coolers'),
(5, 'Graphics Cards'),
(6, 'Power Supplies'),
(7, 'Cases'),
(8, 'Case Fans'),
(9, 'Hard Drives'),
(10, 'SSD Drives');
 
`components` (`id`, `name`, `price`, `description`, `id_brand`, `id_category`, `url`, `Core`, `Thread`, `CPUFrequency`, `MemoryType`, `Socket`)
страница конфигуратора
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
<body>
<div class="container">
    <h1 class="text-center">Конфигуратор компьютера</h1>
    <?php
    // Подключение к базе данных
    $dsn = "mysql:host=localhost;dbname=ComputerBuilder";
    $username = "root";
    $password = "";
 
    try {
        $pdo = new PDO($dsn, $username, $password);
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 
        // Запрос к базе данных для получения списка категорий
        $categoryQuery = $pdo->query("SELECT id_category, name FROM categories");
 
        while ($categoryRow = $categoryQuery->fetch(PDO::FETCH_ASSOC)) {
            $categoryId = $categoryRow["id_category"];
            $categoryName = $categoryRow["name"];
            ?>
            <div class="card mb-3">
                <div class="card-header">
                    <h2 class="mb-0">
                        <?php echo $categoryName; ?>
                    </h2>
                </div>
                <div class="card-body">
                    <?php
                    // Запрос компонентов для текущей категории
                    $componentQuery = $pdo->prepare("SELECT id, url, name, description, price FROM components WHERE id_category = ?");
                    $componentQuery->execute([$categoryId]);
 
                    while ($componentRow = $componentQuery->fetch(PDO::FETCH_ASSOC)) {
                        ?>
                        <div class="card mb-3">
                            <div class="row no-gutters align-items-center">
                                <div class="col-md-2">
                                    <img src="<?php echo $componentRow["url"]; ?>" class="card-img"
                                         alt="<?php echo $componentRow["name"]; ?>" style="max-width: 100%; height: auto;">
                                </div>
                                <div class="col-md-10">
                                    <div class="card-body">
                                        <h5 class="card-title"><?php echo $componentRow["name"]; ?></h5>
                                        <p class="card-text"><?php echo $componentRow["description"]; ?></p>
                                        <p class="card-text">Цена: <?php echo $componentRow["price"]; ?> руб.</p>
                                        <!-- Добавление кнопки с передачей ID компонента и выводом в консоль -->
                                        <button class="btn btn-success"
                                                type="button"
                                                onclick="addToConfig(
                                                <?php echo $componentRow["id"]; ?>,
                                                <?php echo $categoryName; ?>,
                                                <?php echo $categoryId; ?>
                                                        )">
                                                        Добавить
                                        </button>
                                        <!-- Перемещаем информацию о выбранном компоненте сюда -->
                                        <div class="selected-component-info" id="selectedComponentInfo<?php echo $componentRow["id"]; ?>"></div>
                                    </div>
                                </div>
                            </div>
                        </div>
                        <?php
                    }
                    ?>
                </div>
            </div>
            <?php
        }
    } catch (PDOException $e) {
        echo "Ошибка подключения: " . $e->getMessage();
    }
    ?>
</div>
 
<script>
    function addToConfig(componentId, category, categoryId) {
        // Выводим ID компонента в консоль
        console.log("ID компонента:", componentId);
 
        // Отправляем запрос на сервер, передавая ID компонента, его категорию и ID категории
        fetch('check_compatibility.php', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
            },
            body: JSON.stringify({ categoryId: categoryId, componentId: componentId, category: category }),
        })
            .then(response => response.json())
            .then(data => {
                // Обрабатываем полученные данные
                console.log(data);
                // Выводим информацию о выбранном компоненте на страницу
                document.getElementById('selectedComponentInfo' + componentId).innerHTML = 'Выбранный компонент: ' + category + ', ID: ' + componentId;
                // Скрываем остальные компоненты этой категории
                var otherComponents = document.querySelectorAll('.selected-component-info:not(#selectedComponentInfo' + componentId + ')');
                otherComponents.forEach(function(component) {
                    if (component.id.includes('selectedComponentInfo' + categoryId)) {
                        component.style.display = 'none';
                    }
                });
            })
            .catch((error) => {
                console.error('Error:', error);
            });
    }
</script>
</body>
сам обработчик
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
<?php
// Подключение к базе данных
try {
    $pdo = new PDO("mysql:host=localhost;dbname=ComputerBuilder", "root", "");
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    die("Ошибка подключения: " . $e->getMessage());
}
 
// Массив для хранения результатов
$results = array();
 
// Получение данных о процессоре из POST запроса
if(isset($_POST['componentId'])) {
    $processorId = $_POST['componentId'];
 
    // Получение информации о процессоре из базы данных
    $processorQuery = "SELECT Socket, MemoryType FROM components WHERE id = :processorId";
    $processorStatement = $pdo->prepare($processorQuery);
    $processorStatement->bindParam(':processorId', $processorId, PDO::PARAM_INT);
    $processorStatement->execute();
 
    $processorData = $processorStatement->fetch(PDO::FETCH_ASSOC);
    if($processorData) {
        $processorSocket = $processorData['Socket'];
        $processorMemoryType = $processorData['MemoryType'];
 
        // Запрос к базе данных для выбора подходящей материнской платы
        $motherboardQuery = "SELECT url, name, description, price FROM components WHERE id_category = 2 AND Socket = :processorSocket AND MemoryType = :processorMemoryType";
        $motherboardStatement = $pdo->prepare($motherboardQuery);
        $motherboardStatement->bindParam(':processorSocket', $processorSocket, PDO::PARAM_STR);
        $motherboardStatement->bindParam(':processorMemoryType', $processorMemoryType, PDO::PARAM_STR);
        $motherboardStatement->execute();
 
        $motherboards = $motherboardStatement->fetchAll(PDO::FETCH_ASSOC);
        if ($motherboards) {
            $results['motherboards'] = $motherboards;
        } else {
            $results['motherboards'] = "Подходящая материнская плата не найдена.";
        }
 
        // Запрос к базе данных для выбора подходящей оперативной памяти
        $ramQuery = "SELECT url, name, description, price FROM components WHERE id_category = 3 AND MemoryType = :processorMemoryType";
        $ramStatement = $pdo->prepare($ramQuery);
        $ramStatement->bindParam(':processorMemoryType', $processorMemoryType, PDO::PARAM_STR);
        $ramStatement->execute();
 
        $rams = $ramStatement->fetchAll(PDO::FETCH_ASSOC);
        if ($rams) {
            $results['rams'] = $rams;
        } else {
            $results['rams'] = "Подходящая оперативная память не найдена.";
        }
    } else {
        $results['error'] = "Процессор с указанным ID не найден в базе данных.";
    }
} else {
    $results['error'] = "ID процессора не был передан в POST запросе.";
}
 
// Добавляем данные Socket и MemoryType в результаты
$results['Socket'] = $processorSocket;
$results['MemoryType'] = $processorMemoryType;
 
// Возвращаем результаты в формате JSON
echo json_encode($results);
 
// Закрытие соединения с базой данных
$pdo = null;
?>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.03.2024, 20:49
Помогаю со студенческими работами здесь

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

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

Конфигуратор
Всем привет. Не кидайтесь тапками. Человек я новый в этой сфере). Задача такая, textbox и Кнопка, при нажатии на нее должен создаться...

Конфигуратор 1с 77
Приветствую знатоков и учеников. Вопрос следующий видел конфигуратор 77 окно модуля как у 8, процедуры по значку + схлопываются и в наличии...

1с Конфигуратор
Доброго времени суток! Такой вопрос: можно ли на 1с в конфигураторе сделать так, чтобы при нажатии поле флажка появился другой реквизит?...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru