Не показывает значения и категорииPhp

Кемеровские программисты php общаются здесь
Ответить
Гость
 Не показывает значения и категории

Сообщение Гость »


Это калькулятор предложений, проблема вот в чем.
При расчете вручную все работает, а при выборе шаблона не работает:
  • После выбора шаблона он не отображает значения в полях ввода, выбранных из таблицы mysql продукта.
  • Показывает только одну выбранную категорию, а не все. (Я не могу выбрать другие категории).
  • Показывает только один выбранный товар, а не все, что есть в категории (я не могу выбрать другие товары).
    Но только здесь это не работает должным образом. с выбором шаблонов.
    Я думаю, это просто перевыбор уже выбранных категорий -> товаров. потому что это.
fetchCategories
fetchProducts
в fetchTemplateData, потому что скрипт выбирает, что внутри шаблона, но после выборки, чтобы получить больше категорий для вручную повторный выбор нарушает логику.
Я добавил фотографию для более наглядного объяснения.
Моей логики недостаточно для выполнения этой задачи.
< br />
index.php

Код: Выделить всё

session_start();
include_once 'config/database.php';
include 'languages/language.php';
include 'assets/session.php';

$query = "SELECT * FROM products";
$result = mysqli_query($conn, $query);

$products = array();

if ($result) {
while ($row = mysqli_fetch_assoc($result)) {
$products[] = $row;
}
} else {

echo "Error: " . mysqli_error($conn);
}

$products_json = json_encode($products);

$query = "SELECT DISTINCT template_name FROM proposal_templates";
$templateResult = mysqli_query($conn, $query);

$templates = array();
if ($templateResult) {
while ($row = mysqli_fetch_assoc($templateResult)) {
$templates[] = $row['template_name'];
}
} else {
echo "Error: " .  mysqli_error($conn);
}

?>







Proposal calculator
Add

Select template











































-








Total Price Without Tax


Total Tax (21%)


Total Price With Tax


Support


Price with support


Total Discount


Discount Percentage


Total Power







 



$(document).ready(function() {
function storeOriginalSellPrice(row, originalSellPrice) {
row.data('original-sell-price', originalSellPrice);
}

function fetchCategories(categoryDropdown) {
$.ajax({
type: "GET",
url: "fetch_categories.php",
success: function(response) {
categoryDropdown.html(response);
fetchProducts(categoryDropdown);
}
});
}

function fetchProducts(categoryDropdown) {
var category = categoryDropdown.val();
var productDropdown = categoryDropdown.closest('tr').find('select.form-select');

$.ajax({
type: "POST",
url: "fetch_products.php",
data: { category: category },
success: function(response) {
productDropdown.html(response);
productDropdown.prop('disabled', false);
}
});
}

function fetchTemplateData(templateName) {
$.ajax({

type: "POST",
url: "get_template_data.php",

data: { template_name: templateName },
success: function(response) {

console.log(response);
var templateData = JSON.parse(response);
$('#proposal-table tbody').empty();
templateData.forEach(function(data) {
var newRow = '' +
'' +
'' +
'' + data.product_category + '' +
'' +
'' +
'' +
'' +
'' + data.product_name + '' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'-' +
'' +
'';
$('#proposal-table tbody').append(newRow);

});
fetchCategories($('select[name="product_category"]'));
fetchProducts($('select.form-select'));
}
});
}

function updateProductInfo(selectedOption) {
var row = selectedOption.closest('tr');
var sellPrice = parseFloat(selectedOption.data('sell-price'));
storeOriginalSellPrice(row, sellPrice);
row.find('.product-power-input').val(selectedOption.data('product-power'));
row.find('.buy-price-input').val(selectedOption.data('buy-price'));
row.find('.b2b-price-input').val(selectedOption.data('b2b-price'));
row.find('.special-price-input').val(selectedOption.data('special-price'));
row.find('.sell-price-input').val(sellPrice);
updateTotals(row);
}

function updateTotals(row) {
var quantity = parseInt(row.find('.quantity-input').val()) || 0;
var sellPrice = parseFloat(row.find('.sell-price-input').val()) || 0;
var discount = parseFloat(row.find('.discount-input').val()) || 0;
var originalSellPrice = parseFloat(row.data('original-sell-price'));
var discountedPrice = originalSellPrice - discount;
var totalPriceWithoutTax = quantity * discountedPrice;
var totalPriceWithTax = totalPriceWithoutTax * 1.21;
row.find('.total-price-without-tax-input').val(totalPriceWithoutTax.toFixed(2));
row.find('.total-price-with-tax-input').val(totalPriceWithTax.toFixed(2));
row.find('.sell-price-input').val(discountedPrice.toFixed(2));
updateTotalCalculations();
}

$(document).on('input', '.quantity-input, .discount-input', function() {
var row = $(this).closest('tr');
updateTotals(row);
});

$(document).on("change", "select.form-select", function() {
updateProductInfo($(this).find('option:selected'));
});

$(document).on("change", "select[name='product_category']", function() {
fetchProducts($(this));
});

$(document).on("click", ".delete-row-btn", function() {
$(this).closest("tr").remove();
updateTotalCalculations();
});

$("select[name='product_category']").each(function() {
fetchCategories($(this));
});
updateTotalCalculations();

$(".add-row-btn").click(function() {
var newRow = '' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'-' +
'' +
'';
var newRowElement = $(newRow);
$("#proposal-table tbody").append(newRowElement);
var categoryDropdown = newRowElement.find('select[name="product_category"]');
fetchCategories(categoryDropdown);
var selectedTemplate = $("#template-dropdown").val();
if (selectedTemplate !== '') {
fetchTemplateData(selectedTemplate);
}
});

$(document).on("change", "#template-dropdown", function() {
var selectedTemplate = $(this).val();
if (selectedTemplate !== '') {
fetchTemplateData(selectedTemplate);
}
});

// Update total calculations function
function updateTotalCalculations() {
var totalWithoutTax = 0;
var totalWithTax = 0;
var totalTax = 0;
var totalDiscount = 0;
var totalPower = 0;
var support = 0;

$('#proposal-table tbody tr').each(function() {
var totalPriceWithoutTax = parseFloat($(this).find('.total-price-without-tax-input').val()) || 0;
var totalPriceWithTax = parseFloat($(this).find('.total-price-with-tax-input').val()) || 0;
var discount = parseFloat($(this).find('.discount-input').val()) || 0;
var power = parseFloat($(this).find('.product-power-input').val()) || 0;
var quantity = parseFloat($(this).find('.quantity-input').val()) || 0;
totalWithoutTax += totalPriceWithoutTax;
totalWithTax += totalPriceWithTax;
totalTax += totalPriceWithTax - totalPriceWithoutTax;
totalDiscount += discount * quantity;
totalPower += power * quantity / 1000;
});
support = (totalPower 



Источник: [url]https://stackoverflow.com/questions/78116092/does-not-show-values-and-categories[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»