Menu

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

Speecial 7 Messages postés mercredi 18 octobre 2017Date d'inscription 16 octobre 2018 Dernière intervention - 6 oct. 2018 à 17:26 - Dernière réponse : jordane45 22847 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 16 octobre 2018 Dernière intervention
- 16 oct. 2018 à 14:08
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

11 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

Avec quelques mots c'est encore mieux Ajouter un commentaire

CCM a aidé 25075 internautes ce mois-ci

Speecial 7 Messages postés mercredi 18 octobre 2017Date d'inscription 16 octobre 2018 Dernière intervention - 6 oct. 2018 à 18:22
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 7 Messages postés mercredi 18 octobre 2017Date d'inscription 16 octobre 2018 Dernière intervention - 6 oct. 2018 à 18:29
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
Meilleure réponse
jordane45 22847 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 16 octobre 2018 Dernière intervention - 6 oct. 2018 à 18:35
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

Avec quelques mots c'est encore mieux Ajouter un commentaire

CCM a aidé 25075 internautes ce mois-ci

Speecial 7 Messages postés mercredi 18 octobre 2017Date d'inscription 16 octobre 2018 Dernière intervention - 6 oct. 2018 à 18:45
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 22847 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 16 octobre 2018 Dernière intervention - 6 oct. 2018 à 19:50
Tu n'envoies aucune variable...

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

Commenter la réponse de jordane45
Speecial 7 Messages postés mercredi 18 octobre 2017Date d'inscription 16 octobre 2018 Dernière intervention - 16 oct. 2018 à 10:38
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 22847 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 16 octobre 2018 Dernière intervention - 16 oct. 2018 à 11:50
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
Speecial 7 Messages postés mercredi 18 octobre 2017Date d'inscription 16 octobre 2018 Dernière intervention - 16 oct. 2018 à 13:02
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 22847 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 16 octobre 2018 Dernière intervention - 16 oct. 2018 à 14:08
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