Menu

Récupérer une variable GET via un div refresh [Résolu]

Messages postés
8
Date d'inscription
mercredi 18 octobre 2017
Dernière intervention
27 octobre 2018
-
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 :)
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
1
Merci
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).

Merci colasoma 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM a aidé 32793 internautes ce mois-ci

Speecial
Messages postés
8
Date d'inscription
mercredi 18 octobre 2017
Dernière intervention
27 octobre 2018
-
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 :)
Speecial
Messages postés
8
Date d'inscription
mercredi 18 octobre 2017
Dernière intervention
27 octobre 2018
-
Voilà le topo

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.
Commenter la réponse de colasoma
Messages postés
23576
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 décembre 2018
1
Merci
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

Merci jordane45 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM a aidé 32793 internautes ce mois-ci

Speecial
Messages postés
8
Date d'inscription
mercredi 18 octobre 2017
Dernière intervention
27 octobre 2018
-
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-->
jordane45
Messages postés
23576
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 décembre 2018
-
Tu n'envoies aucune variable...

$.get('fichierphp.php', 'variable=truc', function(data) {
...
});

Commenter la réponse de jordane45
Messages postés
8
Date d'inscription
mercredi 18 octobre 2017
Dernière intervention
27 octobre 2018
0
Merci
Bonjour, comment ça je n'envoi aucunes variables ?

Le traitement des messages que je rentre dans la bdd se fait en php.
jordane45
Messages postés
23576
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 décembre 2018
-
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
Commenter la réponse de Speecial
Messages postés
8
Date d'inscription
mercredi 18 octobre 2017
Dernière intervention
27 octobre 2018
0
Merci
Donc ma variable qui est dans l'url je l'utilise comme ça ?

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

s=sid ?

Cdlt :)
jordane45
Messages postés
23576
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 décembre 2018
-
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');

Commenter la réponse de Speecial
Messages postés
8
Date d'inscription
mercredi 18 octobre 2017
Dernière intervention
27 octobre 2018
0
Merci
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 :)
Commenter la réponse de Speecial