Цифровая печать как бизнес - форум и портал - Показать сообщение отдельно - Практическое примнение калькулятора МК52 в полиграфии
Показать сообщение отдельно
Старый 11.12.2023, 20:52   #14
Usama
Местный
 
Аватар для Usama
 
Регистрация: 16.09.2008
Адрес: Недалеко от Пензы (НСО)
Сообщений: 9,175
Репутация: 368
По умолчанию Re: Практическое примнение калькулятора МК52 в полиграфии

Офигительно!
Вот, что я попросил:
Нужен калькулятор цены баннера на php и html.

Клиент вводит:
Ширина баннера в метрах
Высота баннера в метрах
Радиокнопка с тремя положениями "обрезка без проклейки и люверсов, проклейка без люверсов и проклейка с люверсами"
Чекбокс "у меня есть макет"

Цены: печать 500 рублей за квадратный метр
Проклейка метра края 30 рублей
Люверсы каждые 30 см, округляй в меньшую сторону до чётного числа, каждый люверс стоит 10 рублей.
Установка люверсов без проклейки края невозможна, выбор способа обработки края (обрезка без проклейки и люверсов, проклейка без люверсов и проклейка с люверсами) должен осуществляться не чекбоксом, а радиокнопкой.
Если выбран чекбокс "у меня есть макет", то стоимость макета 200 рублей к итоговой сумме не добавлять, иначе добавить 200 рублей.
Вывод должен содержать информацию о количестве люверсов и итоговой цене баннера.
Введённые данные должны сохраняться на форме после отправки

Вот, что он дал:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Калькулятор баннера</title>
</head>
<body>
<h2>Калькулятор баннера</h2>

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<label for="width">Ширина баннера (м): </label>
<input type="text" name="width" required step="any" value="<?php echo isset($_POST['width']) ? $_POST['width'] : ''; ?>"><br>

<label for="height">Высота баннера (м): </label>
<input type="text" name="height" required step="any" value="<?php echo isset($_POST['height']) ? $_POST['height'] : ''; ?>"><br>

<label>Обработка края: </label><br>
<input type="radio" name="edge_processing" value="trim" <?php echo (isset($_POST['edge_processing']) && $_POST['edge_processing'] === 'trim') ? 'checked' : ''; ?>> Обрезка без проклейки и люверсов<br>
<input type="radio" name="edge_processing" value="taping" <?php echo (isset($_POST['edge_processing']) && $_POST['edge_processing'] === 'taping') ? 'checked' : ''; ?>> Проклейка без люверсов<br>
<input type="radio" name="edge_processing" value="taping_grommets" <?php echo (isset($_POST['edge_processing']) && $_POST['edge_processing'] === 'taping_grommets') ? 'checked' : ''; ?>> Проклейка с люверсами<br>

<label for="has_layout">У меня есть макет: </label>
<input type="checkbox" name="has_layout" <?php echo isset($_POST['has_layout']) ? 'checked' : ''; ?>><br>

<input type="submit" value="Рассчитать">
</form>

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$width = $_POST["width"];
$height = $_POST["height"];
$edge_processing = isset($_POST["edge_processing"]) ? $_POST["edge_processing"] : '';
$has_layout = isset($_POST["has_layout"]) ? true : false;

// Проверка корректности выбора обработки края
if ($has_layout && $edge_processing === '') {
echo "<p style='color: red;'>Ошибка: Выберите способ обработки края для заказа макета.</p>";
exit();
}

// Расчет стоимости баннера
$print_cost_per_square_meter = 500;
$print_cost = $width * $height * $print_cost_per_square_meter;

$edge_tape_cost_per_meter = 30;
$edge_tape_cost = ($width + $height) * 2 * $edge_tape_cost_per_meter;

$grommet_cost_per_unit = 10;
$grommets_interval = 0.3; // 30 см в метрах
$grommets_count = (floor($width / $grommets_interval) * 2 + floor($height / $grommets_interval) * 2);
$grommet_cost = $grommets_count * $grommet_cost_per_unit;

$total_cost = $print_cost;

// Добавление стоимости проклейки края, если выбрана
if ($edge_processing === 'taping' || $edge_processing === 'taping_grommets') {
$total_cost += $edge_tape_cost;
}

// Добавление стоимости люверсов, если выбраны
if ($edge_processing === 'taping_grommets') {
$total_cost += $grommet_cost;
}

// Добавление стоимости макета, если выбрана опция "У меня есть макет"
if (!$has_layout) {
$total_cost += 200;
}

echo "<h3>Информация о баннере:</h3>";
echo "<p>Ширина: $width м</p>";
echo "<p>Высота: $height м</p>";
echo "<p>Обработка края: " . ucfirst($edge_processing) . "</p>";
echo "<p>У меня есть макет: " . ($has_layout ? "Да" : "Нет") . "</p>";
echo "<p>Количество люверсов: $grommets_count</p>";
echo "<h3>Общая стоимость баннера: $total_cost рублей</h3>";
}
?>

</body>
</html>


Получился полный аналог моего самодельного калькулятора на сайте. Оформление вторично, оно не так важно.
Добавил этот калькулятор на ту же страницу ниже.
Ну что я скажу - да, вот этот бот действительно работает. Его я не пробовал, искал специализированные. Посмотрим, чем его ещё можно загрузить, но с этой задачей он справился на "отлично".
Usama вне форума   Ответить с цитированием