Для системы голосования с плоскими файлами я использую это php (в index.php
) для подсчета подсчетов:
$rating_file = 'rating/'.$file_id.'.txt'; // path to text rating_file that stores counts
$all_lines = file($rating_file, FILE_IGNORE_NEW_LINES);
foreach($all_lines as $line) {
list($item, $num) = explode('||', $line);
$count[$item] = $num;
}
if(array_sum($count) != 0){
$avg = number_format(($count['star-1']*1 + $count['star-2']*2 + $count['star-3']*3 + $count['star-4']*4 + $count['star-5']*5) / array_sum($count),2,'.','');
$intVal = intval($avg);
$round = ($avg - $intVal < .5) ? $intVal : round($intVal).'.5';
}
else {
$avg = $round = 0;
}
Мой html в index.php
выглядит следующим образом:
<div class="rating" data-rating="<?php echo $round;?>">
<div class="rating-stars float-left" data-id="<?php echo $file_id; ?>">
<a href="#5" class="click-trigger star-5" data-value="star-5" title="Vote 5 stars">★ </a>
<a href="#4" class="click-trigger star-4" data-value="star-4" title="Vote 4 stars">★ </a>
<a href="#3" class="click-trigger star-3" data-value="star-3" title="Vote 3 stars">★ </a>
<a href="#2" class="click-trigger star-2" data-value="star-2" title="Vote 2 stars">★ </a>
<a href="#1" class="click-trigger star-1" data-value="star-1" title="Vote 1 star">★ </a>
</div>
<div class="rating-votes float-right">
Avg: <?php echo $avg;?> Votes: <?php echo array_sum($count);?>
</div>
</div>
Я отправляю значение с ajax в php файл: counter.php
$('.click-trigger').on('click', function(e) {
e.preventDefault();
let $star = $(this);
let $container = $star.closest('.rating-stars');
$.ajax({
url: 'counter.php',
type: 'POST',
data: {
value: $star.data('value'),
file_id: $container.data('id')
},
success: function(data){
$container.next('.rating-votes').html(data);
}
});
});
Часть кода в counter.php
......
$round = ($avg - $intVal < .5) ? $intVal : round($intVal).'.5';
// sent back to page
echo 'Avg: '.number_format($avg,2,'.','').' Votes: '.array_sum($count);
Для рефракции sh на html требуется новое значение переменной $round
, которое находится в counter.php
. Как я могу перефразировать sh код html (div со звездами) в index. php, не выполняя жесткую ссылку sh?