Rafraichir le contenu d'une div

anto2b Messages postés 137 Statut Membre -  
gaelcr Messages postés 40 Statut Membre -
Bonjour,

Bonjour à tous, je suis en train de créer un jeu de carte en ligne et j'ai un souci pour mon espace joueur.

Mon problème : Voici un exemple :

Par exemple les personnes connectés qui seront dans cette div :

echo'<div id="connectes">'.$pseudo->afficheMembresCo().'</div>';



J'aimerais que le contenu de la div id="connectes" s'actualise toutes les secondes afin que les personnes connectés s'affichent dynamiquement. Je sais qu'il existe un fonction en jquery load() ou avec AJAX mais je n'arrive pas à l'adapter à mon modèle.

Auriez vous une solution ou un exemple qui se rapproche du mien ?
Merci de votre aide



Voila la page d'affichage


 
<?php 
session_start(); 
include'connect_bdd.php';  
include_once 'membre.class.php'; 
$pseudo = new Membre($_SESSION['pseudo']);  
?> 
<html> 
<head> 
<link href="styles/style.css" rel="stylesheet" type="text/css" /> 
</head> 
<body>   
<?php 
if(isset($_SESSION['pseudo']) && $_SESSION['pseudo'] != "") 
{ 
echo'<div class="espace_profil">'; 
// Partie gauche 
echo'<div class="profil_gauche">'; 
echo'<div class="titre_profil"> <b> Bienvenue '.$pseudo->getPseudo().'</b> </div>'; 
echo'<br><br>'; 
include'classement.php';  
echo'</div>'; 
// Partie droite 
echo'<div class="profil_droite">'; 
echo'<div id="connectes">'.$pseudo->afficheMembresCo().'</div>'; 
echo'<br><br>'; 
echo'<div class="titre_profil"><b>Espace de demande</b></div>'; 
$pseudo->afficheDemande(); 
echo'<br><br>'; 
echo'<div class="titre_profil"><b>Espace de reception</b></div>'; 
$pseudo->afficheReception(); 
$pseudo->afficheRedirection(); 
echo'</div>'; 
// Fin Partie droite 
echo'</div>'; 
} 
else echo'Accès refusée'; 
?> 
</body> 
</html> 



Voila ma classe membre


<?php 

