Я хочу реализовать стол в 3-х измерениях с умом.У меня есть база данных со значениями, вот как это работает:
У меня есть несколько кусков веса -> От 0 до 250, от 250 до 500.... каждый кусочек веса имеет 3 цены за зону.Франция -> 3 цены и тесты -> 3 цены
Таблица должна выглядеть так, но проблема в том, что моя база похожа на это:
У меня есть 2 таблицы, 1 для цен и 1 для зон.
Вот то, что я уже начинаю делать в PHP и HTML, я восстанавливаю один фрагмент, но минусов я не вижу, какдля отображения 3-х цен по зоне и ее срезу
PHP:
public function displayForm()
{
$html = '';
$id_langue = $this->context->language->id;
$state = OrderState::getOrderStates($id_langue);
$familyProductList = BddProductFamily::getFamilyProduct();
$prices = BddPrice::getPricesRange();
$ranges = BddPrice::getRanges();
$baseUrl = __PS_BASE_URI__;
$this->context->smarty->assign(array(
'zones' => BddZone::getZones(),
'ranges' => $ranges,
'pricesRange' => $prices,
'urlSite' => $baseUrl,
'states' => $state,
'ps16x' => version_compare(_PS_VERSION_, '1.6', '>='),
'ps_version' => _PS_VERSION_,
'module_dir' => $this->url,
'images_url' => $this->url . '/views/img/',
'tpl_url' => dirname(__FILE__) . '/views/templates/admin'
));
$this->context->controller->addCSS($this->_path . '/views/css/styles.css', 'all');
$this->context->controller->addCSS('https://use.fontawesome.com/releases/v5.6.3/css/all.css');
$this->context->controller->addJS($this->_path . '/views/js/configuration.js');
$this->context->controller->addJS($this->_path . '/views/js/tabs.js');
$this->context->controller->addJS($this->_path . '/views/js/script.js');
$html .= $this->context->smarty->fetch(dirname(__FILE__) . '/views/templates/admin/header.tpl');
$html .= $this->context->smarty->fetch(dirname(__FILE__) . '/views/templates/admin/configuration.tpl');
return $html;
}
Запрос на RANGES:
public static function getRanges()
{
Return Db::getInstance()->executeS('
SELECT DISTINCT ap.weight_min as Mini, ap.weight_max as Maxi
FROM '._DB_PREFIX_.'bdd_price ap');
}
Запрос на цены:
public static function getPricesRange()
{
Return Db::getInstance()->executeS('
SELECT apz.label as Zone, ap.weight_min as Mini, ap.weight_max as Maxi, ap.shipping_fr as France, ap.shipping_ext as DOMTOM, ap.shipping_aerial as Aerial
FROM '._DB_PREFIX_.'bdd_price ap
LEFT JOIN ps_bdd_price_zone apz ON(ap.id_zone = apz.id_zone)');
}
HTML:
<table class="table table-striped" id="costTable">
<thead>
<tr data-add_range="range_inf">
<th class="range_type">Sera appliquée lorsque le poids est >=</th>
{foreach key=key item=range from=$ranges}
<th class="border_bottom" style="" data-range="{$key}">
<div class="input-group fixed-width-md">
<span class="input-group-addon weight_unit">g</span>
<input required class="form-control" name="weights[{$key}][minWeight]"
type="text" value="{$range.Mini}">
</div>
</th>
{/foreach}
</tr>
<tr data-add_range="range_sup">
<th class="range_type">Sera appliquée lorsque le poids est <</th>
{foreach key=key item=range from=$ranges}
<th class="range_data" style="" data-range="{$key}">
<div class="input-group fixed-width-md">
<span class="input-group-addon weight_unit">g</span>
<input required class="form-control" name="weights[{$key}][maxWeight]"
type="text" value="{$range.Maxi}">
</div>
</th>
{/foreach}
</tr>
</thead>
<tbody>
{foreach $zones as $zone}
<tr data-add_range="data" data-add_range_data="{$zone.id_zone}">
<td>{$zone.label}</td>
{foreach key=key item=price from=$pricesRange}
<td data-range="{$key}">
<div class="input-group fixed-width-md">
<span class="input-group-addon">€</span>
<input required class="form-control" name="costs[{$zone.id_zone}][{$price.shipping_fr}]" type="text"
value="">
</div>
<div class="input-group fixed-width-md">
<span class="input-group-addon">€</span>
<input required class="form-control" name="costs[{$zone.id_zone}][{$price.shipping_ext}]" type="text"
value="">
</div>
<div class="input-group fixed-width-md">
<span class="input-group-addon">€</span>
<input required class="form-control" name="costs[{$zone.id_zone}][{$price.shipping_aerial}]" type="text"
value="">
</div>
<input id="inputId" name="costs[{$zone.id_zone}][{$key}][id]" type="hidden" value="">
</td>
{/foreach}
</tr>
{/foreach}
<td>
<a href="#" onclick="add_new_range();return false;" class="btn btn-default"
id="add_new_range">
Ajouter une nouvelle tranche
</a>
</td>
<td data-range="">
<a href="#" onclick="remove_range();return false;" class="btn btn-default"
id="add_new_range">Supprimer la tranche</a>
</td>
</tbody>
</table>
Спасибо за помощь.