Merci pour votre réponse !
Depuis j'ai testé une solution qui m'a été proposée par ChatGPT (oui j'ai honte ^^)
le script qu'il me fournit fonctionne parfaitement :
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
// Variable globale pour stocker le nombre de lignes précédent
var ancienNombreDeLignes = 0;
// Variable globale pour indiquer si la page a déjà été rechargée
var pageDejaRechargee = false;
// Fonction pour effectuer la requête Ajax et vérifier si le nombre de lignes a changé
function verifierChangementLignes() {
fetch('verifier_lignes.php')
.then(response => response.json())
.then(data => {
console.log('Contenu JSON reçu :', data);
var nombreDeLignes = parseInt(data.total); // Convertir la chaîne en nombre entier
console.log('Nombre de lignes : ' + nombreDeLignes);
// Vérifier si le nombre de lignes a changé depuis la dernière requête
if (nombreDeLignes !== ancienNombreDeLignes) {
// Recharger la page pour afficher les nouvelles données
if (!pageDejaRechargee) {
location.reload();
pageDejaRechargee = true;
}
} else {
// Mettre à jour le nombre de lignes précédent pour la prochaine comparaison
ancienNombreDeLignes = nombreDeLignes;
// Réinitialiser la variable indiquant que la page a été rechargée
pageDejaRechargee = false;
}
})
.catch(error => {
console.error('Erreur Fetch :', error);
})
.finally(() => {
// Appeler à nouveau la fonction toutes les 2 secondes (2000 ms)
setTimeout(verifierChangementLignes, 2000);
});
}
// Démarrer la fonction pour la première fois
verifierChangementLignes();
</script>
Associé au fichier verifier_lignes.php :
<?php
// Code pour établir la connexion à la base de données
$servername = "****";
$username = "****";
$password = "****";
$dbname = "***";
// Créer une connexion
$conn = new mysqli($servername, $username, $password, $dbname);
// Vérifier la connexion
if ($conn->connect_error) {
die("Connexion échouée: " . $conn->connect_error);
}
// Requête SQL pour compter le nombre de lignes dans la table
$sql = "SELECT COUNT(*) as total FROM etat_vente";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// Récupérer le nombre de lignes
$row = $result->fetch_assoc();
$nombreDeLignes = $row['total'];
// Créer un tableau associatif pour la réponse JSON
$response = array('total' => $nombreDeLignes);
// Renvoyer la réponse au format JSON
header('Content-Type: application/json');
echo json_encode($response);
} else {
// En cas d'erreur ou de résultat vide, renvoyer un message d'erreur
$response = array('error' => 'Erreur lors de la récupération du nombre de lignes.');
header('Content-Type: application/json');
echo json_encode($response);
}
// Fermer la connexion à la base de données
$conn->close();
?>
Le problème c'est que si le script vérifie bien toutes les 2 secondes qu'une ligne a été créé, dès lors qu'il y en a au moins 1, le navigateur s'affole et la page se recharche en boucle par intervalle ultra court, telle une mitraillette, on doit être autour de 100 ms ce qui aboutit a un ban de OVH (vive les vpn et ip dynamiques ^^)....
Et je ne comprend absolument pas pourquoi...
j'ai essayé d'isoler le script seul et la page php cela fait la même chose. ChatGPT m'a proposé X modifications d'où les rajouts du style
if (!pageDejaRechargee) {
mais en vain, le script fonctionne en soit mais s'emballe.