Class Membre 
{ 
 private $pseudo; 
  
 public function __construct($session) 
  { 
   include'connect_bdd.php'; 
   $this->pseudo = $session; 
   $pseudo_online = $bdd->query('select count(pseudo) as nb from cpt_connectes where pseudo="'.$session.'"')->fetchColumn(); 
    if($pseudo_online<=0) 
    { 
     $bdd->exec('insert into cpt_connectes (pseudo) values ("'.$session.'")'); 
    }   
  } 
   
 public function getPseudo() 
  { 
  return $this->pseudo; 
  } 
   
   
 public function afficheMembresCo() 
  { 
   include'connect_bdd.php'; 
   $inter = $bdd->query('select pseudo from cpt_connectes');  
   $nb_online = $inter->rowCount(); 
   $membre_dispo = $nb_online-1; 
   if($nb_online == 1) 
    echo '<div class="membres_dispo"><b>Il y a aucun membre disponible</b></div><br>'; 
   else  
    echo '<div class="membres_dispo"><b>Membres disponibles ('.$membre_dispo.')</b></div><br> '; 
   if($nb_online>0) 
    { 
    echo'<table>'; 
    while($donnees = $inter->fetch()) 
     { 
     if( $donnees['pseudo'] != $this->pseudo) 
      echo '<tr><td><font style="font-family:Verdana; font-size:13px">'.$donnees['pseudo'].'</font></td><td><img onclick="demande_jeu(\''.$donnees['pseudo'].'\');" style="margin-left:5px;cursor:pointer" src="img/demande_jeu.jpg" width="28px"/></td></tr>'; 
     } 
    echo'</table>'; 
    } 
  } 
   
 public function afficheDemande() 
  { 
   include'connect_bdd.php'; 
   $emetteur = $this->pseudo; 
   $verif_demande = $bdd->query("SELECT id FROM demande_jeu WHERE emetteur = '$emetteur'"); 
   $count = $verif_demande->rowCount();  
   if($count ==1) 
    { 
    $verif_dest = $bdd->query("SELECT * FROM demande_jeu WHERE emetteur = '$emetteur'"); 
    while ($donnees = $verif_dest->fetch())  
     { 
     if($donnees['reponse_dest'] == 'attente' )  
      echo '<br>Attente du joueur '.$donnees['destinataire'].'';  
     else  
      echo '<br>'.$donnees['destinataire'].' a accepté !'; 
     } 
    } 
   else 
    echo '<br>Aucune demande de jeu'; 
   
   $verif_demande->closeCursor();  
  } 
   
 public function afficheReception() 
  { 
   include'connect_bdd.php'; 
   $destinataire = $this->pseudo; 
   // On recherche si une demande a été faite 
   $verif_destinataire = $bdd->query("SELECT id FROM demande_jeu WHERE destinataire = '$destinataire'"); 
   $count = $verif_destinataire->rowCount(); 
    if($count ==1) 
    { 
    // Si la demande a été faite, on affiche la demande avec l'emetteur 
    $verif_em = $bdd->query("SELECT * FROM demande_jeu WHERE destinataire = '$destinataire'"); 
    while ($donnees = $verif_em->fetch())  
     { 
     if($donnees['partie_prete']!= 'oui' && $donnees['reponse_dest']!='oui' ) 
      { 
      echo 'Vous avez une demande de '.$donnees['emetteur'].'<br> Voulez-vous accepter ? <br> 
      <input type="submit" value="Oui" onclick="demande(\'acceptation.php\');rafraichir_rec();"/><input type="submit" onclick="demande(\'sup_dem.php\');" value="Non"/> '; 
      } 
    
     if($donnees['reponse_dest']=='oui' && $donnees['partie_prete']!= 'oui') 
      echo 'Création de la partie, veuillez patienter ...'; 
     } 
    $verif_em->closeCursor(); 
    } 
    else 
     echo ''; 
    
  } 
   
   
  public function afficheRedirection() 
  { 
  include'connect_bdd.php'; 
  $joueur = $this->pseudo; 
  $redirection_joueur1 = $bdd->query("SELECT * FROM demande_jeu WHERE emetteur = '$joueur'"); 
  while ($donnees = $redirection_joueur1->fetch())  
   { 
   $verif_redirection_j1 = $donnees['reponse_dest']; 
   if($verif_redirection_j1=='oui') 
   echo'<a href="creation_jeu.php"> Démarrer la partie</a>';  
   } 
  $redirection_joueur2 = $bdd->query("SELECT * FROM demande_jeu WHERE destinataire = '$joueur'"); 
  while ($donnees = $redirection_joueur2->fetch())  
   { 
   $verif_redirection_j2 = $donnees['partie_prete']; 
   if($verif_redirection_j2=='oui') 
   echo'<a href="creation_jeu.php"> Démarrer la partie</a>';  
   } 
  } 

  
  
} 

?> 


1 réponse

gaelcr Messages postés 40 Statut Membre 8
 
Bonsoir,

Pour résoudre votre problème, il faut voir 2 parties:
- 1 service qui retourne le html/json/xml correspondant à la liste des connectés (et seulement ça)
- exemple http://votresite.com/connectes.php
- 1 script (jquery ou autre) sur la page de votre jeu qui appelle régulièrement ce service et en affiche le contenu

Pour le 2eme point, il existe en effet une function jquery qui permet de mettre le contenu d'un appel ajax dans une div avec un ID donné. La doc est ici: https://api.jquery.com/load/

Bon courage!
Cordialement
Gael
0