Как я могу заполнить данные о ценах, связанные с датой, от Felix G?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как я могу заполнить данные о ценах, связанные с датой, от Felix G?

Сообщение Anonymous »

Я использую JavaScript Date Dropper, чтобы показывать цены в календаре JS.

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

// Get pricing data (this object simulates the way you should obtain your pricing data object)
// 1. Get pricing data (this object simulates the way you should obtain your pricing data object)

let pricingData = {
"2023/09/01": {
price: 35,
average: 1 //low
},
"2023/09/02": {
price: 54,
average: 2 //mid
},
"2023/09/03": {
price: 76,
average: 3 //high
},
"2023/09/04": {
price: 19,
average: 1
},
"2023/09/05": {
price: 20,
average: 1
}
// and so on...
};

Я не использую среднее значение, поэтому мне нужны только дата и цена.
Когда я жестко запрограммировал даты, как указано выше, сценарий работает отлично. Но мне нужна возможность регулярно обновлять цены, поэтому я создал таблицу в phpAdmin.
Я создал таблицу в phpAdmin и получил к ней доступ для заполнения массива php. Я меняю формат даты на косую черту, как в примере: Затем я копирую таблицу php в таблицу javascript через Json:

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

let pricingData = JSON.parse('');
console .log(pricingData);
остальная часть скрипта остается прежней:

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

// 2.  Initialize Datedropper by setting up the onRender callback

new dateDropper({
selector: '.economy',
range: false,
expandable: true,
expandedOnly: true,
minDate: minDate,
maxDate: maxDate,
minYear: year,
maxYear: yearmax,
startFromMonday: true,
format: "dd/mm/y",
lang: "en",
showArrowsOnHover: false,
overlay: false,
doubleView: false,
startFromMonday: true,
changeValueTo: '.flightdate',
jump: "1",
autoFill: true,
loopAll: true,
onRender: function(dates) {

Object.keys(dates).forEach(function(day){

let pickerDay = dates[day];
let pricingDay = pricingData[day];
console .log(pricingDay);

let average = 'low';

if(pricingDay.price==0) {
average = 'high';
pricingDay.price="---";
}
if(pricingDay.price=='---') {
average = 'high';
}

// Create the price node
let customLabel = document.createElement('div');
//customLabel.className = `price price--${averageClass(pricingDay.average)}`;
customLabel.className = `price price--${average}`;
if(pricingDay.price=="---") {
customLabel.innerHTML = `${pricingDay.price}`;
}
else {
customLabel.innerHTML = `${pricingDay.price} €`;
}

// Append the price node to the day node
pickerDay.node.appendChild(customLabel);

});

}
});

Однако цены не отображаются — консоль показывает ошибку

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

Uncaught TypeError: Cannot read properties of undefined (reading 'price')
at Newbookingform3.php:167:18
at Array.forEach ()
at Object.onRender (Newbookingform3.php:159:24)
Я также смотрю на свой массив в консоли и вижу, что моя дата называется date, но в примере с datedropper в массиве у нее нет имени?

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

let pricingData = {
"2023/09/01": {
price: 35,
average: 1 //low
},
Как создать массив точно в том же формате, что и выше? Мне просто нужно каким-то образом заполнить эту таблицу цен, чтобы данные можно было легко обновлять.

Подробнее здесь: https://stackoverflow.com/questions/791 ... by-felix-g
Ответить

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

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

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

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

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