Je voudrais pouvoir actualiser des données qui proviennent d'une base de donnée sans utilisé la balise meta refresh.
Je travaille sur un système d'affichage de commandes , et souhaiterais que les commandes apparaissent sans forcement utilisé un refresh comme je le faisais jusqu’à présent.
Ceci est mon code php avec un refresh :
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" href="css/espace.css">
<meta http-equiv="refresh" content="5" />
<script src="sweetalert.min.js"></script>
<title>ECRAN-CLIENT</title>
</head>
<body>
<div class="TABLELEFT">
<?php
$sql = "SELECT enc_id, enc_cmd_num, enc_paye, enc_prepared, enc_ext_ref, enc_heure_fab_deb, enc_type, enc_heure_fab_fin, Client.cli_civilite,Client.cli_nom, Client.cli_prenom FROM Client RIGHT JOIN encaissement ON Client.cli_id = encaissement.enc_client WHERE enc_etat<>4 AND enc_date= convert(date,getdate()) AND ((DATEDIFF(n,enc_heure_fab_fin, getDate()) < 3 AND enc_prepared <> 0) OR enc_prepared = 0) AND enc_emporte <> 1 ORDER BY encaissement.enc_heure_fab_deb ASC";
$results = odbc_exec( $conn, $sql );
?>
<table>
<?php
while( $row = odbc_fetch_array( $results ) )
{
printf('<tr>');
if ( $row["enc_ext_ref"] != '')
{
$num_cmd = $row["enc_ext_ref"];
}
else
{
$num_cmd =$row["enc_cmd_num"];
}
if ($row['enc_paye'] = 0)
{
$etat_cmd='    <span class="PRETE">ATTENTE REGLEMENT</span>';
}
else
{
switch( $row['enc_prepared'] )
{
case 0: $etat_cmd='      <span class="ENPREPA">EN PREPARATION</span>'; break;
case 1:
$etat_cmd='      <span class="PRETE">COMMANDE PRETE</span>'; break;break;
}
}
switch( $row['enc_type'] )
{
case 0: $commande='  <span class="EMPORTER"><img src="img/emp.png" id="EMP">  </img></span>'; break;
case 1: $commande='  <span class="LIVRAISON"><img src="img/livreur.png" id="LIV">  </img></span>'; break;
case 2: $commande='  <span class="SURPLACE">  <img src="img/resto.png" id="TABLE">  </img></span>'; break;
}
printf('<td>%s%s%s</td>',$row["enc_cmd_num"],$etat_cmd, $commande);
}
?>
</table>
</div>
</body>
</html>
Il y a différentes solutions techniques pour ton besoin : la plus simple à mon avis pour pousser du contenu du serveur vers les clients est d'utiliser : Server Sent Event
Je sais pas en PHP , mais tu peux faire des requêtes $;AJAX coté JS / Jquery pour récupérer des données via un fichier PHP qui fait une requête à ta base de données et ensuite les insérer dans ton html.
let mesInfos = "ce que tu veux envoyer en params si besoin"
$.ajax({
type: "POST",
url: "action.php",
data: { param : mesInfos },
success: function( response ) {
$('#maDiv').html( response ); //Affichage de l'url cible, ici action.php, dans une DIV // Tu peux aussi récupérer dans un tableau au format JSON si tu as plusieurs lignes ...
},
error: function( response ) {
console.log('Erreur pour poster le formulaire : '+ response.status + " " + response.statusText);
}
});
la connaissance s'acquiert par l'expérience, le reste n'est qu'information.
Le problème de la solution de mon VDD c'est que la requête ajax il faut la lancer régulièrement pour avoir l'information.
Donc si c'est pour faire une relance automatique toutes les 5 secondes (ce qui figure dans le post initial) je ne trouve pas que ce soit une bonne solution.
La solution server sent event est faite pour pousser régulièrement du contenu du serveur vers les clients.
Sur la solution proposée ci-dessus je m'étonne toujours de l'utilisation de jquery ($.ajax) qui est une surcouche de javascript - donc surcharge du système - alors qu'il existe désormais une API en javascript qui est simple à utiliser : https://developer.mozilla.org/fr/docs/Web/API/Fetch_API/Using_Fetch
Je ne veux pas créer de polémique, je donne juste des ouvertures.
ok tu as choisi la solution ajax avec un refresh périodique et l'utilisation de jquery ... je ne reviens pas sur ce que je pense.
Déjà dans commandes.php tu as une erreur ligne 14 : c'est success et non sucess
Benjyben ayant proposé cette solution, je ne doute pas qu'il saura te conseiller pour arriver au bout
Bye
- Edité par monkey3d 1 février 2023 à 15:05:43
Actualiser des données sans "Refresh"
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
la connaissance s'acquiert par l'expérience, le reste n'est qu'information.