Récupérer une variable GET via un div refresh

Résolu
Bonjour à tous,

Je viens vous demander conseil, je code pour passer le temps un tchat multi salons avec la possibilité de créer ou pas le notre.

Mon soucis est ... l'index du salon récupère bien l'id qui se trouve dans l'url, mais les deux autres fichiers inclus via un div qui se refresh en jquery (messages_salons.php et chat_list.php) ne peuvent récupérer l'id dans l'url, avez vous une idée pour moi SVP ou une autre manière de procéder ?

Pour info je code en php mysql, certes vous me direz que jquery ne fera pas l'affaire pour un tchat multi salons, je le sais mais c'est aussi mon petit kiff de faire un beau ptit site de tchat lors de mon temps libre.

Merci pour vos futures réponses :)

5 réponses

  1. Bonjour,

    Je viens de réussir en faisant comme ça,

    		
    
    function actualisation() {
    
                $.get('chat_list.php?s=<?php echo $_GET['s']; ?>', function(result) {
    
    				$('#ladiv_des_co').html(result);
    			});
    		}
    
    


    Vous m'avez mis sur la bonne voie, je passe le post en résolu merci beaucoup :)
    1. Donc ma variable qui est dans l'url je l'utilise comme ça ?

      var name = $_GET('s'),
      sid = $_GET('s');

      s=sid ?

      Cdlt :)
      1. Modérateur
        dans le javascript
        var sid = '<?php echo $_GET['s']; ?>';
        


        Ou sinon via une fonction js comme par exemple
        function getUrlParameter(name) {
            name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
            var regex = new RegExp('[\\?&]' + name + '=([^]*)');
            var results = regex.exec(location.search);
            return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '));
        };
        
        
        var sid = getUrlParameter('s');
        
        
    2. Bonjour, comment ça je n'envoi aucunes variables ?

      Le traitement des messages que je rentre dans la bdd se fait en php.
      1. Modérateur
        Ta question concerne

        Mon soucis est ... l'index du salon récupère bien l'id qui se trouve dans l'url, mais les deux autres fichiers inclus via un div qui se refresh en jquery (messages_salons.php et chat_list.php) ne peuvent récupérer l'id dans l'url, avez vous une idée pour moi SVP ou une autre manière de procéder ?


        Dans tes codes JS qui vont chercher les informations dans tes fichiers PHP, tu les appelles comme ceci :
        function actualisation() {
        			$.get("chat_list.php", function (result) {
        				$('#ladiv_des_co').html(result);
        			});
        		}
        

        function refresh(forceScroll){
        
        			$.get('messages_salons.php', function(data){
        
        				var element = $('#mess');
        				var onBottom = (element.scrollTop == element.scrollHeight)
        
        				$('#mess').html(data);
        				if (onBottom || this.forceScroll)
        					element.scrollTop = element.scrollHeight;
        
        				//setTimeout('refresh()', 6000);
        			});
        		}
        

        Dans aucune de ces deux fonctions tu ne passes de variables contenant l' ID tant désiré.....

        Il faut donc transmettre la variable comme je te l'ai montré dans mon exemple :
        $.get('fichierphp.php', 'variable=truc', function(data) {
        ...
        });
        

        Où, bien entendu, variable=truc est à remplacer par : id=lavaleurdetonid
    3. Modérateur
      Bonjour
      Sans voir ton code....impossible de te répondre.

      Nb: pour poster ton code merci d'appliquer ceci :https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

      1. Salut merci de ta réactivité :) je vais d'abbors te passer le code js qui permet de charger les deux divs

        		window.onload = actualisation();
        
        		function refresh(forceScroll){
        
        			$.get('messages_salons.php', function(data){
        
        				var element = $('#mess');
        				var onBottom = (element.scrollTop == element.scrollHeight)
        
        				$('#mess').html(data);
        				if (onBottom || this.forceScroll)
        					element.scrollTop = element.scrollHeight;
        
        				//setTimeout('refresh()', 6000);
        			});
        		}
        		function loadEventHandler(){
        			refresh(true);
        			document.getElementById('texte').focus();
        		};
        		
               
        		function changeColorBBcode(){
        			var e = document.getElementById("color");
        			var f = e.options[e.selectedIndex].value;
        			bbcode('[color='+f+']', '[/color]');return(false)
        		}
        
        		function actualisation() {
        			$.get("chat_list.php", function (result) {
        				$('#ladiv_des_co').html(result);
        			});
        		}
        
        		$(document).ready(function () {
        			setInterval(function() {
        				actualisation();
        			}, 10000);
        			setInterval(function() {
        				refresh();
        			}, 6000);
        		});
        
        


        Ensuite le code qui permet d'afficher les connectés du salon

        
        <div style='overflow:auto;height:490px;direction:rtl;'>
            <div style='direction:ltr;'>
        
        <?php
          include './config.php';
        
        $req = $bdd->prepare('SELECT
          m.pseudo AS pseudo,
          m.avatar AS avatar,
          m.rang AS rang,
          m.sexe AS sexe,
          m.cle_salon AS cle_salon,
          m.age AS age,
          c.url_actuelle AS url_actuelle,
          m.id AS id
          FROM connectes c
          LEFT JOIN membres m ON c.id = m.id
          ORDER BY m.rang DESC');
          $req->execute();
          echo (''.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].'');
            echo "<table border='0' width='100%'>";
        
        while ($d = $req->fetch(PDO::FETCH_OBJ)) {
        
            $sql = $bdd->prepare('SELECT * FROM `liste_salons` WHERE id_joueur = ?');
                $sql->execute(array($d->id));
                $addon_j = $sql->fetch();
            $sql->closeCursor();
        
            if(!$addon_j){
              $addon_j['rang'] = "<img style='margin-bottom:-4px;' src='./img/heart_red.png' title='Modérateur'/>";
            } else {
             // $addon_j['rang'] = "<img style='margin-bottom:-4px;' src='./img/grade_blue.png' title='Modérateur'/>";   
            }
        
              //echo $addon_j['cle_salon'];
              //   if($addon_j['cle_salon'] == $d->cle_salon)
        
            if($d->rang == 2)
                { $d->rang = "<img style='margin-bottom:-4px;' src='./img/grade_1_franchise.png' title='Modérateur'/>"; }
            elseif ($d->rang == 1)
                { $d->rang = "<img style='margin-bottom:-4px;' src='./img/grade_0_franchise.png' title='Membre'/>"; }
            elseif ($d->rang == 3)
                { $d->rang = "<img style='margin-bottom:-4px;' src='./img/grade_2_franchise.png' title='Administrateur'/>"; }
            elseif ($d->rang == 0)
                { $d->rang = "<img style='margin-bottom:-4px;' src='./img/img_dev.png' title='Développeur'/>"; }
            elseif ($d->rang == 4)
                { $d->rang = "<img style='margin-bottom:-4px;' src='./img/img_sup.png' title='Superviseur'/>"; }
        
          $urlMembre = $d->url_actuelle;
          $urlMembre = explode('/', $urlMembre);
          if ($urlMembre[3] == "messages_salons.php" OR $urlMembre[3] == "chat_list.php" OR $urlMembre[3] == "room.php") {
        
        /*    <a title="Visiter le profil" href="profil.php?id='. $d->id .'" target="_blank"><font color="#677179"><strong>' . $d->pseudo . '</strong></font></a>';
        */  
            echo "<tr>";
            echo "<td width='25px'>";
            echo $d->rang;
            //  echo $d->cle_salon;
            echo "</td>";
            echo "<td valign='middle' width='24px'>";
            if($d->sexe == "h"){
                echo "<div style='line-height:15px;border-radius:15px;' align='center' class='h'> ".$d->age." </div> ";
            } elseif($d->sexe == "f") {
                echo "<div style='line-height:15px;border-radius:15px;' align='center' class='f'> ".$d->age." </div> ";
            }
            echo "</td>";
            echo "<td> ";
            echo " ".$d->pseudo."".$addon_j['rang'];
            echo "</td>";
            echo "</tr>";
          }
        }
            echo "</table>";
        ?>
        
            </div><!--fin du div remettre les infos du div dans le bon sens-->
        </div><!--fin du div scrollable + reverse scrollbar-->
        
      2. Modérateur
        Tu n'envoies aucune variable...
        
        $.get('fichierphp.php', 'variable=truc', function(data) {
        ...
        });
        
        
    4. Salut,
      en GET tu peut simplement écrire l'url, si avec JavaScript c'est avec window location , avec php il y a la fonction header().
      Quand tu parle de JQuery je suppose que tu te référè à AJAX? Si c'est ça il s'agit des métadonnées, donc le contenu du XML ou JSON (csv, etc...), il faudrait envoyer ta/tes variables GET dedans.
      JQuery c'est du JavaScript donc tu peut très bien utiliser header.location.url pour avoir la chaîne de caractères (ou header.location qui retourne un objet).
      1. Mon soucis est que le fichier qui se refresh, (la liste des connectés en salon porte son propre nom chat_list.php (à la fin si je fais des echo il n'inclut pas la variable que je cherche à récupérer
        En effet je refresh bien avec de L'AJAX

        et mon index de tchat est room.php?s= l'id du salon

        Merci de ta réponse :)
      2. Voilà le topo

      3. oui même si c'est une technique moche et peu recommandé (tout comme GET en général) je voulais dire qu'en écrivant/ajoutant la variable manuellement c'est possible.

        document.location.href='http.monsite.fr?mavariable1=valeur1&mavariable2=valeur2';
        //-- ou alors dans le formulaire avec les input indiquant un attribut 'name' et bien sûr un submit valide

        Je faisait ça au début, c'est pratique mais pas terrible côté sécurité. Par contre accessible par PHP $GET ou en obtenant l'url par JS.
        J'espère pas répondre trop à côté bon courage.