Jencal,
en guise d'info et de piste de compréhension du problème, la matrice suivante serait peut-être à étudier par ce jeu d'échanges (au demeurant : fort aidant, instructif, réjouissant) :
https://forum.alsacreations.com/topic-1-88943-1-Compteur-de-like-a-nombre-variable.html
Puis, ceci qui est opérationnel en ligne :
1/ .html et .js dans la page-mère :
<p id="counterview">
<?php foreach ($data as $i => $v): ?>
<?php
$query_string = http_build_query([
'more' => $v,
'sec' => md5($salt.dirname($_SERVER['PHP_SELF']).'/'.$path_controller.'more'.$v)
]);
?>
<a class="like" href="<?= $path_controller ?>?<?= $query_string ?>">+<?= $v ?> <i style="font-size:.3em;font-family:verdana">like</i></a>
<?php endforeach; ?>
</p>
<p id="content-result">
<a id="result"><?= file_exists($counter_file)? file_get_contents($counter_file) : '0' ?></a><br><i id="glob">global like depuis le 03 novembre 2021</i>
</p>
window.addEventListener('DOMContentLoaded', () =>{
document.querySelectorAll('#counterview a').forEach(($a, i) =>{
$a.addEventListener('click', e=>{
e.preventDefault();
let xhr = new XMLHttpRequest();
xhr.open("GET", $a.href, true);
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xhr.addEventListener('readystatechange', ev =>{
if(xhr.readyState == 4 && xhr.status == 200) {
if(/^\d+$/.test(xhr.responseText)){
document.getElementById('result').textContent = xhr.responseText;
let $vids = document.getElementById('vids');
$vids.pause();
$vids.src = `vid/c${i + 1}.mp4`;
$vids.poster = `img/c${i + 1}.png`;
$vids.play();
let nombre = res.innerHTML;
var nb = new Intl.NumberFormat().format(nombre);
res.innerHTML = nb;
}
}
});
xhr.send();
});
});
});
var res = document.getElementById('result');
let nombre = res.innerHTML;
var nb = new Intl.NumberFormat().format(nombre);
res.innerHTML = nb;
2/ .php extérieur appelé en annexe :
<?php
if(!empty($_GET['more']) && !empty($_GET['sec'])){
$salt = "counterlike";
$confirm = md5($salt.dirname($_SERVER['PHP_SELF']).'/'.basename($_SERVER['PHP_SELF']).'more'.$_GET['more']);
if($confirm === $_GET['sec']){
$more = intval($_GET['more']);
$source = 'counter.txt';
if(!file_exists($source)){
touch($source);
chmod($source, 0666);
file_put_contents($source, 0);
}
$count = intval(file_get_contents($source));
$result = intval($_GET['more']) + $count;
file_put_contents($source, $result);
if("XMLHttpRequest" === $_SERVER['HTTP_X_REQUESTED_WITH']){
echo $result; die;
}
header('location:'.$_SERVER['HTTP_REFERER']);
}
?>
Modifié par Gout-de-l-esprit (22 Dec 2021 - 19:35)