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

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

02.03.2024, 23:04. Показов 827. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru