Ребята, подскажите альтернативное решение задачи.
Нужно из таблицы посчитать кол-во и цену товаров на js и через localStorage передать на другую страницу. И как-бы проблем нет, все работает. Но необходимо "как-то иначе" построить js код функции калькулятора. В общем, ищу альтернативные решения. Вот что у меня получилось.
<?php
$data = mb_convert_encoding(file('123.csv'), 'utf-8', 'cp1251');
echo '
<table>
<tr>
<th>Изоражение</th>
<th>Наименование</th>
<th>Описание</th>
<th>Цена</th>
<th>Кол-во</th>
</tr>
';
for ($i = 0;$i < count($data);$i++){
$data_array = explode(';', $data[$i]);
echo '<tr>';
for($f = 0;$f < count($data_array);$f++) {
if($f == 0){
echo '<td><img width="100px" height="120px" src="'.$data_array[$f].'">';
$d = $i+1;
}elseif($f == 3){
echo '<td><input type="text" name="price'.$d.'" id="price'.$d.'" value="'.$data_array[$f].'" disabled="disabled">';
}elseif($f == 4){
echo '<td><input type="number" name="count'.$d.'" id="count'.$d.'" placeholder="Введите кол-во" min="0">';
}elseif($f == 1){
echo '<td id="productName'.$d.'">'.$data_array[$f].'';
}else{
echo '<td>'.$data_array[$f].'';
}
}
echo '</tr>';
}
echo '</table>';
?>
<div class="button">
<button type="submit" onClick="document.form1.result.value=calculate()">Посчитать</button>
<form name="form1">
<input type="text" id="result" placeholder="0">
</form>
<button type="button" onClick="basket()">Переход в корзину</button>
</div>
<script>
var size = '<?php echo $d;?>';
function basket()
{
let sum = calculate();
if (sum > 0)
{
let newWindow = window.open('basket.php', 'form');
}
}
function calculate()
{
let sum = 0;
localStorage.clear();
for (let i = 1; i <= size; i++)
{
let price = 0,
count = 0;
if (document.getElementById("count"+i).value != 0)
{
count = parseInt(document.getElementById("count"+i).value);
price = parseInt(document.getElementById("price"+i).value);
let name = document.getElementById("productName"+i).innerHTML;
var object = {
name: name,
price: price,
count: count,
size: size,
}
localStorage.setItem(name, JSON.stringify(object));
}
sum += price * count;
}
return sum;
}
</script>