[RESOLU] actualisation contenu div

Avatar du membre
Eléphant du PHP | 60 Messages

07 juin 2022, 14:38

Bonjour,
Je suis en train de créer un tchat sur mon site.
Tout fonctionne , mais je voudrais actualiser le contenu d'une div ( madiv ) toutes les 10 secondes sans actualiser la page entière.
J'ai bien sûr essayé tout un tas de truc avant de venir demander de l'aide ici.
Si quelqu'un pouvait donc m'aider, ce serait sympa.
Merci d'avance.

Code : Tout sélectionner

<?php define('include',NULL); include("core.php"); include("pagination.php"); if(!is_connect()){ header("Location: connexion.php"); exit; } include("header.php"); ?> <div id="banniere_image"></div> <section><article> <h2><img src="images/ico_epingle.png" alt="Catégorie voyage" class="ico_categorie" />Salon de discussion</b> !</h2> <div class="center"><h1>Salon de discussion</h1></div> <?php if(isset($_POST['envoyer'])) { echo "<p>"; if(empty($_POST['message'])) { echo "Le champ message est vide."; } else { // les champs sont bon, on l'inscrit: if(requete("INSERT INTO tchat SET message = '" .htmlent($_POST['message'])."', pseudo = '".htmlent($_SESSION['c2ptp_pseudo_membre'])."', date_message = ".time())) { //echo "Votre message vient d'être posté avec succès !"; $message = NULL; unset($_POST); $AfficherForm = 0; } else { echo une_erreur(); }} echo "</p>"; } ?> <div id ="madiv" style="width:100%;height:450px;border:solid 1px;border-radius:5px;border-color:aqua;overflow:auto;"><br/> <?php $Req = requete("SELECT * FROM tchat WHERE id = id ORDER BY id DESC LIMIT 10 "); if(numrows($Req) == 0) { echo '<tr><td>Aucune actualité pour le moment</td></tr>'; } else { while($InfosNews = fetchassoc($Req)) { ?> <div style="width:95%;height:auto;border:solid 1px;border-radius:5px;border-color:aqua;background-color:#706b64;margin-left:10px;"><?php echo $InfosNews['pseudo']; ?> Le <?php echo date("d-m-Y à H:i",$InfosNews['date_message']); ?> :<br/><?php echo nl2br($InfosNews['message']); ?></div></br> <?php } } ?> </div> <form action="./salon.php" method="post"> <table> <tr> <td class="center">Votre Message: <br /> <textarea name="message" style="width:607px;height:auto;"><?php echo raf("message"); ?></textarea></td> </tr> <tr> <td class="center"><input name="envoyer" type="submit" /></td> </tr> </table> </form> <br/> </article> <aside> <h1>Menu Membres</h1> <ul> <?php if(is_connect()){ if($_SESSION['c2ptp_pseudo_membre'] == "admin") { ?><li><a href="<?php echo $NAVIG['url_site']; ?>/admin.php">Administration</a></li><?php } ?> <li><a href="<?=$NAVIG['url_site']?>/membres.php">Mon compte</a></li> <li><a href="<?=$NAVIG['url_site']?>/ptp.php">Lien PTP</a></li> <li><a href="<?=$NAVIG['url_site']?>/paradise-barre.php">Paradise Barre</a></li> <li><a href="https://www.clictune.com/f6Yy">Visio</a></li> <li><a href="https://www.clictune.com/f6YZ">Ptc</a></li> <li><a href="https://www.clictune.com/f6Zv">Bonus du jour</a></li> <li><a href="https://www.clictune.com/f6ZB">Carte de fidélité</a></li> <li><a href="<?=$NAVIG['url_site']?>/parrainage.php">Parrainage</a></li> <li><a href="https://www.clictune.com/f6ZF">Demander un paiement</a></li> <li><a href="<?=$NAVIG['url_site']?>/proof.php">Preuves de paiements</a></li> <li><a href="<?=$NAVIG['url_site']?>/livreor.php">Livre d'or</a></li> <li><a href="https://www.clictune.com/f6ZH">Convertir les points</a></li> <li><a href="<?=$NAVIG['url_site']?>/classements.php">Classements</a></li> <li><a href="<?=$NAVIG['url_site']?>/concours.php">Concours Ptp</a></li> <li><a href="<?=$NAVIG['url_site']?>/concoursbarre.php">Concours Barre</a></li> <li><a href="<?=$NAVIG['url_site']?>/concoursvisio.php">Concours Visio</a></li> <li><a href="<?=$NAVIG['url_site']?>/deconnexion.php">Déconnexion</a></li> <?php } echo '</ul>'; ?> </aside> </section> <?php include("footer.php"); ?>

ynx
Mammouth du PHP | 586 Messages

08 juin 2022, 09:55

Bonjour,

La solution classique pour actualiser une partie de la page est d'utiliser AJAX (en js via l'objet XMLHttpRequest ou l'API Fetch) :
https://developer.mozilla.org/fr/docs/Web/Guide/AJAX

D'autres solutions pourrait être d'utiliser les websockets, les server-sent events ou encore le protocole Mercure.

Bonne journée,

Avatar du membre
Eléphant du PHP | 60 Messages

08 juin 2022, 18:20

Bonjour ynx,
Merci pour la réponse, cela va beaucoup m'aider.